openssh加固

  

很多场合,我们不得不在公网开启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



openssh加固