業務通路需求
在selinux采用預設設定enforcing且系統防火牆開啟的場景下,把系統SSH服務的端口22修改成32222,另外,僅允許外部主機(192.168.1.3)可SSH遠端通路該系統。
測試系統版本
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@localhost ~]#
以Server GUI方式安裝作業系統;
業務通路需求實作步驟
修改系統SSH服務的預設端口
修改SSH服務的配置檔案/etc/ssh/sshd_config,在配置檔案的第17行 #Port 22的下一行添加内容,Port 32222。
然而,重新開機SSH服務發現如下報錯;
[root@localhost ~]# systemctl restart sshd.service
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
[root@localhost ~]#
使用指令journalctl –xe檢視報錯資訊,如下圖所示;
關鍵資訊:
SELinux is preventing /usr/sbin/sshd from name_bind access on the tcp_socket port 32222. For complete SELinux messages run: sealert -l 2c7c7bbb-16e9-4b0e-abb5-d162433bcdfe
SELinux is preventing /usr/sbin/sshd from name_bind access on the tcp_socket port 32222
即,SELinux阻止了SSH服務(綁定的32222端口)地啟動。
可根據提示“sealert -l 2c7c7bbb-16e9-4b0e-abb5-d162433bcdfe”詳細檢視SELinux阻止的安全審計日志,當然我們也可通過指令“sealert -a /var/log/audit/audit.log”檢視SELinux所有的安全審計日志。
添加SELinux控制SSH服務的端口
#在selinux中查詢SSH服的端口
[root@localhost ~]# semanage port -l | grep ssh
ssh_port_t tcp 22
[root@localhost ~]#
#在selinux中對SSH服務添加TCP端口32222
[root@localhost ~]# semanage port -a -t ssh_port_t -p tcp 32222
#在selinux中查詢SSH服務添加的端口
[root@localhost ~]# semanage port -l | grep ssh
ssh_port_t tcp 32222, 22
[root@localhost ~]#
添加完成後,再次嘗試重新開機SSH服務,無報錯。
系統防火牆添加SSH服務通路控制規則
#僅允許主機192.168.1.3通路該系統的TCP 32222端口
[root@localhost ~]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.3/32" port port="32222" protocol="tcp" accept'
success
[root@localhost ~]#
#使能配置的安全規則
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]#
#檢視生效後的通路控制規則
[root@localhost ~]# firewall-cmd --zone=public --list-rich-rules
rule family="ipv4" source address="192.168.1.3/32" port port="32222" protocol="tcp" accept
[root@localhost ~]#
測試通路
經實際測試,僅主機192.168.1.3可SSH遠端通路系統,其它主機則無法通路。
總結
結合實際的業務通路需求,總體說明SELinux和系統防火牆的配置,以便小夥伴根據此案例解決實際工作中遇到的問題。
以上總結,希望各位小夥伴有所收獲,不足之處,歡迎各位小夥伴留言指正。