iptables 学习笔记:1

来源:互联网 发布:awa软件 编辑:程序博客网 时间:2024/06/05 18:57

一、iptables介绍:

iptables是基于包过滤的防火墙工具,NAT、mangle等规则生成的工具,工作在用户层,netfilter工作在内核中,iptables不是服务,但有服务脚本;服务脚本的主要作用在于管理保存的规则,装载及移除iptables/netfilter相关的内核模块:iptables_nat, iptables_filter, iptables_mangle, iptables_raw, ip_nat, ip_conntrack
iptables的表与链:
filter(过滤):表INPUT、OUTPUT、FORWARD
nat(地址转换):表PREROUTING(DNAT)、OUTPUT、POSTROUTING(SNAT)
mangle(拆开、修改、封装):表PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING

raw():表PREROUTING、OUTPUT

iptables的匹配顺序:

table的优先级是:RAW>MANGLE>NAT>FILTER;

数据包的Chain流向是:PREROUTING->INPUT->FORWARD->OUT->POSTROUTING;
每个Chain包含若干规则,这些规则将会被从上到下顺序匹配;
规则一旦被匹配,数据包将会流向下一个表和链;
iptables可以使用自定链,但只在被调用时才能发挥作用,而且如果没有自定义链中的任何规则匹配,还应该有返回机制;用可以删除自定义的空链,默认链无法删除每个规则都有两个内置的计数器:被匹配的报文个数、被匹配的报文大小之和

二、iptables的用法:

iptables [-t TABLE] COMMAND CHAIN [num] 匹配条件 -j 处理动作

COMMAND

管理规则:

-A:附加一条规则,添加在链的尾部
-I CHAIN [num]: 插入一条规则,插入为对应CHAIN上的第num条,若不制定num,则插入到CHAIN的第一条;
-D CHAIN [num]: 删除指定链中的第num条规则;
-R CHAIN [num]: 替换指定的规则;
管理链:
-F [CHAIN]:flush,清空指定规则链,如果省略CHAIN,则可以实现删除对应表中的所有链
-P CHAIN: 设定指定链的默认策略;
-N:自定义一个新的空链
-X: 删除一个自定义的空链
-Z:置零指定链中所有规则的计数器;
-E: 重命名自定义的链;
查看类:
-L: 显示指定表中的规则;
-n: 以数字格式显示主机地址和端口号;
-v: 显示链及规则的详细信息
-x: 显示计数器的精确值
--line-numbers: 显示规则号码

匹配条件:
通用匹配

-s, --src: 指定源地址
-d, --dst:指定目标地址
-p {tcp|udp|icmp}:指定协议
-i INTERFACE: 指定数据报文流入的接口
    可用于定义标准的链:PREROUTING,INPUT,FORWARD
-o INTERFACE: 指定数据报文流出的接口
    可用于标准定义的链:OUTPUT,POSTROUTING,FORWARD
扩展匹配
隐含扩展:不用特别指明由哪个模块进行的扩展,因为此时使用-p {tcp|udp|icmp}
-p tcp
--sport PORT[-PORT]: 源端口
--dport PORT[-PORT]: 目标端口
--tcp-flags mask comp: 只检查mask指定的标志位,是逗号分隔的标志位列表;comp:此列表中出现的标记位必须为1,comp中没出现,而mask中出现的,必须为0;
--tcp-flags SYN,FIN,ACK,RST SYN = --syn
--syn
-p icmp--icmp-type (0: echo-reply;8: echo-request)
-p udp  [--sport|--dport]
-p tcp  [--sport|--dport]
显式扩展: 使用额外的匹配机制,必须指明由哪个模块进行的扩展,在iptables中使用-m选项可完成此功能
    -m EXTESTION --spe-opt
    state: 状态扩展(结合ip_conntrack追踪会话的状态)
NEW: 新连接请求
ESTABLISHED:已建立的连接
INVALID:非法连接
RELATED:相关联的
    例:-m state --state NEW,ESTABLISHED -j ACCEPT
备注:FTP首先要装载ip_conntrack_ftp和ip_nat_ftp模块,装载方式为:vim /etc/sysconfig/iptables-config编辑IPTABLES_MODULES 行,将需要添加的模块名称填写到此处,多个模块用空格隔开,如:IPTABLES_MODULES="ip_conntrack_netbios_ns ip_nat_ft ip_conntrack_ftp"
multiport {--source-ports|--destination-ports|--ports}: 离散的多端口匹配扩展
例:-m multiport --destination-ports 21,22,80 -j ACCEPT
-m iprange : IP范围
    --src-range
    --dst-range
# 允许172.16.100.3-172.16.100.100访问22号端口
#iptables -A INPUT -p tcp -m iprange --src-range 172.16.100.3-172.16.100.100 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-m connlimit: 连接数限制
    ! --connlimit-above n (取反操作,即超过n则匹配规则)
    例: 每个独立的IP地址只允许使用5个以内的连接
iptables -A INPUT -d 172.16.100.7 -p tcp --dport 80 -m connlimit --connlimit-above 5 -j ACCEPT
-m limit
    --limit RATE
    --limit-burst 
-m string
    --algo {bm|kmp}
    --string "STRING"
-j TARGET
    LOG
    --log-prefix "STRING"
     例:记录ping记录
     iptables -I INPUT 3 -p icmp --icmp-type 8 -j LOG --log-prefix "---firewall log for icmp---"


处理动作(target):
ACCEPT:放行
DROP:丢弃
REJECT:拒绝
DNAT:目标地址转换
SNAT:源地址转换
REDIRECT:端口重定向
MASQUERADE:地址伪装
LOG:日志

MARK:打标记

规则的保存与恢复:
# service iptables save 该命令将当前规则保存在 /etc/sysconfig/iptables
# iptables-save > /etc/sysconfig/iptables.2013041801

# iptables-restore < /etc/sysconfig/iptables.2013041801

0 0
原创粉丝点击