IPTABLES常规操作规则与放行

本文介绍iptables的基本操作命令,包括查看、清空规则及如何设置默认规则等,并通过多个实例展示如何实现端口放行、特定IP访问控制、地址转换等功能。

iptables

iptables [-t 表 ] -L -n

查看一张表上的规则

iptables [-t 表 ] -F     清空所有规则

iptables  -P   链  动作      设置某个链的默认规则

添加iptables规则

iptables [-t 表]  -A  链    匹配的条件             -j      动作
                  -I        -p       协议                 ACCEPT    放行
                  -D        -s       源IP地址             DROP      丢弃
                  -L        -d       目的IP地址           REJECT    拒绝
                            --sport  源端口               DNAT  --to-destication    目的地址转换
                            --dport  目的端口             SNAT  --source            源地址转换
iptables -A INPUT -p tcp --dport 80 -j DROP

“堵” 策略,默认规则是“放行”,添加“堵”的规则

“通” 策略 默认规则是“拦截”,添加“放行”规则

示例
在INPUT链拦截80端口

iptables -A INPUT -p tcp --dport 80 -j DROP

在INPUT链放行3306端口

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

通过192.168.189.131访问81端口的放行

iptables -A INPUT -p tcp --dport 81 -d 192.168.189.131 -j ACCEPT

禁ping

iptables -A INPUT -p icmp -j DROP
iptables -A INPUT -p icmp -j REJECT

在OUTPUT链添加放行源端口为22的请求

iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

在OUTPUT链添加放行源IP为192.168.189.161的请求

iptables -I OUTPUT -s 192.168.189.161 -j ACCEPT

在OUTPUT链添加放行源端口为81的请求

iptables -A OUTPUT -p tcp --sport 81 -j ACCEPT

目的地址转换
将访问192.168.189.161 端口为2222的请求转发至10.30.0.128的22端口

iptables -t nat -A PREROUTING -p tcp  -d 192.168.189.161 --dport 2222 -j DNAT --to-destination 10.30.0.128:22

源地址转换,所有来自于10.30.0.0/24网段的请求源地址转换为192.168.189.161

iptables -t nat -A POSTROUTING -p tcp  -s 10.30.0.0/24  -j SNAT --to-source 192.168.189.161
### 编写iptables防火墙规则教程 #### 了解基本概念 iptables 是 Linux 系统中用于配置 IPv4 数据包过滤和 NAT 的工具。通过定义不同表内的链来控制网络流量的行为。常见的表有 `filter` 和 `nat` 表,其中 `filter` 表主要用于处理输入、转发以及输出的数据流;而 `nat` 表则负责地址转换。 #### 查看现有规则 为了更好地理解当前环境下的设置,在修改之前先查看现有的规则是非常重要的操作之一。可以通过命令查询特定表中的所有链: ```bash iptables -L ``` 这会显示 filter 表中的所有链及其对应的规则列表[^1]。如果想要查看其他类型的表,则需要加上 `-t` 参数指明具体名称,比如对于 NAT 表来说就是: ```bash iptables -t nat -L ``` #### 插入新规则 当准备向某个链条里加入新的规则时,可以使用 `-I` 命令参数指定要插入的位置及匹配条件。例如,阻止来自 IP 地址为 `202.54.1.2` 的主机访问本机: ```bash iptables -I INPUT 2 -s 202.54.1.2 -j DROP ``` 这里表示将这条拒绝规则插入到 INPUT 链的第二位位置上,并且只针对源地址等于给定值的情况生效[^2]。 #### 清除已有规则 有时可能希望清除掉某些表内所有的规则以便重新开始构建安全策略。这时可以用到 `-F` 参数实现这一目的: ```bash iptables -F ``` 上述指令将会清空默认的 filter 表下各条目。而对于像 mangle 或者 raw 这样的特殊用途表格而言,则需显式指出其名字作为目标对象: ```bash iptables -t nat -F iptables -t mangle -F ``` #### 设定默认行为 除了单独添加每一条具体的准入/禁入项之外,还可以直接设定整个链条遇到未被任何先前声明所覆盖的情形时应采取的动作——即所谓的“默认政策”。例如让 OUTPUT 链上的所有尝试都失败除非另有说明允许它们继续前进: ```bash iptables -P OUTPUT DROP ``` 紧接着再补充例外情况以确保必要的通信不会受到影响: ```bash iptables -p tcp --sport 22 -j ACCEPT ``` 这段脚本的作用在于优先接受 SSH 协议发出的一切请求,从而保障远程登录功能正常运作的同时又能有效抵御外部威胁[^4]。 #### 处理连接状态跟踪 为了让服务器能够区分合法会话非法入侵企图之间的差异,通常还会引入基于连接追踪模块 (`conntrack`) 来辅助判断哪些数据报应当予以放行或是拦截下来。如下所示是一段用来批准已建立联系再次发送后续消息的例子: ```bash iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT ``` 此外还有专门针对于丢弃那些明显不符合常规模式(如伪造源端口等)的数据帧的做法: ```bash iptables -A INPUT -m state --state INVALID -j DROP ``` 以上便是创建 iptables 规则的一些基础指导原则[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值