iptables 简介
netfilter/iptables 组成Linux平台下的包过滤防火墙。
rule 包
是否允许通过的规则
chinas 链
数据包传播的路径
tables 表
提供特定的功能,包含filter nat mangle raw4个表,分别用于实现包过滤,网络地址转换,包重构(修改)和数据跟踪处理。
iptables 在内核的5个规则设置位置
五个规则链:
1. PREROUTING (路由前)
2. INPUT (数据包流入口)
3. FORWARD (转发管卡)
4. OUTPUT(数据包出口)
5. POSTROUTING(路由后)
防火墙策略:
1. 通,有身份认证才能进
2. 堵
filter:定义允许或不允许,用在INPUT FORWARD OUTPUT
nat 定义地址转换 用在PREROUTING OUTPUT POSTROUTING
mangle 修改报文原数据 用在5个规则链上
规则的写法
格式:
iptables [-t table] COMMAND chain rules -j ACTION
-t table :指定表名(filter/nat/mangle/raw)
COMMAND:命令,对链扫操作命令
chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的
rules:规则
-j ACTION :指定如何进行处理
比如:不允许172.16.0.0/24的进行访问。 iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP 当然你如果想拒绝的更彻底: iptables -t filter -R INPUT 1 -s 172.16.0.0/16 -p udp --dport 53 -j REJECT iptables -L -n -v #查看定义规则的详细信息
COMMAND
链管理命令(立即生效)
-P 设置默认策略
iptables -P INPUT (DROP|ACCEPT) 默认是关的/开的
-L 查看iptables规则列表
-F flash , 清空规则链
iptables -t nat -F PREROUTING
iptables -t nat -F 清空nat表的所有链
-X 用于删除用户自定义的空链
-E 用来给用户自定义的链重命名
iptables -E oldname newname
-Z 清空链,及链中默认规则的计数器
iptables -Z
@H_404_85@规则管理命令-A 追加
-I num : 插入
-R num :Replays替换/修改第几条规则
-D num : 删除第几条规则
查看管理命令 “-L”
附加子命令:
-n 以数字方式显示ip,否则显示主机名 -v 显示详细信息 -vv 更详细 -vvv 更更详细 -x 在计数顺上显示精确值 --line-numbers 显示规则的行号 -t nat:显示所有的关卡的信息
匹配标准
通用匹配
-s 源ip
-d 目标ip
-p 协议,TCP/UDP/ICMP
-i eth0 从某网卡流入
-o eth0 从某网卡流出
扩展匹配
-p tcp 扩展:
--dport xx-xx 指定目标端口范围 --dport xx 指定目标端口 --sport 指定源端口 --tcp-flags tcp的标志位
-p udp 扩展:
--dport --sport
-p icmp 扩展:
--icmp-type 8 匹配表求回显数据包
显式扩展-m
-j ACTION
状态检测
端口的4种关系:
NEW TCP新连接
ESTABLISHED 已建立的连接
RELATED 如TCP 20/21一来一去的端口
INVALID 无法识别的
地址转换
示例
iptables -P INPUT DROP 拒绝所有连接
iptables -I FORWARD -d www.xxx.com -j DROP 拒绝访问某网址
iptables -I FORWARD -s 192.168.1.X -j DROP 禁止某客户机上网
iptables -I FORWARD -s 192.168.1.0/24 -p tcp -dport 21 -j DROP 禁止某子网使用FTP
iptables -F
iptables -X
iptables -F -t mangle
iptables -t mangle -X
iptables -F -t nat
iptables -t nat -X
把三个表清空
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD ACCEPT
设定INPUT、OUTPUT的默认策略为DROP,FORWARD为ACCEPT。
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
先把“回环”打开
iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -o eth+ -p icmp --icmp-type 0 -j ACCEPT
在所有网卡上打开ping功能,便于维护和检测。
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT
打开22端口,允许远程管理。