一、概述
防火墙,主要作用是对数据包的过滤,由内核态与用户态组成。
内核态:属于内核的一部分,由数据包过滤表组成,是控制防火墙的内核程序
用户态:用户能操作的程序,通过编写四表五链的规则传递给内核态,依次实现自定义过滤功能
二、iptables(Centos5/6防火墙)
2.1 内核态
2.1.1 规则匹配顺序
- 主机型防火墙
- 入站数据:PREROUTING --> INGPUT --> 应用程序
- 出站数据:应用程序 --> OUTPUT --> POSTROUTING
- 网络型防火墙
- 转发数据:PREROUTING --> FORWARD --> POSTROUTING
- 示意图(待更新)
2.2 用户态
2.2.1 五链
链名 | 作用范围 |
INPUT | 入站数据包 |
OUTPUT | 出站数据包 |
FORWARD | 转发数据包 |
PREROUTING | 路由前目的IP地址转换 |
POSTROUTING | 路由后源IP地址转换 |
2.2.2 四表
表名 | 作用 | 包含链 |
raw | 对数据状态进行跟踪 | OUTPUT ; PREROUTING |
mangle | 修改数据包内容 | INPUT ; OUTPUT ; FORWARD ; PREROUTING ; POSTROUTING |
nat | 对IP地址进行转换 | OUTPUT ; PREROUTING ; POSTROUTING |
filter | 对数据内容进行过滤 | INPUT ; OUTPUT ; FORWARD |
三、命令
3.1 修改链规则(语法)
- iptables -t 表名 选项 链名 匹配 [-j 控制类型]
3.1.1 选项
选项 | 含义 |
-A | 指定连的下方追加规则 |
-I | 指定链的上方插入规则 |
-R | 修改、替换指定链中的某一条规则 |
-P | 设置指定链的默认规则 |
-D | 删除指定连,可指定规则号或者具体内容 |
-F | 清空指定链中的所有规则 |
-L | 列出指定链中的所有规则,一般与-n搭配 |
-n | 使用数字形式显示结果,例如IP地址 |
-v | 显示链的详细信息 |
–line-numbers | 查看规则时显示序号 |
3.1.2 匹配
- 条件匹配
条件匹配 | 作用 |
-p | 指定协议 |
-s | 指定源IP地址 |
-d | 指定目标IP地址 |
-i | 指定入站网卡 |
-o | 指定出站网卡 |
! 条件 | 条件取反 |
–sport | 指定源端口 |
–dport | 指定目的端口 |
- 类型匹配
协议类型 | 可限制类型 |
–icmp-type | 8(请求) | 0(回显) | 3(不可达) |
–tcp-flags | SYN | FIN | RST | PSH | URG |
- 状态匹配:-m --state --状态
状态 | 含义 |
NEW | 第一个建立链接的包 |
ESTABLISHED | 已连接状态的包 |
RELATED | 已建立链接的状态下发起新的链接 |
INVALID | 无效封包 |
3.1.3 控制类型
类型 | 作用 |
ACCEPT | 允许数据通过 |
DRPO | 直接丢弃数据包,不予回应 |
REJECT | 拒绝数据包通过,给予回应 |
SANT | 修改源IP地址 |
DNAT | 修改目的IP地址 |
MASQUERADE | 伪装公网IP地址 |
LOG | 记录日志信息 |
3.2 修改链规则(示例)(待更新)
四、端口
4.1 端口范围
范围 | 含义 |
1000 | 匹配端口为1000的数据包 |
1000:3000 | 匹配端口在1000-3000区间的数据包 |
1000: | 匹配端口在1000及以上的数据包 |
:3000 | 匹配端口在3000及以下的数据包 |
4.2 常用端口
4.2.1 硬件端口
- 路由器端口
- 交换机端口
4.2.2 协议端口
端口号 | 端口协议 | 作用 |
21 | FTP | 上传下载文件 |
22 | SSH | 远程连接 |
23 | Telent | 远程登录 |
25 | SMTP | 发送邮件 |
80 | HTTP | 网页浏览 |
443 | HTTPS | 加密的网页浏览 |
1024 | Reserved | 动态端口的开始,为程序分配闲置端口 |
1080 | SOCKS | 允许内部数据通过防火墙访问外部 |
2049 | NFS | NFS服务 |
4000 | QQ客户端 | 腾讯QQ端口 |
8080 | 代理端口 | WWW代理开放端口 |
五、思维导图