文章目录
一:Firewalld iptables概述
1.1:Firewalld简介
-
支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具
-
支持ipv6、ipv4防火墙设置及以太网桥
-
支持服务或应用程序直接添加防火墙规则接口
-
拥有两种配置模式
- 运行时配置(一般测试的时候用)
- 永久配置
1.2:iptables简介
- iptables是Linux的防火墙管理工具而已,真正实现防火墙功能的是Netfilter,我们配置类iptables规则后Netfilter通过这些规则来进行防火墙过滤等操作
二:Firewalld iptables 的关系
2.1:Netfilter
- 位于linux 内核中的包过滤功能体系
- 称为Linux防火墙的“内核态”
2.2:Firewalld、iptables
- CentOs 7 默认的管理防火墙规则的工具(Firewalld)
- 称为linux防火墙的“用户态”
2.3:Netfilter和Firewalld、iptables的关系
- 只有iptables才能和内核态进行交互
2.4:Firewalld和iptables的区别
2.5:CentOs 6和CentOs 7 防火墙的区别
- centos 7 有firewalld、iptables
- centos 6 只有iptables
- 图形化管理工具:firewalld-config
- 命令管理工具:iptables(操作复杂) firewalld-cmd
三:iptables详解
3.1:Netfilter模块概念
- netfilter是主要的工作模块,位于内核中,在网络层的第五个位置(就是防火墙四表五链中的第五链)注册了一些函数,用来抓取数据包
- 将数据包的信息拿出来匹配各个链位置在对应表中的规则:匹配之后,进行相应的处理ACCEPT,DROP等
3.2:Netfilter与iptables之间的关系
- 总结,只有iptables才能和内核态进行交互
3.3:四表五链
-
链就是位置,有五个
- 进路由(PREROUTING)
- 进系统(INPUT)
- 转发(FORWARD)
- 出系统(OUTPUT)
- 出路由(POSTROUTING)
-
表就是存储的规则
- 数据包到了该链处,会查询表中设置的规则,然后决定是否放行,丢弃、转发还是修改等操作
3.3.1:具体的四表
- filter表:过滤数据包(filter是默认的表,在使用iptables命令进行配置规则的时候,不特指其他的表就会默认filter表)
- Nat表:用于网络地址转换(IP,端口)
- Mangle表:修改数据包的服务类型,TTL,并且可以配置路由实现QOS
- Raw表:决定数据包是否被状态跟踪机制处理
3.3.2:具体的五链
- IPPUT链:进来的数据包应用此规则链中的策略
- OUTPUT链:外出的数据包应用此规则链中的策略
- FORWARD链:转发数据包时应用此规则链中的策略
- PREROUTING链:对数据包做路由选择前应用此规则链中的规则(所有数据抱进来都先由这个链处理)
- POSTROUTING:对数据包做路由选择后应用此规则链中的规则(所有数据抱出去都先由这个链处理)
3.3.3:四表五链之间的关系
- 表包含链,链包含规则
3.4:iptables语法格式与常用参数
- iptables语法格式
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
如果不指定表名,则会默认指定filter表
-
iptables常用参数
- -P 设置默认策略:iptables
- -P INPUT(DROP|ACCEPT)
- -F 清空规则链
- -L 查看规则链
- -A 在规则链的末尾加入新规则
- -I num 在规则链的头部加入新规则
- -D num 删除某一条规则
- -s 匹配来源地址IP/MASK,加感叹号“!”表示除了这个IP外
- -d 匹配目标地址
- -i 网卡名称 匹配从这块网卡流入的数据
- -o 网卡名称 匹配从这块网卡流出的数据
- -p 匹配协议,如tcp,udp,icmp
- –dport num 匹配目标端口号
- –sport num 匹配来源端口号
-
iptables 命令使用总结
- 所有链名必须大写
INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING - 所有表名必须小写
filter/nat/mangle - 所有动作必须大写
ACCEPT/DROP/SNAT/DNAT/MASQUERADE - 所有匹配必须小写
-s/-d/-m <module_name>/-p
- 所有链名必须大写
3.5:设置防火墙策略,安装Apache服务
- 环境要求:
VMware、centos 7系统、win10系统 - 配置centos 7
[root@localhost~]# yum install httpd -y
[root@localhost~]# systemctl start httpd
'此时用win10浏览器访问本主机ip地址发现是无法连接的'
[root@localhost~]# iptables -I INPUT -i ens33 -p tcp --dport 80 -s 192.168.197.141/24 -j ACCPET '在规则链头部加入规则,指定从ens33网卡流入的,匹配tcp协议,匹配80端口(httpd的端口号)匹配源ip地址(win10),指定控制类型为接受'
[root@localhost~]# iptables -L '查看策略是否设置成功'
- 此时使用win10网页输入centos7ip地址,可以看到Apache服务,配置成功
四:Firewalld网络区域
4.1:区域介绍
-
区域如同进入主机的安全门,每个区域都具有不同限制程度的规则
-
可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口
-
默认情况下,public区域是默认区域,包含所有接口(网卡)
-
iptables没有区域的概念
-
外部流量通过规则进入相应的区域接口(网卡)
-
firewalld数据处理流程
-
检查数据来源的源地址
- 若源地址关联到特定的区域,则执行该区域所指定的规则
- 若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所指定的规则
- 若网络接口未关联到特定的区域,则使用默认区域并执行该区域所指定的规则
-
五:Firewalld防火墙的配置方法
-
运行时配置
- 实时生效,并持续至firewalls重启或重载
- 不中断现有链接
- 不能修改服务配置
-
永久配置
- 不立即生效,除非firewalld重启或重载
- 终端现有连接
- 可以修改服务配置
-
firewalld-config图形工具(用的少)
-
firewalld-cmd命令行工具(用的多)
-
/etc/firewalld/中的配置文件
- firewalld会优先使用/etc/firewalld/中的配置,如果不存在配置文件,则使用/usr/bin/firewalld/中的配置
- /etc/firewalld/:用户自定义文件,需要时可以通过从/usr/lib/firewalld/中拷贝
- /usr/lib/firewalld/:默认配置文件,不建议修改,若恢复至默认配置,可以直接删除/etc/firewalld/中的配置文件