【Linux】 iptables vs firewalld

iptables 其他命令

1. 禁用/停止自帶的firewalld服務

#停止firewalld服務
systemctl stop firewalld

#禁用firewalld服務
systemctl mask firewalld

2. 設置現有規則
#查看iptables現有規則
iptables -L -n

#先允許所有,不然有可能會杯具
iptables -P INPUT ACCEPT

#清空所有默認規則
iptables -F

#清空所有自定義規則
iptables -X

#所有計數器歸0
iptables -Z

#允許來自於lo接口的數據包(本地訪問)
iptables -A INPUT -i lo -j ACCEPT

#開放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#開放21端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT

#開放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

#開放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

#允許ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

#允許接受本機請求之後的返回數據 RELATED,是爲FTP設置的
iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT

#其他入站一律丟棄
iptables -P INPUT DROP

#所有出站一律綠燈
iptables -P OUTPUT ACCEPT

#所有轉發一律丟棄
iptables -P FORWARD DROP

#如果要添加內網ip信任(接受其所有TCP請求)
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT

#過濾所有非以上規則的請求
iptables -P INPUT DROP

#要封停一個IP,使用下面這條命令:
iptables -I INPUT -s ***.***.***.*** -j DROP

#要解封一個IP,使用下面這條命令:
iptables -D INPUT -s ***.***.***.*** -j DROP

#保存上述規則
service iptables save

#註冊iptables服務
#相當於以前的chkconfig iptables on
systemctl enable iptables.service

#開啓服務
systemctl start iptables.service

#查看狀態
systemctl status iptables.service

3. 映射端口(如將mysql默認的3306端口映射成1306對外提供服務)
iptables -t mangle -I PREROUTING -p tcp --dport 1306 -j MARK --set-mark 883306 
iptables -t nat -I PREROUTING -p tcp --dport 1306 -j REDIRECT --to-ports 3306 
iptables -I INPUT -p tcp --dport 3306 -m mark --mark 883306 -j ACCEPT


firewalld

啓動: systemctl start firewalld
查看狀態: systemctl status firewalld / firewall-cmd --state 
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
添加:firewall-cmd --zone=public --add-port=1234/tcp --permanent(--permanent永久生效,沒有此參數重啓後失效)
添加端口外部訪問權限(這樣外部才能訪問)
firewall-cmd --add-port=5005/tcp
重新載入,添加端口後重新載入才能起作用
firewall-cmd --reload
這些之後,端口是開啓成功的,如果沒有成功,重啓系統試試。


查看端口:firewall-cmd --zone=public --query-port=80/tcp
刪除端口:firewall-cmd --zone=public --remove-port=80/tcp --permanent
查看firewall是否運行,下面兩個命令都可以
systemctl status firewalld
或
firewall-cmd --state

其實一個服務對應一個端口,每個服務對應/usr/lib/firewalld/services下面一個xml文件。
查看開啓了哪些服務:firewall-cmd --list-services
查看開啓了哪些端口:firewall-cmd --list-ports
查看還有哪些服務可以打開:firewall-cmd --get-services
查看所有打開的端口:firewall-cmd --zone=public --list-ports
更新防火牆規則:firewall-cmd --reload
查看端口訪問權限情況:firewall-cmd --query-port=1234/tcp
添加端口外部訪問權限:firewall-cmd --add-port=1234/tcp

systemctl

啓動: systemctl start firewalld
查看狀態: systemctl status firewalld 
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
啓動服務:systemctl start firewalld.service
關閉服務:systemctl stop firewalld.service
重啓服務:systemctl restart firewalld.service
服務的狀態:systemctl status firewalld.service
在開機時啓用一個服務:systemctl enable firewalld.service
在開機時禁用一個服務:systemctl disable firewalld.service
查看服務是否開機啓動:systemctl is-enabled firewalld.service
查看已啓動的服務列表:systemctl list-unit-files|grep enabled
查看啓動失敗的服務列表:systemctl --failed
查看版本: firewall-cmd --version
查看幫助: firewall-cmd --help
顯示狀態: firewall-cmd --state
查看所有打開的端口: firewall-cmd --zone=public --list-ports
更新防火牆規則: firewall-cmd --reload
查看區域信息:  firewall-cmd --get-active-zones
查看指定接口所屬區域: firewall-cmd --get-zone-of-interface=eth0
拒絕所有包:firewall-cmd --panic-on
取消拒絕狀態: firewall-cmd --panic-off
查看是否拒絕: firewall-cmd --query-panic


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章