Linux防火墙管理

1、iptables介绍

防火墙分类:从逻辑上分类

分类 说明
主机防火墙 针对单个主机进行防护
网络防火墙 处于网络入口或者边缘,针对网络入口进行防护,服务于防火墙背后的本地局域网

防火墙分类:从物理上分类

分类 说明
硬件防火墙 在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本也高
软件防火墙 运用软件处理逻辑运行于通用硬件平台上的防火墙,性能低,成本低
  • iptables并不是真正意义上的防火墙,我们可以理解为一个客户端工具,用户通过ipatbles这个客户端,将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,这个框架的名字叫netfilter
  • netfilter才是防火墙真正的安全框架,netfilter位于内核空间。
  • iptables是一个命令行工具,位于用户空间,通过这个命令行工具来操作netfilter。
  • netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
  • 在这里插入图片描述

两个概念:

内核空间:也叫做内核态,操作系统占据的内存区域
用户空间:也叫做用户态,用户进程所在的内存区域
硬件驱动代码运行在内核空间,与kernel运行在相同空间内,所以驱动程序发生问题容易造成系统的崩溃。将用户空间与内核空间隔离开,可减少系统崩溃的可能,提高系统的稳定性。再现实环境中,应用程序崩溃的情况比一些硬件故障出现的概率要多的多得多。所以将用户空间和内核空间隔离开很有必要。

在这里插入图片描述

2、iptables四表五链

  • 防火墙就是按规则办事,我们提前定义好规则条件,防火墙就根据定义好的对应方法去处理。
  • 规则一般的定义为:“如果数据包头符合这样的条件,就这样处理这个数据包”。
  • 这些规则存储在内核空间的信息过滤表中,这些规则分别定义了源地址、目的地址、传输协议、服务类型等。
  • 当数据和规则匹配时,就会执行对应的动作,如:放行、拒绝、丢弃等。
  • 配置防火墙的主要工作就是添加、修改和删除这些规则。

我们把具有相同功能的规则的集合叫做“表”,不同的规则放在不同的表中工作,在iptables中定义了四种表。

说明
filter表 负责过滤功能,防火墙;内核模块:iptables_filter
nat表 network address translation,网络地址转换功能;内核模块:iptable_nat
mangle表 拆解报文,做出修改,并重新封装 的功能;iptable_mangle
raw表 关闭nat表上启用的连接追踪机制;iptable_raw

表是链上的一些具有相同功能规则的集合,但并不是所有的表都存在于每一条链上。

PREROUTING raw表,mangle表,nat表
INPUT mangle表,filter表,(centos7中还有nat表,centos6中没有)
FORWARD mangle表,filter表
OUTPUT raw表,mangle表,nat表,filter表
POSTROUTING mangle表,nat表

但在实际使用中,我们通常是按表来操作的。

raw REROUTING,OUTPUT
mangle REROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat REROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)
filter INPUT,FORWARD,OUTPUT

在这里插入图片描述
当四个表处于同一条链上时,优先级如下:
优先级次序(高到低):raw>mangle>nat>filter

3、iptables基本用法

匹配条件加上处理动作共同组成了规则。

  • 匹配条件:
基本匹配条件 扩展匹配条件
源地址 源端口
目的地址 目的端口
  • 处理动作
动作 含义
ACCEPT 允许数据包通过
DROP 直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了
超时时间才会有反应。
REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的
信息
SNAT 源地址转换,解决内网用户用同一个公网地址上网的问题
MASQUERADE 是SNAT的一种特殊形式,适用于动态的、临时会变的ip上
DNAT 目标地址转换
REDIRECT 在本机做端口映射
LOG 在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配
常见操作命令 说明
-A 在指定链尾部添加规则
-D 删除匹配的规则
-R 替换匹配的规则
-I 在指定位置插入规则(例:iptables -I INPUT 1 --dport 80 -j ACCEPT(将规则插入到filter表INPUT链中的第一位上)
-L/S 列出指定链或所有链的规则
-F 删除指定链或所有链的规则
-N 创建用户自定义链[例:iptables -N allowed]
-X 删除指定的用户自定义链
-P 为指定链设置默认规则策略,对自定义链不起作用
-Z 将指定链或所有链的计数器清零
-E 更改自定义链的名称[例:iptables -E allowed disallowed]
-n ip地址和端口号以数字方式显示[例:iptables -nL]
常见规则匹配器 说明
-p
tcp/udp/icmp/all 匹配协议,all会匹配所有协议
-s addr[/mask] 匹配源地址
-d addr[/mask] 匹配目标地址
–sport
port1[:port2] 匹配源端口(可指定连续的端口)
–dport
port1[:port2] 匹配目的端口(可指定连续的端口)
-o interface 匹配出口网卡,只适用FORWARD、POSTROUTING、OUTPUT(例:iptables -AFORWARD -o eth0)
-i interface 匹配入口网卡,只使用PREROUTING、INPUT、FORWARD。
–icmp-type 匹配icmp类型(使用iptables -p icmp -h可查看可用的ICMP类型)
–tcp-flags maskcomp 匹配TCP标记,mask表示检查范围,comp表示匹配mask中的哪些标记。(例:iptables-A FORWARD -p tcp --tcp-flags ALL SYN,ACK -j ACCEPT 表示匹配SYN和ACK标记的数据包)

iptables常用命令:

iptables -A 将一个规则添加到链末尾
iptables -D 将指定的链中删除规则
iptables -F 将指定的链中删除所有规则
iptables -I 将在指定链的指定编号位置插入一个规则
iptables -L 列出指定链中所有规则
iptables -t nat -L 列出所有NAT链中所有规则
iptables -N 建立用户定义链
iptables -X 删除用户定义链
iptables -P 修改链的默认设置,如将iptables -P INPUT  DROP (将INPUT链设置为DROP

常见设置参数介绍:

--dport   指定目标TCP/IP端口 如 –dport 80
--sport   指定源TCP/IP端口 如 –sport 80
-p   tcp 指定协议为tcp
-p   icmp 指定协议为ICMP
-p   udp 指定协议为UDP
-j   DROP 拒绝
-j   ACCEPT 允许
-j   REJECT 拒绝并向发出消息的计算机发一个消息
-j   LOG 在/var/log/messages中登记分组匹配的记录
-m   mac –mac 绑定MAC地址
-m   limit  –limit  1/s 1/m 设置时间策列
-s   192.168.1.153或192.168.1.0/24 指定源地址或地址段
-d   192.168.1.153或192.168.1.0/24 指定目标地址或地址段
-s  !  192.168.1.0 指定源地址以外的

iptables规则配置

环境清零

[root@centos6 ~]# iptables -F   //清理规则
[root@centos6 ~]# iptables -nvL  //查看规则
Chain INPUT (policy ACCEPT 6 packets, 400 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 3 packets, 312 bytes)
 pkts bytes target     prot opt in     out     source               destination

增加规则

新增一个拒绝所有来自192.168.229.129报文的规则
[root@centos6 ~]# iptables -t filter -I INPUT -s 192.168.229.129 -j DROP
[root@centos6 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 7 packets, 424 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       192.168.229.129      0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 6 packets, 624 bytes)
 pkts bytes target     prot opt in     out     source               destination

删除规则

[root@centos6 ~]# iptables -t filter -D INPUT 1
[root@centos6 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 10 packets, 640 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 6 packets, 592  bytes)
pkts bytes target     prot opt in     out     source               destination

修改规则

[root@centos6 ~]# iptables -t filter -I INPUT -s  192.168.229.129 -j ACCEPT
[root@centos6 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 8 packets, 512 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  *      *       192.168.229.129      0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 
Chain OUTPUT (policy ACCEPT 5 packets, 472 bytes)
 pkts bytes target     prot opt in     out     source               destination
[root@centos6 ~]# iptables -t filter -R INPUT 1 -s 192.168.229.129 -j DROP
[root@centos6 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 6 packets, 384 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       192.168.229.129      0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 4 packets, 368 bytes)
 pkts bytes target     prot opt in     out     source               destination

保存规则

[root@centos6 ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@centos6 ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Sat May  2 03:55:52 2020
*filter
:INPUT ACCEPT [51:3240]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [29:2648]
-A INPUT -s 192.168.229.129/32 -j DROP
COMMIT
# Completed on Sat May  2 03:55:52 2020

扩展匹配条件

  • 隐式扩展——在使用-p选项指明了特定的协议时,无需再同时使用-m选项指明扩展模块的扩展机制
  • 显式扩展——必须使用-m选项指明要调用的扩展模块的扩展机制

在这里插入图片描述
iptables模板制作的思路

  • 白名单机制:默认规则是拒绝所有,需要方通的请求accept。

  • 黑名单机制:默认规则是容许所有,需要拒绝的请求REJECT。

  • 在黑名单的条件下,实现白名单的效果:默认容许所有,添加最后一条规则为拒绝所有。

猜你喜欢

转载自blog.csdn.net/PerDrix/article/details/105878529