多管齐下保护SSH安全

2017-03-08 22:45
网络安全和信息化 2017年7期
关键词:配置文件日志命令

引言:对于Linux来说,使用SSH连接可以实现远程访问。不过,这也成了黑客重点攻击的目标。如果黑客破译了连接密码,就可以轻松地对SSH服务器进行渗透和破坏。因此,如何保护SSH服务的安全,是管理员必须重视的问题。

对于Linux来说,使用SSH连接可以实现远程访问。不过,这也成了黑客重点攻击的目标。如果黑客破译了连接密码,就可以轻松的对SSH服务器进行渗透和破坏。因此,如何保护SSH服务的安全,是管理员必须重视的问题。当然,要想提高SSH的安全性,仅仅依靠单一的防护手段是远远不够的。这就需要采取多种方法,从不同角度强化SSH的安全。

准确追踪SSL的访问信息

当通过SSH连接到Linux服务器后,默认会保存在“/var/log/secure”日志中。不过,很多经过认证登录的程序(例如vsFTPd等)都在在其中存储日志信息,这给针对SSH日志的分析工作带来了不便。

其实,利用TCP_Wraper机制,可以将SSH日志信息(例如登录实现,IP等)单独记录到指定的文件中,可以让管理员准确分析SSH日志信息。

首先,需要确定当前系统的SSH是否支持TCP_Wraper,执行“which sshd”命令,来定位“shd”的路径,例如“/usr/sbin/sshd”。执行“ldd /usr/sbin/sshd”命令,来查看其调用了库文件信息。执行“ldd /usr/sbin/sshd |grep warp”命令,如果出现“libwrap.so”开头之类文件信息时,则说明SSH支持TCP_Wraper功能。

执 行“vi /etc/hosts.allow”命令,在该文件中添加“sshd:192.168.2.0/25 5.255.255.0:spawn echo"`data` %a access this server %d on %A">>/var/ssh.log”行,表示运行指定的IP范围访问SSH服务,本例为“192.168.2.0/255.255.255.0”。执 行“vi /etc/hosts.deny”命 令,在该文件中添加“all:all:spawn echo "`data` %a access this server %d on%A">>/var/ssh.log”行,表示禁止非上述IP范围外的主机进行访问。不管是否允许访问,都将访问时的时间,访问者的IP,访问的本机进程信息以及所访问的本机的IP记录到指定的文件中。这样,管理员可以随时执行“cat /var/ssh.log”命令,来查看所记录的信息。

也可以直接在“/etc/hosts.deny”文件中添加“sshd:ALL EXCEPT 192.168.2. spawn echo"`data` %a access this server %d on %A">>/var/ssh.log”行,而必须编辑“hosts.allow”文件,也可以实现同样的效果。

当然,TCP_Wraper机制不能记录访问者的账户名信息,所需需要执行“vi /var/log/secure”命令,在安全日志中查找相关用户名信息。实际上,在SSH的配置文件中可以禁止指定的账户访问,执行“vi /etc/ssh/sshd_config”命令,在其中添加“DenyUser xxx”行,其中的“xxx”表示具体的账户名。执行“service sshd restart”命令重启SSH服务,这样该账户就会被拒之门外了。注意,如果在该配置文件中只添加“AllowUsers xxx”行,那么则只允许该账户登录SSH,其余的账户(包括Root)都将被拒之门外。而如果两者都存在,则“DenyUser xxx”是优先于“AllowUsers xxx”的。

严格限制SSH登录账户

使用PAM安全认证机制,可以最大限度的保护SSH的安全。对于PAM来说,实际上分为多个层面,第一个部分为应用程序层面,第二部分是名为“Libpam.so”模块层面,第三部分为每个程序对应的PAM配置文件,最后一个层面是根据上述配置文件,来调用与之对应的安全模块。执行“ldd /usr/sbin/sshd |grep pam”命令,可以看到与SSH服务相关的PAM模块文件。进入“/etc/pam.d”目 录,执行“vim sshd”命令,在其中 的“account required pam_nologin.so”行下添加“account required pam_access.so accessfile=/etc/sshaccessuser”行,其作用是使用“pam_access.so”模块对SSH的登录进行控制。

为了不影响其他程序,这里指定了专门的账户管理文件“/etc/sshaccessuser”。执行“vi /etc/sshaccessuser”命令,在其中添加允许登录的账户信息,例如添加“+:user1:ALL”以及“+:user2:ALL”等行,允许“user1”、“User2”账户正常登录SSH服务,其中的“ALL”表示可以从任何地方登录。添加完允许登录的账户后,在最后一行输入“-:ALL:ALL”行,其作用是禁止其他的账户从任何地方访问SSH服务。

这样,当非法的账户试图登录本机的SSWH服务时,系统会提示“Commection closed”信息,禁止其进行登录。

当然,也可以使用“pam_listfile.so”模 块,来 实现相同的功能。例如将上述语句替换为“auth reqiired pam_listfile.so iten=user sense=denyfile=/etc/sshlistonerr=succeed”一行,之后执 行“vi /etc/sshlist”命令,在该列表文件中输入对应的账户名。这样,只要是该列表文件中的账户名,都禁止登录SSH服务。对应的,如果将上述语句中的“sense=deny” 修改为“sense=allow”的话,则情况刚好相反,只有该列表文件中的所有账户才可以访问SSH服务。

防范暴力破解SSH密码

对于开启了SSH服务的主机来说,一旦其密码被黑客破解,系统就没有安全性可言了。为了防止黑客暴力破解SSH密码,可以采取多种措施加以应对。例如修改SSH登录账户名称,将其设置为很不常用的名称,同时禁用Root账户。将SSH登录帐号的密码设置了足够复杂,避免其被轻易猜测出来。对SSH服务的端口号进行修改,不再使用TCP 22,同时只使用SSH2而不使用SSH1。对SSH服务进行合理的配置,当用户在规定的时间内没有正确连接的话,则自动断开其连接。严格限制允许同时连接的SSH登录数量,以防止黑客快速破解密码。为SSH服务配置密钥认证功能,让无关用户无法连接等。

例如执行“useradd xxx”命令,创建一个不太常见的账户名, “xxx”为具体的账户名。执行“password!$”命令,为其设置一个复杂的密码。接着执行“vi /etc/passwd”命令,在密码文件中将该“xxx”账户的UID设置为0,同时可以根据需要修改其主目录。执行“passwd -l root”命令,将root账户锁定。执行“vi /etc/ssh/sshd_config”命令,在SSH配置文件中添加“Port 22219”行,将其连接端口设置为22219,当然可以自由定义该端口。这样,在客户机上执行诸如“ssh xxx@192.168.1.100 -p 22219”之类的命令,才可以进行连接,假设SSH主机IP为192.168.1.100。

添 加“LoginGraceTime 120”行,其作用是在120秒时间内客户端没有正确登录,则断开连接,您可以根据需要进行设定,默认为0表示无限制。添加“MaxStartups 3”行,其作用是设置同时发生的未验证的并发量,即允许同时有几个登录连接,其默认值为10。添加“MaxAuthTries 3”行,其作用是最多允许尝试3此密码,超过该次数则断开连接。添加“MaxSessions 3”行,表示最多允许3个连接会话。

执 行“ssh-keygen -t rsa”命令,根据提示信息保持默认密钥存储路径,确认后生成一对密钥文件。进入当前用户的主目录,在其中的“.ssh”目录中看到名为“id_rsa”的私钥文件和名为“id_rsa.pub”的公钥文件。执行“scp id_rsa.pub xxx.xxx.xxx.xxx:~/.ssh/authorized_keys”之类的命令,将公钥文件复制到别的主机的相应目录中,并将其更名为“authorized_keys”。这样,当本机使用ssh命令连接上述主机时,可以直接连接而无需密码了。但是如果想希望指定的账户从别的主机上使用密钥认证直接连接本机,则需要根据需要将上述“id_rsa.pub”文件复制到本机对应账户的主目录下。

例如在本机上存在名为“sshuser1”的账户,将上述“id_rsa.pub”文件复制到该账户的主目录下,并将其更名 为“authorized_keys”。之后将上述“id_rsa”的私钥文件复制到U盘上,之后将其复制到目标主机当前账户主目录。在该主机上SSH远程访问本主机,而无需输入密码就可以进行登录。其他用户因为没有该私钥文件,自然就无法顺利本机的访问SSH服务。

当然,前提是需要对“sshd_config” 文件进行编辑,将其中的“PaswordAuthentication”的值设置为“no”,以禁止使用密码认证。当然,使用SecureCRT等连接工具,可以选择密钥认证的功能,选择该私钥文件,也可以实现和SSH服务器的直接连接操作。

猜你喜欢
配置文件日志命令
只听主人的命令
一名老党员的工作日志
扶贫日志
互不干涉混用Chromium Edge
基于Zookeeper的配置管理中心设计与实现
忘记ESXi主机root密码怎么办
雅皮的心情日志
移防命令下达后
为View桌面准备父虚拟机
游学日志