linux 防火墙管理工具-- iptables基础知识
1、iptables与netfilter
1: iptables是操作防火墙的一个工具,netfilter是防火墙的"安全框架",这个“安全框架”是真正的防火墙。
2:netfilter位于内核空间。
iptables位于用户空间。
3:内核空间:也叫做内核态,操作系统占据的内存区域
用户空间:也叫做用户态,用户进程所在的内存区域
4:为什么要将两者隔离开?
将用户空间与内核空间隔离开,可减少系统崩溃的可能,提高系统的稳定性。
2、iptables有什么作用呢?
iptables组成Linux平台下的包过滤防火墙,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
3、四表五链
链
防火墙的作用就在于对经过的报文匹配"规则",然后执行对应的"动作"。当报文经过这些关卡时,必须匹配这个关卡上的规则,这个关卡上可能有很多条规则,当我们把这些规则串到一个链条上的时候,就形成了"链"。每个经过这个"关卡"的报文,都要将这条"链"上的所有规则匹配一遍,如果有符合条件的规则,则执行规则对应的动作。
五链以及链上匹配的规则如图所示:
表
把具有相同功能的规则的集合叫做“表”,不同的规则放置于不同的表中工作,在iptables中定义了四种表,每种表对应不同的功能。
filter表 | 过滤功能 |
---|---|
nat表 | 网络地址转化功能 |
mangle表 | 拆解报文,做出修改,并重新封装 |
raw表 | 关闭nat表上启用的链接追踪机制,不再让iptables对数据包进行跟踪,提高性能 |
表与链的关系
链 | 表 |
---|---|
PREROUTING | raw表,mangle表,nat表 |
INPUT | mangle表,filter表,(centos7中还有nat表,centos6中没有) |
FORWARD | mangle表,filter表 |
OUTPUT | raw表,mangle表,nat表,filter表 |
POSTROUTING | mangle表,nat表 |
- 四张表处于同一条链时,执行优先级
raw–>mangle–>nat–>filter - 下图介绍了在整个数据传输过程中,防火墙的表和链的功能体现。
4、iptables基本用法
iptables规则
根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理。
(匹配条件和处理动作共同组成了规则)
匹配条件
基本匹配条件 | 扩展匹配条件 |
---|---|
源地址 | 源端口 |
目标地址 | 目标端口 |
处理动作
动作 | 含义 |
---|---|
ACCEPT | 接收数据包,允许数据包通过 |
DROP | 丢弃数据包,不给任何回应信息 |
REJECT | 拒绝数据通过,必要时发出拒绝信息 |
LOG | 在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则 |
常见选项
-A | 将一个规则添加到链末尾 |
---|---|
-D | 删除匹配的规则 |
-F | 删除指定链或所有链的规则 |
-R | 替换匹配的规则 |
-P | 修改链的默认规则,如iptables -P INPUT DROP,(将INPUT链设置为DROP) |
-v | 列出详细信息 |
-I | 在指定链的指定编号位置插入一个规则则(例:iptables -I INPUT 1 --dport 80 -j ACCEPT(将规则插入到filter表INPUT链中的第一位上) |
-L | 列出指定链中的所有规则 |
常用规则
-p tcp/udp/icmp/all | 匹配协议,all会匹配所有协议 |
---|---|
-s addr | 匹配源地址 |
-d addr | 匹配目标地址 |
-o interface | 匹配出口网卡,只适用FORWARD、POSTROUTING、OUTPUT(例:iptables -AFORWARD -o eth0) |
-i interface | 匹配入口网卡,只使用PREROUTING、INPUT、FORWARD。 |
- -sport | 匹配源端口 |
- -dport | 匹配目标端口 |
5、iptables实例
服务器A : 192.168.119.5 , [root@li ~]
服务器B: 192.168.119.132 , [root@liyu ~]
增加规则
- 拒绝所有来自192.168.119.132的报文
[root@li ~]# iptables -t filter -I INPUT -s 192.168.119.132 -j DROP
[root@li ~]# iptables -nvL
Chain INPUT (policy ACCEPT 6 packets, 384 bytes)
pkts bytes target prot opt in out source destination
8 672 DROP all -- * * 192.168.119.132 0.0.0.0/0
[root@liyu ~]# ping 192.168.119.5
PING 192.168.119.5 (192.168.119.5) 56(84) bytes of data.
^C
此时表示已无法ping通
- 允许所有来自192.168.119.132的报文
[root@li ~]# iptables -t filter -I INPUT -s 192.168.119.132 -j ACCEPT
[root@li ~]# iptables -nvL
Chain INPUT (policy ACCEPT 6 packets, 384 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 192.168.119.132 0.0.0.0/0
13 1092 DROP all -- * * 192.168.119.132 0.0.0.0/0
[root@liyu ~]# ping 192.168.119.5
PING 192.168.119.5 (192.168.119.5) 56(84) bytes of data.
64 bytes from 192.168.119.5: icmp_seq=1 ttl=64 time=0.516 ms
64 bytes from 192.168.119.5: icmp_seq=2 ttl=64 time=1.51 ms
^C
此时表示可以ping通
删除规则:-D
方法一:iptables -t filter -D INPUT 1
方法二:iptables -D INPUT -s 192.168.119.132 -j ACCEPT
[root@li ~]# iptables -t filter -D INPUT 1
[root@li ~]# iptables -nvL
Chain INPUT (policy ACCEPT 6 packets, 384 bytes)
pkts bytes target prot opt in out source destination
13 1092 DROP all -- * * 192.168.119.132 0.0.0.0/0
方法一:删除第一条
[root@li ~]# iptables -D INPUT -s 192.168.119.132 -j DROP
[root@li ~]# iptables -nvL
Chain INPUT (policy ACCEPT 6 packets, 384 bytes)
pkts bytes target prot opt in out source destination
方法二:指定一个删除
修改规则:-R
[root@li ~]# iptables -t filter -I INPUT -s 192.168.119.132 -j ACCEPT
[root@li ~]# iptables -nvL
Chain INPUT (policy ACCEPT 6 packets, 384 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 192.168.119.132 0.0.0.0/0
可以查看原来的规则为ACCEPT
[root@li ~]# iptables -t filter -R INPUT 1 -s 192.168.119.132 -j DROP
[root@li ~]# iptables -nvL
Chain INPUT (policy ACCEPT 8 packets, 512 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 192.168.119.132 0.0.0.0/0
修改之后的规则为DROP
修改默认规则:-P
# iptables -t filter -P INPUT DROP
保存规则
Centos 6中: service iptables save
[root@li ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] 保存的文件存在此处
[root@li ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Thu Nov 26 03:04:25 2020
*filter
:INPUT ACCEPT [59:3768]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [33:3144]
-A INPUT -s 192.168.119.132/32 -j DROP 已经保存的规则
COMMIT
或者也可使用 iptables-save >/etc/sysconfig/iptables
使用iptables-save并不能保存规则,但可以将已经写好的规则输出到屏幕,用重定向输出到指定文件。