防火墙类别
硬件防火墙 软件防火墙
硬件防火墙
防火墙程序 在 芯片里 (由 硬件执行 减少 cpu 负担 使路由稳定)
各 网络安全厂商 开发产品
厂商:华为 思科 pix …
软件防火墙
linux 服务器:iptables | firewalld
windows 服务器: ISA
原理
根据 数据包结构、协议、端口、地址、状态、内容等 对 数据包进行 传输控制
数据包结构
Ip 包结构
端口号
在 计算机中 唯一的 标识一个进程
端口范围 : 0-65535
保留端口 : 范围 0-1024
部分 默认端口
http类程序 (apache nginx): 80 443
ftp: 20 21
mysql: 3306
windows 原创桌面: 3389
dns: 53
大部分 测试端口号 为 随机 且 变化
IP数据包结构
IP数据包整体
分为两部分 IP数据包首部 数据部
IP数据包首部
version
表示 当前数据包 ip类型: ipv4 ipv6
用 4 位 来表示 0100 0110
header length
表示 整个首部 内容 长度
用 4 位 来表示
type of service
简称 TOS
表示 数据包传输的数据类型 实现 让特定类型的数据 实现 优先传输 eg:优先传输语音数据
total length
表示 整个数据包长度 (首部长度+数据部分)
identifcation
用于标识 数据数据包切片属于 同一个数据包
flag
值:R DF MF
标识 是否允许 对 数据包 进行切片
fragement offset
设置 每个 数据包切片 大小
time to live
简称 TTL
表示 数据包 生存时间
数据包 每经过一个 路由器 ttl值 减1 当 ttl值为0 数据包 自动丢弃
protocol
通信双方 使用的协议类型
tcp udp icmp arp rarp
header checksum
首部校验和
通过 首部校验和 判断 数据包 在传输过程中 是否损坏
source ip address
源ip地址
destnation ip address
目的ip地址
数据部
data
传递的数据
如果 首部中协议类型为 tcp/udp 那么 数据部分还会有 tcp udp首部
TCP包结构
source port: 源端口
destnation port: 目的端口
sequence number: 请求序号
acknowledhment number: 应当序号
标识位
FIN
标志位 fin包 表示 请求断开链接
请求断开链接 fin值为1 否则 fin值为0
SYN
标志位 syn包 表示 请求建立链接包
请求建立链接包 syn值为1 否则 syn值为0
ACK
标志位 响应请求包 表示 数据包 对之前 对方发送 的数据包的 响应包
响应请求数据包 ack值为1 否则 ack值为0
TCP包结构
数据包 基本结构:
源ip 目的ip 源端口 目标端口 协议类型
通信过程
TCP/UDP 协议
TCP:传输控制协议 UDP:用户数据包协议
TCP协议 (Transmission Control Protocol)
通信双方 在 传输数据 之前 需 建立传输通道 之后 才能进行 数据传输
tcp通信过程中 每次发生数据包 需 确认 超时规定时间无确认 则 发送方认为数据包无传输成功 会自动重发
UDP协议 (User Datagram Protocol)
通信双方 无需 建立链接
适用于 端口分别 运行在 同一个设备上 多个 应用程序
TCP UDP 两者区别
tcp
传输数据 安全
需 建立 传输通道
确认 和 超时 重传机制
通信效率低
传输效率高 安全性较差
系统仅仅是 传输数据 无法确认对方是否收到数据
不需要建立 传输通道 也不需要进行 确认
tcp的三次握手过程
作用: 通信双方 需 建立一个 传输通道
过程:
第一步:客户端 向 服务器端 发生请求 请求建立建立链接
第二步:服务器端 给 客户端 进
第三步:链接建立完成
标志位的变化
三次握手 第一次数据包
syn=1 ack=0 fin=0
三次握手 第二次数据包
syn=1 ack=1 fin=0
三次握手 第三次数据包
syn=0 ack=1 fin=0
链接建立完成后 通信数据包
syn=0 ack=1 fin=0
tcp链接状态
listen 等待对方进行链接
syn_recv 收到建立链接请求
established 链接建立完成后 状态一直为established (三次握手完成)
iptables 防火墙
一个软件/硬件 在软/硬件中 可以提前定义一套规则 来判断数据包是否为合法包 如果为合法数据包 则允许通行 相反 如果为非法数据包 则禁止通行
防火墙类别
网络防火墙 包含 内部主机
主机防火墙 包含 当前安装防火墙 主机本身
iptables 既可以作 主机防火墙 也可以作 网络防火墙
nat 网络地址转换
两种地址转换
snat 源地址转换 修改数据包中 源ip
dnat 目的地址转换 修改数据包中 目的ip
iptables 中 nat表 可实现 修改数据包 源ip 和 目的ip 也可修改 数据包源目的端口
iptables基础理论
四表五链
四表:filter nat mangle raw
五链:INPUT OUTPUT FORWARD PREROUTING POSTROUTING
filter 表
filter表 ( 三链 )过滤 不合法 数据包
INPUT 进入数据包 进行检查
OUTPUT 发出数据包 进行检查
FORWARD 转发数据包 进行检查
nat表
nat表 ( 三链 )不能过滤 修改 数据包
PREROUNTING 判断 数据包 之前 需 检查的规则
POSTROUTING 判断 数据包 之后 需 检查的规则
OUTPUT 发出数据包 进行检查
mangle表
不能过滤 数据包 可以修改数据包 tos、ttl
INPUT
OUTPUT
FORWARD
POSTROUING
PREROUTING
raw表
不能过滤 数据包
OUTPUT
POSTROUTING
五链
INPUT:保存的是 处理进入本机 数据包 索要检查的规则
OUTPUT:保存的是 从本机向外发送 数据包 索要检查的规则
FORWARD:保存的是 需要从本机进行转发 数据包 索要检查的规则
PREROUTING:保存的是 在判断数据包目标 之前 需要检查的规则
POSTROUTING:保存的是 在判断数据包目标 之后 需要检查的规则
iptables 流程图
iptables应用
centos 6 and centos 7
centos 6 防火墙 只有 iptables
centos 7 支持iptable and firewalld 默认 firewalld
(iptable、firewalld 本质一样 使用 firewalld 需调用iptables )