目录
绪论
1、防火墙
1.1 保护范围
1.2 网络协议划分
1.3 协议:tcp
1.4 四表
1.5 五链
1.6 iptables的规则
1.7 匹配顺序
流入本机:prerouting ------->iuput---------->用户进程(httpd服务)------请求--------响应--------->数据要返回用户流出本机:httpd----------->响应--------->output--------------->postrouting-(地址转换)------------>用户转发:数据包进来,肯定不是同一网段,路由转发-------->forward--------->数据包出去,不允许转发,数据包直接丢弃。1.8 命令格式及管理选项
1.9 匹配条件以及控制类型
1.10 修改规则
1.11 隐藏拓展模块
1.12 iptables的备份和还原
1.13 自定义链
1.13.1 创建自定义链
1.13.2 自定义链改名
1.13.3 给链添加规则
1.13.4 添加到默认链
1.13.5 删除
1.14 SNAT和DNAT
1.15 linux怎么抓包
防火墙:隔离功能
部署在网络边缘或者主机边缘。在工作找那个防火墙的主要作用是决定那些数据可以被外网访问以及那些数据可以进入内网访问。在网络层。分为软件防火墙和硬件防火墙
· 主机防火墙:服务范围就是当前自己的主机
· 网络防火墙:必经之路
实现方式:
· 硬件防火墙:既有专业的硬件来实现防火墙功能,又有软件来进行配给
· 软软件防火墙:代码实现判断
网络层:包过滤防火墙
应用层(代理服务器):设置数据的进出
linux防火墙:
firewalld centos7:自带的
iptables:包过滤防火墙
selinux:自带的安全工具
集成在一个内核中:netfilter
iptables:包过滤防火墙,针对数据包进行过滤和限制,属于用户态
过滤数据包:ip地址端口、协议都可在iptables进行配置,可以限制,也可以放行
iptables的构成和工作机制
iptables的组成部分:
四表五链组成,(selinux也是一个表,不在讨论范围内)
· raw表:链接跟踪机制,加快封包速度和穿过防火墙的速度。主要是数据包跟踪
·mangle表:数据标记
· nat:地址转换表
· filter(默认表):过滤规划表,根据规则来定义或者过滤符合条件的数据包
四表的优先级 security----->raw----->mangle---->nat----->filter
表用来存放链,链用来存放规则
INPUT:处理数据包进入本机的规则
OUTPOT:处理数据包发出的规则,一般不作处理
PREROUTING 处理数据包进入的规则
POSTROUTING 处理数据包离开本机之后的规则 结合地址转换使用
FORWARD 处理数据转发的规则
表里面由链,链里面有规则,规则就是自定义的对于数据包的控制命令
· 根据表的优先级匹配,在表中从上到下进行检查,找到匹配规则立即停止,不在表中向下继续查找,如果匹配不到规则,按照链的默认规则进行处理
· 报文流向
rpm -q iptables
yum -y install iptables iptables-services
关防火墙安全机制
格式:iptables [ -t 表明](不指定表名,默认是filter)管理选项 [链名] [匹配条件] [-j 控制类型]
管理选项:
-A 在链的末尾追加一条,添加
-I 在链中插入一条新的规则,可以指定序号(后面跟上数字,表示序号)
-P 修改链的默认策略
-D 删除
-R 修改替换规则
-L 查看链中的规则
-vnL
v:显示详细信息 n:把规则以数字形式进行展示
-F 清空链中的所有规则,慎用
匹配条件:
-p 指定匹配的数据包协议类型
s 指定匹配的数据包源ip地址
-d 指定匹配数据包目的ip地址
-i 指定数据包进入本机的网络接口
-o 指定数据包离开本机使用的网络接口
--sport 指定源端口号
--dport 指定目的端口号
控制类型:
ACCEPT:允许数据包通过
DROP: 拒绝,直接丢弃,不给出任何信息回应
REJECT:拒绝,会给个响应信息
SNAT: 修改数据包的源ip地址
DNAT: 修改数据包的目的地址
iptables -vnl 详细查看链中的规则,默认filter
iptables -t nat -vnl 查看nat表
iptables -F 清空filter的所有链的规则
eg:iptables -t filter -A INPUT -p icmp -j REJECT
往filter表中的INPUT链添加icmp的拒绝
iptables -A INPUT -p icmp -j ACCEPT
iptables -R INPUT 1 -p icmp -j REJECT
在生产中,iptables所有的链的默认规则都是DROP:iptables -P input DROR 此时shell也会挂掉,只能进虚拟机进行恢复
iptables -vnl --line-number
iptables -D INPUT 1
iptables -A INPUT -p tcp --dport 22 -j ACCEPT:临时策略,禁止22端口传输,重启失效
iptables -A INPUT -s 192.168.233.0/24 -p tcp --dport 80 -j REJECT:整个网段禁止80端口的服务
既拒绝22又拒绝80:
iptables -A INPUT -p tcp --dport 22:80 -j REJECT
-p:指定协议时,tcp和udp指明了什么是协议,就不需要再用-m指明扩展模块了,指定多端口可以用冒号的形式,也可以-m隐藏模块来实现
-m:可以用明确的形式指出类型:多端口,mac地址,ip地址数据包的状态
-m multiport指定多端口,使用多端口,多个端口用,隔开
eg:iptables -A INPUT -p tcp -m multiport --dp ort 22,20,443,80 -j REJECT
-m multiport --dport :指定多端口,多个端口号逗号分开
-m multiport --sport
ip范围:
-m iprange --src-range 源ip地址的范围
-m iprange --dst-range 目的ip地址的范围
eg:
mac地址:
-m mac --mac-source
· 写在命令行当中的都是临时配置
· 把规则,配置在服务的文件当中形成永久生效
iptables-save > /opt/ky30.bak:把当前iptables的全部配置保存到ky30.bak中
默认配置文件:cat /etc/sysconfig/iptables
systemctl restart iptables 重启之后还在
没有-t指定表,默认在filer表中添加一个自定义链
iptables -N custom
iptables -E custom ky30 custom为原链名,ky30为新名
iptables -I ky30 -p icmp -j ACCEPT
iptables -I INPUT -p icmp -j ky30:把ky30添加到系统的input链中
iptables -D INPUT 1
然后还要在自定义链中删除
iptables -x ky30
SNAT :源ip地址转换(内网到外网)
DNAT:目标地址转换(外网到内网)
内网到外网转换的是源,从外网到内网转换的是目的
客户端发起请求---> 网关服务器(地址转换)---->网关服务器----->web服务器
web服务器响应请求---->网关服务器----->网关服务器----->客户端
/etc/sysctl.conf中可以修改配置,内核参数永久生效
iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens33 -p --dport 80 -j 10 NAT --to 192.168.233.10:80
解释:
-t nat :指定表名
-d :指定目的ip
-p :指定tcp协议
--dport 80 :指定端口号
-j:控制条件
-j DNAT :控制条件做的目标地址转换
--to 192.168.233.10:80 :所有外部来的访问IP地址都变成11.0.0.11来访问内网,目标端口为80,协议是tcp,协议的流量转发到192.168.233.10:80的端口
tcpdump来实现linux抓包,自带的
sz target.cap
不指定抓包动态处理:
tcpdump tcp -i ens33 -s0 -w ./ens33.cap ./表示保存到当前位置