Linux iptables参数详解

本文深入解析iptables配置文件中的关键部分,包括过滤表、转发表和输出表的基本概念,详细解释了每条规则的作用,并提供了如何允许特定端口访问、限制特定IP访问的实例。此外,还介绍了iptables中使用的各种参数和模块,如状态匹配、协议类型等,旨在帮助读者全面掌握iptables的配置技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、下面是我的服务器/etc/sysconfig/iptables正常的配置,对每一行进行讲解
*filter

:INPUT ACCEPT [0:0]  #该规则表示INPUT表默认策略是ACCEPT,Input: 就是接入本机地址的数据,说白了就是设置别人可以访问我的那些端口的链。举一个例子:本机开启了ftp服务,有一个客户端连接下载ftp资料,那么这个连接在Input链可以进行控制。
:FORWARD ACCEPT [0:0]  #该规则表示FORWARD表默认策略是ACCEPT,Forward:是转发链。如果你的机器处于网关地址,那么你可以代理内部网络的机器上Internet的参数就在这里设置。
:OUTPUT ACCEPT [0:0]  #该规则表示OUTPUT表默认策略是ACCEPT,Output:就是从本机出去的数据,就是允许本机出去的端口。例如我可以在Output链设置我可以访问那些地址和那些端口。

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  #对于已经建立连接的数据,是允许访问的
-A INPUT -p icmp -j ACCEPT  #允许icmp协议的访问,主要就是ping
-A INPUT -i lo -j ACCEPT  #接受本地的所有请求
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT  #允许22端口被外部访问
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

# 上面两条的意思是在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机。

COMMIT


2、iptables -A 规则链 -i 网络接口 -j 对数据的操作

    -A:指定需要添加规则的规则链

    -i:指定数据包流入的网络接口
    -p:数据包的协议

    -j:对数据包的处理。ACCEPT/DROP

   -s:指定作为源地址匹配,这里不能指定主机名称,必须是IP
            IP | IP/MASK | 0.0.0.0/0.0.0.0
           而且地址可以取反,加一个“!”表示除了哪个IP之外

例如:在INPUT链中添加规则,允许eth0接口中来自192.168.1.0/24的所有数据包

 #iptables -A INPUT -i eht0 -s 192.168.1.0/24 -j ACCEPT

3、-m:附加模块

按包状态匹配(state)
按来源MAC 匹配(mac)
按包速率匹配(limit)

多端口匹配(multiport)
state状态:
-m state --state 状态
状态:NEW、RELATED、ESTABLISHED、INVALID
NEW:有别于tcp 的syn
ESTABLISHED:连接态
RELATED:衍生态,与conntrack 关联(FTP)
INVALID:不能被识别属于哪个连接或没有任何状态

指定要匹配包的的状态,当前有4种状态可用:INVALID,ESTABLISHED,NEW和RELATED。 INVALID意味着这个包没有已知的流或连接与之关联,也可能是它包含的数据或包头有问题。ESTABLISHED意思是包是完全有效的,而且属于一个已建立的连接,这个连接的两端都已经有数据发送。NEW表示包将要或已经开始建立一个新的连接,或者是这个包和一个还没有在两端都有数据发送的连接有关。RELATED说明包正在建立一个新的连接,这个连接是和一个已建立的连接相关的。比如,FTP data transfer,ICMP error 和一个TCP或UDP连接相关。注意NEW状态并不在试图建立新连接的TCP包里寻找SYN标记,因此它不应该不加修改地用在只有一个防火墙或在不同的防火墙之间没有启用负载平衡的地方。


4、允许21137端口被访问:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21137 -j ACCEPT
问:-m tcp代表什么?
答:你在使用 -p tcp 的时候,需要告诉内核需要载入 tcp 模块
就好比你使用 --state 参数需要载入 state 模块一个道理
只不过 netfilter 和 iptables 已经把 tcp、udp、icmp 这些模块集成进去了,所以不用单独指定,但为了严谨 iptables-save 的时候还是会显示出来
-p tcp是指按照tcp协议操作
-m tcp是指装入tcp的协议

5、通过iptables限制9889端口的访问(只允许192.168.1.201、192.168.1.202、192.168.1.203),其他ip都禁止访问
iptables -I INPUT -p tcp --dport 9889 -j DROP #对9889的所有端口的访问进行拒绝
iptables -I INPUT -s 192.168.1.201 -p tcp --dport 9889 -j ACCEPT 
iptables -I INPUT -s 192.168.1.202 -p tcp --dport 9889 -j ACCEPT
iptables -I INPUT -s 192.168.1.203 -p tcp --dport 9889 -j ACCEPT


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值