一. 問題的發現 昨晚苦逼加班完後,今早上班繼續幹活時,SSH連接伺服器發現異常的提示,仔細看了一下嚇一小跳,昨晚9點鐘到現在,一夜之間被人嘗試連接200+,慌~~~ 1. 速度查一下log 發現secure日誌文件咋都這麼大?原來不止是昨晚被攻擊,之前就已經挨無數的暴擊了。 2. 打開日誌文件瞧瞧 ...
一. 問題的發現
昨晚苦逼加班完後,今早上班繼續幹活時,SSH連接伺服器發現異常的提示,仔細看了一下嚇一小跳,昨晚9點鐘到現在,一夜之間被人嘗試連接200+,慌~~~
1. 速度查一下log
[root@zwlbsweb ~]# cd /var/log
[root@zwlbsweb log]# ll -h
-------------------------省略部分信息------------------------------
-rw------- 1 root root 4.9M Jul 17 10:10 secure
-rw------- 1 root root 38M Jun 24 03:29 secure-20190624
-rw------- 1 root root 64M Jun 30 03:10 secure-20190630
-rw------- 1 root root 46M Jul 7 03:37 secure-20190707
-rw------- 1 root root 14M Jul 15 03:41 secure-20190715
-------------------------省略部分信息------------------------------
發現secure日誌文件咋都這麼大?原來不止是昨晚被攻擊,之前就已經挨無數的暴擊了。
2. 打開日誌文件瞧瞧
發現被無數不同的IP地址和不同的用戶進行SSH嘗試連接。
隨便拿個IP地址,百度一下,全是國外的IP地址,太可惡了:
二. 防範辦法
雖然我的密碼很複雜了,但是為了以防萬一,還是速度百度一下,斬草除根
1. 修改 SSH 預設埠
- 註:修改之前,記得請把對應埠在防火牆添加規則。
i. 修改SSH埠為 2298(這個埠建議使用 1024 以上的)
[root@zwlbsweb ~]# vim /etc/ssh/sshd_config
---------------配置如下----------------
Port 2298
ii. 重啟SSH
[root@zwlbsweb ~]# systemctl restart sshd
iii. 查看埠是否更改
[root@zwlbsweb ~]# netstat -ntlp | grep 2298
tcp 0 0 0.0.0.0:2298 0.0.0.0:* LISTEN 15156/sshd
tcp6 0 0 :::2298 :::* LISTEN 15156/sshd
註:還有個步驟就是“禁止root登錄”,我這裡就不禁止root登錄了,因為密碼太複雜記不住,切換root用戶不方便。
2. 防止 SSH 暴力破解腳本
註:同一個IP地址超過10次的嘗試,就加入/etc/hosts.deny。
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /sshPrevent/black.txt
DEFINE="10"
for i in `cat /sshPrevent/black.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt $DEFINE ];
then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];
then
echo "sshd:$IP" >> /etc/hosts.deny
fi
fi
done
添加計劃任務:
[root@zwlbsweb ~]# crontab -e
*/5 * * * * /bin/bash /sshPrevent/ssh_pervent.sh
# 每五分鐘檢查一次
# 重啟crontab
[root@zwlbsweb ~]# systemctl restart crond
五分鐘後,查看是否成功:
[root@zwlbsweb ~]# cat /sshPrevent/black.txt
103.101.232.208=1
103.108.187.4=2
103.248.220.249=15
104.131.93.33=1
104.236.122.193=2
104.236.186.24=2
104.236.246.16=1
104.244.79.33=4
104.248.211.180=2
......
-------------------------------我是分割線----------------------------------
[root@zwlbsweb ~]# cat /etc/hosts.deny
#
# hosts.deny This file contains access rules which are used to
# deny connections to network services that either use
# the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# The rules in this file can also be set up in
# /etc/hosts.allow with a 'deny' option instead.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
#
sshd:103.248.220.249
sshd:104.248.88.106
sshd:106.12.18.37
sshd:106.51.230.186
sshd:106.75.17.91
sshd:112.21.188.183
sshd:112.221.179.133
......
小小的防範措施就到此完成了!
三. 隔一段時間查看效果如何
半天已經過去了,我們再次查看 secure 日誌文件。
SSh連接沒有提示了,日誌也恢復了正常狀態,感謝博友們,收工!