linux 之iptables

1.iptables防火墙基本介绍

Linux系统的防火墙:IP信息包过滤系统,它实际上由两个组件 netfilter和 iptables 组成。

主要工作在网络层,针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。

iptables由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包。

2. 四表五链

 iptables是基于内核的防火墙,其中内置了raw、mangle、nat和 filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务。

规则表的作用:容纳各种规则链。
规则链的作用:容纳各种防火墙规则。

四表

raw表∶ 确定是否对该数据包进行状态进行跟踪

mangle表∶为数据包设置标记

nat表∶ 负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。(地址转换)

filter表;负责过滤数据包, 确定是否放行该数据包(过滤)。(是否允许流量通过)

五链

pre-routing : 路由选择前

post-routing 路由选择后

input 进入本机

output 出本机

forward 转发

数据包到达防火墙时,规则表之间的优先顺序:raw >mangle > nat > filter

3. iptables的配置

3.1 安装iptables,并且开启服务。

linux 之iptables_第1张图片

3.2 iptables防火墙的配置方法

使用iptables命令行管理

iptables  [-t 表名]  管理选项  [链名]  [匹配条件]  [-j 控制类型]

不指定表名时,默认指filter表

不指定链名时,默认指表内的所有链

除非设置链的默认策略,否则必须指定匹配条件

选项、链名、控制类型使用大写字母,其余均为小写

常用控制类型:

控制类型 作用
ACCEPT 允许数据包通过(默认)
DROP 直接丢弃数据包,不给出任何回应信息
REJECT 拒绝数据包通过,会给数据发送端一个响应信息
SNAT 修改数据包的源地址
DNAT 修改数据包的目的地址
MASQUERADE 伪装成一个非固定公网IP地址
LOG 日志添加备注

常用管理选项:

管理选项 作用
-A 在指定链的末尾追加(--append)一条新的规则
-I 在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则
-R 修改、替换(--replace) 指定链中的某一条规则,可指定规则序号或具体内容
-P 设置指定链的默认策略(--policy)
-D 删除(--delete) 指定链中的某一条规则,可指定规则序号或具体内容
-F 清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L 列出(--list) 指定链中所有的规则,若未指定链名,则列出表中的所有链
-n 使用数字形式(--numeric) 显示输出结果,如显示IP地址而不是主机名
-v 显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers 查看规则时,显示规则的序号

列出与清空

列出(filter)表中的所有链  iptables -nvL

linux 之iptables_第2张图片

linux 之iptables_第3张图片

清空(filter)表的规则

linux 之iptables_第4张图片

删除规则

删除默认filter表中INPUT链中第2条规则

linux 之iptables_第5张图片

添加规则

不允许其他主机ping本机192.168.66.10

linux 之iptables_第6张图片

linux 之iptables_第7张图片

不允许其他主机ping通本机,并且不给任何回应。

插入规则

linux 之iptables_第8张图片

linux 之iptables_第9张图片

设置默认规则

linux 之iptables_第10张图片

-P设置了DROP后,使用-F仅仅是清空链中的规则 并不会影响设置的默认规则,
如果使用-F,那么所有的规则清除后,则使用默认策略DROP,将会使远程连接
断连。使用重启服务器解决 systemctl restart iptables 或者重启服务器。

替换规则

规则替换前

linux 之iptables_第11张图片

linux 之iptables_第12张图片

4. 规则匹配

规则的匹配是 通用匹配  和  隐含匹配

通用匹配:

可直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件。

  • 协议匹配:-p 协议名
  • 地址匹配:-s 源地址、-d 目的地址   可以是IP、网段、域名、空(任何地址)
  • 接口匹配:-i 入站网卡、-o出站网卡
iptables -A FORWARD ! -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.91.101 -j DROP
iptables -I INPUT -i ens33 -s 192.168.91.0/24 -j DROP

iptables -I INPUT -p icmp -j DROP
iptables -A FORWARD ! -p icmp -j ACCEPT           //感叹号”!”表示取反

隐含扩展

要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类 型等条件。

[root@localhost ~]#iptables -A INPUT -p tcp  --sport 10000:30000 -j REJECT 
#10000到30000 全部被拒


TCP标记匹配: --tcp-flags TCP标记:SYN,RST,ACK,SYN
[root@localhost ~]#iptables -I INPUT -i ens33 -p tcp --tcp-flags FIN,RST,ACK SYN -j ACCEPT
[root@localhost ~]#iptables -A INPUT -p icmp --icmp-type 8 -j DROP         
#禁止其它主机ping本机

[root@localhost ~]#iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 
#允许本机ping其它主机      iptables -A INPUT -p icmp -j DROP

你可能感兴趣的:(linux,服务器)