Linux防止SSH暴力破解
每次登錄系統(tǒng)(CentOS7),就會(huì)發(fā)現(xiàn)有N次登陸失敗的統(tǒng)計(jì)信息,如:
查看 日志文件可以看到文件中有很多認(rèn)證失敗的ip登錄信息,這就說明已經(jīng)被無數(shù)不同的IP地址和不同的用戶進(jìn)行SSH嘗試連接了。
/var/log/secure
密碼再復(fù)雜也頂不住這樣暴力掃描啊,為預(yù)防萬一,下面總結(jié)了幾種防范方法:
1、禁止root登錄
/etc/ssh/sshd_config
[root@vps ~]$ vi /etc/ssh/sshd_config
---------------配置如下----------------
PermitRootLogin no
重啟
[root@vps ~]$ service sshd restart
2、修改 SSH 默認(rèn)端口
修改SSH默認(rèn)端口號(hào),sshd服務(wù)器端的配置文件為
/etc/ssh_config
[root@vps ~]$ vi /etc/ssh/sshd_config
---------------配置如下----------------
Port 2280
重啟SSH
[root@vps ~]$ systemctl restart sshd
查看狀態(tài)
[root@vps ~]$ systemctl status sshd
查看端口是否更改
[root@vps ~]$ netstat -ntlp | grep 2280
tcp 0 0 0.0.0.0:2280 0.0.0.0:* LISTEN 8793/sshd
tcp6 0 0 :::2280 :::* LISTEN 8793/sshd
3、根據(jù)secure文件中失敗的ip次數(shù)做限制
當(dāng)同一個(gè)IP地址超過5次的嘗試,那么就加入
/etc/hosts.deny
#! /bin/bash
# 提取所有的IP到black.list文件中
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.list
# 設(shè)定次數(shù)
define="5"
for i in `cat /usr/local/bin/black.list`
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:deny" >> /etc/hosts.deny
fi
fi
done
添加計(jì)劃任務(wù)。
[root@vps ~]$ crontab -e
# 每3分鐘檢查一次
*/3 * * * * sh /usr/local/bin/secure_ssh.sh
重啟 crontab
[root@vps ~]$ systemctl restart crond