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

來源:互聯網
上載者:User

方法一,

收集 /var/log/secure 裡面的資訊,若是某個IP 連結次數超過一定次數 ,則把此ip記錄到/etc/hosts.deny裡面。

通過crontab來執行,每天的1點1分執行一次。

1 * * * sh /root/bin/Denyhosts.sh


 
#!/bin/bash

#Denyhosts SHELL SCRIPT


cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"=" $1;}' >/root/bin/Denyhosts.txt

DEFINE="10"

for i in `cat /root/bin/Denyhosts.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

方法二,

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配置,允許使用者使用該網路資源。

4. 盡量關閉一些系統不需要的啟動服務。系統預設情況下啟動了許多與網路相關的服務,因此相對應的開放了許多連接埠進行LISTENING(監聽)。我們知道,開放的連接埠越多,系統從外部被入侵的可能也就越大,所以我們要盡量關閉一些不需要的啟動服務,從而儘可能的關閉連接埠,提供系統的安全性。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.