赞
踩
linux系统给的防火墙功能是由内核实现的
2.0版内核中,包过滤机制是ipfw,管理工具是ipfwadm
2.2版内核中,包过滤机制是ipchain,管理工具是ipchains
2.4版及以后的内核中,包过滤机制是netfilter, 管理工具是iptables
netfilter
位于Linux内核中的包过滤防火墙功能体系
称为Linux防火墙的“内核态”
iptables(不能抓arp包,tcpdump可以抓)
位于/sbin/iptables,是用来管理防火墙的命令工具
为防火墙体系提供过滤规则/策略,决定如何过滤或处理到达防火墙主机的数据包
称为Linux防火墙的“用户态”
一习 惯上,上述2种称呼都可以代表Linux防火墙
iptables + netfilter 软件防火墙: 硬件防火墙:服务器+专i 定制的程序+芯片+超好的硬件配置
规则链
规则的作用在于对数据包进行过滤或处理,根据处理时机的不同,各种规则被组织在不同的“链”中
规则链是防火墙规则/策略的集合
默认的5种规则链
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包
- [root@host ~]# cat /proc/sys/net/ipv4/ip_forward
- 0
- [root@host ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
- [root@host ~]# cat /proc/sys/net/ipv4/ip_forward
- 1 #打开路由功能
- [root@host ~]#iptables -A INPUT -p icmp --icmp-type 8 -j DROP #指定链为input 协议为icmp 类型为8(request) 设置为drop丢弃
规则表
具有某一类相似用途的防火墙规则,按照不同处理时机区分到不同的规则链以后,被归置到不同的“表”中
规则表是规则链的集合
默认的4个规则表
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)
可以使用>>>iptables -t filter -L
iptables [-t 表名]管理选项[链名] [条件匹配] [-j 目标动作或跳转]
几个注意事项
不指定表名时,默认表示filter表
不指定链名时,默认表示该表内所有链
除非设置规则链的缺省策略,否则需要指定匹配条件
规则表间的优先顺序
依次为: raw、mangle、 nat、 filter(默认查看此表)
规则链间的匹配顺序
入站数据: PREROUTING、INPUT
出站数据: OUTPUT、POSTROUTING
转发数据: PREROUTING、FORWARD、POSTROUTING
规则链内的匹配顺序
按顺序依次进行检查,找到相匹配的规则即停止(LOG策略会有例外)
若在该链内找不到相匹配的规则,则按该链的默认策略处理
设置规则内容:
-A:在链尾追加一-条新的规则 append
-I: 在指定位置(或链首)插入一条新的规则 insert
-R:修改、替换指定位置或内容的规则 replace
-P: 设置指定链的默认策略 policy
列表查看规则
-L:列表查看各条规则信息 list
--line-numbers:查看规则信息时显示规则的行号
n:以数字形式显示IP地址、端口等信息 number
-V: 显示数据包个数、字节数等详细信息 verbose
清除规则
-D:删除指定位置或内容的规则delete
-F :清空规则链内的所有规则 flush 刷新
自定义规则链
-N:创建一条新的规则链
-X:删除自定义的规则链
- #创建lian链
- #iptables -A lian -p icmp -j ACCEPT
- #iptables -A INPUT -p icmp -j lian
- #把关于icmp协议的就调用INPUT链的权限给lian
- #删除自定义链
- #iptables -X lian -tfilter
- #删链之前要先把里面的规则删掉
其他
-h:查看iptables命令的使用帮助
通用条件匹配
可直接使用,不依赖于其他的条件或扩展模块
包括网络协议、IP地址、网络接口等匹配方式
协议匹配
使用“*-p协议名”的形式
协议名可使用在“/etc/protocols"文 件中定义的名称
常用的协议包括tcp、udp、icmp等
地址匹配
使用“'-s源地址”、“d目标地址”的形式
地址可以是单个IP地址、网络地址( 带掩码长度)
接口匹配
使用'-i网络接口名’、“-o网络接口名”的形式,分别对应接收、发送数据包的网络接口
reject:给不能到达的回复,还是会拒绝,但是会给回复
隐含条件匹配
一般需要以特定的协议匹配作为前提
包括端口、TCP标记、ICMP类型等匹配方式
端口匹配
使用“--sport 源端口”、“--dport目标端口”的形式
采用“端口1:端口2”的形式可以指定一个范围的端口
TCP标记匹配
使用“--tcp-flags检查范围被设置的标记”的形式
如“--tcp-flags SYN,RST,ACK SYN"表示检查SYN、RST、ACK这3个标记,只有SYN为1时满足条件
ICMP类型匹配\
使用“-icmp-type ICMP类型”的形式
ICMP类型可以使用类型字符串或者对应的数值,例如Echo-Request、Echo-Reply
显式条件匹配
需要使用“-m扩展模块”的形式明确指定匹配方式
包括多端口、MAC地址、IP地址范围、数据包状态等匹配方式
MAC地址匹配
使用“_-m,mac:”结合“--maac-source MAC地址”的形式
多端口匹配
使用‘'-m multiport"结合“--sports源端口列表”或者“--dports目标端口列表”的形式
多个端口之间使用逗号“”分隔,连续的端口也可以使用冒号“:”分隔
IP地址范围匹配
使用‘-m iprange结合‘--src-range源IP范围”或者‘-dst-range目标IP范围”的形式
以“-”符号连接起始IP地址、结束IP地址
常见的数据包处理方式
ACCEPT:放行数据包
DROP:丢弃数据包
REJECT:拒绝数据包
LOG:记录日志信息,并传递给下一条规则处理
用户自定义链名:传递给自定义链内的规则进行处理
SNAT:修改数据包的源地址信息
DNAT:修改数据包的目标地址信息
导出规则
iptables-save
结合重定向 输出“>”符号保存规则信息
导入规则
iptables-restore
结合重定向输入“<"符号恢复规则信息
使用防火墙脚本的优点
预先加载拓展模块、设置环境参数
引入可控变量,增强脚本的可移植性、可重用性
通过shelll语句灵活控制防火墙策略
防火墙脚本的一般结构
1.设置网段、网卡、IP地址等变量
2.加载包过滤相关的内核模块(查看内核模块lsmod)
FTP相关:ip_nat_ftp、ip_conntrack_ftp
Mail相关:ip_nat_irc、ip_conntrack_irc
3.确认开启路由转发功能
方法1:/sbin/sysctl -w net.ipv4.ip_forward = 1
方法2:echo 1 > /proc/sys/net/ipv4/ip_forward
方法3:修改/etc/systl.conf,设置net.ipv4.ip_forward = 1
4.用于添加的具体防火墙规则内容
清空所有规则,建立新的规则
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。