IPTABLES
iptables的表与链
iptables具有Filter, NAT, Mangle, Raw四种内建表。
查看对应表
-t 查看表
默认filter表,参数可以是filter,nat, mangle, raw
-L 查看内容
-n IP以数字显示
-v 显示详细信息
-v -vvv -vvvv ..可以显示更详细的信息
--line-number 显示行号(可使用行号删除)
iptables -nvL 或 iptables -nL --line-number
配置持久化
service iptables save
如果报错,说明没安装iptables,执行yum install iptables-services
清除已有配置,开放所有连接
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT && iptables -P INPUT ACCEPT && iptables -P OUTPUT ACCEPT
Filter表
Filter表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表,它具有以下三种内建链:
INPUT链 – 处理来自外部的数据。
OUTPUT链 – 处理向外发送的数据。
FORWARD链 – 将数据转发到本机的其他网卡设备上。
相关参数
-A 给链追加规则
-P 修改链默认规则
iptables -P INPUT ACCEPT
-I 指定位置插入规则
例:iptables -I INPUT 1 --dport 80 -j ACCEPT(将规则插入到filter表INPUT链中的第一位上)
-D 删除指定规则
iptables -D INPUT 行号 删除INPUT链的指定行规则
-p 协议(protocol)
如tcp, udp, icmp等,可以使用all来指定所有协议。
-s 源地址(source)
指定数据包的源地址
参数可以使IP地址、网络地址(配合掩码)、主机名
例如:-s 192.168.1.10/24指定网络地址
-d 目的地址(destination)
指定目的地址,和s相同
-i 输入接口(input interface)
指定接口的数据包,接口名可以通过ip tables查看。
例如:-i eth0指定了要处理经由eth0进入的数据包
如果出现! -i eth0,那么将处理所有经由eth0以外的接口进入的数据包
-o 输出(out interface)
参考-i
–-sport 源端口(source port)
指定数据包源端口号,可以范围匹配
例如:--sport 8000:60000 表示匹配8000到60000的端口号。
–-dport 目的端口(destination port)针对-p tcp 或者 -p udp
参考--sport。
-m state 启动状态匹配
--state 状态匹配模块参数(需要启动状态匹配)
如NEW, ESTABLISHED。
NEW代表连接的第一个数据包到达服务器时
ESTABLISHED代表建立连接后
--tcp-flags TCP标志 针对-p tcp
可以指定由逗号分隔的多个参数
有效值可以是:SYN, ACK, FIN, RST, URG, PSH
可以使用ALL或者NONE
例子
#允许接收远程主机的SSH请求
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#允许发送本地主机的SSH响应
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
#开放80端口
iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT