Shell chống ssh brute force cho server linux.
Hiện nay số lượng server linux chạy dịch vụ ngày một tăng do những đặc điểm vượt trội hơn so với window server như hiệu năng cao, ngốn ít tài nguyên.
Tuy nhiên bên cạnh đó không tránh khỏi việc server bị tấn công chiếm quyền kiểm soát, một phương pháp sử dụng khá phổ biến là ssh brute force. Một số phương pháp như đặt mật khẩu mạnh, giới hạn truy cập, sử dụng key login cũng hạn chế được phần nào kiểu tấn công trên.
Nhưng vấn đề là những ip tấn công đó là nguy cơ lớn đối với server chạy dịch vụ và chắc chắn chúng ta cũng rất muốn ngăn chặn những ip đó truy cập tới server.
Mình cũng đã áp dụng nhiều phương pháp để chống tấn công ssh brute force nhưng đều không hiệu quả và đạt được như ý muốn.
Thay vào đó chúng ta nên viết viết một đoan shell script để chặn những ip có dấu hiệu tấn công ssh brute force tới server.
Dưới đây là đoạn shell script dùng iptables block những ip login fail nhiều lần (dấu hiệu brute force) đến server.
Đặt crontab chạy shell tự động:
Hi vọng bài viết sẽ giúp ích nhiều cho các bạn đang làm quản trị hệ thống.
Nguồn tham khảo: pbxer.com
Tuy nhiên bên cạnh đó không tránh khỏi việc server bị tấn công chiếm quyền kiểm soát, một phương pháp sử dụng khá phổ biến là ssh brute force. Một số phương pháp như đặt mật khẩu mạnh, giới hạn truy cập, sử dụng key login cũng hạn chế được phần nào kiểu tấn công trên.
Nhưng vấn đề là những ip tấn công đó là nguy cơ lớn đối với server chạy dịch vụ và chắc chắn chúng ta cũng rất muốn ngăn chặn những ip đó truy cập tới server.
Mình cũng đã áp dụng nhiều phương pháp để chống tấn công ssh brute force nhưng đều không hiệu quả và đạt được như ý muốn.
Thay vào đó chúng ta nên viết viết một đoan shell script để chặn những ip có dấu hiệu tấn công ssh brute force tới server.
Dưới đây là đoạn shell script dùng iptables block những ip login fail nhiều lần (dấu hiệu brute force) đến server.
Mã:
#!/bin/sh
# kiem tra file log: /var/log/secure voi centos/redhat.
# kiem tra file log: /var/log/auth.log voi ubuntu.
tail -1000 /var/log/secure | awk '/sshd/ && /Failed password for/ { if (/invalid user/) try[$13]++; else try[$11]++; }
END { for (h in try) if (try[h] > 4) print h; }' |
while read ip
do
# note: check if IP is already blocked...
/sbin/iptables -L -n | grep $ip > /dev/null
if [ $? -eq 0 ] ; then
# echo "already denied ip: [$ip]" ;
true
else
# echo "Subject: denying ip: $ip" | /usr/sbin/sendmail [email protected]
logger -p authpriv.notice "*** Blocking SSH attempt from: $ip"
/sbin/iptables -I INPUT -s $ip -j DROP
fi
done
Đặt crontab chạy shell tự động:
Mã:
crontab -e
# scan the secure log every 2 minutes
*/2 * * * * /root/scan-secure.sh
Hi vọng bài viết sẽ giúp ích nhiều cho các bạn đang làm quản trị hệ thống.
Nguồn tham khảo: pbxer.com