Tôi cho một người sử dụng một "tarpit" ngoài việc chỉ cho phép xác thực khóa công khai và không cho phép đăng nhập gốc.
Trong netfilter
đó có một recent
mô-đun, bạn có thể sử dụng với ( INPUT
chuỗi):
iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --set --name tarpit --rsource
iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 6 --name tarpit --rsource -j DROP
iptables -A INPUT -i if0 -p tcp --dport 22 -j ACCEPT
Điều đó là, mọi nỗ lực kết nối với cổng 22 đều được recent
mô-đun liệt kê với IP và một số nội dung khác dưới tên "tarpit" (nếu bạn tò mò, hãy nhìn vào /proc/net/xt_recent/tarpit
). Rõ ràng bạn có thể sử dụng tên khác.
Để liệt kê hoặc hủy bỏ IP sử dụng:
echo "+123.123.123.123" > /proc/net/xt_recent/tarpit
echo "-123.123.123.123" > /proc/net/xt_recent/tarpit
Tốc độ này giới hạn các nỗ lực xuống còn 5 trong 300 giây. Xin lưu ý rằng người dùng có kết nối hiện tại không bị làm phiền bởi giới hạn đó, vì họ đã có kết nối được thiết lập và được phép tạo thêm (thậm chí vượt quá giới hạn tốc độ).
Điều chỉnh các quy tắc theo ý thích của bạn nhưng đảm bảo rằng chúng được thêm vào theo thứ tự đó (nghĩa là khi thêm thì sử dụng chúng theo thứ tự này, khi chèn sau đó theo thứ tự ngược lại).
Điều này cắt giảm tiếng ồn vô cùng. Nó cũng cung cấp bảo mật thực tế (chống lại vũ phu) không giống như bảo mật nhận thức khi thay đổi cổng. Tuy nhiên, tôi vẫn khuyên bạn nên thay đổi cổng nếu điều đó khả thi trong môi trường của bạn. Nó cũng sẽ giảm mức độ tiếng ồn rất nhiều ...
Bạn vẫn có thể kết hợp điều này với fail2ban, mặc dù tôi đã chạy tốt mà không có nó và chỉ có các quy tắc trên.
BIÊN TẬP:
Bạn có thể tự khóa mình bằng cách này, vì vậy bạn có thể thêm một cái gì đó như sau cho phép bạn xóa lệnh cấm bằng cách gõ vào một cổng cụ thể:
iptables -A INPUT -i if0 -p tcp --dport <knockport> -m state --state NEW -m recent --name tarpit --remove