快捷搜索:   nginx

Linux 加强ssh服务器的安全配置

一、sshd本身加固

1.为root设置强密码

2.添加一个新用户,并禁止root进行ssh登录 (让普通用户su得到root的环境变量 su - root)

[root@unixhater ~]# vim /etc/ssh/sshd_config
......
#PermitRootLogin yes
PermitRootLogin no  #设置这个选项
#StrictModes yes
......
"/etc/ssh/sshd_config" 120L, 3344C written
[root@unixhater ~]# service  sshd reload #更新设置

3.让sshd仅支持证书登录

为新用户生成密钥对,让新用户能够使用证书登录 见

关闭sshd的密码验证登录

[root@unixhater ~]# vim /etc/ssh/sshd_config
......
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
PasswordAuthentication no #设置这个选项
#PermitEmptyPasswords no
......

这时使用MyEnTunnel软件也要注意启用putty证书登录。因为我一般都是用secureCRT,但是它仅只持自有格式与openssh格式的密钥对,而MyEnTunnel却仅支持putty格式,所以我的方法是新增一个用户专门。

4.更换ssh登录端口

更改/etc/ssh/sshd_config的Port 22为其它端口,reload生效
端口更改后注意iptables设置

iptables -A INPUT -p tcp --dport XXXX -j ACCEPT
iptables -D INPUT -p tcp --dport 22 -j ACCEPT

当然还有其它的,如修改编译sshd,修改其版本信息等等。

二、其它方法

1.使用端口碰撞 knockd

这个软件很有意思,有。
第一种:设置三个端口,当你顺序访问这三个端口,sshd端口会打开;又设置另外三个端口,当你顺序访问这三个端口访问会关闭sshd

第二种:设置三个端口,当你顺序访问这三个端口, 会自动打开sshd端口一段时间,这时你可以连上sshd,超时后会自动断开(见http://linux.vbird(DOT)org/linux_security/knockd.php鸟哥讲的就是这种)

第三种:不使用固定端口,而是指定一个文件,这个文件会生成一次性的端口序列,使用完毕后失效,文件又会生成一个新的序列(oh,my god难道每次都要去查看成的序列是什么,要是忘了查那不是完了?) 理解错误,见评论

安装

[root@unixhater ~]# yum install libpcap
[root@unixhater ~]# yum install libpcap-devel
[root@unixhater ~]# wget http://www.zeroflux.org/proj/knock/files/knock-0.5.tar.gz
[root@unixhater ~]# tar xzvf knock-0.5.tar.gz
[root@unixhater ~]# cd knock-0.5
[root@unixhater knock-0.5]# ./configure --prefix=/usr/local/knock
[root@unixhater knock-0.5]# make && make install

然后编辑 /etc/knock.conf
centos需要更改iptables路径,与ssh端口(因为我已经改了默认端口),接着按手册页的选3个方法中的一个(默认是第一种)

启动

/usr/local/knock/sbin/knockd -d

knock有专门用于顺序访问端口的客户端软件:knock(windows与linux平台都有)当然也可以直接执行三次telnet,或者使用nmap。见

不过值得注意的是,我在公司测试过,效果很好,但是在家测试时发现有问题,有时可以,但大多数不行,具体是我通过knock关闭sshd,但是并没 有生效。查看日志,又有IP打开!而且出现的几率很大,我查了一下,都是深圳的IP,我有个想法,可能是因为我这里宽带有多路负载均衡机制,导致出包顺序 都乱了。

2.iptables的recent模块  见
基本原理是:如果攻击者在特定时间内尝试登录sshd一定次数,就会被iptables屏蔽一段时间。

3.denyhost  见
基本原理是:这个软件自动分析日志,并将攻击者加入到/etc/hosts.deny文件中,这样就屏蔽了他们。

总之我觉得方法1相当于又加了一道验证,而方法2,3,它们是针对攻击作出相应的屏蔽。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论