您好,登錄后才能下訂單哦!
很多場合,我們不得不在公網(wǎng)開啟ssh 22端口,以CentOS6為例,下面的幾個辦法可以加固ssh連接
1、限制密碼嘗試次數(shù)(denyhosts)
yum install denyhosts --enablerepo=epel chkconfig denyhosts on /etc/init.d/denyhosts start
2、除掉密碼認(rèn)證,采用ssh密鑰登陸
修改/etc/ssh/sshd_config
PasswordAuthentication no
3、禁止root登陸
修改 /etc/ssh/sshd_config
PermitRootLogin no
4、限制連接頻率
/sbin/iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name ssh --rsource /sbin/iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent ! --rcheck --seconds 60 --hitcount 2 --name ssh --rsource -j ACCEPT
也可以利用iptables recent模塊搞另類一點的策略,默認(rèn)關(guān)閉ssh端口,用ping來解鎖。
iptables -A INPUT -p icmp --icmp-type 8 -m length --length 78 -j LOG --log-prefix "SSHOPEN: " #記錄日志,前綴SSHOPEN: iptables -A INPUT -p icmp --icmp-type 8 -m length --length 78 -m recent --set --name sshopen --rsource -j ACCEPT #linux默認(rèn)ping包一般為56字節(jié),加上IP頭20字節(jié),ICMP頭部8字節(jié),共84字節(jié)。我們這里指定78字節(jié),回頭用特定大小的ping包來解鎖。 iptables -A INPUT -p tcp --dport 22 --syn -m recent --rcheck --seconds 15 --name sshopen --rsource -j ACCEPT #符合sshopen的IP才會放行22端口 ping -s 50 host #Linux下解鎖 ping -l 50 host #Windows下解鎖
5、限制IP來源
這個稍微復(fù)雜一點點,采用geoip數(shù)據(jù)庫來識別IP來源,比如只允許中國的IP訪問
寫個腳本
#!/bin/bash # UPPERCASE space-separated country codes to ACCEPT ALLOW_COUNTRIES="CN" if [ $# -ne 1 ]; then echo "Usage: `basename $0` <ip>" 1>&2 exit 0 # return true in case of config issue fi COUNTRY=`/usr/bin/geoiplookup $1 | awk -F ": " '{ print $2 }' | awk -F "," '{ print $1 }' | head -n 1` [[ $COUNTRY = "IP Address not found" || $ALLOW_COUNTRIES =~ $COUNTRY ]] && RESPONSE="ALLOW" || RESPONSE="DENY" if [ $RESPONSE = "ALLOW" ]then exit 0 else logger "$RESPONSE sshd connection from $1 ($COUNTRY)" exit 1 fi
利用tcp_wrapper調(diào)用那個腳本
chmod 775 /usr/bin/sshfilter.sh echo "sshd: ALL" >>/etc/hosts.deny echo "sshd: 10.0.0.0/8" >>/etc/hosts.allow echo "sshd: ALL: aclexec /usr/bin/sshfilter.sh %a" >>/etc/hosts.allow
6、設(shè)置超時
ssh session 超時應(yīng)該屬于安全范疇,可以防止人離開后,終端被他人利用。
這里設(shè)置為1800秒(30分鐘)
方法一、利用環(huán)境變量TMOUT
echo "export TMOUT=1800" >/etc/profile.d/timeout.sh source /etc/profile.d/timeout.sh
方法二、修改sshd_config
ClientAliveInterval 60 ClientAliveCountMax 30
參考文章
http://www.axllent.org/docs/view/ssh-geoip/
http://www.haiyun.me/archives/iptables-recent.html
http://www.cnblogs.com/fhefh/archive/2011/10/19/2217954.html
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。