linux服务器安全配置实例(二)sshd服务安全配置和优化

来源:互联网 发布:盗版金蝶软件数据丢失 编辑:程序博客网 时间:2024/04/29 06:07

ssh服务是最常用的远程登录服务,虽然其比telnet安全多,但是也存在一定的安全漏洞。一些不友好的小伙伴们会使用一些不和谐程序对ssh服务进行暴力破解。对ssh服务进行适当的配置可以完全杜绝暴力破解。同时对sshd服务进行优化配置可以加快连接速度,减少耗费带宽。
编辑/etc/ssh/sshd_config:

sudo vim /etc/ssh/sshd_config

这里写图片描述
修改如下配置(注意如果配置前面有#,代表配置被注释,这里我只罗列出需要配置的,如果你的服务器上的配置被注释掉,去掉#打开注释即可。另外我会在配置旁边加上配置说明的注释):

Port 56100 #ssh服务端口号,我们可以改成高端口,一般端口扫描工具不会扫描高端口的。AddressFamily any #ssh服务的协议族,可以用ipv4 ipv6或者直接使用any。Protocol 2 #ssh服务协议版本,默认为1,建议使用2,1有漏洞。KeyRegenerationInterval 3600 # 在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成。这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。ServerKeyBits 2048 #  指定临时服务器密钥的长度。1024存在认证漏洞,安全最低2048位。LogLevel ERROR #日志级别,可以使用 QUIET, FATAL, ERROR, INFO(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3。LoginGraceTime 30 #限制用户必须在指定的时限内认证成功,建议设置低,增加暴力破解难度,单位为秒。MaxAuthTries 3 #最多登录尝试次数,建议设置低一些,加大暴力破解难度。RSAAuthentication yes #使用纯 RSA公钥认证。PubkeyAuthentication yes #使用公钥认证,推荐使用安全高效!AuthorizedKeysFile      .ssh/authorized_keys #用户公钥文件保存路径,默认为用户的home目录下.ssh隐藏文件夹中的authorized_keys,建议更换到其他目录,防止丢失或者被恶意登陆者在默认的这个路径中找到篡改。PermitEmptyPasswords no #不允许空密码登录,这个太危险啦。GSSAPIAuthentication no #不基于 GSSAPI 的用户认证,关闭,优化性能。UsePAM no #使用PAM认证,如果不用LDAP之类的登陆,建议关闭,优化性能。X11Forwarding no #如果没有使用x11转发最好关闭掉,优化性能。PrintMotd no #登录打印公告信息,可以修改或者关闭,修改/etc/motd来震慑恶意登陆者,默认会显示一些系统信息,关闭掉,减少恶意登陆者获取的信息量,防止被恶意利用。PrintLastLog no #不打印最后登陆信息,减少恶意登陆者获取的信息量,防止被恶意利用。TCPKeepAlive yes #保持长连接,加快连接速度,优化性能。PidFile /var/run/sshd.pid #ssh服务的pid文件。Banner none #不显示系统banner信息,如果开启会在每次登陆时显示系统信息,减少恶意登陆者获取的信息量,防止被恶意利用。PermitRootLogin no #禁止root用户登陆,降低远程登陆的用户权限。PasswordAuthentication no #允许用户名密码登陆,no,禁止使用用户名和密码登陆,使用公钥登陆,防止针对用户名和密码的暴力破解。

注意,这里使用了公钥认证,所以需要生成登陆的私钥和公钥,将公钥上传到服务器上,并写入到上面的AuthorizedKeysFile配置指定的公钥文件中。对于这个文件有如下要求:
①、该文件权限必须是640,所以需要执行sudo chmod 640 公钥文件,如:sudo chmod 640 /home/kid/.ssh/authorized_keys。
②、该文件的上层目录必须为700权限,所以需要执行sudo chmod 700 上层文件夹路径,如:sudo chmod 700 /home/kid。
③、该文件可以放多个公钥,注意公钥由于特别长,有的生成工具会把一个公钥拆分成多行,但sshd服务要求一个公钥只能一行存放,所以一定要编辑成一行才好使。
上述配置完成后,重启sshd服务,sudo systemctl restart sshd,即可使用公钥认证远程登录到服务器,如果之前没使用过公钥登录的小伙伴,建议改完配置不要退出当前登录,等待重启完后再开一个连接测试下公钥认证能否发登录成功。如果不成功,需要注意上面的要求!!!同时可以使用没断开连接的终端执行sudo tail -f /var/log/message检查sshd服务的日志信息,同样也需执行sudo tail -f /var/log/secure检查sshd服务的认证日志信息。在tail -f 是实时从尾部监听一个服务,经常用于动态查看相关日志文件,由于是监听要退出的话需要按ctrl+c结束。这样sshd服务的安全性就有很大的提升了,当然在sshd服务中还可以配置允许登陆的ip和禁止登陆的ip,这个以后我会单开文章详细说明。另外为了我们的配置不被恶意篡改可以执行,可以执行sudo chattr +i /etc/ssh/sshd_configsudo chattr +i 公钥文件(如:sudo chattr +i /home/kid/.ssh/authorized_keys),chattr +i 命令会多某个文件设置隐藏状态位,设置后该文件即使是root和文件所有者都无法对该文件进行删除、修改、移动等操作,保证了该文件的安全。
这里写图片描述
即使恶意登陆者想对sshd服务进行重新配置,把自己的公钥加入公钥文件都是无法操作的。但当你确实想要修改这个文件的时候,可以使用
sudo chattr -i /etc/ssh/sshd_config以及sudo chattr +i /home/kid/.ssh/authorized_keys然后编辑这两个文件。

0 0