一、防火墙简介
防火墙定义:是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
防火墙的布防方式:
1.串联部署:最佳 的存放部署,防护性强,但如果防火墙出问题后,整个企业服务就会受影响。
2.旁路部署:综合最好的存放部署方式 ,不会因防火墙出问题而导致整个企业服务受影响,但防护相对串联部署较薄弱。

二、iptables包过滤流程
iptables是采用【数据包】过滤机制工作的,所以它会对请求的数据包的【包头数据】进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。
【数据包的包头】是传输数据流经OSI七层模型中,经过各个层时,各个层根据遵循的协议给数据进行层层打包,如下图所示:

iptables工作流程
防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
防火墙如果根据设置的规则匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。
如果数据包在所有规则中没有匹配到明确的规则是阻止还是通过,从而会向下进行匹配直到匹配默认规则后,得到明确的默认规则,从而得出确认是阻止还是通过。
防火墙的默认规则是对应链里的所有规则执行完以后才会执行的(最后执行的规则)。
三、iptables的4表5链作用关系及工作原理
根据 IPtables的内部结构可以细化分为以功能为做区分的称呼为表,以IPtables动作为区分的称呼为链;其中包含关系为:IPtables(用户空间)-->netfilter (内和空间)-->tables(4表) -->chains(5链)--> 规则policy。
注:可以通过man IPtables 命令查看系统中具体的表和链的说明
1.tables四表的作用
filter(主机防火墙):对主机的数据包进出进行控制,主要是IPtables默认的表; 表中包含的对应的链:INPUT(进入),OUTPUT(出去),FORWARD(流经,转发)
nat :用于端口或者IP映射或共享上网; 表中包含的链:POSTROUTING(流出主机后路由),PREROUTING(进入主机前路由),OUTPUT(流出主机)
mangle:用于配置路由标记 ttl \ tos \ mark(拆解报文,做出修改,并重新封装起来); 表中包含的链: INPUT,OUTPUT,FORWARD,POSTROUTING,PREROUTING
raw:关闭nat表上启用的连接追踪机制;表中包含的链: OUTPUT,PREROUTING
2.chains链的作用
INPUT:进入主机的数据包。主机防火墙最关键的链(filter表的INPUT链)
OUTPUT:流出主机的数据包
FORWARD:流经主机的数据包
PREROUTING:进入服务器最先经过的链,NAT端口或IP映射(导向)。(nat表的PREROUTING链)
POSTROUTIN:在流出服务器最后经过的链,NAT共享上网。局域网共享上网(nat表的POSTROUTING链)
四、iptables的基础命令
1、常用的管理选项
-A :在指定链的末尾追加(--append)一条新的规则
-I :在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则
-R :修改、替换(--replace)指定链中的某一条规则,可指定规则序号或具体内容
-P :设置指定链的默认策略(--policy)
-D :删除(--delete)指定链中的某一条规则,可指定规则序号或具体内容
-F :清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L :列出(--list)指定链中所有的规则,若未指定链名,则列出表中的所有链
-n :使用数字形式(--numeric)显示输出结果,如显示 IP 地址而不是主机名
-v :显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers:查看规则时,显示规则的序号
2、常用的参数
-p 协议
-s 源地址
-d 目的地址
-i 入站网卡
-o 出站网卡
--sport 源端口
--dport 目的端口
3、常用的控制类型
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给出任何回应信息。
REJECT:拒绝数据包通过,会给数据发送端一个响应信息。
SNAT:修改数据包的源地址。
DNAT:修改数据包的目的地址。
MASQUERADE:伪装成一个非固定公网IP地址。
LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。LOG只是一种辅助动作,并没有真正处理数据包。
五、命令使用
1、查看规则列表
iptables [-t 表名] -n -L [链名] [--line-numbers]
或
iptables -[vn]L #合并写法-n必须放在L前 不可以合写为 -Ln
iptables -L
#查看所有iptables
iptables -nL #合并写法-n必须放在L前 iptables -n -L
#-n将协议名转换为端口号显示
iptables -nL -v
#-v查看过滤了多少包/字节
iptables -nL --line-numbers
#--line-numbers 显示规则的序号
iptables -t filter -nL --line-numbers
#-t指定filter表
iptables -t filter -nL #不写链名显示所有链
iptables -t filter -nL INPUT #标注链名显示指定链
2、设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
#一般在生产环境中设置网络型防火墙、主机型防火墙时都要设置默认规则为DROP,并设置白名单
iptables -P OUTPUT ACCEPT
3、规则操作
1,新增规则
iptables [-t 表名] -A [链名][匹配条件] [-j 控制类型]
2,删除规则
iptables [-t 表名] -D[链名] [指定规则或编号]
# -D删除指定链名内的指定规则
3,清空规则
iptables [-t 表名] -F [链名]
# -F 删除指定链名,清空链名内的所有规则,如果不指定链名则清空整个表内的规则
4,更改规则
iptables [-t 表名] -R <链名> <规则编号> <修改内容>
# -R 修改
六、实战部署
1.删除策略
iptables -F
iptables -X
iptables -Z
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
2.允许自己 的网段及22端口通过(根据自己的端口设置)
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -s 172.17.51.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT ##工作中根据自己情况,一般不用
3.设置默认规则策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
4.设置其他允许
iptables -A INPUT -i lo -j ACCEPT #允许回环地址
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT #设置80端口转发
iptables -A INPUT -s 172.17.51.0/24 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT#连接状态设置
5.生产场景维护----封掉一个IP,封掉端口
1.常改/etc/sysconfig/iptables配置,添加到对应的位置永久生效
-A INPUT -p tcp -m tcp --dport 3306 -j DROP
#封掉规则,要放在里面其他允许规则的上面才能生效。
#允许规则,要放在里面其他允许规则上面才能生效。 重新加载生效:systemctl reload iptables
2.临时封Ip(-I):针对特殊ip重启后规则消失 常用的规则放在前面生效
iptables -I INPUT -s 203.71.78.10 -j DROP
637

被折叠的 条评论
为什么被折叠?



