结构关系图
查看这两个防火墙文件
# 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