购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1.2 远程连接安全配置

传统的远程传输协议(如FTP、Telnet)在本质上都是不安全的,传输内容是明文,容易遭受“中间人”攻击。因此,在管理远程服务器时,最常使用的是SSH远程连接协议。SSH传输的数据是加密的,可以有效地防止远程连接会话时出现信息泄密。在数据传输的时候,SSH会先对联机的数据包通过加密技术进行加密处理,然后再进行数据的传输,确保了传输过程中的安全性,可以有效防范“中间人”攻击。但是,SSH的不安全配置在一定程度上也会造成一系列安全问题,如弱口令枚举、特权用户登录等。

查询系统SSH协议开启的端口号,默认端口为22,此时可通过修改sshd_config配置文件的Port参数指定需要设定的SSH服务端口,并重启SSH服务使其生效。修改SSH默认端口号的命令如下,结果如图3-9所示。

图3-9 修改SSH默认端口号

通过Nmap等端口探测工具,利用目标端口返回的指纹信息进行快速比对,可快速探测目标服务开启的SSH服务的端口号。执行如下命令,结果如图3-10所示。

图3-10 Nmap端口探测结果

为隐藏SSH服务类型,避免被端口探测工具指纹识别,可以通过修改sshd_config配置文件,增加DebianBanner no一行,可以隐藏SSH携带系统的版本信息,利用sed-i命令行可以清除SSH指纹携带的版本信息,命令如下。隐藏指纹后的扫描结果如图3-11所示。

图3-11 SSH隐藏指纹后Nmap的扫描结果

查询当前Linux系统的SSH协议是否允许特权用户登录,可以通过查询SSH服务的sshd_config配置文件PermitRootLogin参数,yes为允许特权用户登录,no为不允许特权用户登录。允许特权用户登录命令如下,结果如图3-12所示。

图3-12 允许特权用户登录

通过修改SSH服务的sshd_config配置文件PermitRootLogin为no,然后重启SSH服务,则可以禁止特权用户远程登录,结果如图3-13所示。

图3-13 拒绝特权用户远程登录

SSH服务默认是没有对远程登录来源进行有效限制的,有可能造成SSH弱口令枚举攻击等,此时可以通过修改Linux系统的hosts.allow和hosts.deny两个文件,对访问来源进行有效的访问控制。在hosts.deny文件中添加sshd:ALL,可阻止所有远程主机访问;在hosts.allow文件中增加允许远程主机访问的IP地址列表,如sshd:172.16.213.12,这样就只允许IP地址为172.16.213.12的主机使用SSH协议进行远程连接。图3-14所示为拒绝远程主机访问,图3-15所示为允许远程主机访问。

图3-14 拒绝远程主机访问

为防止SSH服务弱口令枚举攻击,可以通过修改/etc/pam.d/目录下的login和sshd文件,增加SSH服务非法登录次数限制,例如:当用户错误输入口令3次以上时,会暂时锁定当前用户1min。在login文件中添加以下内容,结果如图3-16所示。

图3-15 允许远程主机访问

参数说明如下。

● even_deny_root:限制root用户。

● deny:设置普通用户和root用户连续错误登录的最大次数。

● unlock_time:设定普通用户锁定后,多长时间后解锁,单位为s。

● root_unlock_time:设定root用户锁定后,多长时间后解锁,单位为s。

图3-16 修改login文件内容

在sshd文件中添加以下内容,结果如图3-17所示。

图3-17 修改sshd文件内容

修改完login和sshd文件后,当远程系统通过SSH服务连接该主机时,如果第一次输入口令错误,即便再次输入正确口令也不能够正常登录系统,系统会将该用户锁定30s后再进行登录。同时,也可在该系统中执行如下pam_tally2命令,查看远程系统连接该主机输入错误密码的次数,结果如图3-18所示。

图3-18 查看错误密码次数 MvpwONZDtP1YAWIUDmFCHyznillTj//KEWRoWfcUHwtvpRW8mPSuZ9Ej5ec3ZDz3

点击中间区域
呼出菜单
上一章
目录
下一章
×