1. 程式人生 > >Centos下防止ssh暴力破解密碼的方法

Centos下防止ssh暴力破解密碼的方法

方法一、 收集 /var/log/secure 裡面的資訊,若是某個IP 連結次數超過一定次數 ,則把此ip記錄到/etc/hosts.deny裡面。 通過crontab來執行,每分鐘執行一次。 */1 * * * * /root/Denyhosts/Denyhosts.sh #!/bin/bash cat /var/log/secure|awk ‘/Failed/{print $(NF-3)}’|sort|uniq -c|awk ‘{print $2"=" $1;}’ >/root/Denyhosts/Denyhosts.txt DEFINE=“10” for i in cat /root/Denyhosts/Denyhosts.txt

do IP=echo $i|awk -F= '{print $1}' NUM=echo $i|awk -F= '{print $2}' if [ $NUM -gt $DEFINE ] then ipExists=grep $IP /etc/hosts.deny |grep -v grep |wc -l if [ ipExistslt1]thenecho"sshd:ipExists -lt 1 ] then echo "sshd:IP" >> /etc/hosts.deny fi fi done 方法二、 DenyHosts官方網站為:
http://denyhosts.sourceforge.net

  1. 安裝

    tar -zxvf DenyHosts-2.6.tar.gz

    cd DenyHosts-2.6

    python setup.py install

預設是安裝到/usr/share/denyhosts目錄的。 2. 配置 # cd /usr/share/denyhosts/ # cp denyhosts.cfg-dist denyhosts.cfg # vi denyhosts.cfg PURGE_DENY = 50m #過多久後清除已阻止IP HOSTS_DENY = /etc/hosts.deny #將阻止IP寫入到hosts.deny BLOCK_SERVICE = sshd #阻止服務名 DENY_THRESHOLD_INVALID = 1 #允許無效使用者登入失敗的次數 DENY_THRESHOLD_VALID = 10 #允許普通使用者登入失敗的次數 DENY_THRESHOLD_ROOT = 5 #允許root登入失敗的次數 WORK_DIR = /usr/local/share/denyhosts/data #將deny的host或ip紀錄到Work_dir中 DENY_THRESHOLD_RESTRICTED = 1 #設定 deny host 寫入到該資料夾 LOCK_FILE = /var/lock/subsys/denyhosts #將DenyHOts啟動的pid紀錄到LOCK_FILE中,已確保服務正確啟動,防止同時啟動多個服務。 HOSTNAME_LOOKUP=NO #是否做域名反解 ADMIN_EMAIL = #設定管理員郵件地址 DAEMON_LOG = /var/log/denyhosts #自己的日誌檔案 DAEMON_PURGE = 10m #該項與PURGE_DENY 設定成一樣,也是清除hosts.deniedssh 使用者的時間。 3. 設定啟動指令碼 # cp daemon-control-dist daemon-control # chown root daemon-control # chmod 700 daemon-control 完了之後執行daemon-contron start就可以了。 # ./daemon-control start 如果要使DenyHosts每次重起後自動啟動還需做如下設定: # ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts # chkconfig --add denyhosts # chkconfig denyhosts on 然後就可以啟動了: # service denyhosts start 可以看看/etc/hosts.deny內是否有禁止的IP,有的話說明已經成功了。 提高ssh安全性的方法

  1. 修改sshd伺服器的配置檔案/etc/ssh/sshd_config,將部分引數參照如下修改,增強安全性。 系統預設使用22號埠,將監聽埠更改為其他數值(最好是1024以上的高階口,以免和其他常規服務埠衝突),這樣可以增加入侵者探測系統是否運行了 sshd守護程序的難度。 Port 5555 對於在伺服器上安裝了多個網絡卡或配置多個IP地址的情況,設定sshd只在其中一個指定的介面地址監聽,這樣可以減少sshd的入口,降低入侵的可能性。 ListenAddress 192.168.0.1 如果允許使用者使用root使用者登入,那麼黑客們可以針對root使用者嘗試暴力破解密碼,給系統安全帶來風險。 PermitRootLogin no 允許使用空密碼系統就像不設防的堡壘,任何安全措施都是一句空話。 PermitEmptyPasswords no 只允許指定的某些使用者通過ssh訪問伺服器,將ssh使用許可權限定在最小的範圍內。 AllowUsers sshuser1 sshuser2 同上面的AllowUsers類似,限定指定的使用者組通過ssh訪問伺服器,二者對於限定訪問伺服器有相同的效果。 AllowGroups sshgroup 禁止使用版本1協議,因為其存在設計缺陷,很容易使密碼被黑掉。 Protocol 2 關閉X11Forwarding,防止會話被劫持。 X11Forwarding no sshd服務執行時每一個連線都要使用一大塊可觀的記憶體,這也是ssh存在拒絕服務攻擊的原因。一臺伺服器除非存在許多管理員同時管理伺服器,否則上面這 個連線數設定是夠用了。 MaxStartups 5 注意:以上引數設定僅僅是一個示例,使用者具體使用時應根據各自的環境做相應的更改。
  2. 修改sshd伺服器的配置檔案/etc/ssh/sshd_config的讀寫許可權,對所有非root使用者設定只讀許可權,防止非授權使用者修改sshd 服務的安全設定。

chmod 644 /etc/ssh/sshd_config 3. 設定TCP Wrappers。伺服器預設接受所有的請求連線,這是非常危險的。使用TCP Wrappers可以阻止或允許應用服務僅對某些主機開放,給系統在增加一道安全屏障。這部分設定共涉計到兩個檔案:hosts.allow和 hosts.deny。 將那些明確允許的請求新增到/etc/hosts.allow中。如系統僅允許IP地址為192.168.0.15和10.0.0.11的主機使用 sshd服務,則新增如下內容:

sshd:192.168.0.15 10.0.0.11

將需要禁止使用的資訊新增到/etc/hosts.deny中。如對除了在hosts.allow列表中明確允許使用sshd的使用者外,所有其他使用者都禁止使用sshd服務,則新增如下內容到hosts.deny檔案中: sshd:All 注意:系統對上述兩個檔案的判斷順序是先檢查hosts.allow檔案再檢視hosts.deny檔案,因此一個使用者在hosts.allow允許使用網路資源,而同時在hosts.deny中禁止使用該網路資源,在這種情況下系統優先選擇使用hosts.allow配置,允許使用者使用該網路資源。