Linux防止SSH暴力破解

大雄45發表於2021-08-03

每次登入系統( 7),就會發現有N次登陸失敗的統計資訊,如:

Linux防止SSH暴力破解Linux防止SSH暴力破解

檢視  /var/log/secure 日誌檔案可以看到檔案中有很多認證失敗的ip登入資訊,這就說明已經被無數不同的IP地址和不同的使用者進行SSH嘗試連線了。

密碼再複雜也頂不住這樣暴力掃描啊,為預防萬一,下面總結了幾種防範方法:

1、禁止root登入

修改sshd伺服器端的配置檔案  /etc/ssh/sshd_config

[root@vps ~]$ vi /etc/ssh/sshd_config
---------------配置如下----------------
PermitRootLogin no
重啟  
[root@vps ~]$ service sshd restart
2、修改 SSH 預設埠

修改SSH預設埠號,sshd伺服器端的配置檔案為  /etc/ssh_config

[root@vps ~]$  vi /etc/ssh/sshd_config
---------------配置如下----------------
Port 2280
重啟SSH
[root@vps ~]$ systemctl restart sshd
檢視狀態
[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、根據secure檔案中失敗的ip次數做限制

當同一個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
 
# 設定次數
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

新增計劃任務。

[root@vps ~]$ crontab -e
# 每3分鐘檢查一次
*/3 * * * *  sh /usr/local/bin/secure_ssh.sh
重啟 crontab
[root@vps ~]$ systemctl restart crond

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2785072/,如需轉載,請註明出處,否則將追究法律責任。

相關文章