Nếu việc thiết lập kết nối chưa hòan tất 3 bước đây đủ (gọi là half-open connection) mà buộc hệ thống server phải cấp tài nguyên để quản lý thì kẻ tấn công có thể lấy hết tài nguyên của hệ thống server bằng các "flooding" vào server với các gói tin SYN. Syn flood là 1 dạng tấn công phổ biến và nó có thể được ngăn chặn bằng đoạn lệnh iptables sau:
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j RETURNTất cả các kết nối đến hệ thống chỉ được phép theo các thông số giới hạn sau:
- --limit 1/s: Tốc độ truyền gói tin trung bình tối đa 1/s (giây)
- --limit-burst 3: Số lương gói tin khởi tạo tối đa được phép là 3
Code:
# Limit the number of incoming tcp connections # Interface 0 incoming syn-flood protection iptables -N syn_flood iptables -A INPUT -p tcp --syn -j syn_flood iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN iptables -A syn_flood -j DROP
- ‐‐limit rate n
- ‐‐limit‐burst number m
Bạn cần điều chỉnh thông số -limit-rate và -limit-burst tùy theo yêu cầu và traffic của mạng của bạn.
Giả sử bạn cần giới hạn các kết nối SSH (port 22) không được phép hơn 10 connections trên mỗi 10 phút, rule như sau:
Code:
iptables -I INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport 22 -m state --state NEW,ESTABLISHED -m recent --set -j ACCEPT iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 600 --hitcount 11 -j DROP iptables -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport 22 --dport 513:65
Vậy sau khi đã xác định được IP (ví dụ lấy 1 IP trong LAN 192.168.1.222) tấn công, việc quan trọng vẫn là cách ly các gói tin từ IP (192.168.1.222) để đảm bảo cho hệ thống hoạt động tốt.
# iptables -I INPUT -s 192.168.1.222 -j DROP
Câu lệnh này sẽ thêm một entry vào file cấu hình IPTable, chỉ dẫn nó bỏ qua bất kì gói tin nào đến từ địa chỉ IP 192.168.1.222. Nếu bạn đang đối mặt với rất nhiều cuộc tấn công, tốt hơn hết bạn nên sử dụng một phương pháp tự động hơn để thêm địa chỉ IP từ danh sách cấm. Để làm việc này, ta tạo đoạn mã sau:
#!/bin/shLưu đoạn mã trên vào một file với tên bất kì như banned_IPs.sh và gán cho nó quyền thực thi:
for i in $(< banned_IPs.cfg) ; do
iptables -I INPUT -i eth1 -s "$i" -j DROP
done
# chmod +x banned_IPs.shBây giờ tạo một file banned_IPs.cfg và nhập vào danh sách địa chỉ IP bạn muốn khóa, mỗi cái trên một dòng (ví dụ):
192.168.1.222Bây giờ chạy file banned_IPs.sh để đưa địa chỉ các địa chỉ IP bạn muốn khóa gửi cho iptables "xử lý"
192.168.1.123
192.168.1.122
# ./banned_IPs.sh
0 nhận xét:
Đăng nhận xét