Linux防火墙(Iptables)
在早期的Linux系统中,默认使用的是iptables防火墙管理服务来配置防火墙。尽管新型的firewalld防火墙管理服务已经被投入使用多年,但是大量的企业在生产环境中依然出于各种原因而继续使用iptables。
策略与规则链
四表五链概念
filter表——过滤数据包
Nat表——用于网络地址转换(IP、端口)
Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS
Raw表——决定数据包是否被状态跟踪机制处理
INPUT链——进来的数据包应用此规则链中的策略
OUTPUT链——外出的数据包应用此规则链中的策略
FORWARD链——转发数据包时应用此规则链中的策略
PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)
基本命令参数
iptables命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配,一旦匹配成功,iptables就会根据策略规则所预设的动作来处理这些流量。另外,再次提醒一下,防火墙策略规则的匹配顺序是从上至下的,因此要把较为严格、优先级较高的策略规则放到前面,以免发生错误。总结归纳了常用的iptables命令参数。再次强调,我们无需死记硬背这些参数,只需借助下面的实验来理解掌握即可。
iptables中常用的参数以及作用
- 1
参数 | 作用 |
---|---|
-P | 设置默认策略 |
-F | 清空规则链 |
-L | 查看规则链 |
-A | 在规则链的末尾加入新规则 |
-I num | 在规则链的头部加入新规则 |
-D num | 删除某一条规则 |
-s | 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外 |
-d | 匹配目标地址 |
-i 网卡名称 | 匹配从这块网卡流入的数据 |
-o 网卡名称 | 匹配从这块网卡流出的数据 |
-p | 匹配协议,如TCP、UDP、ICMP |
–dport num | 匹配目标端口号 |
–sport num | 匹配来源端口号 |
1.为了试验iptables防火墙,我们先把本机的firewalld防火墙冻结并且关闭
2.下载iptables防火墙服务
3.启动iptables防火墙服务,并开机自启
4.在iptables命令后添加-L参数查看已有的防火墙规则链
-n :数字输出,ip地址和端口会以数字的形式打印,默认情况下,程序显示主机名,网络名或者服务(可用的)
-L 列出指定链中的所有规则
5.查看iptables服务nat表中防火墙规则链
6.查看iptables服务mangle表中防火墙规则链
7.在iptables命令后添加-F参数清空已有的防火墙规则链:
但是当重新启动iptables服务时,会恢复默认值,清空的数据会回来
如果在重启服务之前把规则保存server iptables save ,重启之后不会,恢复原来的默认值
8.添加自定义链名,以及链名的改名,删除
-N 添加链名
-E改名
-X删除
9.表中的规则连遵循由上到下优先原则,如添加两个矛盾规则
将INPUT规则链设置为拒绝172.25.254.4的主机访问本机的22端口
将INPUT规则链设置为允许172.25.254.4的主机访问本机的22端口
-t 指定表名
-A 指定链名
-s指定源地址(主机名,网络名,ip)
-p规则或待检查包的协议,如此处指定协议tcp
–dport 端口号(如22,80)
-j目标跳转 (指定规则目标)指定规则处理数据包
由优先原则可知,执行INPUT第一条规则,所以当4号主机通过22端口访问时被拒绝
10.删除filter表中INPUT规则链中的第一条规则
-D 删除
-INPUT 1 :INPUT规则链中的第一条规则
11.我们知道规则链中是遵循上下优先原则,但是如果先添加一个原则放在第一位呢,
-I :根据给出的规则序号向所选链中插入一条或者多条规则。如果序号为1,规则会插入链头部。(当然不是指定序号的插入)
12.设置filter表中INPUT链的默认规则,当数据包没有被规则列表中的任何规则匹配到时,默认此规则
13.两种指定用户允许某服务的方法
#将INPUT规则链设置为只允许指定网段(172.25.254.4)的主机访问本机的22端口,拒绝来自其他所有主机的流量
第一种
先添加规则INPUT链中的所有服务都拒绝
再添加规则允许4号主机访问22端口并放在第一位
第二种
除了4号主机访问本机的22端口允许,其他主机访问任何服务都拒绝
!除了
用4号主机访问22,允许
其他主机访问被拒绝
下面两个实验,
server主机IP为1.1.1.200 网关为1.1.1.100
服务器做路由作用 IP1=172.25.254.100 IP2=1.1.1.100
4号主机IP为172.25.254.4
14.端口转发(目的地地址转换;DNAT)
-iens3 指定数据包从ens3网卡进
-j 指定数据包的动作
–to-dest 执行DNAT动作后数据包到达的目的地址
用4号主机ssh本机时会自动转到1.1.1.200主机上
15.地址伪装(源地址转换;SNTA)
先清空nat表中的规则
-o ens3 从ens3网卡出
–to-source 执行SNTA动作后数据包的源地
当用server主机访问4号主机时,4号主机显示是172.25.254.100在访问它