Trước hết, đừng phát minh lại bánh xe. Đó chính xác là những gì denyhosts
dành cho:
DenyHosts is a python program that automatically blocks ssh attacks by
adding entries to /etc/hosts.deny. DenyHosts will also inform Linux
administrators about offending hosts, attacked users and suspicious
logins.
Theo như tôi biết, denyhosts
chỉ dành cho các ssh
kết nối nhưng cũng
fail2ban
có liên quan đến khá nhiều thứ:
Fail2Ban consists of a client, server and configuration files to limit
brute force authentication attempts.
The server program fail2ban-server is responsible for monitoring log
files and issuing ban/unban commands. It gets configured through a
simple protocol by fail2ban-client, which can also read configuration
files and issue corresponding configuration commands to the server.
Cả hai đều có sẵn trong kho:
sudo apt-get install denyhosts fail2ban
Bạn cũng có thể kịch bản này, nếu bạn muốn. Cái gì đó như:
#!/usr/bin/env sh
netstat -an |
awk -vmax=100 '/tcp/{split($5,a,":"); if(a[1] > 0 && a[1]!="0.0.0.0"){c[a[1]]++}}
END{for(ip in c){if(c[ip]>max){print ip}}}' |
while read ip; do iptables -I INPUT 1 -s "$ip" -j DROP; done
Các awk
sẽ trích xuất các KCN và đếm chúng và chỉ in những xuất hiện nhiều hơn max
lần (ở đây, -vmax=100
, thay đổi nó cho phù hợp). Các IP sau đó được đưa vào một vòng lặp while chạy iptables
quy tắc có liên quan .
Để chạy 24/7, tôi sẽ tạo một cronjob chạy lệnh trên mỗi phút hoặc lâu hơn. Thêm dòng này vào/etc/crontab
* * * * * root /path/to/script.sh