千家信息网

iptables 的基本操作

发表于:2024-12-02 作者:千家信息网编辑
千家信息网最后更新 2024年12月02日,[root@www ~]# iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]选项与参数:-P :定义政策( Policy )。注意,这
千家信息网最后更新 2024年12月02日iptables 的基本操作

[root@www ~]# iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]选项与参数:
-P :定义政策( Policy )。注意,这个 P 为大写啊!
ACCEPT :该封包可接受
DROP :该封包直接丢弃,不会让 client 端知道为何被丢弃


[root@www ~]# iptables [-AI 链名] [-io 网络接口] [-p 协议] \> [-s 来源IP/网域] [-d 目标IP/网域] -j [ACCEPT|DROP|REJECT|LOG]选项与参数:
-AI 链名:针对某的链进行规则的 "插入" 或 "累加"
-A :新增加一条规则,该规则增加在原本规则的最后面。例如原本已经有四条规则,
使用 -A 就可以加上第五条规则!
-I :插入一条规则。如果没有指定此规则的顺序,默认是插入变成第一条规则。
例如原本有四条规则,使用 -I 则该规则变成第一条,而原本四条变成 2~5 号
链 :有 INPUT, OUTPUT, FORWARD 等,此链名称又与 -io 有关,请看底下。

-io 网络接口:设定封包进出的接口规范
-i :封包所进入的那个网络接口,例如 eth0, lo 等接口。需与 INPUT 链配合;
-o :封包所传出的那个网络接口,需与 OUTPUT 链配合;

-p 协定:设定此规则适用于哪种封包格式
主要的封包格式有: tcp, udp, icmp 及 all 。

-s 来源 IP/网域:设定此规则之封包的来源项目,可指定单纯的 IP 或包括网域,例如:
IP :192.168.0.100
网域:192.168.0.0/24, 192.168.0.0/255.255.255.0 均可。
若规范为『不许』时,则加上 ! 即可,例如:
-s ! 192.168.100.0/24 表示不许 192.168.100.0/24 之封包来源;

-d 目标 IP/网域:同 -s ,只不过这里指的是目标的 IP 或网域。

-j :后面接动作,主要的动作有接受(ACCEPT)、丢弃(DROP)、拒绝(REJECT)及记录(LOG)


# iptables [-AI 链] [-io 网络接口] [-p tcp,udp] 
\> [-s 来源IP/网域] [--sport 埠口范围]
\> [-d 目标IP/网域] [--dport 埠口范围] -j [ACCEPT|DROP|REJECT]


[root@www ~]# iptables -A INPUT [-m state] [--state 状态]选项与参数:
-m :一些 iptables 的外挂模块,主要常见的有:
state :状态模块
mac :网络卡硬件地址 (hardware address)
--state :一些封包的状态,主要有:
INVALID :无效的封包,例如数据破损的封包状态
ESTABLISHED:已经联机成功的联机状态;
NEW :想要新建立联机的封包状态;
RELATED :这个最常用!表示这个封包是与我们主机发送出去的封包有关

iptables -F
#杀掉所有使用者"自定义"的chain
iptables -X
#将所有chain的计数与流量都归零
iptables -Z

#给filter表格的三条chain设置默认规则
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#基本规则
iptables -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m mac --mac-source 94:de:80:89:41:93 -j DROP
#只要是来自lo接口或者通过lo接口出去都放行
iptables -A INPUT -icmp -j ACCEPT

#自定义规则
#对于filter 的INPUT chain,来自192.168.200.158的ip,目标主机接口是
eth0,目标port是22的丢弃,且进行的是tcp连接则丢弃,ssh
iptables -A INPUT -p tcp -s 192.168.200.158 -i eth0 --dport 22 -j DROP
iptables -A INPUT -p udp -s 192.168.200.158 -i eth0 --dport 22 -j DROP

#对于filter 的INPUT chain,来来自端口号1024:65000,在通过192.168.200.158的ip,到通过主机接口
#eth0 到端口号21 进行tcp连接,则丢弃.注意:这里-p 一定要在 --sport 的前面.
iptables -A INPUT -p tcp --sport 1024:65000 -s 192.168.200.158 -i eth0 --dport 21 -j DROP
#注意syn:主动连接标志
iptables -A INPUT -p tcp --sport 1024:65000 -i eth0 --dport 22 --syn -j DROP

iptables -A INPUT -s 192.168.200.156 -i eth0 -j DROP
#对于INPUT chain,来自192.168.200.0这个网段的ip 经过主机的eth0网络接口都放行
iptables -A INPUT -s 192.168.200.0/24 -i eth0 -j ACCEPT

#icmp
icmp_type="0 3 4 8 11 12 14 16 18"
for typeicmp in $icmp_type
do
iptables -A INPUT -p icmp --icmp-type $typeicmp -s 192.168.200.156 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type $typeicmp -s 192.168.200.158 -j ACCEPT
done
iptables -A INPUT -s 192.168.200.157 -j ACCEPT #使得192.168.200.157能够ping 192.168.200.157
iptables -A INPUT -s 127.0.0.1 -j ACCEPT #使得192.168.200.157能够ping通127.0.0.1(localhost)
service iptables save


0