1、iptables-netfilter基础
1、iptables: 包过滤型防火墙功能、四表五链
2、iptables规则、规则管理工具、iptables命令
3、iptables链管理、规则管理、查看等
4、iptables匹配条件、目标、显式扩展、保存及重载规则
参考:马哥教育和朱双印个人日志
http://www.zsythink.net/archives/tag/iptables/page/2/
http://www.zsythink.net/archives/1199
iptables: 包过滤型防火墙 在内核的tcp/ip协议栈上 对包的tcp首部、ip首部、udp首部做过滤
Firewall: 防火墙,是隔离工具;工作于主机或网络的边缘,对于进出本主机或网络的报文根据事先定义好的检查规则作匹配检测(跟主机病毒关系不大),对于能够被规则所匹配到的报文做出相应处理的组件;
主机防火墙:
网络防火墙:
IDS --> Firewall IDS一旦识别有人入侵服务器,则立即通知防火墙
IDS有两种常见的实现:用户发起攻击后才发现
HIDS(主机入侵检测系统):工作在主机上,只需要部署在单台主机上
NIDS(网络入侵检测系统):工作在网络通道上,需要在网络多个位置部署传感器(就像摄像头)
honeypot:钓鱼执法
honeypot:在计算机术语中,蜜罐是一种计算机安全机制,用于检测,偏转或以某种方式抵消未经授权使用信息系统的企图。通常,蜜罐由数据(例如,在网络站点中)组成,这些数据似乎是站点的合法部分,但实际上是隔离和监视的,并且似乎包含攻击者的信息或有价值的资源,然后阻止了。这类似于警方蜇伤行动,俗称“诱饵”,一名嫌犯https://en.wikipedia.org/wiki/Honeypot_(computing)
入侵检测系统(英语:Intrusion-detection system,缩写为 IDS)是一种网上安全设备或应用软件,可以监控网络传输或者系统,检查是否有可疑活动或者违反企业的政策。侦测到时发出警报或者采取主动反应措施。它与其他网络安全设备的不同之处便在于,IDS是一种积极主动的安全防护技术。https://zh.wikipedia.org/wiki/%E5%85%A5%E4%BE%B5%E6%A3%80%E6%B5%8B%E7%B3%BB%E7%BB%9F
iptables/netfilter
framework: netfilter
hooks function
rule utils: iptables 规则管理工具
iptables是工作在用户空间的工具程序,netfilter是实现防火强的框架,二者合二为一
开机启动防火墙,并不是启动防火墙服务,而是重新加载之前保存的规则,防火墙不是服务,不是进程。在开机启动时,是把规则文件重新生效了一次,没有运行任何进程,因为规则是在内核上生效的。
表、链、规则
链上放表,表上写规则
图片转载自朱双印博客
功能:表
filter: 过滤,防火墙;
nat: network address translation, 网络地址转换; (改源地址、目标地址、源端口、目标端口)
mangle:拆解报文,做出修改,封装报文;除了地址转换以外,其他的mangle都可以拿来修改
raw: 关闭nat表上启用的连接追踪机制;要想完成nat功能,必须启用链接追踪机制;
链接追踪机制:即可以识别某个报文或主机在这之前访问过本主机,Neftiler为了实现基于数据连接状态侦测的状态防火墙功能和NAT地址转换功能才开发出了连接跟踪这套机制。 那就意思是说:如果编译内核时开启了连接跟踪选项,那么Linux系统就会为它收到的每个数据包维持一个连接状态用于记录这条数据连接的状态。
如果前端接受大量请求的话,要考虑好是否开启链接追踪机制,因为这非常消耗内存
链(内置):
PREROUTING:路由选择之前
INPUT:到本机内部
FORWARD:由本机转发
OUTPUT:由本机内部发去(还需要路由选择)
POSTROUTING:路由选择转发后(第二次做出的路由决策)
PREROUTING/POSTROUTING跟网卡没有关系,因为报文进来时,都是PREROUTING,报文出去时都是POSTROUTING,它们只是tcp/ip协议栈上的功能;
FORWARD上的规则功能:这是网络防火墙的意义,假如公司内部的主机只能通过一根网线跟外部通信,那么局域网内所有主机跟访问外网都必须经过局域网的网卡,在外网的forword链上做好规则,那么是否能访问QQ都可以定义,就可以实现网络防火墙。FORWARD是针对网络防火墙。
iptables是在纯软件实现的。
流入:PREROUTING --> INPUT 到达本机内部的
流出:OUTPUT --> POSTROUTING 从本机发出去的
转发:PREROUTING --> FORWARD --> POSTROUTING 经由转发的
各功能的分别实现:
filter: INPUT, FORWARD, OUTPUT 过滤
nat: PREROUTING(DNAT目标地址转换), OUTPUT, POSTROUTING(SNAT源地址转换)
mangle:PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
raw: PREROUTING, OUTPUT 只有在刚进入本机和离开本机的时候做链接追踪
路由发生的时刻:
报文进入本机后:
判断目标主机;
报文发出之前:
判断经由哪个接口送往下一跳;
iptables:四表五链
添加规则时的考量点:
(1) 要实现哪种功能:判断添加在哪张表上;
(2) 报文流经的路径:判断添加在哪个链上;
链:链上规则的次序,即为检查的次序;因此隐含一定的法则 自上而下进行检查
(1) 同类规则(访问同一应用),匹配范围小的放上面(检查更严格);因为被第一条规则处理了,后面的就不再检查,提高效率(比如172.16.0.0/16和172.16.100.2,
那么就要把172.16.100.2放上面)
(2) 不同类规则(访问不同应用),匹配到报文频率较大的放上面;(一个规则控制访问22,另一个控制访问80,这两个就把访问频率大的放上面)
(3) 将那些可由一条规则描述的多个规则合并为一个;
(4) 设置默认策略(建议使用白名单);即没有被匹配到的报文
功能的优先级次序:raw --> mangle --> nat --> filter 自上而下
规则:
组成部分:报文的匹配条件,匹配到之后处理动作
匹配条件:根据tcp/ip协议报文特征指定
基本匹配条件:源IP、目标IP、源端口、目标端口等等
扩展匹配条件:链接追踪、状态追踪、MAC地址追踪、以及应用层的特性等
处理动作:
内建处理机制:DROP、REJECT等
自定义处理机制:匹配到后转到自定义链上,可以当作处理动作或跳转目标
注意:报文不会经过自定义链,自定义链要想发挥作用,只能在内置链上通过规则进行引用后生效;