防火墙的定义
防火墙是一种由硬件和软件组合而成,在内部网和外部网之间,专有网与公共网之间构造的保护屏障,用以保护资料和信息安全的一种技术
防火墙的作用。
主要在于及时发现并处理计算机网络运行时可能存在的安全风险,数据传输等问题,从而实现对计算机不安全网络因素的阻断,确保网络正常运行,保障信息安全,为用户提供良好的网络体验。
防火墙的分类
逻辑上分:主机的防火墙和网络防火墙
主机型防火墙:针对单个主机进行防护
网络型防火墙:针对网络进行保护,保护内部局域网。
物理上分:硬件防火墙和软件防火墙
硬件防火墙:在硬件上实现防火墙功能,性能高成本高。
软件防火墙:依靠软件来实现防火墙功能,性能低成本低。
Linux包过滤防火墙概述
Linux防火墙时一种功能强大的信息包过滤系统
netfilter
是Linux内核中的一种包过滤功能体系
称为Linux防火墙的“内态核”
iptables
位于/sbin/iptables,是防火墙规则的管理工具
称为Linux防火墙的“用户态”
netfilter和iptables都称之为Linux防火墙
包过滤的工作层次
主要是网络层,针对IP数据包
体现在对数据包内的IP地址,端口等信息的处理上
iptables的表,链结构
规则表
表的作用:容纳各种规则链
表的划分依据:防火墙规则的作用相似
默认包括4个规则表
raw表:是否对数据包进行状态跟踪
mangle表:是否为数据包设置标记
nat表:是否修改数据包中的源,目标ip地址或端口
filter表:是否放行该数据包(过滤)
规则链
规则的作用:对数据包进行过滤或处理
链的作用:容纳各种防火墙规则
链的分类依据:处理数据包的不同时机
默认包括5种规则链
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包
每个表下面的链
数据包过滤的匹配流程
规则表之间的顺序
raw->mangle->nat->filter
规则链之间的顺序
入站:PREROUTING->INPUT
出站:OUTPUT->POSYROUTING
转发:PREROUTING->FORWARD->POSTROUTING
规则链内的匹配顺序
按顺序依次检查,匹配即停止(LOG策略除外)
若找不到相匹配的规则,则按照该链的默认策略处理
匹配流程示意图
iptables基本语法
数据包的常见控制类型
ACCEPT:允许通过
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配
代码操作
[root@bogon ~]# systemctl status firewalld #确认防火墙是不是启动状态
[root@bogon ~]# yum -y install iptables-services iptables #下载iptables
[root@bogon ~]# systemctl start iptables #开启iptables
[root@bogon ~]# systemctl enable iptables #设置开机自启
[root@bogon ~]# iptables -t raw -nL #查看当前表中的规则
[root@bogon ~]# iptables -t filter -F #清理表中的规则
[root@bogon ~]# iptables -t filter -I INPUT -p icmp -j REJECT #添加防火墙规则
[root@bogon ~]# iptables -t filter -nL #查看当前表中的规则
[root@bogon ~]# iptables -t filter -I INPUT -p icmp -j ACCEPT #添加防火墙规则可以ping本机
[root@bogon ~]# iptables -t filter -I INPUT -p icmp -j DROP #直接丢弃防火墙规则不给出任何回应
[root@bogon ~]# iptables -t filter -nL --line-number #查看防火墙规则并排序
[root@bogon ~]# iptables -D INPUT 2 #删除一条防火墙规则
[root@bogon ~]# iptables -t filter -D INPUT 2 #删除防火墙规则
[root@bogon ~]# iptables -t filter -A INPUT -p tcp -j DROP #设置为丢弃
[root@bogon ~]# iptables -t filter -I INPUT -p icmp -j DROP #丢弃防火墙规则
[root@bogon ~]# iptables -t filter -I INPUT -p tcp -j ACCEPT #添加防火墙ACCEPT规则
[root@bogon ~]# iptables -t filter -P INPUT DROP #默认入站规则设为丢弃
[root@bogon ~]# iptables -t filter -I INPUT -p tcp -j ACCEPT #默认入站设置为放行
[root@bogon ~]# iptables -t filter -A INPUT ! -p tcp -j ACCEPT #允许通过非tcp的包
[root@bogon ~]# iptables -t filter -A INPUT -s 192.168.93.1 -j ACCEPT #地址匹配,指定源IP地址
[root@bogon ~]# iptables -t filter -A INPUT -s 192.168.93.0/24 -j ACCEPT #地址匹配,网段匹配
iptables通用操作
iptables后操作
-t #查询表
-F #清理防火墙规则
-nL #查看显示所有规则
-n #进行解析
-L #列出规则
-A #在链的末尾添加一条规则
-i #在链的开头(或指定序号)插入一条规则
常见的通用匹配条件
-s #源地址
-d #目的地址
-p #协议名
-i #入站网卡
-o #出站网卡
! #表示条件取反
常用的隐含匹配条件
端口匹配:--sport源端口,--dport目的端口
ICMP类型匹配:--icmp-type ICMP类型
常用的显示匹配条件
多端口匹配:-m multiport --sports 源端口列表
-m multiport --dports 目的端口列表
IP范围匹配:-m iprange --src-range IP范围
MAC地址匹配:-m mac --mac-source MAC地址
匹配状态:-m state --state 连接状态
iptables的规则配置需要谨慎进行,不当的配置可能导致系统安全风险或网络通信问题。在配置iptables规则时,建议先在测试环境中进行验证,确保规则的正确性和有效性。