firewall
firewall引进了区域的概念,区域即一个功能独立的模块
【九大区域】
public:默认开机区域,公共区域 只有设置为允许的通信可以通过
trusted:信任区域 允许所有通信通过
drop:丢弃区域 拒绝所有通信
block:类似于drop 拒绝所有外部通信,允许内部通信
external:nat区域 开启nat代理和端口映射
dmz:非军事区 允许外部访问的服务器
work:工作区域
home:家庭区域
internal:内部区域
工作机制:审核网卡所在的区域
实验拓扑图:客户端A:202.0.0.1 ------ Re0:202.0.0.2;Re1:192.168.10.1 ------- B:192.168.10.2
实验:
1、安装软件包:
firewalld、firewall-config、system-config-firewall-base
2、重启服务
7.0版,将firewall启动,默认iptables是关闭的
systemctl restart firewall
systemctl enable firewall
firewall规则:
【查看】
firewall-cmd --state 查询firewall的状态=systemctl status firewall
firewall-cmd --get-default-zone 查看默认区域
firewall-cmd --list-all 查看默认区域的所有规则
firewall-cmd --get-zones 查看所有区域
firewall-cmd --get-services 查看所有支持的服务
firewall-cmd --get-zone-of-interface = eno16777736 查看接口所在的区域
firewall-cmd --zone = trusted --list-all 通过查看区域的规则查看网卡所在的位置
firewall-cmd --list-all-zones 查看所有区域的规则
【修改】
firewall-cmd --set-default-zone = trusted 修改默认区域
firewall-cmd --add-service = http 在当前默认区域中添加服务
firewall-cmd --zone = trusted --add-interface = eno16777736 将某个网卡添加到某个区域中,添加之前该网卡处于无区域的状态
firewall-cmd --zone = trusted --change-interface = eno16777736 改变某个接口所在的区域
firewall-cmd --add-port = 80/tcp 指定端口和协议,必须写清是tcp,还是udp
【移除】
firewall-cmd --remove-service = http 在当前区域中移除http
firewall-cmd --zone = trusted --remove-interface = eno16777736 从某个区域中移除网卡,该网卡的状态将变为无区域
< NAT网络地址转换(内访外)>
第一种方式:将默认区域修改到external
firewall-cmd --set-default-zone = external
第二种方式:
因为外网卡代替内网上网,所有将网卡加入到external区域中
firewall-cmd --zone = external --change-interface = eno16777736
验证:
telnet (B ---> A)
netstat -n 查询通信端口
(外访内)
< 端口映射 >
firewall-cmd --zone = external --add-masquerade 开启端口映射功能
firewall-cmd --zone = external --add-forward-port =(port = 2300):proto = tcp:toport = 23
(: toaddr = 192.168.10.2)
port:在外网卡开启的映射口
proto:指定协议
toproto:内网进行映射的端口
toaddr:指定内网服务器IP地址
若防火墙出问题
1、修改默认区域drop
2、紧急机制开启,拒绝所有外来通信
firewall-cmd --panic-on 开启紧急机制
firewall-cmd --query-panic 查看当前紧急机制的状态
以上所有设置重启服务将全部失效
永久生效,修改配置文件
firewall-cmd --permanent(永久的) --add-service = http
该规则帮助我们修改配置文件,使其永久生效
重启服务生效
systemctl restart firewalld
3、firewall中可以对服务端口和协议进行保护,也可以对通信服务进行保护,对服务设置的保护实质上还是设置的端口保护
服务的配置文件:记录了服务的相关信息,使其协议和端口与服务名相对应
/usr/lib/firewalld/services
例:cd /usr/lib/firewalld/services
ls
发现里面的文件格式都是xxx.xml
例:cat http.xml
<port protocol = "tcp" port = "80">
所以虽然添加的是服务,但还是端口保护。
mysql的端口:3306
Oracle的端口:1521
自定义服务的配置文件
#cd /usr/lib/firewalld/services
#ls
#cp http.xml qq.xml
<description> </description>
<port protocol = "tcp" port "8000">9
保存退出
重启服务进行加载
systemctl restart firewalld
systemctl status firewalld
7.0后默认开启firewall,iptables自动关闭,但是firewall的底层还是iptables
所有的保护还是要依靠iptables的三个链进行保护
iptables -L
firewall里针对本机的服务的保护,生效给iptables的INPUT链
路由器为转发功能,为了保护子网,将规则生效给iptables的forward链