Làm cách nào để liệt kê các địa chỉ IP bị chặn bởi iptables?


16

Để ngăn chặn các cuộc tấn công vũ phu chống lại ssh tôi đã thêm một số quy tắc iptables (bên dưới). Câu hỏi là: Làm thế nào tôi có thể liệt kê các địa chỉ IP bị chặn?

(1)
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP

1
iptables -L INPUT -v -nhiển thị tất cả ip bị chặn
động

Câu trả lời:


16

Một tùy chọn sẽ là ghi nhật ký bất kỳ gói bị rơi nào của bạn với một quy tắc như:

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl -j LOG --log-prefix "FW_DROPPED: "

Chèn nó ngay trước DROPquy tắc. Sau đó, bạn có thể grep tệp syslog cho bất cứ điều gì có "FW_DROPPED" trong đó và danh sách IP sẽ ở đó. Các mục trong tệp nhật ký trông giống như thế này:

Jun  3 08:05:57 some-machine kernel: [15852451.420557] FW_DROPPED: IN=eth0 OUT= MAC=00:50:ba:4a:d9:e3:00:12:17:3a:e3:64:08:00 SRC=228.23.45.189 DST=192.168.1.1 LEN=48 TOS=0x00 PREC=0x00 TTL=106 ID=10941 PROTO=TCP SPT=58212 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0

Vì vậy, việc lấy ra những gì sau "SRC =" sẽ cho bạn thấy các IP bị rơi. Sắp xếp thứ đó, loại bỏ các bản sao và bạn sẽ có danh sách của mình.

Tôi đã tìm thấy Hướng dẫn Iptables là tài liệu hữu ích nhất cho iptables / netfilter.


Vâng, đây là cách để làm điều đó.
Brent

Điều này sẽ yêu cầu bạn sao chép quy tắc của mình khi bạn không đăng nhập và bỏ quy tắc tương tự.
David Pashley

3
Sẽ tốt hơn nữa nếu anh ta tạo ra một chuỗi người dùng nơi anh ta ghi nhật ký và bỏ các gói vi phạm. Bằng cách này, sao chép không cần thiết được loại bỏ. Nó có thể được thực hiện như thế này: các cuộc tấn công iptables -N; iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state MỚI -m gần đây --update --seconds 60 --hitcount 8 --rttl --name SSH -j tấn công; iptables -A Tấn công -j LOG --log-prefix "FW_DROPPED:"; iptables -A Tấn công -j DROP
Cristian Ciupitu

1
Đã đồng ý. Bàn / chuỗi là con đường để đi; toàn bộ quan điểm của iptables, thực sự. Tôi tạo các bảng riêng biệt để chấp nhận, bỏ âm thầm, từ chối rõ ràng, loại bỏ, lũ lụt nghi ngờ, thăm dò bất hợp pháp, nghi ngờ, quét nghi ngờ, loại không xác định và xem lưu lượng truy cập. Các FW của tôi dựa trên tập lệnh cũ này (cảnh báo: tự quảng cáo): code.google.com/p/klondike-firewall/source/browse/trunk/iêu
yukondude

1
Mô-đun ipt_recent mà ipozgaj và David Pashley tham chiếu là một bổ sung khá tiện lợi, mặc dù nó không thể cung cấp cùng một lý do chính xác mà một IP cụ thể đã bị hủy (như bạn có thể với các cài đặt tiền tố --log khác nhau) hoặc theo dõi một lịch sử lâu dài của các cuộc tấn công với dấu thời gian. Chắc chắn là một ý tưởng tốt để sử dụng cả hai kỹ thuật trong buổi hòa nhạc mặc dù.
yukondude


4

Nhìn vào

/proc/net/ipt_recent/YOURNAME

trong đó YOUNAME là tên bạn đã sử dụng với tùy chọn --name trong quy tắc iptables của mình.


Trên một số distro (ví dụ Debian), đường dẫn hợp lệ là:/proc/net/xt_recent/[list-name]
itachi


1

Những gì tôi làm, ví dụ để giả mạo địa chỉ đầu vào, là xác định chuỗi SPOOF_REJECT:

iptables -N SPOOF_REJECT
iptables -A SPOOF_REJECT -j LOG --log-prefix "Input spoof detected: "
iptables -A SPOOF_REJECT -j REJECT

sau đó để gửi các gói đến chuỗi này nếu chúng bị giả mạo:

iptables -A INPUT -i $EXT_DEV1 -s $INT_NET -j SPOOF_REJECT
iptables -A INPUT -i $EXT_DEV2 -s $INT_NET -j SPOOF_REJECT

Bạn có thể làm một cái gì đó như thế này cho từng loại gói bạn bỏ hoặc từ chối để có một dòng trong syslog để tìm, sau đó định kỳ grep, cắt, sắp xếp, để chỉ lấy địa chỉ IP từ các dòng nhật ký này.

Lợi ích của việc sử dụng các chuỗi riêng lẻ cho từng danh mục là cấu hình của bạn trở nên đơn giản hơn và việc đọc iptablescấu hình của bạn sẽ dễ dàng hơn . Khi bạn thêm nhiều quy tắc hơn, bạn sẽ vui mừng vì bạn đã sử dụng các chuỗi riêng lẻ cho các hành động khác nhau cụ thể.


Làm thế nào chính xác, bạn có phát hiện các gói giả mạo? Theo kinh nghiệm của tôi, điều này là không thể trong trường hợp chung.
MarkR

Trên đây chỉ là một ví dụ. Ở đây, tôi đang tìm kiếm bất kỳ gói tin nào đến chuỗi INPUT đến từ một thiết bị bên ngoài nhưng được cho là đến từ một địa chỉ IP bên trong mạng của tôi. Trong trường hợp này, tôi hoàn toàn có thể phát hiện giả mạo địa chỉ, nhưng vâng, trong trường hợp chung, mọi thứ đều khác.
Eddie

1

"Câu hỏi là: Làm thế nào tôi có thể liệt kê các địa chỉ IP bị chặn?"

Tạo chuỗi CẤM:

iptables -N BANNED
iptables -F BANNED

Tạo một chuỗi đăng nhập:

iptables -N BANNEDLOG
iptables -F BANNEDLOG
iptables -A BANNEDLOG -j LOG --log-prefix "BANNED:" --log-level 6
iptables -A BANNEDLOG -j DROP

Thêm bước nhảy vào chuỗi bị cấm trong chuỗi INPUT trước hầu hết các quy tắc khác

...
iptables -A INPUT -j BANNED
...

Bây giờ hãy thêm ipad vào chuỗi bị cấm:

flock -w 5 /var/lock/iptables -c 'iptables -A BANNED -s 140.130.20.202/32 -i eth0 -m comment --comment "2012-03-19 23:49:33 accesslog" -j BANNEDLOG'
etc...

Bạn cũng có thể sử dụng nó như một cơ sở dữ liệu với các tùy chọn nhận xét, vì vậy bạn có thể biết khi nào và tại sao v.v ... đàn rất quan trọng khi iptables được cập nhật thường xuyên bởi nhiều quy trình - có vẻ như iptables không có khóa nào được tích hợp trong đó.

Để xem các địa chỉ và quy tắc bị cấm trong chuỗi bị cấm:

iptables -S BANNED

Để xem chỉ cần sắp xếp ipaddresses:

iptables -S BANNED | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u

Tôi có một số trình tiện ích đang chạy trên máy chủ của mình để kiểm tra các tệp nhật ký hệ thống và nhật ký web, vì vậy nếu bất kỳ ai khó chịu đang cố gắng, địa chỉ của họ sẽ tự động bị cấm trong vài ngày, tùy thuộc vào loại và mức độ nghiêm trọng và số lần tấn công trước đó. Thông tin được đăng nhập vào cơ sở dữ liệu mysql và đã hết hạn định kỳ. Các địa chỉ cũng được phân phối cho mọi máy khác trong cụm sao trên bản sao mysql để chúng cũng được bảo vệ và giữ đồng bộ. Phần mềm của tôi cũng tìm kiếm chủ sở hữu của mạng và gửi đơn khiếu nại đến ISP.

Sau 10 năm làm việc, tôi hy vọng sẽ sớm cung cấp cho mọi người sử dụng. Tôi hiện có khoảng 1,5 triệu lịch sử địa chỉ IP và hàng trăm ngàn cuộc tấn công mail và ssh được báo cáo, giúp dọn dẹp mạng. Nếu nhiều hơn sẽ sử dụng nó thì tôi hy vọng nó sẽ có tác động nhiều hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.