Linux之防火墙

来源:互联网 发布:mysql连接数据库 编辑:程序博客网 时间:2024/06/05 01:08

安全技术简介:
入侵检测与管理系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报告和事后监督为主,提供有针对性的指导措施和安全决策依据。一般采用旁路部署方式
入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以阻断,主动而有效的保护网络的安全,一般采用在线部署方式
防火墙(FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允许访问的策略

防火墙的分类
(1)主机防火墙:服务范围为当前主机
(2)网络防火墙:服务范围为防火墙一侧的局域网
(3)硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,Checkpoint,NetScreen
(4)软件防火墙:运行于通用硬件平台之上的防火墙的应用软件

网络层防火墙:OSI下面第三层
a、包过滤防火墙
b、网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否允许该数据包通过
d、优点:对用户来说透明,处理速度快且易于维护
e、缺点:无法检查应用层数据,如病毒等

应用层防火墙/代理服务器:代理网关,OSI七层
a、应用层防火墙/代理服务型防火墙(Proxy Service)
b、将所有跨越防火墙的网络通信链路分为两段,内外网用户的访问都是通过代理服务器上的“链接”来实现
c、优点:在应用层对数据进行检查,比较安全
d、缺点:增加防火墙的负载、

现实生产环境中所使用的防火墙一般都是二者结合体,即先检查网络数据,通过之后再送到应用层去检查

四表五链
iptables由四个表和五个链以及一些规则组成
四个表table:filter、nat、mangle、raw
filter表:过滤规则表,根据预定义的规则过滤符合条件的数据包
nat表:network address translation 地址转换规则表
mangle:修改数据标记位规则表
Raw:关闭NAT表上启用的连接跟踪机制,加快封包穿越防火墙速度
优先级由高到低的顺序为:raw–>mangle–>nat–>filter

五个内置链chain
INPUT
OUTPUT
FORWARD
PREROUTING
POSTROUTING

1、链管理:iptables options chain[chain:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING]
-N:new, 自定义一条新的规则链
-X:delete,删除自定义的空的规则链。注:用户不能删除系统默认的链
-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:ACCEPT=接受,DROP=丢弃
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除

2、查看:iptables options
-L:list, 列出指定鏈上的所有规则,本选项须置后
-n:numberic,以数字格式显示地址和端口号
-v:verbose,详细信息
-vv更详细
-x:exactly,显示计数器结果的精确值,而非单位转换后的易读值
–line-numbers:显示规则的序号
常用组合:
–vnL
–vvnxL–line-numbers
-S: selected,以iptables-save 命令格式显示链上规则
3、规则管理:iptables -t table_name options chain[chain:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING]
-A:append,追加
-I:insert, 插入,要指明插入至的规则编号,默认为第一条
-D:delete,删除
(1) 指明规则序号
(2) 指明规则本身
-R:replace,替换指定链上的指定规则编号
-F:flush,清空指定的规则链
-Z:zero,置零
iptables的每条规则都有两个计数器
(1) 匹配到的报文的个数
(2) 匹配到的所有报文的大小之和
chain:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

匹配条件

1、基本匹配,基本匹配条件:无需加载模块,由iptables/netfilter自行提供

[!] -s, –source address[/mask][,…]:源IP地址或范围
[!] -d, –destination address[/mask][,…]:目标IP地址或范围
[!] -p, –protocol protocol:指定协议,可使用数字如0(all)
protocol: tcp, udp, icmp, icmpv6,udplite,esp, ah, sctp, mhor “all“ 参看:/etc/protocols
[!] -i, –in-interface name:报文流入的接口;只能应用于数据报文流入环节,只应用于INPUT、FORWARD、PREROUTING链
[!] -o, –out-interface name:报文流出的接口;只能应用于数据报文流出的环节,只应用于FORWARD、OUTPUT、POSTROUTING链

2、扩展匹配条件:需要加载扩展模块(/usr/lib64/xtables/*.so),方可生效

(1)隐式扩展:在使用-p选项指明了特定的协议时,可以扩展指定端口,无需用-m选项指明扩展模块的扩展机制,不需要手动加载扩展模块

tcp协议的扩展选项
–sport 21:25 匹配报文源端口,可为端口范围
–dport 80 匹配报文目标端口,可为范围
–tcp-flags mask comp
mask 需检查的标志位列表,用,分隔,例如SYN,ACK,FIN,RST
comp 在mask列表中必须为1的标志位列表,无指定则必须为0,用,分隔
–tcp-flags SYN,ACK,FIN,RST SYN 表示要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0
–tcp-flags SYN,ACK,FIN,RST SYN,ACK
–tcp-flags ALL ALL
–tcp_flags ALL NONE
–syn:用于匹配第一次握手,相当于:–tcp-flags SYN,ACK,FIN,RST SYN
iptables -A INPUT -s 172.18.0.0/16 -p tcp –tcp-flags SYN,ACK,FIN,RST SYN -j REJECT
iptables -A INPUT -s 172.18.0.0/16 -p tcp –syn -j REJECT

udp协议一些的扩展选项
–sport 53 匹配报文的源端口;可以是端口范围
–dport 53 匹配报文的目标端口;可以是端口范围

icmp协议扩展选择
icmp –icmp-type 8/0
0 —应答
8 —请求

(2)显示扩展:必须显式地指明使用的扩展模块进行的扩展
multiport、iprange、mac、time、connlimit、limit、states、

multiport 扩展,以离散方式定义多端口匹配,最多指定15个端口

iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp -m multiport --dports 20:22,80 -j ACCEPT

iprange 扩展,指明连续的(但一般不是整个网络)ip地址范围

iptables -A INPUT -m iprange --src-range 172.18.24.17-172.18.24.107 -p tcp -m multiport --dport 80,22 -j REJECT

mac 扩展,指明MAC地址

iptables -A INPUT -m mac --mac-source 00:0c:29:70:2c:b3 -p tcp -m multiport --dport 80,22 -j REJECT
string 扩展,对报文中的应用层数据做字符串模式匹配检测    iptables -A OUTPUT -m string --string "google" --algo bm --to 65535 -j REJECT --reject-with icmp-port-unreachable                                                [字符串匹配检测算法]

time 扩展,根据将报文到达的时间与指定的时间范围进行匹配

iptables -R OUTPUT 1 -m time --timestart 10:00 --timestop 10:56 -p tcp --sport 80 -m string --algo bm --string "google" -j REJECT

注意:centos6上面用的是本地时间,centos7上用的是格林时间,需要本地时间匹配的话,需要减去8个小时
connlimit扩展,根据每客户端IP做并发连接数数量匹配
connlimit扩展,根据每客户端IP做并发连接数数量匹配,可防止CC(Challenge Collapsar挑战黑洞)攻击
–connlimit-upton n:连接的数量小于等于n时匹配,
–connlimit-above n:连接的数量大于n时匹配,通分别与默认的拒绝或允许策略配合使用

iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 1 -j REJECT

limit 扩展,基于收发报文的速率做匹配,令牌桶过滤器
–limit rate[/second|/minute|/hour|/day]
–limit-burst number

iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 8 -j ACCEPT

iptables -A INPUT -p icmp -j REJECT

iptables -R INPUT 1 -p icmp --icmp-type 8 -m limit --limit 30/minute --limit-burst 5 -j ACCEPT
state扩展state扩展,根据”连接追踪机制“去检查连接的状态,较耗资源conntrack机制:追踪本机上的请求和响应之间的关系,状态有如下几种:    NEW:新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求    ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态

RELATED:新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关系
INVALID:无效的连接,如flag标记不正确
UNTRACKED:未进行追踪的连接,如raw表中关闭追踪
根据”连接追踪机制“去检查连接的状态,较耗资源
iptables -A INPUT -p tcp –dport 22 -m state –state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp –dport 22 -m state –state NEW -j REJECT
处理动作:
ACCEPT:接受,通过
DROP:委婉拒绝
REJECT:直接拒绝
RETURN:返回调用链,只对自定义链有效果。
REDIRECT:
LOG:
MARK:
DNAT:
SNAT:
MASQUERADE:
….
自定义链: