yum install firewalld firewall-config
1.火墙的启动
systemctl stop iptables.service
systemctl disable iptables.service
systemctl start firewalld.service
systemctl enable firewalld.service
2.firewall管理
<1>firewall-cmd --state #查看火墙状态
running
<2>firewall-cmd --get-active-zones #查看火墙当前生效的域
<3> firewall-cmd --get-default-zone #查看火墙控制的域,默认为public
<4>firewall-cmd --get-zones #列出所有可用域
<5> firewall-cmd --zone=public --list-all #列出public域的所有信息
<6>firewall-cmd --get-services #列出可以控制的协议名称
<7>firewall-cmd --list-all-zones #列出所有域的状态
<7>firewall-cmd --set-default-zone=dmz #仅接受ssh服务连接
success
<8>firewall-cmd --set-default-zone=trusted
success
<9> firewall-cmd --list-all #列出所有域的规则
trusted (default, active)
interfaces: eth0
sources:
services:
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
3.ip和网络接口的设定
添加eth1网卡
systemctl restart firewalld
<2>firewall-cmd --add-source=172.25.254.78 --zone=trusted #添加此主机ip为信任
yum install httpd -y
systemctl start httpd
echo westos > /var/www/html/index.html
测试,在78这台主机上
添加之后:172.25.254.238 #可以看到文件内容
<3>firewall-cmd --remove-source=172.25.254.78 #移除此主机ip
网卡所在域的更改,添加与删除
<1>firewall-cmd --list-interfaces #查看端口
<2>firewall-cmd --get-zone-of-interface=eth1 #查看eth1所在的域
<3>firewall-cmd --get-zone-of-interface=eth0 #查看eth0所在的域
<4>firewall-cmd --change-interface=eth0 --zone=trusted #改变eth0所在的域为trusted
<5>firewall-cmd --get-zone-of-interface=eth0 #查看是否改变
<6>firewall-cmd --remove-interface=eth0 --zone=trusted #从trusted域中移除eth0
<7>firewall-cmd --get-zone-of-interface=eth0
火墙对ssh服务的控制
<1>firewall-cmd --remove-service=ssh #临时移除ssh服务,终端连接该主机之后移除ssh不会断开,打开另一个终端连接该主机时会失败
<2>firewall-cmd --reload #重新加载,不会中断服务
<4>firewall-cmd --permanent --remove-service=ssh #永久移除
<5>firewall-cmd --reload
<7>firewall-cmd --complete-reload #重新加载,并中断当前服务
<8>firewall-cmd --permanent --add-service=ssh #永久添加ssh服务
<9>firewall-cmd --reload
永久修改public域的配置文件
<1>firewall-cmd --add-source=172.25.254.78 #临时添加ip源,重启就会消失
<2>firewall-cmd --list-all #查看添加成功
<3>systemctl restart firewalld
<4>firewall-cmd --list-all #已经消失
<5>firewall-cmd --permanent --add-source=172.25.254.78 #永久添加ip源
<6>systemctl restart firewalld
4.火墙的文件管理:
<1>cd /etc/firewalld/zones/
<2>ls
<3>vim public.xml #永久修改public域的配置文件
添加
<4>systemctl restart firewalld
<5>firewall-cmd --list-all
修改及查看http在火墙中开启的端口
<1>firewall-cmd --add-port=8080/tcp --zone=public #临时添加8080端口
<2>firewall-cmd --list-all
<3>cd /usr/lib/firewalld/
<4>ls
<5>cd services/
5.80端口打开时,任何主机都可以访问,不安全
<1>yum install httpd
<2>systemctl start httpd
此时任何主机都可以访问,这样不安全,可以通过限定主机来保证安全
<3>firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.38 -j ACCEPT
--direct #添加direct规则
filter #添加表
INPUT 1 #添加第一条链
-p tcp #添加tcp协议
--dport 80#目的地端口为80
-s #设定被允许访问的ip
-j #要执行的动作,ACCEPT表示接受,DROP表示丢弃,不回显,REJECT表示拒绝,回显
测试:
在其他主机上:拒绝访问
2.转发(外网访问内网)
<1>firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.138 #访问本机的22端口时将自动转到172.25.254.138的22端口
<2>firewall-cmd --reload #因为是永久添加,所以要重新加载
此时用真机连接此主机还不能转发到138这台主机上,因为masquerade服务没有开启
<4>firewall-cmd --list-all
<5>firewall-cmd --permanent --add-masquerade
<6>firewall-cmd --reload
此时用真机连接此主机可以转发到138这台主机上
3.伪装(内网连接外网)<火墙必须打开>
服务端设置两个网段不同的ip
eth0 172.25.254.238
eth1 172.25.0.238
<1>firewall-cmd --permanent --add-masquerade
<2>firewall-cmd --reload
<3> sysctl -a | grep ip_forward #查看ip_forward
<4>vim /etc/sysctl.conf #设置ip_forward=1使内部两个不同网端的ip相通
<5>sysctl -p #使更改生效
<6>firewall-cmd --list-all
<7>firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.25.0.238 masquerade' #把ipv4发出去的数据包都伪装成172.25.0.238
<8>firewall-cmd --reload
<9>firewall-cmd --list-all
在客户端
<1>vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR0=172.25.254.138 #更改eth0使之与服务端的eth0网段相同
<2>route add default gw 172.25.254.238 #添加服务端网关
<3>route -n
<4>ping 172.25.0.238 #测试该机是否可以通过和网关相通的172.25.0.238连接和自己网端不通的ip