iptables其实是一个客户端工具,我们用户是通过iptables这个客户端,将用户的安全设定执行到对应的‘安全框架中’,这个安全框架才是真正的防火墙,这个框架名字叫做netfilter。
防火墙:
从逻辑上分类:主机防火墙:针对单个主机进行防护
网络防火墙:处于网络入口或者边缘,针对网络入口进行防护,服务于防火墙背后的本地局域网。
从物理上分类:硬件防火墙:在硬件级别实现部分防火墙功能,
软件防火墙:应用软件处理逻辑运行于通用硬件平台上的防火墙,性能低,成本低。
两个概念:
内核空间:也叫做内核态,操作系统占据的内存区域
用户空间:也叫做用户态,用户进程所在的内存区域
本篇文章在这里主要讲解iptables:
iptables四表五链详解:
防火墙它是按照规则办事的,iptables就根据规则所定义的方法来处理这些数据包的。
防火墙,想要它能够达到‘防火’的目的,就需要在内核中设置关卡,所有进出的报文都要通过这些关卡,而这些关卡在iptables中称之为“链”。
“链”:防火墙的作用就在于对经过的报文匹配规则,然后执行对应的动作,所以,当经过这些关卡的时候,则必须匹配这个关卡上的规则,但是这个关卡可能不止一条规则,而是有很多条规则,当我们把这些规则串到一条链条上的时候,就形成了“链”
INPUT——进来的数据包应用此规则链中的策略
OUTPUT——外出的数据包应用此规则链中的策略
FORWARD——转发数据包时应用此规则链中的策略
PREROUTING——对数据包作路由选择前应用此链中的规则
(记住!所有的数据包进来的时侯都先由这个链处理)
POSTROUTING——对数据包作路由选择后应用此链中的规则
(所有的数据包出去的时侯都先由这个链处理)
“表”:我们把具有相同功能的规则的集合叫做“表”,不同的规则放置于不同的表中工作,在iptables中定义了四种表,
filter表:负责过滤功能,内核模块:iptables_filter ; 三个链:INPUT、FORWARD、OUTPUT
nat表:网络地址转换,内核模块:iptables_nat ; ——三个链:PREROUTING、POSTROUTING、OUTPUT
mangle表:拆解报文,作出修改,并重新封装,iptable_mangle ; ——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
raw表:关闭nat表上启用的连接追踪机制,iptable_raw ; ——两个链:OUTPUT、PREROUTING
在CentOS7中还有INPUT,6中没有)
iptables为我们定义了4长“表”,当他们处于同一条链时,执行的优先级如下:
由高而低:raw——mangle——nat——filter
iptables的基本用法
防火墙的几种策略
ACCEPT 放行
REJECT 拒绝
DROP 丢弃流量,不响应
LOG 记录日志
常用操作命令:
-A 在指定链的末尾添加一条新的规则
-D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
-I 在指定链中插入(insert)一条新的规则,默认在第一行添加
-R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-L 列出(list)指定链中所有的规则进行查看
-E 重命名用户定义的链,不改变链本身
-F 清空(flush)
-N 新建(new-chain)一条用户自己定义的规则链
-X 删除指定表中用户自定义的规则链(delete-chain)
-P 设置指定链的默认策略(policy)
-Z 将所有表的所有链的字节和数据包计数器清零
-n 使用数字形式(numeric)显示输出结果
-v 查看规则表详细信息(verbose)的信息
-h 获取帮助(help)
#:-t选项指定操作的表 默认不指定就是filter表
# :-L 列出规则
#: 输入这条命令可以查看所有规则(-nvL)
iptables -F # 清理规则
例:
拒绝所有来自192.168.12.144的所有报文。
再增加一条新规则,让192.168.12.144的地址报文通过,给他放行。
删除规则。
命令总结一下:
iptables -t 表名 -A 链名 匹配条件 -j 动作 # 在规则尾部追加
在规则首部增加时-I
指定链的指定位置添加,
按照规则序号删除规则
删除所有规则:
当然最重要一点,保存防火墙策略: