很多场合,我们不得不在公网开启ssh 22端口,以CentOS6为例,下面的几个办法可以加固ssh连接
1,限制密码尝试次数(denyhosts)
yum install denyhosts ——enablerepo=epel chkconfig denyhosts /etc/init.d/denyhosts 开始
2,除掉密码认证,采用ssh密钥登陆
修改/etc/ssh/sshd_config
PasswordAuthentication 没有
3,禁止根登陆
修改/etc/ssh/sshd_config
PermitRootLogin 没有
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 接受
也可以利用iptables最近模块搞另类一点的策略,默认关闭ssh端口,用平来解锁。
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 接受 # linux默认ping包一般为56字节,加20字上IP头节,ICMP头部8字节,共84字节。我们这里指定78字节,回头用特定大小的ping包来解锁。 iptables -A  INPUT -p  tcp ——dport 22,——syn -m recent ——rcheck ——seconds 15,——name sshopen ——rsource -j 接受 #符合sshopen的IP才会放行22端口 ping -s 50, host # Linux下解锁 ping -l 50, host # Windows下解锁
5,限制IP来源
这个稍微复杂一点点,采用geoip数据库来识别IP来源,比如只允许中国的IP访问
写个脚本
# !/bin/bash #,UPPERCASE space-separated  country codes 用接受 ALLOW_COUNTRIES=癈N” if [$ #大敌;-ne 1,);然后 echo 才能;“用法:,,‘basename 0美元,& lt; ip>“, 1祝辞,2 exit 才能;0,#,return true 拷贝case of config 问题 fi 国家=/usr/bin/geoiplookup 1美元,|,awk -F “:”,“{2美元,print }”, | awk -F “,”,“{1美元,print }”, | head -n 1 ' [[,COUNTRY 美元;=,“IP Address  not 发现“,| |,ALLOW_COUNTRIES 美元;=~,COUNTRY 美元;]],,,,反应=霸市怼?| |,响应=胺袢稀? if [, RESPONSE 美元;=,“允许”,] ,exit 0 其他的 logger 才能;“RESPONSE 美元;sshd connection 得到1美元,美元(国家)” exit 才能;1 fi
利用tcp_wrapper调用那个脚本
chmod 775年,/usr/bin/sshfilter.sh echo “sshd:,所有”,在在/etc/hosts.deny echo “sshd: 10.0.0.0/8”,在在/etc/系统 echo “sshd:,:, aclexec /usr/bin/sshfilter.sh % ",在在/etc/主机。允许
6,设置超时
ssh会话超时应该属于安全范畴,可以防止人离开后,终端被他人利用。
这里设置为1800秒(30分钟)
方法一,利用环境变量TMOUT
echo “export TMOUT=1800”,在/etc/profile.d/timeout.sh source /etc/profile.d/超时。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