congnghevps.net wrote:
Chào các bạn,
Hiện nay khi làm việc với module recent của iptables mình có gặp 2 thông số là --rcheck và --update. Theo thông tin trong document thì :
--rcheck : trả về kết quả true nếu source ip có trong list
--update : trả về kết quả true nếu source ip có trong list, đồng thời update timestamp
Thật ra mình thấy man page có thể làm mọi người hiểu nhầm:
Code:
[!] --rcheck
Check if the source address of the packet is currently in the list.
[!] --update
Like --rcheck, except it will update the "last seen" timestamp if it matches.
Bằng chứng là với rules như sau:
Code:
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j SSHCHECK
-A SSHCHECK -m recent --set --name SSH --rsource
-A SSHCHECK -m recent --rcheck --seconds 60 --hitcount 4 --name SSH --rsource -j DROP
Nếu bạn mở một cái terminal rồi chia làm hai:
- nửa trên (server) chạy:
Code:
watch 'cat /proc/net/xt_recent/SSH'
- nửa dưới (client) thử ssh vào server xem. Mỗi lần mở một kết nối thì thấy `last_seen` cũng vẫn thay đổi giống như khi dùng `--update`.
congnghevps.net wrote:
Tuy nhiên mình không hiểu việc update timestamp này có tác dụng như thế nào nhỉ?
Bạn tự thử nghiệm và chú ý đến thông số `--seconds` xem.
congnghevps.net wrote:
Và trường hợp nào dùng rcheck và trường hợp nào dùng update.
Nếu attacker tấn công liên tục từ một IP thì bạn muốn khoảng thời gian hắn bị block (`--seconds`) sẽ tính từ thời điểm hắn gửi packet đầu tiên hay packet cuối cùng.
congnghevps.net wrote:
Nếu có rules tham khảo thì tốt quá,
Thử rules như trên, sau đó thay `--rcheck` thành `--update` rồi quan sát và so sánh xem.