配置更安全的SSH登录
SSH被认为是旧协议的安全替代方案,例如Telnet,rsh和rlogin,因为它会加密客户端和服务器之间的连接。 这种加密可以保护来自任何可能在网络上窃听的新井的流量。 但是,您的系统仍然可能成为拒绝服务攻击的受害者,或者是利用闲置会话的恶意用户,该会话不经意地无人看管。 此配方通过更新服务器的配置来加强SSH的第一步,以提高远程登录的安全性.
做好准备
此配方需要运行OpenSSH服务器的CentOS系统。 通过使用root帐户登录或使用sudo,还需要管理权限.
如何去做
请按照以下步骤提高SSH登录的安全性:
- 使用文本编辑器打开SSH服务器的配置文件:
vi /etc/ssh/sshd_config
- 找到LoginGraceTime选项。 取消注释并将其值更改为30秒,以限制用户提供其凭据的时间:
LoginGraceTime 30
- 查找并取消注释PrintLastLog选项并将其值更改为yes,以向用户显示上次登录的时间和位置:
PrintLastLog yes
- 取消注释“横幅”选项并将其值设置为/ etc / banner以向用户显示登录警告:
Banner /etc/banner
- 保存更改并关闭配置文件.
- 使用以下(或类似)措辞创建/ etc / banner文件:
This computer system is for authorized use only. All activity is logged and monitored. Users accessing this system without authority, or in excess of their authority, may be subject to criminal, civil, and administrative action. Continuing to use this system indicates your consent to these terms and conditions of use.
- 重启SSH服务器,配置更改生效:
systemctl restart sshd.service
- 要在10分钟不活动后自动注销会话,请使用以下命令创建/etc/profile.d/timeout.sh文件:
export TMOUT=600
工作原理
我们在SSH服务器的配置文件中调整的第一个选项是LoginGraceTime,以确定允许用户输入用户名和密码的时间。 默认情况下,如果用户在两分钟内未提供其凭据,则连接尝试将超时。 我们将此时间缩短为30秒,但如果您发现这个时间不够长,则可以设置更合适的值:
LoginGraceTime 30
然后,将PrintLastLog选项的值设置为yes会导致显示用户上次登录的时间和位置。 这很有用,因为未知的时间或位置可以提醒用户他们的帐户是否已被盗用并被用于未经授权的访问:
PrintLastLog yes
接下来,我们配置了登录横幅。 强烈警告的警告不太可能阻止恶意用户,但许多组织要求在用户出于法律原因登录时突出显示它们。 在某些管辖区域,此类消息被认为是足够的通知,以告知用户他们的行为受到监控,并且他们不应对他们在系统上所做的事情保密。 这使该组织有更好的法律地位来起诉任何滥用行为.
要在登录提示之前显示警告,我们将Banner设置为包含我们消息的文件的路径。 然后我们用所需的文本创建了文件:
Banner /etc/banner
在登录远程系统之前向用户显示横幅消息
注意
nroff可用于证明横幅文本的合理性:
(echo -e ".ll 75.pl 0.nh"; cat) | nroff > /etc/banner
cat从标准输入读取文本(完成后按Ctrl + D),并将echo'd指令和文本通过管道传送给nroff进行格式化。
.ll告诉nroff将行长度设置为75个字符。使用小于80的值是个好主意,因为传统终端每行显示80个字符。
.pl设置页面长度,并将其设置为0可防止nroff在文本后添加额外的空格以尝试填充某些虚构打印页面的长度。
.nh防止nroff在一行结尾处连字。
如果要在用户登录后而不是之前显示横幅,则可以使用日文件的消息。在这种情况下,取消注释PrintMotd选项并将其值设置为yes,然后将文本保存在/ etc / motd中。
最后,我们创建了/etc/profile.d/timeout.sh文件来设置TMOUT环境变量。在/etc/profile.d下设置TMOUT会在所有用户登录时全局应用它。要改为定位单个用户,或者如果要覆盖特定用户的全局值,可以将导出放在〜/ .bash_profile中文件:
export TMOUT=600
现在使用变量set,bash会自动关闭用户的会话,如果它在指定的时间内处于非活动状态,并且消息超时等待输入:auto-logout。 该值以秒为单位,配方示例在10分钟后关闭空闲会话.
See also
Refer to the following resources for more information on tightening security on SSH logins:
- The sshd_config manual page (man 5 sshd_config)
- RHEL 7 System Administrator's Guide: OpenSSH (https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-OpenSSH.html)
- CentOS Wiki: Securing OpenSSH (https://wiki.centos.org/HowTos/Network/SecuringSSH)
- Should I use a login banner? (http://serverfault.com/questions/24376/should-i-use-a-login-banner-and-if-so-what-should-it-say)