Linux下iptables開放埠端示例
阿新 • • 發佈:2019-01-29
Linux系統在當做網站伺服器執行時,具有很高的效率和執行穩定性。windows系統下可以通過系統防火牆來限制外部計算機對伺服器埠的訪問,而Linux是通過iptables來允許或限制埠訪問的。
本文討論的使用情境是LNmp或LNmpA系統架構下的情況。
為了方便舉例說明,飄易就直接拿來一段我的現有伺服器上執行的防火牆iptables內容。
請注意:後面的註釋說明文字: # Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT # (ssh埠)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # (web埠)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT # (ftp埠)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT # (ftp被動模式埠範圍)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT # (mysql埠)
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT 修改完防火牆iptables後,需要重新啟動:
/etc/init.d/iptables restart
或者
service iptables restart 注意:iptables配置檔案存放位置是:/etc/sysconfig/iptables
儲存命令:service iptables save
使用命令:iptables -L -n 可以檢視當前iptables的開放埠情況。
iptables服務開機自動啟動:
chkconfig iptables on
檢查iptables服務:
# chkconfig --list iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
上面開放的埠後面都有註明,有一個要注意的地方,就是FTP埠,FTP的預設埠21肯定要開放,但是一般的ftp軟體都是預設先嚐試幾次被動模式PASV連線,在PASV模式連線失敗後,才會進行主動模式PORT連線。 如果我們僅僅開放21埠,這裡就有問題了。FTP PASV模式下,還會隨機使用一個空閒埠,這個埠範圍在20000-30000之間。所以,我們需要把這個埠範圍加入防火牆:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT
請注意:後面的註釋說明文字: # Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT # (ssh埠)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # (web埠)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT # (ftp埠)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT # (ftp被動模式埠範圍)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT # (mysql埠)
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT 修改完防火牆iptables後,需要重新啟動:
/etc/init.d/iptables restart
或者
service iptables restart 注意:iptables配置檔案存放位置是:/etc/sysconfig/iptables
儲存命令:service iptables save
使用命令:iptables -L -n
iptables服務開機自動啟動:
chkconfig iptables on
檢查iptables服務:
# chkconfig --list iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
上面開放的埠後面都有註明,有一個要注意的地方,就是FTP埠,FTP的預設埠21肯定要開放,但是一般的ftp軟體都是預設先嚐試幾次被動模式PASV連線,在PASV模式連線失敗後,才會進行主動模式PORT連線。 如果我們僅僅開放21埠,這裡就有問題了。FTP PASV模式下,還會隨機使用一個空閒埠,這個埠範圍在20000-30000之間。所以,我們需要把這個埠範圍加入防火牆:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT