网络之iptables

1. 一些相关的概念

1. 链的概念

  • 如上图,linux系统中提供了五个链
    • prerouting:数据包进入路由表之前
    • input:通过路由表后目的地为本机
    • forword:通过路由表后目的地不为本机
    • output:由本机产生,向外转发
    • postrouting:发送到网卡接口之前
  • 在链上可以放置一系列规则(匹配条件+动作=规则)。
  • 每一个要经过这些链的报文,都会按照这些链上的所有规则进行匹配一遍。如果有符合条件的规则,则需要执行对应的动作

2. 表的概念

  • 将规则分类,把相同类别的规则放在一张表中。linux提供的4张表:(优先级由低到高)
    • filter表:负责过滤功能
    • nat表:负责网络地址转换功能
    • mangle表:负责拆解报文,做出修改,并重新封装的功能
    • raw表:决定数据包是否被状态跟踪机制处理

3. 四表五链的关系

3. iptables查看规则命令

3.1 查看指定表上的所有规则

iptables -t filter -L
  • -L表示查看规则
  • -t 指定查看哪张表,不写默认查看filter这张表

3.2 查看指定链上的指定表的所有规则

iptables -t filter -L INPUT

3.3 查看指定链上的指定表的所有规则(详细信息)

  • -v:verbose。详细的
# -v显示详细信息
iptables -t filter -vL FORWARD

#-n:不对ip进行反解析
iptables -t filter -vnL FORWARD
# 命令显示结果
Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 929K  255M DOCKER-USER  all  --  any    any     anywhere             anywhere            
 929K  255M DOCKER-ISOLATION-STAGE-1  all  --  any    any     anywhere             anywhere            
 431K   53M ACCEPT     all  --  any    docker0  anywhere             anywhere             ctstate RELATED,ESTABLISHED
42321 2410K DOCKER     all  --  any    docker0  anywhere             anywhere            
 456K  199M ACCEPT     all  --  docker0 !docker0  anywhere             anywhere            
    0     0 ACCEPT     all  --  docker0 docker0  anywhere             anywhere  
  • 第一行说明了哪条链
  • 第二行显示了许多字段
    • pkts:对应规则匹配到的报文的个数
    • bytes:对应规则匹配的报文包的大小总和
    • target:规则对应的动作,即匹配成功后需要采取的措施
    • prot:规则对应的协议,是否只针对某些协议应用此规则
    • opt:规则的可选项
    • in:表示数据包从哪个网卡流入。我们可以设置通过哪个网卡流入的报文需要匹配当前规则
    • out:表示数据包从哪个网卡流出,我们可以设置通过哪个网卡流出的报文需要匹配当前规则
    • source:表示规则对应的源头地址,可以是一个IP,也可以是一个网段
    • destination:表示规则对应的目标地址,可以是一个IP,也可以是一个网段

4. 增加规则

4.1 拒绝指定主机所有报文访问当前机器

# 在指定链的首部位置添加规则
iptables -t filter -I INPUT -s 192.168.1.146 -j DROP

# 在指定链的指定位置添加规则
iptables -t filter -I INPUT 5 -s 192.168.1.146 -j DROP

# 在指定链的尾部位置添加规则
iptables -t filter -A INPUT -s 192.168.1.146 -j DROP
  • -I : 插入规则。默认在链的首部添加一条规则
  • -A:在链的尾部添加规则
  • -s:表示源地址
  • -j:匹配条件满足时对应的动作(可选项有ACCEPT,DROP,REJECT。)

4.2 给指定表的指定链设置默认策略(动作)

iptables -t filter -P FORWARD ACCEPT
  • -P:设置某个链的默认策略

5. 删除规则

5.1 按指定表的指定链上的编号删除规则

# 查看指定表上的指定链的规则编号
iptables --line-numbers -nvL INPUT

# 删除指定表上的指定链的第3条规则
iptables -t filter -D INPUT 3
  • -D:删除规则

5.2 清空指定表的指定链上的所有规则

iptables -t filter -F INPUT

-F:flush,清空 

5.3 清空指定表上的所有规则

iptables -t filter -F

6. 保存规则

  • 默认清空下,我们对防火墙做出的修改都是临时的。重启iptables或者服务器,我们平时添加的规则都会消息

6.1 centos6中保存规则

# centos6中
service iptables save
  • 默认保存到/etc/sysconfig/iptables文件中

6.2 通用保存规则

# 将保存规则显示到终端
iptables-save

# 保存规则
iptables-save > /etc/sysconfig/iptables

6.3 载入规则

iptables-restore < /etc/sysconfig/iptables

7. 添加规则的基本匹配条件

7.1 指定多个ip,或者指定一个网段

# 逗号左右不能有空格
iptables -t filter -I INPUT -s 192.168.1.111,192.168.1.118 -j DROP

# 指定网段
iptables -t filter -I INPUT -s 192.168.1.0/24 -j DROP

# 指定目标地址
iptables -t filter -I OUTPUT -d 192.168.1.111,192.168.1.118 -j DROP

-d:目标地址

7.2 匹配协议

iptables -t filter -I INPUT -p tcp -s 192.168.1.146 -j ACCEPT
  • -p :protocol协议

7.3 匹配网卡

iptables -t filter -I OUTPUT -p icmp -o eth4 -j DROP

8.添加规则的扩展匹配条件

  • 扩展匹配条件依赖于基本匹配条件

8.1 添加端口匹配

iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 22 -j REJECT

iptables -t filter -I OUTPUT -s 192.168.1.146 -p tcp -m tcp --sport 22 -j REJECT

# 支持匹配连续范围的端口
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 22:25 -j REJECT
  • -m tcp:表明是tcp的扩展匹配
  • --dport:目的端口
iptables -t filter -I OUTPUT -d 192.168.1.146 -p udp -m multiport --sports 137,138 -j REJECT

iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80 -j REJECT
  • -m multiport :多端口扩展匹配

8.2 iprange扩展模块

# 匹配源地址在某个范围之间
iptables -t filter -I INPUT -m iprange --src-range 192.168.1.127-192.168.1.146 -j DROP
  • -m iprange:ip范围匹配扩展模块
  • --src-range:源地址范围

8.3 icmp扩展

iptables -t filter -I INPUT -p icmp -m icmp --icmp-type 8/0 -j REJECT
  • -m icmp:icmp的扩展模块
  • --icmp-type 8/0 : 匹配icmp的type=8,code=0的报文。

8.4 tcp扩展

iptables -t filter -I INPUT -p tcp -m tcp --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN -j REJECT

# 简写形式
iptables -t filter -I INPUT -p tcp -m tcp --tcp-flags ALL SYN -j REJECT
  • --tcp-flags:需要两个参数
    • 第一个参数是需要匹配哪些标志位(用逗号分割)
    • 第二个参数是哪些标志位置位1才算匹配成功

9. 自定义链

9.1 为什么自定义链

  • 默认链中的规则过多则不方便管理

9.1 创建自定义链

iptables -t filter -N IN_WEB
  • -N:创建自定义链

9.2 给自定义连添加规则

iptables -t filter -I IN_WEB -s 192.168.1.139 -j REJECT
  • 跟给系统自带的链添加规则一样

9.3 将自定义链挂载到默认五链中使其生效

# 在指定表上的指定链的指定端口匹配的报文上生效我们的自定义链。
iptables -t filter -I INPUT -p tcp --dport 80 -j IN_WEB

9.4 指定链重命名

iptables -E IN_WEB WEB

9.5 删除指定链

iptables -X WEB
  • 运行删除的条件
    • 自定义链上没有被引用
    • 自定义链上没有任何规则

10. 动作

  • ACCEPT:接受
  • DROP:丢弃
  • REJECT:决绝
  • LOG:记录日志
  • SNAT:源地址转换
  • DNAT:目标地址转换
  • MASQUERADE:源地址动态转换为指定网卡上可用的IP地址
  • REDIRECT:重定向:将本机端口映射到本机的另一个端口

10.1 SNAT

iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -j SNAT --to-source 192.168.1.146
  • --to-source:将源地址改为指定地址

10.2 DNAT

iptables -t nat -I PREROUTING -d 192.168.1.146 -p tcp --dport 801 -j DNAT --to-destination 10.1.0.1:80

10.3 MASQUERADE

iptables -t nat -I POSTROUTING -s 10.1.0.0/16 -o eth0 -j MASQUERADE
  • -o:出口网卡

10.4 REDIRECT

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iptables是一个用于Linux系统的防火墙工具,它可以对网络流量进行过滤和控制。通过iptables,你可以定义规则来允许或拒绝特定类型的网络流量。 iptables使用规则链(rule chains)来管理流量过滤,包括输入链(INPUT)、输出链(OUTPUT)和转发链(FORWARD)。每个链中都包含一系列规则,这些规则定义了如何处理进入或离开系统的数据包。 在iptables中,每个规则由三个主要部分组成:匹配条件(match conditions)、动作(actions)和目标(targets)。匹配条件指定要应用规则的数据包的特征,例如源IP地址、目标端口等。动作定义了当匹配条件满足时要执行的操作,例如允许通过或丢弃数据包。目标指定规则所属的链。 以下是iptables的一些常见命令和功能: 1. 添加规则:使用`iptables -A`命令添加一条新的规则,例如`iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT`表示允许来自192.168.1.0/24子网的数据包通过输入链。 2. 删除规则:使用`iptables -D`命令删除指定的规则,例如`iptables -D INPUT 2`表示删除输入链中的第2条规则。 3. 显示规则:使用`iptables -L`命令查看当前所有规则,例如`iptables -L INPUT`表示显示输入链的规则列表。 4. 默认策略:使用`iptables -P`命令设置默认策略,当没有匹配任何规则时将采取的动作。例如`iptables -P INPUT DROP`表示设置输入链的默认动作为丢弃(DROP)。 5. 网络地址转换(NAT):除了过滤功能外,iptables还可以用于进行网络地址转换。通过使用`-t nat`选项,可以创建NAT规则,实现端口转发、SNAT和DNAT等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值