LINUX中iptables工具

iptables是Linux操作系统上的一个用于配置和管理网络防火墙的工具。它通过定义规则集来控制网络流量,实现网络安全和访问控制。

iptables有四张表,分别是:

1. `filter`表:这是iptables默认使用的表,用于过滤和控制数据包的流动。它包含了`INPUT`、`OUTPUT`和`FORWARD`三个默认的链。

2. `nat`表:用于网络地址转换(Network Address Translation,NAT)。它包含了`PREROUTING`、`POSTROUTING`和`OUTPUT`三个默认的链。`PREROUTING`链用于处理数据包在路由之前的转换,`POSTROUTING`链用于处理数据包在路由之后的转换,`OUTPUT`链用于处理从本机发出的数据包的转换。

3. `mangle`表:用于修改数据包的特殊选项和标记。它包含了`PREROUTING`、`INPUT`、`FORWARD`、`OUTPUT`和`POSTROUTING`五个默认的链。`PREROUTING`链用于修改数据包在路由之前的选项和标记,`INPUT`链用于修改进入本机的数据包的选项和标记,`FORWARD`链用于修改通过本机转发的数据包的选项和标记,`OUTPUT`链用于修改从本机发出的数据包的选项和标记,`POSTROUTING`链用于修改数据包在路由之后的选项和标记。

4. `raw`表:用于配置连接跟踪系统和一些特殊的数据包处理。它包含了`PREROUTING`和`OUTPUT`两个默认的链。`PREROUTING`链用于在数据包进入路由之前进行处理,`OUTPUT`链用于在数据包从本机发出之前进行处理。

每个表都包含了默认的链,但也可以通过使用`-t`选项来指定不同的表和链。例如,可以使用`iptables -t nat -A PREROUTING`来在`nat`表的`PREROUTING`链中添加规则。

iptables的基本使用语法为:
```
iptables <选项> <链名> <规则>
```

常用的选项有:
- `-A`:添加规则到指定链的末尾
- `-D`:从指定链中删除规则
- `-I`:在指定链的开头插入规则
- `-F`:清空指定链中的所有规则
- `-L`:列出指定链中的所有规则
- `-P`:设置指定链的默认策略
常用的链名有:
- `INPUT`:用于处理进入本机的数据包
- `OUTPUT`:用于处理从本机发出的数据包
- `FORWARD`:用于处理通过本机转发的数据包
- `PREROUTING`:用于对数据包进行路由之前的处理
- `POSTROUTING`:用于对数据包进行路由之后的处理
常用的规则参数有:
- `-p`:指定协议,如TCP、UDP等
- `-s`:指定源IP地址或IP段
- `-d`:指定目标IP地址或IP段
- `--sport`:指定源端口号
- `--dport`:指定目标端口号
- `-j`:指定动作,如ACCEPT、DROP、REJECT等

通过组合使用这些选项、链名和规则参数,可以创建具有不同功能的防火墙规则,例如允许或拒绝特定端口的进出流量,限制特定IP地址的访问等。

注意,iptables规则的执行顺序很重要,它们按照规则列表中的顺序依次进行匹配和处理。因此,在配置iptables规则时需要注意规则的顺序,确保规则能够按照预期的方式生效。

在iptables中,-m参数用于加载不同的扩展模块(match extensions),以便在过滤规则中进行更复杂的匹配条件。-m参数后面跟着要加载的模块的名称。

扩展模块可以提供额外的匹配条件,使您能够根据数据包的各种属性进行更精确的过滤。以下是一些常见的扩展模块及其作用:

1. conntrack:用于跟踪连接状态,并根据连接状态进行过滤。
2. state:与conntrack模块一起使用,用于指定要匹配的连接状态(如ESTABLISHED、RELATED等)。
3. tcp:用于对TCP数据包进行匹配。
4. udp:用于对UDP数据包进行匹配。
5. icmp:用于对ICMP数据包进行匹配。
6. mac:用于对MAC地址进行匹配。
7. limit:用于限制数据包的传输速率。
8. multiport:用于匹配多个端口。

要加载扩展模块,请在iptables规则中使用-m参数,并在参数后面指定要加载的模块的名称。例如,要使用conntrack模块匹配连接状态,可以使用以下规则:

```
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
```

这个规则将允许已建立的和相关的连接通过INPUT链。

请注意,不同的扩展模块有不同的选项和使用方法。要了解特定模块的详细信息,请参考相关文档或使用man命令查看手册页。

要允许IP为10.1.1.1的主机入站SSH连接(端口22),可以按照以下方式配置iptables:

1. 清除所有规则:

```
iptables -F
```

2. 设置默认策略为拒绝所有入站连接:

```
iptables -P INPUT DROP
```

3. 允许已建立的和相关的入站连接:

```
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
```

4. 允许IP为10.1.1.1的主机的SSH连接:

```
iptables -A INPUT -p tcp -s 10.1.1.1 --dport 22 -j ACCEPT
```

5. 允许回环连接:

```
iptables -A INPUT -i lo -j ACCEPT
```

6. 最后,保存和应用配置:

```
iptables-save > /etc/iptables/rules.v4
```

请注意,这只是一个简单的例子,实际的iptables配置可能需要更多规则和定制化。此外,确保在更改iptables配置之前备份您的系统,并确保您了解规则的含义和影响。如果您不熟悉iptables配置,请务必谨慎操作或咨询专业人士。

请一定要自己手动多敲命令!!!

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值