1.Firewalld概述
动态防火墙后台程序firewalld提供了一个动态管理的防火墙,用以支持网络“zones”,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对IPv4和IPv6防火墙设置的支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口
系统提供了图像化的配置工具firewall-config、system-config-firewall,提供命令行客户端firewall-cmd,用于配置firewalld永久性或非永久性运行时间的改变:它依次用iptables工具与执行数据包筛选的内核中的Netfilter通信
2.Firewalld域
3.启用火墙
[root@client ~]# yum install firewalld
[root@client ~]# firewall-config #打开图形管理工具
[root@client ~]# systemctl start firewalld
[root@client ~]# systemctl enable firewalld
[root@client ~]# systemctl stop iptables
[root@client ~]# systemctl disable iptables
图形管理工具具体功能:
1.选择运行时(Runtime)模式或永久(Permanent)模式的配置。
2.可选的策略集合区域列表。
3.常用的系统服务列表。
4.当前正在使用的区域。
5.管理当前被选中区域中的服务。
6.管理当前被选中区域中的端口。
7.开启或关闭 SNAT(源地址转换协议)技术。
8.设置端口转发策略。
9.控制请求 icmp 服务的流量。
10.管理防火墙的富规则。
11.管理网卡设备。
12.被选中区域的服务,若勾选了相应服务前面的复选框,则表示允许与之相关
的流量。
13.firewall-config 工具的运行状态
4.用命令行接口配置防火墙
firewall-cmd --state #查看火墙状态
firewall-cmd --get-active-zones #显示当前正在使用的区域
firewall-cmd --get-default-zone #查询默认的区域名称
firewall-cmd --get-zones #显示可用的区域
firewall-cmd --zone=public --list-all #列出public域中所有的信息
firewall-cmd --get-services #显示预先定义的服务
firewall-cmd --list-all-zones #显示所有区域的网卡配置参数、资源、端口以及服务等信息
firewall-cmd --set-default-zone=trusted #设置默认的区域
firewall-cmd --add-source=172.25.254.155 --zone=trusted #将源自此 IP 或子网的流量导向指定的区域
firewall-cmd --remove-source=172.25.254.155 --zone=trusted #不再将源自此 IP 或子网的流量导向某个指定区域
firewall-cmd --list-interfaces #查看接口
firewall-cmd --get-zone-of-interface=eth0 #查看接口所在区域
firewall-cmd --change-interface=eth0 --zone=trusted #将某个网卡与区域进行关联
firewall-cmd --remove-interface=eth0 --zone=trusted #将某个网卡与区域解除关联
firewall-cmd --add-interface=eth0 --zone=public #将源自该网卡的所有流量都导向某个指定区域
firewall-cmd --add-port=8080/tcp --zone=public #把在firewalld服务中访问8080端口的流量策略设置为允许
以上修改只是当前生效,在火墙重启之后就会失效,如果想让配置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用 firewall-cmd 命令正常设置防火墙策略时添加–permanent 参数,这样配置的防火墙策略就可以永久生效了。但是,永久生效模式有一个“不近人情”的特点,就是使用它设置的策略只有在系统重启之后才能自动生效。如果想让配置的策略立即生效,需要手动执行 firewall-cmd –reload 命令。如:
firewall-cmd --permanent --change-interface=eth0 --zone=trusted #永久更改网卡的区域
firewall-cmd --reload #在不改变状态的情况下重新加载火墙
firewall-cmd --complete-reload #完全加载(会中断当前的操作)
………..截图下面省略…………….
修改firewalld域
测试:
测试:
把172.25.254.155访问时所使用的区域改为trusted
测试:
临时更改,火墙重启之后失效
永久修改:
5.direct rules
firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -p tcp --dport 80 -j ACCEPT #-p表示协议,-dport表示目的端口,-s主机来源,-j表示动作
如:
[root@client ~]# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.155 -j ACCEPT
drop 丢弃,不做回应
reject 拒绝
accept 接受
浏览器测试
6.端口转发:
[root@localhost ~]# firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.252
success
[root@localhost ~]# firewall-cmd --permanent --add-masquerade
success
[root@localhost ~]# firewall-cmd --reload
success
7.地址伪装
在路由器先添加一个网卡,再执行下面命令
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.25.0.152
PREFIX=24
[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@localhost ~]# sysctl -p
在测试的主机上
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=172.25.0.252
GATEWAY=172.25.0.152
[root@localhost ~]# ping 172.25.254.155
在路由主机
/etc/sysconfig/network-scripts/ifcfg-eth1内容:
内核设置
在测试主机
/etc/sysconfig/network-scripts/ifcfg-eth0内容:
测试: