อย่างแรกเลยอย่าคิดค้นล้อใหม่ นั่นคือสิ่งที่denyhosts
ถูกต้องสำหรับ:
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.
เท่าที่ฉันรู้denyhosts
มีไว้สำหรับssh
การเชื่อมต่อเท่านั้น แต่ยัง
fail2ban
มีข้อตกลงที่เกี่ยวข้องกับสิ่งที่สวยมาก:
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.
ทั้งสองมีอยู่ในที่เก็บ:
sudo apt-get install denyhosts fail2ban
คุณสามารถใช้สคริปต์นี้หากคุณต้องการ สิ่งที่ต้องการ:
#!/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
awk
จะดึง IPs และนับพวกเขาและพิมพ์เฉพาะที่ปรากฏมากขึ้นกว่าmax
ครั้ง (ที่นี่-vmax=100
เปลี่ยนได้ตาม) จากนั้น IP จะถูกป้อนไปยังลูป while ที่เรียกใช้iptables
กฎที่เกี่ยวข้อง
ในการเรียกใช้ 24/7 นี้ฉันจะสร้าง cronjob ที่รันคำสั่งด้านบนทุก ๆ นาที เพิ่มบรรทัดนี้ไปที่/etc/crontab
* * * * * root /path/to/script.sh