詳解如何在Ubuntu上檢查、開(kāi)啟、關(guān)閉端口
網(wǎng)絡(luò)基礎(chǔ)概念
網(wǎng)絡(luò)通信的基礎(chǔ)是基于TCP/IP協(xié)議棧的,這一模型由四個(gè)層次組成:鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。我們關(guān)注的重點(diǎn)在于傳輸層和應(yīng)用層,因?yàn)槎丝谡俏挥谶@兩層之間的關(guān)鍵概念。
傳輸層:負(fù)責(zé)端到端的通信,其中兩個(gè)主要協(xié)議是TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。TCP提供了可靠的數(shù)據(jù)傳輸服務(wù),保證數(shù)據(jù)包按序無(wú)誤地到達(dá);而UDP則是一種無(wú)連接的、不可靠的協(xié)議,適用于對(duì)速度要求高于數(shù)據(jù)完整性的場(chǎng)景。
應(yīng)用層:在此層面上,不同的網(wǎng)絡(luò)服務(wù)通過(guò)不同的端口號(hào)來(lái)區(qū)分。端口是一個(gè)邏輯上的結(jié)構(gòu),范圍從0到65535。每個(gè)端口對(duì)應(yīng)一個(gè)正在運(yùn)行的服務(wù)或者等待接收特定類(lèi)型數(shù)據(jù)的應(yīng)用程序。
端口類(lèi)型
端口可以大致分為三類(lèi):
- 熟知端口(Well-Known Ports):范圍從0到1023,這些端口被分配給特定的服務(wù),例如HTTP服務(wù)使用80端口,HTTPS服務(wù)使用443端口。
- 注冊(cè)端口(Registered Ports):范圍從1024到49151,通常用于非系統(tǒng)服務(wù)的公共應(yīng)用程序。
- 動(dòng)態(tài)/私有端口(Dynamic and/or Private Ports):范圍從49152到65535,通常不會(huì)被預(yù)先定義服務(wù)所占用,而是臨時(shí)分配給客戶(hù)端程序使用。
在Ubuntu上檢查開(kāi)放端口
在Ubuntu系統(tǒng)中,確保服務(wù)正常運(yùn)行或排查網(wǎng)絡(luò)問(wèn)題時(shí),檢查哪些端口處于監(jiān)聽(tīng)或活躍狀態(tài)是一項(xiàng)基本技能。
使用netstat命令
netstat
是一個(gè)強(qiáng)大的命令行工具,用于顯示網(wǎng)絡(luò)連接、路由表、網(wǎng)絡(luò)接口統(tǒng)計(jì)等網(wǎng)絡(luò)相關(guān)信息。在檢查開(kāi)放端口時(shí),以下是最常用的幾個(gè)選項(xiàng):
- 列出所有TCP連接和監(jiān)聽(tīng)端口:
sudo netstat -tuln
這里的-t
表示只顯示TCP端口,-u
用于顯示UDP端口(可選),-l
表示僅列出監(jiān)聽(tīng)狀態(tài)的端口,而-n
則使用數(shù)字形式顯示IP和端口號(hào),而不是嘗試解析為主機(jī)名和服務(wù)名。
- 查看特定端口是否被監(jiān)聽(tīng):
sudo netstat -tuln | grep :<port>
將<port>
替換為你想要查詢(xún)的端口號(hào),如80
。
nmap工具
nmap
是一個(gè)功能強(qiáng)大的網(wǎng)絡(luò)探索和安全審計(jì)工具,不僅可以用來(lái)掃描本地主機(jī),也適用于遠(yuǎn)程主機(jī)的端口掃描。首先,確保已安裝nmap
:
sudo apt-get install nmap
然后,執(zhí)行以下命令掃描本機(jī)開(kāi)放的端口:
sudo nmap -sT -O localhost
這里的-sT
選項(xiàng)表示使用TCP連接掃描,-O
嘗試確定目標(biāo)主機(jī)的操作系統(tǒng)類(lèi)型。
lsof命令
lsof
(LiSt Open Files)命令可以列出系統(tǒng)中所有當(dāng)前打開(kāi)的文件和網(wǎng)絡(luò)端口。要查找占用特定端口的進(jìn)程,可以這樣使用:
sudo lsof -i :<port>
firewall-cmd(對(duì)于使用firewalld的情況)
雖然Ubuntu默認(rèn)不使用firewalld
,但如果你的系統(tǒng)中安裝并啟用了它,可以通過(guò)以下命令查看開(kāi)放端口:
sudo firewall-cmd --list-ports
ufw(Uncomplicated Firewall)
UFW是Ubuntu系統(tǒng)中常用的防火墻管理工具,易于使用且功能強(qiáng)大。要查看UFW當(dāng)前的規(guī)則,可以執(zhí)行:
sudo ufw status verbose
這會(huì)列出所有入站和出站規(guī)則,以及哪些端口被允許或拒絕。
在Ubuntu上開(kāi)啟端口
確保服務(wù)對(duì)外可用通常需要正確配置系統(tǒng)防火墻,以允許外部流量訪問(wèn)特定端口。Ubuntu系統(tǒng)中,ufw
(Uncomplicated Firewall)是最常用的防火墻管理工具,因?yàn)樗?jiǎn)單易用且功能強(qiáng)大。
ufw基本操作
首先,確保ufw
已經(jīng)安裝并啟用。如果尚未啟用,可以使用以下命令進(jìn)行安裝和啟用:
sudo apt-get install ufw sudo ufw enable
對(duì)于UDP端口,只需將tcp
替換為udp
即可,如:
sudo ufw allow 53/udp
開(kāi)啟端口范圍
若需開(kāi)啟一系列連續(xù)端口,例如游戲服務(wù)器使用的端口范圍,可以這樣做:
sudo ufw allow 27000:27015/tcp
指定入站或出站規(guī)則
默認(rèn)情況下,上述命令應(yīng)用于入站(incoming)流量。若要明確指定規(guī)則方向,可以加上in
或out
,例如允許出站到80端口的流量:
sudo ufw allow out 80/tcp
配置特定服務(wù)端口
許多網(wǎng)絡(luò)服務(wù)如Web服務(wù)器(Apache、Nginx)或數(shù)據(jù)庫(kù)(MySQL、PostgreSQL)都有默認(rèn)的監(jiān)聽(tīng)端口。除了在防火墻中開(kāi)放這些端口,還需確保服務(wù)配置正確。
- Apache:默認(rèn)監(jiān)聽(tīng)80端口,配置文件通常位于
/etc/apache2/sites-available/000-default.conf
或特定站點(diǎn)配置文件中。 - Nginx:同樣默認(rèn)監(jiān)聽(tīng)80端口,配置文件位于
/etc/nginx/sites-available/default
或相應(yīng)站點(diǎn)配置文件。 - MySQL:默認(rèn)監(jiān)聽(tīng)3306端口,可以在
/etc/mysql/mysql.conf.d/mysqld.cnf
中找到監(jiān)聽(tīng)設(shè)置。 - PostgreSQL:默認(rèn)監(jiān)聽(tīng)5432端口,配置文件為
/etc/postgresql/<version>/main/postgresql.conf
。
修改服務(wù)配置后,記得重啟服務(wù)使更改生效,如重啟Apache服務(wù):
sudo systemctl restart apache2
iptables直接配置
盡管ufw
提供了友好的接口,但在某些高級(jí)場(chǎng)景下,直接使用iptables
命令行工具能提供更細(xì)粒度的控制。以下是一個(gè)簡(jiǎn)單的例子,允許所有入站的80端口TCP流量:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
請(qǐng)注意,直接修改iptables規(guī)則應(yīng)當(dāng)謹(jǐn)慎,且通常建議先備份現(xiàn)有規(guī)則:
sudo iptables-save > /root/iptables.backup
完成規(guī)則修改后,使用iptables-save
命令保存規(guī)則,確保重啟后仍然生效:
sudo iptables-save | sudo tee /etc/iptables/rules.v4
在Ubuntu上關(guān)閉端口
關(guān)閉不必要的端口是提升系統(tǒng)安全的重要措施,可以減少潛在的攻擊面,防止未授權(quán)訪問(wèn)。
使用ufw關(guān)閉端口
關(guān)閉端口的操作與開(kāi)啟端口類(lèi)似,只需將allow
命令替換為deny
或delete
命令。
- 關(guān)閉單個(gè)端口:
sudo ufw deny 22/tcp
上述命令會(huì)拒絕所有入站的TCP 22端口(SSH)流量。如果規(guī)則已存在,可以使用delete
命令移除:
sudo ufw delete allow 22/tcp
- 關(guān)閉端口范圍:
如果之前打開(kāi)了一個(gè)端口范圍,如游戲端口27000至27015,可以通過(guò)以下命令關(guān)閉:
sudo ufw deny 27000:27015/tcp
編輯服務(wù)配置關(guān)閉端口
關(guān)閉端口的另一種方法是從源頭上阻止服務(wù)監(jiān)聽(tīng)該端口。這需要直接修改服務(wù)的配置文件。
Apache或Nginx:進(jìn)入相應(yīng)的配置文件,注釋或修改監(jiān)聽(tīng)端口的行,如將Apache的監(jiān)聽(tīng)端口從80更改為監(jiān)聽(tīng)localhost(127.0.0.1:80)或完全關(guān)閉監(jiān)聽(tīng)。
數(shù)據(jù)庫(kù)服務(wù):如MySQL或PostgreSQL,同樣在配置文件中修改或注釋掉監(jiān)聽(tīng)地址和端口,然后重啟服務(wù)。
使用iptables關(guān)閉端口
直接使用iptables
關(guān)閉端口涉及刪除或添加拒絕規(guī)則:
- 拒絕特定端口:
如果之前允許了22端口,可以通過(guò)以下命令拒絕:
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
或者,如果要?jiǎng)h除之前的允許規(guī)則,首先需要找出該規(guī)則的編號(hào),然后用iptables -D
命令刪除:
sudo iptables -L --line-numbers sudo iptables -D INPUT <rule_number>
定期審查與優(yōu)化
- 定期檢查:定期檢查防火墻規(guī)則和系統(tǒng)服務(wù)配置,確保沒(méi)有開(kāi)放不必要的端口。
- 優(yōu)化規(guī)則:移除不再需要的規(guī)則,保持防火墻規(guī)則集簡(jiǎn)潔明了,有助于性能和可維護(hù)性。
關(guān)閉端口是一個(gè)持續(xù)的過(guò)程,隨著系統(tǒng)需求的變化,應(yīng)適時(shí)調(diào)整。良好的安全實(shí)踐還包括使用自動(dòng)化工具定期審計(jì)端口狀態(tài),以及在變更系統(tǒng)配置后進(jìn)行安全測(cè)試,確保沒(méi)有無(wú)意間暴露了新的安全風(fēng)險(xiǎn)。
以上就是詳解如何在Ubuntu上檢查、開(kāi)啟、關(guān)閉端口的詳細(xì)內(nèi)容,更多關(guān)于Ubuntu上開(kāi)啟關(guān)閉端口的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Apache POI簡(jiǎn)介及應(yīng)用場(chǎng)景
Apache POI 是一個(gè)處理Miscrosoft Office各種文件格式的開(kāi)源項(xiàng)目,我們可以使用POI在Java程序中對(duì)Miscrosoft Office各種文件進(jìn)行讀寫(xiě)操作,本文給大家介紹Apache POI簡(jiǎn)介,感興趣的朋友一起看看吧2023-11-11Linux系統(tǒng)crontab定時(shí)運(yùn)行shell腳本失敗的問(wèn)題及解決
這篇文章主要介紹了Linux系統(tǒng)crontab定時(shí)運(yùn)行shell腳本失敗的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04Centos7的apache網(wǎng)站環(huán)境搭建wordpress
本篇文章給大家詳細(xì)分析了在Centos7的apache網(wǎng)站環(huán)境搭建wordpress的詳細(xì)操作方法,有興趣的朋友參考下。2018-02-02CentOS8 安裝 jdk8 / java8的教程(推薦)
CentOS8上使用 yum 直接安裝,環(huán)境變量自動(dòng)配置好 ,本文主要給大家介紹 CentOS8 安裝 jdk8 / java8的教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-10-10Linux 下安裝 memcached 及 memcacheq的方法
這篇文章主要介紹了Linux 下安裝 memcached 及 memcacheq的方法,需要的朋友可以參考下2017-03-03利用lynis如何進(jìn)行l(wèi)inux漏洞掃描詳解
這篇文章主要給大家介紹了關(guān)于利用lynis如何進(jìn)行l(wèi)inux漏洞掃描的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06Ubuntu 遠(yuǎn)程登陸服務(wù)器 ssh的安裝和配置詳解
這篇文章主要介紹了Ubuntu 遠(yuǎn)程登陸服務(wù)器 ssh的安裝和配置詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06