1、只使用ssh v2 //etc/ssh/sshd_cofig
Protocol 2
ListenAddress x.x.x.x --如果你的环境有VPN通道,建议sshd监听所在的内网地址;
2、限制用户访问(用户与用户之间使用空格隔开,可以使用?*通配符)
AllowUsers user01 root --只允许那些用户使用ssh登录
DenyUsers user02 user03 --值拒绝那些用户访问,两种方法选其一
3、配置空闲超时自动断开 //etc/profile
使用shell变量来完成直接简单:TMOUT
4、禁止管理员直接使用ssh登录
PermitRootLogin no --使用普通用户登录用,调用su/sudo来提权
5、更改默认的监听端口和监听IP
Port 5568
ListenAddress 0.0.0.0 --按照需求可设置监听在服务器私有地址上,如果监听在公网的地址上则需要更改端口、不能直接使用22端口;
6、给账户设置强壮的密码
# rpm -ivh expect-5.43.0-5.1.i386.rpm
# mkpasswd -l 128 -d 8 -C 15 -s 10
omlrjcU3fxivSqtotyu'nk6tR(zhp1Jcel_gxjnqedErpx_1g4U]amtqst3igWXb-f2eqqqJohfjuzccdC.coMok7Abvtjfzej&vfvfTblgBmWmijqh.w&acegjrqwqq
-l 密码长度
-d 多少个数字
-C 大写字母个数
-s 特殊符号的个数
7、使用密钥对验证
#ssh-keygen -t rsa/
#ssh-copy-id /$HOME/.ssh/id.rsa.pub username@remotehost
8、使用iptables控制
在每一分钟内只允许有三个新的连接去连接SSH服务器,并发连接是三个,如果超过此值将被拒绝
#iptables -A input -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 ACCEPT
#iptables -A input -p tcp --dport 22 -m state --state ESTABLISHED -j ACCEPT
#iptables -A input -p tcp --dport 22 -j DROP
#iptacles -A output -o eth0 -p tcp --sport 22 -m state --state RSTABLISHED -j ACCPET
9.减少密码错误尝试次数 (/etc/ssh/sshd_config)
MaxAuthTries=3
当SSH登录失败次数超过3次就使用tcpwrappers来拒绝。
使用脚本实现对sshd暴力破解的IP进行拦截,把连续3次以上通过ssh登录系统失败的IP放到/etc/hosts.deny 。 文件中的IP不能重复。
脚本要求每10分钟执行一次
#!/bin/bash export bad_ip=$(lastb -i -a | grep ssh | awk '{print $NF}'|sort |uniq -c |awk '$1>3 {print $2}') for i in $bad_ip do echo "sshd: $i" >> /etc/hosts.deny done echo "" > /var/log/btmp |
#vim /etc/crontab 10 * * * * * /test/shell/ssh.sh |