linux iptables 命令

1. iptables 定义

iptables 防火墙可以用于创建过滤(filter)与NAT规则,有效地管理Linux防火墙

1.1 iptables 的结构:表->链->规则

iptables的结构:iptables -> Tables -> Chains -> Rules.
简单地讲, tables 由chains组成,而chains又由rules组成。

iptables 的四种内建表
iptables 具有Filter, NAT, Mangle, Raw四种内建表:

raw:高级功能,如:网址过滤。
mangle:数据包修改(QOS),用于实现服务质量。
net:地址转换,用于网关路由器。
filter:包过滤,用于防火墙规则。

1.1.1 Filter 表

Filter 表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表,它具有以下三种内建链:

iptables -t filter –list 

INPUT 链 – 处理来自外部的数据。
OUTPUT 链 – 处理向外发送的数据。
FORWARD 链 – 将数据转发到本机的其他网卡设备上。

1.1.2 NAT表 Mangle表 Raw表

查看mangle表:
# iptables -t mangle –list

查看NAT表:
# iptables -t nat –list

查看RAW表:
# iptables -t raw –list

参考:
https://blog.csdn.net/u011537073/article/details/82685586

1.2 iptables 规则(Rules)

规则链名包括:

INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
PORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)。

牢记以下三点式理解iptables规则的关键:

Rules包括一个条件和一个目标(target)
如果满足条件,就执行目标(target)中的规则或者特定值。
如果不满足条件,就判断下一条Rules。

1.2.1 动作

ACCEPT :允许防火墙接收数据包
DROP :防火墙丢弃包
REDIRECT :重定向、映射、透明代理。
SNAT :源地址转换。
DNAT :目标地址转换。
MASQUERADE :IP伪装(NAT),用于ADSL。
LOG :日志记录。

2. iptables 使用语法

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] 
		<-i/o 网卡名> 
		-p 协议名 
		<-s 源IP/源子网> 
		--sport 源端口 <-d 目标IP/目标子网> 
		--dport 目标端口 
		-j 动作


iptables -[ACD] chain rule-specification [options]
	-A 在规则链的末尾加入新规则/检查/删除 规则
iptables -I chain [rulenum] rule-specification [options]
	在规则链的头部加入新规则
iptables -R chain rulenum rule-specification [options]
	替换
iptables -D chain rulenum [options]
	删除指定规则
iptables -[LS] [chain [rulenum]] [options]
	显示打印
iptables -[FZ] [chain] [options]
	Zero counters in chain or all chains
	清空所有iptables规则
	慎用!!!
	重启可恢复原样
iptables -[NX] chain
	删除用户定义链
iptables -E old-chain-name new-chain-name
	更改链名称
iptables -P chain target [options]
	更改策略
iptables -h (print this help information)
	帮助信息

2.1 iptables 命令

来自 iptables -h

-I:insert 向规则链中插入条目;
	insert in chain as rulenum (default 1=first)
-D:delete 从规则链中删除条目
	delete chain rulenum 
-L:list 显示规则链中已有的条目
	list the rules in a chain or all chains
-A:增加 
-R:替换

2.1.1 iptables 选项

-j: jump 执行目标(jump to target)
	可能的值是 ACCEPT, DROP, QUEUE, RETURN,MASQUERADE
-n: numeric 以数字输出地址和端口
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
	例如:-i eth0指定了要处理经由eth0进入的数据包
	如果不指定-i参数,那么将处理进入所有接口的数据包
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
--dport num 匹配目标端口号
--sport num 匹配来源端口号

2.2 链的默认策略

链的默认政策设置为”ACCEPT”(接受),若要将INPUT,FORWARD,OUTPUT链设置成”DROP”(拒绝),命令如下:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

3. 例子说明

3.1 插入一条规则,丢弃此ip 的所有协议请求: -I INPUT

能ping自己
[root@localhost sock]# ping 192.88.8.114
PING 192.88.8.114 (192.88.8.114) 56(84) bytes of data.
64 bytes from 192.88.8.114: icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from 192.88.8.114: icmp_seq=2 ttl=64 time=0.040 ms
^C
--- 192.88.8.114 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.040/0.047/0.054/0.007 ms
[root@localhost sock]#

丢弃本地 ip 
[root@localhost sock]# iptables -I INPUT -s 192.88.8.114 -j DROP 
[root@localhost sock]# 

将所有iptables以序号标记显示
[root@localhost sock]# iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       all  --  192.88.8.114         0.0.0.0/0           
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
4    INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
5    INPUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
6    INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
7    DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
8    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

不能ping自己
[root@localhost sock]# ping 192.88.8.114
PING 192.88.8.114 (192.88.8.114) 56(84) bytes of data.
^C
--- 192.88.8.114 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms

[root@localhost sock]#

扩展:封整个网段

iptables -I INPUT -s 123.0.0.0/8 -j DROP      #封整个段即从123.0.0.1到123.255.255.254的

3.2 将所有iptables以序号标记显示: -L -n --line-numbers

如果不指定 -t选项,就只会显示默认的 filter表。因此,以下两种命令形式是一个意思:

# iptables -t filter –list 
(or) 
# iptables –list


[root@localhost sock]# iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       all  --  192.88.8.114         0.0.0.0/0           
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
4    INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
5    INPUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
6    INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
7    DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
8    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibit

3.2 删除指定规则: -D INPUT

[root@localhost sock]# iptables -D INPUT 1
[root@localhost sock]#
[root@localhost sock]# iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
3    INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
4    INPUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
5    INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
6    DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
7    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

[root@localhost sock]# ping 192.88.8.114
PING 192.88.8.114 (192.88.8.114) 56(84) bytes of data.
64 bytes from 192.88.8.114: icmp_seq=1 ttl=64 time=0.059 ms
^C
--- 192.88.8.114 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.059/0.059/0.059/0.000 ms
[root@localhost sock]#

3.3 清空所有iptables规则: iptables -F (iptables –flush )

清空所有iptables规则 慎用!!!
重启可恢复原样
防火墙关闭清空,端口任意连接
本机执行 iptables -F 之后

[root@localhost sock]# iptables -L -n --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain FORWARD (policy DROP)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination    

3.4 允许外部主机ping内部主机

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

3.5 允许回环访问

例:在服务器上允许127.0.0.1回环访问。

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

4. 永久生效–保存iptables更改

当你删除、添加规则后,这些更改并不能永久生效,这些规则很有可能在系统重启后恢复原样。

CentOS下

# 保存iptables规则 
service iptables save

# 重启iptables服务
service iptables stop
service iptables start

查看当前规则:
cat  /etc/sysconfig/iptables

参考:

https://blog.csdn.net/qq_26959879/article/details/89642344
https://www.linuxprobe.com/25-iptables-common-examples.html
https://blog.csdn.net/u011537073/article/details/82685586

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux Iptables命令列表: 用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改 iptables - [RI] chain rule num rule-specification[option] 用iptables - RI 通过规则的顺序指定 iptables -D chain rule num[option] 删除指定规则 iptables -[LFZ] [chain][option] 用iptables -LFZ 链名 [选项] iptables -[NX] chain 用 -NX 指定链 iptables -P chain target[options] 指定链的默认目标 iptables -E old-chain-name new-chain-name -E 旧的链名 新的链名 用新的链名取代旧的链名 说明 Iptalbes 是用来设置、维护和检查Linux内核的IP包过滤规则的。 可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作'target'(目标),也可以跳向同一个表内的用户定义的链。 TARGETS 防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过], DROP[删除], QUEUE[排队], 或者 RETURN[返回]。 ACCEPT 表示让这个包通过。DROP表示将这个包丢弃。QUEUE表示把这个包传递到用户空间。RETURN表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的链(的末端),或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值