系统服务
加固SSH服务
说明
SSH(Secure Shell)是目前较可靠,专为远程登录会话和其他网络服务提供安全性保障的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。透过SSH可以对所有传输的数据进行加密,并防止DNS欺骗和IP欺骗。OpenSSH是SSH协议的免费开源实现。
加固SSH服务,是指修改SSH服务中的配置来设置系统使用OpenSSH协议时的算法、认证等参数,从而提高系统的安全性。表1中详细说明了各加固项含义、建议加固值及其默认策略。
实现
服务端加固操作如下:
打开服务端SSH服务的配置文件/etc/ssh/sshd_config,在该文件中修改或添加对应加固项及其加固值。
保存/etc/ssh/sshd_config文件。
重启SSH服务,命令如下:
systemctl restart sshd
须知:
重启SSH服务仅影响新建立的SSH会话,已经建立的SSH会话不会受到影响,已有SSH会话将继续使用其初始化时的加固参数和配置。
客户端加固操作如下:
- 打开客户端SSH服务的配置文件/etc/ssh/ssh_config,在该文件中修改或添加对应加固项及其加固值。
- 保存/etc/ssh/ssh_config文件。
加固项说明
服务端加固策略
SSH服务的所有加固项均保存在配置文件/etc/ssh/sshd_config中,服务端各加固项的含义、加固建议以及openEuler默认是否已经加固为建议加固值请参见表1。
表 1 SSH服务端加固项说明
说明:
默认情况下,登录SSH前后显示的提示信息保存在/etc/issue.net文件中,/etc/issue.net默认信息为“Authorized users only. All activities may be monitored and reported.”。客户端加固策略
SSH服务的所有加固项均保存在配置文件/etc/ssh/ssh_config中,客户端各加固项的含义、加固建议以及openEuler默认是否已经加固为建议加固值请参见表2。
表 2 SSH客户端加固项说明
ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256
说明:
对于使用dh算法进行密钥交换的第三方客户端和服务端工具,要求允许建立连接的最低长度为2048bits。
其他安全建议
SSH服务仅侦听指定IP地址。
出于安全考虑,建议用户在使用SSH服务时,仅在必需的IP上进行绑定侦听,而不是侦听0.0.0.0,可修改/etc/ssh/sshd_config文件中的ListenAddress配置项。
打开并修改/etc/ssh/sshd_config文件。
vi /etc/ssh/sshd_config
修改内容如下,表示绑定侦听IP为 192.168.1.100,用户可根据实际情况修改需要侦听的IP。
... ListenAddress 192.168.1.100 ...
重启SSH服务。
systemctl restart sshd.service
限制SFTP用户向上跨目录访问。
SFTP是FTP over SSH的安全FTP协议,对于访问SFTP的用户建议使用专用帐号,只能上传或下载文件,不能用于SSH登录,同时对SFTP可以访问的目录进行限定,防止目录遍历攻击,具体配置如下:
说明:
sftpgroup为示例用户组,sftpuser为示例用户名。创建SFTP用户组。
groupadd sftpgroup
创建SFTP根目录。
mkdir /sftp
修改SFTP根目录属主和权限。
chown root:root /sftp chmod 755 /sftp
创建SFTP用户。
useradd -g sftpgroup -s /sbin/nologin sftpuser
设置SFTP用户的口令。
passwd sftpuser
创建SFTP用户目录。
mkdir /sftp/sftpuser
修改SFTP用户目录属主和权限。
chown root:root /sftp/sftpuser chmod 755 /sftp/sftpuser
创建SFTP用户上传目录。
mkdir /sftp/sftpuser/sftpupload
修改SFTP用户上传目录的属主。
chown sftpuser:sftpgroup /sftp/sftpuser/sftpupload
修改/etc/ssh/sshd_config文件。
vi /etc/ssh/sshd_config
修改内容如下:
#Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO -f AUTH Subsystem sftp internal-sftp -l INFO -f AUTH ... Match Group sftpgroup ChrootDirectory /sftp/%u ForceCommand internal-sftp
说明:
- %u代表当前sftp用户的用户名,这是一个通配符,用户原样输入即可。
- 以下内容必须加在/etc/ssh/sshd_config文件的末尾。
Match Group sftpgroup ChrootDirectory /sftp/%u ForceCommand internal-sftp
- 重启SSH服务。
systemctl restart sshd.service
SSH远程执行命令。
OpenSSH通用机制,在远程执行命令时,默认不开启tty,如果执行需要密码的命令,密码会明文回显。出于安全考虑,建议用户增加-t选项,确保密码输入安全。如下:
ssh -t testuser@192.168.1.100 su
说明:
192.168.1.100为示例IP,testuser为示例用户。