結構關系圖


查看這兩個防火牆文件
# cat /etc/hosts.deny
# cat /etc/hosts.allow

查看Linux中防火牆的狀態

某個服務是否能由tcpwraps來進行控制關鍵在於這個服務的模塊
圖形化界面firewall-config


命令行firewall-cmd
區域:
查看firewall防火牆有幾個zone(區域)
# firewall-cmd --get-zones

查看firewall防火牆默認區域
# firewall-cmd --get-default-zone

查看eno16777736 是否與默認zone綁定在一起。
# firewall-cmd --query-interface=eno16777736

查看eno16777736是否與home=zone綁定在一起。
# firewall-cmd --query-interface=eno16777736 --zone=home

查看eno16777736與那個zone綁定在一起
# firewall-cmd --get-zone-of-interface=eno16777736

接口
刪除eno16777736接口
# firewall-cmd --remove-interface=eno16777736

查看eno16777736接口
# firewall-cmd --get-zone-of-interface=eno33554992

添加接口
# firewall-cmd --zone=home --add-interface=eno33554992

直接更改到默認接口
# firewall-cmd --change-interface=eno33554992

直接更改到指定接口
# firewall-cmd --change-interface=eno33554992 --zone=home

服務:
查看防火牆所有服務
# firewall-cmd --get-services

查看具體的某個服務
# firewall-cmd --get-services | grep http

查看某個服務是否開啟
# firewall-cmd --query-service=http

查看某個服務在指定區域是否開啟
# firewall-cmd --query-service=http --zone=home

添加某個服務
# firewall-cmd --add-service=http

移除某個服務
# firewall-cmd --remove-service=http

以上都是臨時生效的
設置成永久生效應該添加permanent
設置成永久生效
# firewall-cmd --remove-service=http --permanent

端口
查看端口是否存在
# firewall-cmd --query-port=88/tcp
# firewall-cmd --query-port=88/tcp --zone=home

臨時添加端口(永久)+ --permanent
# firewall-cmd --add-port=88/tcp

臨時(永久)刪除端口 + --permanent
# firewall-cmd --remove-port=88/tcp

更改默認區域:
更改默認的zone為home(永久生效)不需要加permanent
# firewall-cmd --set-default-zone=home

更改默認的zone為trusted(綠色通道)永久生效不需要加permanent
# firewall-cmd --set-default-zone=trusted

以上為命令行如何操作、設置firewall-config
---------------------------------------------------------------------------------------------------------------------------------------------
查看默認的zone里面所有的設置
# firewall-cmd --list-all

查看home、zone里面所有的設置。
# firewall-cmd --list-all --zone=home

查看是否配置Apache httpd服務
# systemctl is-active httpd

source(來源):

添加source(來源)規則到home,zone里面並查看
# firewall-cmd --add-source=192.168.0.0/24 --zone=home
# firewall-cmd --list-all --zone=home

刪除home,zone里面source(來源)規則
# firewall-cmd --remove-source=192.168.0.0/24 --zone=home

ICMP過濾器
在圖形界面中,打鈎不允許,不打鈎允許。
ICMP類型:
echo-request(沒有打鈎允許ping,打鈎不允許ping)
echo-reply
查看ICMP服務
# firewall-cmd --get-icmptypes

查看ICMP某一模塊的狀態
# firewall-cmd --query-icmp-block=echo-request

刪除ICMP某一模塊
# firewall-cmd --remove-icmp-block=echo-request

添加ICMP某一模塊
# firewall-cmd --add-icmp-block=echo-request


准備三台虛擬機,分別作為內網、外網、路由器(兩張網卡)
路由器:
路由器需要兩張網卡,第二張網卡需要同內網在同一個LAN區段

路由器IP地址

路由器查看轉發功能、並開啟
# cat /proc/sys/net/ipv4/ip_forward
# echo 1 > /proc/sys/net/ipv4/ip_forward

查看並配置網關
# route -n

添加網關
# route add default gw 10.0.0.1

內網:
內網網卡,要與路由器LAN在同一區段

內網IP

外網:
外網網卡

外網IP

外網網關與路由器IP相同,則內網能ping同
外網網關與路由器IP不同,則內網不能ping同
但不影響抓包

內網ping外網抓包
抓包
# tcpdump -i eno16777736 icmp

偽裝:
抓包的時候隱藏私有地址
查看偽裝區域
# firewall-cmd --query-masquerade

添加偽裝區域(臨時生效)
# firewall-cmd --add-masquerade

刪除偽裝區域(臨時生效)
# firewall-cmd --remove-masquerade

端口轉發(端口映射)
查看firewall信息
# firewall-cmd --list-all

刪除映射端口
# firewall-cmd --remove-forward-port='port=80:proto=tcp:toport=:toaddr=10.0.0.2'

添加映射端口
# firewall-cmd --add-forward-port='port=80:proto=tcp:toport=:toaddr=10.0.0.2'

付規則(Rich Rules)
打開英文版的,中文版的有bug
#LANG=C firewall-config &


查看Rich Rules 信息
# firewall-cmd --list-rich-rules

刪除Rich Rules
# firewall-cmd --remove-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" port port="80" protocol="tcp" accept'

添加Rich Rules
remove改add

控制是否能上網:masquerade
