iptables防火墙
防火墙iptables
iptables命令 是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。
一、iptables基本认识
1、简介
(1)Netfilter组件
集成在内核中,内核中选取五个位置放了五个hook(勾子) function(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING),而这五个hook function向用户开放,用户可以通过一个命令工具(iptables)向其写入规则
由信息过滤表(table)组成,包含控制IP包处理的规则集(rules),规则被分组放在链(chain)上
(2)三种报文流向:
流入本机:PREROUTING --> INPUT-->用户空间进程
流出本机:用户空间进程 -->OUTPUT--> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING
2、iptables组成
iptables由五个表和五个链以及一些规则组成
- 五个表table:filter、nat、mangle、raw、security
filter表:过滤规则表,根据预定义的规则过滤符合条件的数据包
nat表:network address translation 地址转换规则表
mangle:修改数据标记位规则表
raw:关闭NAT表上启用的连接跟踪机制,加快封包穿越防火墙速度
security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现
优先级由高到低的顺序为:security -->raw-->mangle-->nat-->filter - 五个内置链chain
INPUT(input)
OUTPUT (output)
FORWARD (forward)
PREROUTING (prerouting)
POSTROUTING (postrouting)
3、iptables规则
规则:
(1)匹配规则
基本匹配:IP,端口,TCP的Flags(SYN,ACK等)
扩展匹配:通过复杂高级功能匹配
(2)处理动作
称为target,跳转目标
内建处理动作:ACCEPT,DROP,REJECT(拒绝),SNAT,DNATMASQUERADE,MARK,LOG...
自定义处理动作:自定义chain,利用分类管理复杂情形
规则要添加在链上,才生效;添加在自定义上不会自动生效
链chain:
内置链:每个内置链对应于一个钩子函数
自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有Hook钩子调用自定义链时,才生效
语法:
删除虚拟网卡
yum info libvirt-daemon (重启后生效)
iptables(选项)(参数)
选项:
-t, --table table 对指定的表 table 进行操作, table 必须是 raw, nat,filter,mangle 中的一个。如果不指定此选项,默认的是 filter 表。
# 通用匹配:源地址目标地址的匹配
-p:指定要匹配的数据包协议类型;
-s, --source [!] address[/mask] :把指定的一个/一组地址作为源地址,按此规则进行过滤。当后面没有 mask 时,address 是一个地址,比如:192.168.1.1;当 mask 指定时,可以表示一组范围内的地址,比如:192.168.1.0/255.255.255.0。
-d, --destination [!] address[/mask] :地址格式同上,但这里是指定地址为目的地址,按此进行过滤。
-i, --in-interface [!] <网络接口name> :指定数据包的来自来自网络接口,比如最常见的 eth0 。注意:它只对 INPUT,FORWARD,PREROUTING 这三个链起作用。如果没有指定此选项, 说明可以来自任何一个网络接口。同前面类似,"!" 表示取反。
-o, --out-interface [!] <网络接口name> :指定数据包出去的网络接口。只对 OUTPUT,FORWARD,POSTROUTING 三个链起作用。
# 查看管理命令
-L, --list [chain] 列出链 chain 上面的所有规则,如果没有指定链,列出表上所有链的所有规则。
# 规则管理命令
-A, --append chain rule-specification 在指定链 chain 的末尾插入指定的规则,也就是说,这条规则会被放到最后,最后才会被执行。规则是由后面的匹配来指定。
-I, --insert chain [rulenum] rule-specification 在链 chain 中的指定位置插入一条或多条规则。如果指定的规则号是1,则在链的头部插入。这也是默认的情况,如果没有指定规则号。
-D, --delete chain rule-specification -D, --delete chain rulenum 在指定的链 chain 中删除一个或多个指定规则。
-R num:Replays替换/修改第几条规则
# 链管理命令(这都是立即生效的)
-P, --policy chain target :为指定的链 chain 设置策略 target。注意,只有内置的链才允许有策略,用户自定义的是不允许的。
-F, --flush [chain] 清空指定链 chain 上面的所有规则。如果没有指定链,清空该表上所有链的所有规则。
-N, --new-chain chain 用指定的名字创建一个新的链。
-X, --delete-chain [chain] :删除指定的链,这个链必须没有被其它任何规则引用,而且这条上必须没有任何规则。如果没有指定链名,则会删除该表中所有非内置的链。
-E, --rename-chain old-chain new-chain :用指定的新名字去重命名指定的链。这并不会对链内部照成任何影响。
-Z, --zero [chain] :把指定链,或者表中的所有链上的所有计数器清零。
-j, --jump target <指定目标> :即满足某条件时该执行什么样的动作。target 可以是内置的目标,比如 ACCEPT,也可以是用户自定义的链。
-h:显示帮助信息;
基本参数
参数 作用
-P 设置默认策略:iptables -P INPUT (DROP
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
--dport num 匹配目标端口号
--sport num 匹配来源端口号
环境准备:
卸载虚拟网卡
yum remove libvirt-daemon (重启)
实例:
空当前的所有规则和计数
iptables -F # 清空所有的防火墙规则
iptables -X # 删除用户自定义的空链
iptables -Z # 清空计数
配置允许\拒绝ssh端口连接
[root@master ~]# iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
[root@master ~]# iptables -A INPUT -s 192.168.37.11 -p tcp --dport 22 -j REJECT
允许本地回环地址可以正常使用
iptables -A INPUT -i lo -j ACCEPT
iptables -R INPUT 5 -i lo -j ACCEPT # 替换序列号5规则
设置默认的规则
iptables -P INPUT DROP # 配置默认的不让进
iptables -P FORWARD DROP # 默认的不允许转发
iptables -P OUTPUT ACCEPT # 默认的可以出去
配置白名单
iptables -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT # 允许机房内网机器可以访问
iptables -A INPUT -s 192.168.140.0/24 -p all -j ACCEPT # 允许机房内网机器可以访问
iptables -A INPUT -s 183.121.3.7 -p tcp --dport 3380 -j ACCEPT # 允许183.121.3.7访问本机的3380端口
开启相应的服务端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 开启80端口,因为web对外都是这个端口
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # 允许被ping
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 已经建立的连接得让它进来
禁止某主机ping服务器,包丢弃
iptables -t filter -A INPUT -s 192.168.37.11 -j DROP #指定表filter丢弃访问的包,不允许访问
测试网络
tcpdump -i eth0 -nn src host 192.168.37.6 #网卡为测试机网卡
列出序列号查看
[root@master ~]# iptables -vxnL --line-numbers
Chain INPUT (policy ACCEPT 72 packets, 4892 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REJECT tcp -- * * 192.168.37.11 0.0.0.0/0 reject-with icmp-port-unreachable
2 37 14076 REJECT tcp -- * * 192.168.37.20 0.0.0.0/0 tcp dpt:22 reject-with icmp-port-unreachable
3 1 104 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
4 178 14952 DROP all -- * * 192.168.37.11 0.0.0.0/0
禁止某个网段
禁止某个网段访问(及其危险,需要注意自己主机网段,别把自己也给禁止了)
iptables -t filter -A INPUT -s 192.168.37.0/24 -j DROP
删除规则
iptables -D INPUT 1 #1为num序列号
插入条允许192.168.37.1访问规则,优先级高例上上条可用
iptables -I INPUT -s 192.168.37.1 -j ACCEPT
设置序列号,-R替换规则
7、设置序列号,排序
iptables -I INPUT 2 -s 172.16.0.0/16 -j ACCEPT
8、替换规则链规则
iptables -R INPUT 2 -s 172.16.0.0/24 -j ACCEPT
允许插入序列3中两个ip访问
iptables -I INPUT 3 -s 192.168.37.6,192.168.37.17 -j ACCEPT
全拒绝访问,极其危险,连自己都访问不了,不过优先级可以比他高序列号可以
iptables -A INPUT -j REJECT
设置主机自己访问自己,高要高于序列号5即可
iptables -I INPUT 5 -s 192.168.37.7,127.0.0.1 -j ACCEPT
设置回环网卡也可以访问
iptables -R INPUT 5 -i lo -j ACCEPT
iptables
以上全是INPUT例子,也需要考虑OUTPUT
14、允许某个网段出,这个极其不建议这样做
iptables -I OUTPUT 1 -d 192.168.37.0/24 -j ACCEPT
15、清空OUTPUT链规则
iptables -F OUTPUT
应用iptables设置:
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# echo www.pansn.com > /var/www/html/index.html
[root@localhost ~]# echo www.pansn.com > /var/www/html/index.html
允许192.168.37.6上的httpd访问
iptables -I INPUT 3 -s 192.168.37.6 -p tcp --dport 80 -j ACCEPT
允许192.168.37.6上的mysql访问
iptables -I INPUT 3 -s 192.168.37.6 -p tcp --dport 3306 -j ACCEPT
允许192.168.37.17访问
iptables -I INPUT 5 -s 192.168.37.17 -j ACCEPT
拒绝tcp的第一次握手syn,但ping可以访问,ping属于upd协议
iptables -R INPUT 5 -s 192.168.37.17 -p tcp --syn -j REJECT
20、删除18.19例规则
iptables -D INPUT 5
iptables -D INPUT 5
**自己可以ping通别人,别人ping不通 **
0/0 echo-reply icmp应答
8/0 echo-request icmp请求
iptables -I INPUT 5 -P icmp --icmp-type 0 -j ACCEPT
允许samba服务访问
方法1:
iptables -I INPUT 5 p tcp --dport 139 -j ACCEPT
iptables -I INPUT 5 p tcp --dport 445 -j ACCEPT
方法2:使用multiport模块可使用多端口替换序号5
iptables -R INPUT 5 -p tcp -m multiport -dports 139,445 -j ACCEPT
iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp -m multiport --dports 20:22,80 -j ACCEPT
23、使用mac地址允许访问
iptables -I INPUT 5 -m mac --mac-source xxxxx -j ACCEPT
24、string扩展
对报文中的应用层数据做字符串模式匹配检测
iptables -A OUTPUT -s 172.16.100.10 -d 0/0 -p tcp --sport 80 -m string --algo bm --string “google" -j REJECT
25、time拓展
时间各减8:9点到18点允许访问
26、connlimit扩展
根据每客户端IP做并发连接数数量匹配
限制httpd访问并发超过100次访问
iptables -A INPUT -m -p tcp --dport 80 connlimit --connlimit-above 100 -j REJECT
27、插入ipables访问日志
iptables -I INPUT -s 192.168.37.6 3 -j LOG -log-prefix "from 37.6 access:"
ipatbles -nvL
iptables-svae > data/iptables.rules
恢复:
iptables-restore < /data/iptables.rules
开机启动:
vim /etc/re.d/rc.local
/data/iptables.reles
命令firewall
1、关闭firewalld
systemctl stop firewalld
systemctl status iptables
iptable -F
2、启动iptable管理
systemctl start iptables 启动iptables管理
3、输入命令管理
vim /etc/sysconfig/iptables 添加
iptables-save > /etc/sysconfit/iptables 从定向
centos6
vim /etc/sysconfig/iptables 添加
iptables-save > /etc/sysconfit/iptables 从定向
命令保存到/etc/sysconfit/iptables
service iptables save
二、网络防火墙
1、作用:
iptables/netfilter
(1) 充当网关
(2)使用filter表的FORWARD链
实例:内网和外网访问控制
node1 centos6 内网 192.168.37.30
node2 centos7 防火墙 192.168.37.10 172.16.132.39
node3 centos7 外网 172.16.132.32
(1)、环境部署:
1、node3更改 桥接网卡
1、改成自动获取,也可改成静态的
[root@node3 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=dhcp
2、添加网卡
route -add default gw 172.16.132.39
2、node1更改网络 NAT网卡
[root@node3 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.73.20
PREFIX=24
GATEWAY=192.168.37.10
3、node2开启转发功能 桥接网卡和NAT网卡
[root@node2 ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@node2 ~]# sysctl -p
net.ipv4.ip_forward = 1
2、node3
node1和node3分别安装httpd测试网页
node2:
添加路由:
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@node2 ~]# sysctl -p 生效
sysctl -a | grep ip
iptables -A FORWARD -J REJECT 全部拒绝所有
内网可以访问外网,外网访问不了内网
ipteabes -I FORWARD 1 -s 192.168.37.0/24 -p icmp --icmp-type 8 -j ACCEPT 请求
iptables -I FORWARD 1 -s 172.16.0.0/16 -p icmp --icmp-type 0 -j ACCEPT 响应
测试:
ping 172.16.312.32(node1) ping 192.168.37.30(node3)
删除icmp 0响应规则
iptables -D ROWARD 1
测试:ping 172.16.312.32(node1)
效果:无法ping通
内网ping恢复通外网,放行到外网相应报文
测试:ping 172.16.312.32(node1)
内网访问外网http服务
iptables -D ROWARD 2 删除0响应规则
iptables -I FORWARD 1 -m state --state ESTABLISHED,RELATED -j ACCEPT 状态添加
测试:curl 172.16.312.32(node1)
效果:不可以访问,但可以ping通
iptables -I FORWARD 2 -s 192.168.37.0/24 -p tcp --dport 80 -j ACCEPT
测试:curl 172.16.312.32(node1)
效果:可以访问
iptables -I FORWARD 2 -s 192.168.37.0/24 -P tcp -m multiport --dports 80,443 -j ACCEPT 添加httpds访问
测试:服务端需要安装mod_ssl模块(node3)
curl -k https://172.16.312.32(node1)
效果:可以访问
外网访问内网信息
iptables -I FORWARD 2 -s 172.16.132.32 -p tcp -m multiport --dports 80,443 -j ACCEPT
测试:curl 192.168.37.30(node3)
效果:可以访问
node3
3、自定义链
iptables -N fromlantointernet 新建iptables名
iptables -E fromlantointernet FTI 修改名
添加规则
iptabes -A FIT -s 192.168.37.7 -p tcp -m multiport --dports 80,443 -j ACCRPT
iptabes -A FIT -s 192.168.37.7 -p icmp-type 9 -j ACCEPT
iptabes -I FORWARD 2 -j FIT 添加自定义链动作到FORWAR表中
iptables -x
替换后添加22号端口允许访问
iptables -I FORWARD 4 -d 192.168.37.6 -p tcp -m multiport --dports 80,443,22 -j ACCEPT
删除自定义链,安装顺序反序即可
iptables -D FORWARD 2
iptables -F FIT
iptabes -X FIT
三、SNAT
SNAT Source Network Address Translation 源网络地址转换
让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装
请求报文:修改源IP
1、过程
企业内部的主机A想访问互联网上的主机C,首先将请求数据包(源:ipA,目标:ipC)发送到防火墙所在主机B,B收到后将数据包源地址改为本机公网网卡的ip(源:ipA,目标:ipB),然后经互联网发送给C;C收到后将回应包(源:ipC,目标:ipB)转发给C的路由器,经互联网将回应包转发给B,B收到回应包后修改其目的地址,即回应包改为(源:ipC,目标:ipA)然后将数据包转发给A。
在这个过程中,修改了请求报文的源地址,叫做SNAT(source NAT POSTROUTING),用于局域网访问互联网
2、实例:
实验环境:
node1 centos6 内网 192.168.37.30 -- B
node2 centos7 防火墙 192.168.37.10 172.16.132.39 -- A
node3 centos7 外网 172.16.132.32 --C
node3网关(桥接网卡)
添加默认路由:
ip route add default via 192.168.0.1 dev eth0
node1网关(NAT网卡)
node2配置
node2开启转发功能 桥接网卡和NAT网卡
[root@node2 ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@node2 ~]# sysctl -p
net.ipv4.ip_forward = 1
配置
iptables -t nat -A POSTROUTING -s 192.168.37.0/24 -j SNAT --to-source 172.16.132.39
过程
172.16.132.32上抓包,如图,显示源地址为172.16.132.39
在C看来,是B在访问C,而不是A,但是实际上是A在访问C,数据包是从A发往C的,只是经过B时将源地址改为B,但实际上是A发过来的数据包
四、DNAT
DNAT Destination Network Address Translation 目的网络地址转换
互联网主机C想访问企业内部的web服务器A,但A的地址是私有地址,无法直接访问。此时,C可以访问防火墙的公网地址,C的请求数据包(源:ipC,目标:ipB)到达防火墙B后,在B的prerouting上将请求数据包的目标地址进行修改,并将数据包(源:ipC,目标:ipA)发送给A。A收到后进行回复发送响应包(源:ipA,目的ipC)到防火墙,防火墙收到后对数据包源地址进行修改,并将响应包(源:ipB,目标:ipC)给C。利用这种机制可以将企业内部的服务发布到互联网。
在这个过程中,修改了请求报文的目标地址,叫做DNAT(destination NAT POSTROUTING),用于互联网访问局域网。
必须在防火墙的prerouting上设置修改目标地址的防火墙策略,因为若不在此处修改,请求数据包通过prerouting和路由表后,由于目标主机是本机,就会将数据包发往input,进而被发往本地进程。
实例:
iptables -t nat -A PREROUTING -s 0/0 -d 172.16.132.39 -p tcp --dport 22 -j DNAT --to-destination 192.168.37.30:22
iptables -t nat -A PREROUTING -s 0/0 -d 172.16.132.39.6 -p tcp --dport 80 -j DNAT --to-destination 192.168.37.30:8080
五、REDIRECT
从定向
实例:
iptables -t nat -A PREROUTING -d 172.16.132.39 -p tcp --dport 80 -j REDIRECT --to-ports 8080
六、firewalld服务
详情:
- firewalld是CentOS 7.0新推出的管理netfilter的工具
- firewalld是配置和监控防火墙规则的系统守护进程。可以实现iptables,ip6tables,ebtables的功能
- firewalld服务由firewalld包提供
- firewalld支持划分区域zone,每个zone可以设置独立的防火墙规则
- 归入zone顺序:
先根据数据包中源地址,将其纳为某个zone
纳为网络接口所属zone
纳入默认zone,默认为public zone,管理员可以改为其它zone - 网卡默认属于public zone,lo网络接口属于trusted zone(信任区域)
firewalld zone分类
内置预服务:
firewall-cmd --get-services 查看预定义服务列表
图形化firewalld
需关闭iptables,同时开会有冲突
- firewall-config (firewall-config包)图形工具
- firewall-cmd (firewalld包)命令行工具
- /etc/firewalld 配置文件,一般不建议
firewall-cmd 命令选项
--get-zones 列出所有可用区域
--get-default-zone 查询默认区域
--set-default-zone=
--get-active-zones 列出当前正使用的区域
--add-source=
--remove-source=
--add-interface=
--change-interface=
--add-service=
--add-port=<PORT/PROTOCOL>[--zone=
实例:
firewall-com --get-zones
firewall-cmo -set-defult-zone=trusted 设置成信任区域,啥服务都可以访问,建议设置成pulic
firewall-cmd --get-active-zones 列出当前正使用的区域
firewall-cmd --add-service=ftp 添加ftp访问
firewall-cmd --list-serrvice 验证,列出规则(添加服务为临时生效)
firewall-cmd --reload 永久生效
查看默认zone
firewall-cmd --get-default-zone
默认zone设为dmz
firewall-cmd --set-default-zone=dmz
在internal zone中增加源地址192.168.0.0/24的永久规则 --permanent(保存但不生效)
firewall-cmd --permanent --zone=internal --add-source=192.168.0.0/24
在internal zone中增加协议mysql的永久规则
firewall-cmd --permanent –zone=internal --add-service=mysql
加载新规则以生效
firewall-cmd --reload
配置firewalld
七、rich规则
rich规则比基本的firewalld语法实现更强的功能,不仅实现允许/拒绝,还可以实现日志syslog和auditd,也可以实现端口转发,伪装和限制速率
实例:
拒绝从192.168.0.11的所有流量,当address 选项使用source 或 destination时,必须用family= ipv4 |ipv6
firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.11/32 reject'
限制每分钟只有两个连接到ftp服务
firewall-cmd --add-rich-rule=‘rule service name=ftp limit value=2/m accept’
抛弃esp( IPsec 体系中的一种主要协议)协议的所有数据包
firewall-cmd --permanent --add-rich-rule='rule protocol value=esp drop'
接受所有192.168.1.0/24子网端口5900-5905范围的TCP流量
firewall-cmd --permanent --zone=vnc --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=5900-5905 protocol=tcp accept'
rich日志规则
接受ssh新连接,记录日志到syslog的notice级别,每分钟最多三条信息
firewall-cmd --permanent --zone=work --add-rich-rule='rule service name="ssh" log prefix="ssh " level="notice" limit value="3/m" accept
从2001:db8::/64子网的DNS连接在5分钟内被拒绝,并记录到日志到audit,每小时最大记录一条信息
firewall-cmd --add-rich-rule='rule family=ipv6 source address="2001:db8::/64" service name="dns" audit limit value="1/h" reject' --timeout=300
**伪装和端口转发**
NAT网络地址转换,firewalld支持伪装和端口转发两种NAT方式
伪装NAT
firewall-cmd --permanent --zone=<ZONE> --add-masquerade
firewall-cmd --query-masquerade 检查是否允许伪装
firewall-cmd --add-masquerade 允许防火墙伪装IP
firewall-cmd --remove-masquerade 禁止防火墙伪装IP
示例:
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 masquerade'
伪装和端口转发
端口转发:将发往本机的特定端口的流量转发到本机或不同机器的另一个端口。通常要配合地址伪装才能实现
firewall-cmd --permanent --zone=<ZONE> --add-forward-port=port=<PORTNUMBER>:proto=<PROTOCOL>[:toport=<PORTNUMBER>][:toaddr=<IPADDR>]
说明:toport= 和toaddr= 至少要指定一个
示例:
转发传入的连接9527/TCP,到防火墙的80/TCP到public zone 的192.168.0.254
firewall-cmd --add-masquerade 启用伪装
firewall-cmd --zone=public --add-forward-port=port=9527:proto=tcp:toport=80:toaddr=192.168.0.254
示例:
转发从192.168.0.0/24来的,发往80/TCP的流量到防火墙的端口8080/TCP
firewall-cmd --zone=work --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 forward-port port=80 protocol=tcp to-port=8080
八、iptabes优化
任何不允许的访问,应该在请求到达时给予拒绝
规则在链接上的次序即为其检查时的生效次序
基于上述,规则优化:
安全放行所有入站和出站的状态为ESTABLISHED状态连接
谨慎放行入站的新请求
有特殊目的限制访问功能,要在放行规则之前加以拒绝
同类规则(访问同一应用),匹配范围小的放在前面,用于特殊处理
不同类的规则(访问不同应用),匹配范围大的放在前面
应该将那些可由一条规则能够描述的多个规则合并为一条
设置默认策略,建议白名单(只放行特定连接)
1) iptables -P,不建议
2) 建议在规则的最后定义规则做为默认策略