結構關系圖
查看這兩個防火牆文件
# 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