一. 网络基础
OSI七层网络模型
应用层 网络服务与最终用户的一个接口
表示层 数据的表示、安全、压缩
会话层 建立、管理、终止会话
传输层 定义传输层的协议端口号,以及流控和差错校验
网络层 进行逻辑地址寻址,实现不同网络之间的路径选择
数据链路层 建立逻辑连接、进行硬件地址寻址、差错校验
物理层 建立、维护、断开物理连接
二. TCP/IP协议基础
三. iptables基础原理
Linux防火墙概述
Linux系统的防火墙功能是由内核实现的
- 2.0版本的内核中, 包过滤机制是ipfw, 管理工具是ipfwadm
- 2.2版本的内核中, 包过滤机制是ipchain, 管理工具是ipchains
- 2.0版本的内核中, 包过滤机制是netfilter, 管理工具是iptables
netfilter
- 位于Linux内核中的包过滤防火墙功能体系
- 称为Linux防火墙的"内核态"
iptables
- 位于/sbin/iptables, 是用来管理防火墙的命令行工具
- 为防火墙体系提供过滤规则/策略, 决定如何过滤或处理到达防火墙主机的数据包
- 称为Linux防火墙的"用户态"
- 习惯上, 以上两种称呼都可以代表Linux防火墙
iptables的四表五链
规则链
规则链
- 规则的作用在于对数据包进行过滤或处理, 根据处理时机的同, 各种规则被组织在不同的“链中”
- 规则链是防火墙规则/策略的集合
默认的5种规则链
- INPUT 处理入站数据包
- OUTPUT 处理出站数据包
- FORWARD 处理转发数据包
- PREROUTING 选择路由前处理数据包
- POSTROUTING 选择路由后处理数据包
规则表
规则表
- 具有某一类相似用途的防火墙规则, 按照不同处理时机区分到不同的规则链以后, 被归置到不同的"表"中
- 规则表是规则链的集合
默认的4个规则表
- raw表 确定是否对该数据包进行状态跟踪
- mangle表 为数据包设置标记
- nat表 修改数据包中的源、目的IP地址或端口
- filter表 确定是否放行该数据包(过滤)
四. iptables常见命令
iptables命令的语法格式
- iptables [-t 表名] 管理选项 [链名] 条件匹配 -j 执行动作
默认原则
- 不指定表名时, 默认表示filter表
- 不指定链名时, 默认表示表内所有链
实例1
本机ip为 192.168.184.10
现在想禁止ip为 192.168.184.20 的机器通过 ssh 连接本机
步骤如下:
iptables -h // 可以先看看iptables的用法
iptables -t filter -A INPUT -s 192.168.184.20 -p tcp --dport 22 -j DROP
1. 在filter表 INPUT链上 加规则(-A增加 -D删除)
2. -p 指定协议 -dport 在哪个端口
3. -j DROP 丢弃/拒绝
iptables -L -n
-L list
-n 显示详细信息
得到结果如下 :
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 192.168.184.20 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
实例2
本机ip 192.168.184.30
想要 禁止ip为 192.168.184.10 的机器 访问其web服务 即禁止访问80端口
命令如下
iptables -A INPUT -s 192.168.184.10 -p tcp --dport 80 -j DROP
iptables -L -n
结果如下
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 192.168.184.10 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
测试
在ip为 192.168.184.10的主机中 输入 curl http://192.168.184.30:80
发现无法访问