前言:開啟某服務或軟件的端口,要從該服務或軟件監聽的端口(多以修改配置文件為主),SeLinux和防火牆(FireWall)的安全策略下手。如果使用阿里雲,騰訊等第三方服務器還需要對管理控制台的安全組下手。
下面進入主題,如果有什么問題請查看下面的補充欄:
第一步:修改SSH配置文件(注意是sshd_config而不是ssh_config,多了個d)
vim /etc/ssh/sshd_config
找到“#Port 22”,這一行直接鍵入“yyp”復制該行到下一行,然后把兩行的“#”號即注釋去掉,修改成:
Port 22 Port 10086
SH默認監聽端口就是22,如果你不強制說明別的端口,”Port 22”注不注釋都是開放22訪問端口。上面我保留了22端口,防止之后因為各種權限和配置問題,導致連22端口都不能訪問了,那就尷尬了。等一切都ok了,再關閉22端口。
Ok,繼續,我增加了10086端口,大家修改端口時候最好挑10000~65535之間的端口號,10000以下容易被系統或一些特殊軟件占用,或是以后新應用准備占用該端口的時候,卻被你先占用了,導致軟件無法運行。
第二步:如果你關閉了SELinux,可以忽略第二步。
先查看SELinux開放給ssh使用的端口
semanage port -l|grep ssh 如果提示:-bash: semanage: command not found,表示沒有安裝semanage 安裝yum -y install policycoreutils-python.x86_64
我的系統打印如下:
[root@izwz98nqtxax20v9gcwk1tz ~]# semanage port -l|grep ssh ssh_port_t tcp 22
可知,SELinux沒有給SSH開放10086端口,那么我們來添加端口:
semanage port -a -t ssh_port_t -p tcp 10086
完成后,再次查看
semanage port -l|grep ssh [root@izwz98nqtxax20v9gcwk1tz ~]# semanage port -l|grep ssh ssh_port_t tcp 22,10086
如果確認在配置文件中添加了和開放了端口,執行上一步未顯示的話無需在意
第三步:如果你關閉了防火牆,可以忽略第三步(不開防火牆會很危險,建議開啟)
先查看防火牆是否開啟了10086端口:
firewall-cmd --zone=public --query-port=10086/tcp
打印結果如下:
no
表示沒有開放端口,這就要添加端口
firewall-cmd --zone=public --add-port=10086/tcp --permanent
打印結果:
success
重新加載防火牆策略:
firewall-cmd --reload
第四步:重啟SSH服務和防火牆,最好重啟一下服務器
systemctl restart sshd
systemctl restart firewalld.service
shutdown -r now
第五步:嘗試用10086登錄SSH,或者進入該服務器直接本地訪問SSH如下:
ssh root@localhost -p 10086
如果成功,說明10086已經完全可以使用了,接下來你就可以根據上述步驟sshd_config Port22注釋掉,SELinux和防火牆(Firewalld)關閉22端口就OK,大工造成!
第六步:修改第三方服務器安全組策略。如果沒有第三方服務器,上述已經完成了本文的目標,可以忽略第六步。下面直接上阿里雲的示例圖:
1.查看某端口是否被占用,以10086為例:
netstat -lnp|grep 10086
如果沒有任何打印,說明沒有被占用。有打印的話,說明被占用了,一般會列出哪個進程占用。
列出所有端口
netstat -ntlp
查看是否開啟了SELinux
sestatus -v
如果輸出結果為:
SELinux status: disabled
說明有打開,可以通過修改SELinux的配置開啟或關閉它:
vim /etc/selinux/config
找到: SELINUX=disabled 修改成: SELINUX= enforcing 重啟一下,就OK。
semanage命令無法使用,或說找不到該命令。說明沒有配置該命令,可以進行以下命令進行安裝:
yum -y install policycoreutils-python.x86_64
關於它的依賴庫我就不作贅述,可以百度下更全面的安裝semanage教程。
CentOS7防火牆改為firewalld了,而不是iptables,對應的命令也請百度下,這里不作贅述。