目录
一、简介
二、firewalld操作
一、简介
1、大并发的情况,不能开iptables,影响性能,利用硬件防火墙提升架构安全
Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,软件是iptables,netfilter是内核
2、概念:表 --> 链 -- > 规则(安全策略)
1)4表5链:
Filter: 实现防火墙安全过滤功能
INPUT:外面---->(门)iptables
FORWARD:经过本地防火墙服务器的数据包
OUTPUT: iptables----->外面
NAT:
PREROUTING:一进来就对数据包进行改变
POSTROUTING:在路由之后,进行数据包IP地址或端口信息的转换
OUTPUT:本地防火墙要出去的流量进行相应转换(了解)
Managle对数据进行标记
raw 忽略不计
2)规则流程:从上到下一条条匹配,从前到后进行过滤。 drop、accept
3、firewalld底层是调用iptables
相对于传统的iptables,firwwalld支持动态更新,并加入区域zone的概念。
Firewalld是动态防火墙,即修改后马上生效,支持命令行和图形界面操作
如果开启防火墙,默认阻止所有流量流入,但允许流量流出
一个网卡只能绑定一个区域,一个区域可绑定多个网卡
Trusted:白名单
Drop:黑名单
Public:默认规则
阿里云:
硬件防火墙:高防DDOS
软件防火墙:安全组
二、firewalld操作
Runtime运行时,修改规则马上生效,重启后失效
Permanent:永久生效
1、多区域同时使用,不加zone区域,默认使用public
[root@ansible ~]# firewall-cmd --get-default-zone#查看当前使用区域
Public
[root@ansible ~]# firewall-cmd --get-active-zones #查看当前活动区域
public
interfaces: ens192
[root@ansible ~]# firewall-cmd --list-all #查看区域规则明细
public (active)
target: default
icmp-block-inversion: no
interfaces: ens192
sources:
services: dhcpv6-client ssh#默认只允许ssh和ipv6的流量
[root@ansible ~]# firewall-cmd --remove-service=ssh#移除ssh服务,已不能ssh服务
Success
[root@ansible ~]# firewall-cmd --add-source=10.14.0.0/16 --zone=trusted#将网段加入白名单
success
[root@ansible ~]# firewall-cmd --get-active-zone#检查
public
interfaces: ens192
trusted
sources: 10.14.0.0/16#已经增加一个trusted区域
2、任何人可访问
①、放行端口
[root@ansible ~]# firewall-cmd --permanent --add-port=80/tcp #永久允许一个端口
[root@ansible ~]# firewall-cmd --permanent --add-port={8081/tcp,8082/tcp}#允许多个端口
[root@ansible ~]# firewall-cmd --permanent --remove-port=80/tcp #移除端口
②、放行服务(实质还是放行端口)
[root@ansible ~]# firewall-cmd --permanent --add-service={http,https}
[root@ansible ~]# firewall-cmd --permanent --add-service=redis
[root@ansible ~]# cd /usr/lib/firewalld/services #服务名必须存在次目录且以.xml结尾
[root@ansible services]# ll |wc -l
154
-rw-r--r--. 1 root root 314 Aug 9 2019 zabbix-agent.xml
-rw-r--r--. 1 root root 315 Aug 9 2019 zabbix-server.xml
3、端口转发
客户端访问10.0.0.1:5555,被防火墙转成另外一个虚拟机172.16.1.1:22端口
[root@ansible ~]# firewall-cmd --add-forward-port=port=5555:proto=tcp:toport=22:toaddr=10.14.21.3 #转发
success
[root@ansible ~]# firewall-cmd --list-all#连接防火墙5555相当于连接172.16.1.1的22端口
forward-ports: port=5555:proto=tcp:toport=22:toaddr=172.16.1.1
[root@ansible ~]# firewall-cmd --add-masquerade #IP地址伪装,方便回包
success
4、富规则:优先级最高
Service name、port 、forward三选一
accept、reject、drop三选一。
①、允许10.0.0.0/24访问http服务,仅允许172.16.1.7/32访问22端口
[root@ansible ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.14.0.0/16 service name=http accept' #允许10.0.0.0/24访问http服务
success
[root@ansible ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.1/32 port port=22 protocol=tcp accept'#允许172.16.1.7/32访问22端口
success
②、默认允许所有人连接ssh,但拒绝172.16.1.9/24网段
[root@ansible ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 service name=ssh drop' #拒绝网段
success
③、允许所有人能访问http、https服务,但只有10.0.0.1主机可访问ssh服务
[root@ansible ~]# firewall-cmd --add-service={http,https} #所有人能访问http https和ssh
success
[root@ansible ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1/32 service name=ssh accept'#只允许一个主机
success
[root@ansible ~]# firewall-cmd --remove-service=ssh#移除所有人ssh服务
success
④、当用户来源IP为10.0.0.1时,将用户请求的5555转发至后端172.16.1.7的22端口
[root@ansible ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1/32 forward-port port=5555 protocol=tcp to-port=22 to-addr=172.16.1.1'
success
⑤、如果没有添加--permanent参数则重启后失效,富规则按先后顺序匹配。
Accept
Reject:有提示消息,比drop友好。
Drop