在RHEL 7上使用SELinux设置OpenSSH服务器
时间:2020-03-21 11:46:28 来源:igfitidea点击:
我们将配置基于密钥的SSH身份验证,并允许sshd绑定到非默认的SSH端口。
测试环境
我们有几个RHEL 7.0服务器srv1和srv2.
SELinux设置为强制模式。
配置基于密钥的SSH身份验证
在服务器srv1上,创建一个新用户sandy:
# useradd -m -s /bin/bash sandy # passwd sandy # su - sandy
以用户sandy身份,创建一个新的SSH密钥并将其复制到服务器srv2中:
$ssh-keygen -b 2048 -t rsa $ssh-copy-id -i ~/.ssh/id_rsa.pub Hyman@theitroad
默认情况下,公钥身份验证应该可用,我们可以测试:
$ssh Hyman@theitroad
配置备用SSH端口
我们将添加TCP端口2200到SSH服务器。
在服务器srv2上,打开文件'/etc/ssh/sshd_config'进行编辑,并添加以下几行:
Port 22 Port 2200
配置防火墙以允许在TCP端口2200上进行访问:
# firewall-cmd --permanent --add-port=2200/tcp # firewall-cmd --reload
配置SELinux,以允许sshd侦听TCP端口2200:
# semanage port -a -t ssh_port_t 2200 -p tcp
重新启动sshd服务:
# systemctl restart sshd
测试服务器srv1:
$ssh Hyman@theitroad -p2200
调整SSH服务器配置
我们要允许桑迪用户登录,但拒绝用户dev1和组devops:
AllowUsers sandy DenyUsers dev DenyGroups devops
请注意,allow/deny指令按以下顺序处理:DenyUsers,AllowUsers,DenyGroups,最后是AllowGroups。
告诉SSH服务器不要查找远程主机名。
如果客户端连接缓慢,这可能会显着提高性能。
UseDNS no
将可同时从一个IP地址打开的最大会话数设置为3:
MaxSessions 3
如果300秒钟内未检测到活动,则将数据包发送到客户端,并执行4次:
ClientAliveInterval 300 ClientAliveCountMax 4
未响应的客户端将在大约20分钟后断开连接。
这些选项仅适用于协议版本2.
基于Kerberos的身份验证应被禁用:
GSSAPIAuthentication no
在3次无效的登录尝试后关闭TCP套接字:
MaxAuthTries 3
允许无密码的root登录:
PermitRootLogin without-password
确保启用了基于密码和密钥的身份验证,并且不允许使用空密码:
PasswordAuthentication yes PubkeyAuthentication yes PermitEmptyPasswords no
重新启动服务:
# systemctl restart sshd
有关更多信息,请检查sshd_config的手册页。