iptables操作命令:
#iptables --help
Usage: iptables -[AD] chain rule-specification [options]
iptables -[RI] chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
iptables -[LFZ] [chain] [options]
iptables -[NX] chain
iptables -E old-chain-name new-chain-name
iptables -P chain target [options]
iptables -h (print this help information)
--append -A chain 追加规则
--delete -D chain 删除规则
--delete -D chain rulenum 删除指定序号的规则
--insert -I chain [rulenum] 插入一条规则(default 1=first)
--replace -R chain rulenum 替换一条规则
--list -L [chain] 显示出链或者链中的规则
--flush -F [chain] 在一个链或者所有链中清空规则
--zero -Z [chain] 清空计数
--new -N chain 创建用户自定义链
--delete-chain
-X [chain] 删除用户自定义链
--policy -P chain target 指定默认规则
Change policy on chain to target
--rename-chain
-E old-chain new-chain
重命名用户自定义链
Options:
--proto -p [!] proto 指定协议,!代表取反
--source -s [!] address[/mask] --指定源地址
source specification
--destination -d [!] address[/mask] --指定目标地址
destination specification
--in-interface -i [!] input name[+] --指定数据从哪个网口进来
network interface name ([+] for wildcard)
--jump -j target --匹配动作
target for rule (may load target extension)
--goto -g chain
jump to chain with no return
--match -m match --扩展匹配
extended match (may load extension)
--numeric -n --端口和IP以数值方式显示,不作反解
--out-interface -o [!] output name[+] --指定数据从哪个网口出去
network interface name ([+] for wildcard)
--table -t table --指定使用哪个表 (default: `filter')
--verbose -v --显示详细信息
--line-numbers --显示规则的序号
--exact -x expand numbers (display exact values)
传输层:协议(tcp/udp)
端口(sport/dport)
网络层:
IP地址(sip/dip/icmp)
数据链路层:
mac地址(--mac-source)
物理层:
从哪个网卡进来 -i
从哪个网卡出去 -o
---------------
查看:
# iptables -t nat -L -n -v --line
# iptables -t filter -L -n
# iptables -t filter -L INPUT
# iptables -t filter -L INPUT -v -n
# iptables -t filter -L INPUT -n -v --line
# watch -n 0.1 iptables -L INPUT --line -n -v
追加规则:
# iptables -t filter -A INPUT -i lo -j ACCEPT
插入规则:
# iptables -t filter -I INPUT -i eth0 -j ACCEPT --插入成为第一条
# iptables -t filter -I INPUT 3 -i eth0 -j ACCEPT --插入成为第三条规则
替换规则:
# iptables -t filter -R INPUT 3 -i eth1 -j ACCEPT --替换成为指定规则
删除规则:
# iptables -t filter -D INPUT 2 --删除指定链指定编号的规则
+++++++++++
#iptables -t filter -A INPUT -i lo -j ACCEPT
#iptables -t filter -A OUTPUT -o lo -j ACCEPT
#iptables -t filter -A INPUT -i eth0 -s 192.168.0.0/24 -d 192.168.0.250 -j ACCEPT
# iptables -t filter -A INPUT -i eth1 -j ACCEPT
# iptables -L INPUT -n --line -v
# iptables -t filer -I INPUT 2 -i eth2 -j ACCEPT 插入默认第二条
# iptables -t filter -I INPUT -i eth3 -j ACCEPT 插入默认第一条
# iptables -t filter -R INPUT 1 -i eth4 -j ACCEPT 替换默认第一条
#iptables -t filter -D INPUT 1 删除默认第一条
# iptables -t filter -F INPUT 清空filter所有INPUT链
#iptables -t filter -F
#iptables -L INPUT -n --line -v
+++++++++++++++++++
清空规则:
1、清空一张表
# iptables -t filter -F
2、清空一条链中的规则
# iptables -t filter -F INPUT
新建/删除用户自定义的链:
# iptables -t filter -N uplooking新建
# iptables -t filter -X uplooking 删除
# iptables -t filter -X 清空filter表中所有用户自定义链
+++++++++
iptables -t filter -N TCP
iptables -t filter -N UDP
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A INPUT -p tcp -j TCP
++++++++
更改默认规则:
# iptables -t filter -P INPUT ACCEPT
# iptables -t filter -P INPUT DROP
实例应用一(本机的访问控制):
拒绝所有:允许本机能访问所有服务,允许访问DNS,postfix,dovecot,vsftpd,telnet,web,
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
1.允许本机访问本机的所有服务:
[root@mail ~]# iptables -t filter -A INPUT -i lo -j ACCEPT
[root@mail ~]# iptables -t filter -A OUTPUT -o lo -j ACCEPT
+++++++++
iptables -t filter -A INPUT -p tcp -dport 5902 -i br0 -s 192.168.0.45 -j ACCEPT
iptables -t filter -A OUTPUT -o br0 -p tcp --sport 5902 -d 192.168.0.45 -j ACCEPT
iptables -L -n -v --line
iptables -t filter -A INPUT -i br0 -p tcp --dport 5900:5902 -s 192.168.0.0/24 -j ACCEPT
iptables -t filter -A OUTPUT -o br0 -p tcp --sport 5900:5902 -d 192.168.0.0/24 -j ACCEPT
++++++++++++++
2.允许指定客户机访问我的80端口
[root@mail ~]# iptables -t filter -A INPUT -i eth0 -p tcp --dport 80 -s 10.1.1.111 -j ACCEPT
[root@mail ~]# iptables -t filter -A OUTPUT -o eth0 -p tcp --sport 80 -d 10.1.1.111 -j ACCEPT
[root@mail ~]# iptables -t filter -A INPUT -i eth0 -p tcp --dport 80 -s 10.1.1.0/24 -j ACCEPT
[root@mail ~]# iptables -t filter -A OUTPUT -o eth0 -p tcp --sport 80 -d 10.1.1.0/24 -j ACCEPT
[root@mail ~]# iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
[root@mail ~]# iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT
# iptables -t filter -R INPUT 2 -p tcp -m multiport --dport 20:21,80,443,5900 -j ACCEPT
# iptables -t filter -R OUTPUT 2 -p tcp -m multiport --sport 20:21,80,443,5900 -j ACCEPT
[root@mail ~]# service iptables save --防火规则马上写马上生效,但重启机器或者重iptables服务,规则丢失.
将当前规则保存到 /etc/sysconfig/iptables: [确定]
从非默认位置恢复规则:
# iptables-save > /tmp/iptables.save
# iptables-restore < /tmp/iptables.save
icmp:
[root@mail ~]# iptables -t filter -i eth0 -A INPUT -p icmp -j ACCEPT
[root@mail ~]# iptables -t filter -o eth0 -A OUTPUT -p icmp -j ACCEPT