引言:我的系列博客[网络安全学习篇]上线了,小编也是初次创作博客,经验不足;对千峰网络信息安全开源的视频公开课程的学习整理的笔记整理的也比较粗糙,其实看到目录有300多集的时候,讲道理,有点怂了,所以我就想到了通过写博客(课程笔记)的形式去学习它,虽然写博客会让我多花几倍的时间去学习它,但是当我完成一篇博客所获得的成就感和你们对于我的认同感,让我很满足,能够鼓励我一天天的坚持下去,也希望和我一起学习本期视频的"同道"们也能给一直坚持下去。我们大家一起加油。由于作者本身也是网络信息安全小白,大部分知识点都是初次接触,出现对其理解不深入,不完整,甚至也会出现错误有问题的地方,希望大家谅解、留言提出指正,同时也欢迎大家来找我一起交流学习!!!
往期博客:
第一阶段:
[网络安全学习篇1]:windowsxp、windows2003、windows7、windows2008系统部署(千峰网络安全视频笔记)
[网络安全学习篇24]:漏洞与木马(千峰网络安全视频笔记 p117-p118)
第二阶段:
[网络安全学习篇26]:Linux下的命令帮助、压缩、vim、软件安装的学习
[网络安全学习篇27]:Linux操作系统的用户和组、文件及目录权限(千峰网络安全视频笔记 p134-p139)
[网络安全学习篇28]:网络地址的配置 日志文件的管理、备份及日志服务器的搭建
[网路安全学习篇30]:Nginx和Tomcat服务的搭建、Nginx+Tomcat负载均衡的实现
[网络安全学习篇31]:Linux 防火墙 iptables 中 filter(包过滤防火墙)和 nat(路由转换)详解(本篇)
下期博文:
目录
防火墙iptables
iptables 工具
4个功能(表):
- raw 不常配置
- mangle 不常配置
- nat
- filter 过滤
filter
包过滤防火墙
查看filter的详细规则
- iptables -t filter -nvL
filter的3条链
每个表都有专门写规则的地方(链)
INPUT 入站链
注:规则是从上向下逐条进行匹配。
FORWARD 转发规则链
(当源地址192.168.1.1 以及目标地址172.16.1.20 都不是本机)
对iptables -t filter -nvl
- watch -n1 iptables -t filter -nvl
OUTPUT 出站链
filter规则写入
格式
- iptables -t filter -I INPUT -p tcp --dport 90 -j ACCEPT
查看filter规则表:
这样,我们就可以在外部访问这台服务器的网站了。
iptables的基本语法
注意事项:
- 不指定表名时,默认指向filter表
- 不指定链名时,默认表内所有链
- 除非设置链的默认策略,负责必须指定匹配条件
- 选项、链名、控制类型使用大小字母,其余均为小写
数据包的基本控制类型
- ACCEPT 允许通过
- DOROP 直接丢弃,不给出任何提示
- REJECT 拒绝通过,必要时给出提示
- LOG 记录日志信息,然后传给下一条规则继续匹配
我们可以实际操作(icmp协议PING)看一下DOROP的REJECT的区别
REJECT
写入规则
- iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP
DROP
注:相同的规则最上面的生效
添加新的规则
- -A 在链的末尾追加一条规则
- -I 在链的开头(或指定序号)插入一条规则
例如:
查看规则列表
- -L 列出所有规则条目
- -n 数字的形式显示地址、端口信息
- -v 以更详细的方式显示规则信息
- -line-number 查看规则时,显示规则的序号
删除、清空规则
- -D 删除链内指定序号(或内容)的一条规则
- -F 清空所有的规则
删除EORWARD链中的序号2对应的规则
- iptables -D FORWARD 2
清空FORFARD链中所有的规则
- iptables -F FORWARD
当我们清空后,是不是规则就一直没有了呢
防火墙默认时保存其原来的配置的,只要重启iptables防火墙的服务,它之前的规则就又会出来了
- service iptables restart
指定默认策略
- -P
注:默认策略的选择只有DROP和ACCEPT
将FORWARD的默认策略改为DROP
iptables -P FORWARD DROP
匹配条件
常见的通用匹配条件
- 协议匹配 -p [协议名]
- 地址匹配 -s [源地址] -d [目的地址]
- 接口匹配 -i [入站网卡] 、-o [出站网卡]
常见的隐含匹配条件
- 端口匹配 --sport [源端口]、--dport [目的端口]
- TCP标记端口 --tcp-flags [检查范围] [被设置的标记]
- ICMP类型匹配 --icmp-type [ICMP类型]
例如:
ICMP类型 : 8 请求 0 回显 3 不可达
常见的显示匹配条件
- 多端口匹配 -m multiport -- sport [源端口列表]、-m multiport -- sport [目的端口列表]
- IP范围匹配 -m iprange --src-range [IP范围]
- MAC地址匹配 -m mac --mac-source [MAC地址]
导出备份规则
- iptables-save工具
- 可结合重定向输出保存到指定文件
将当前状态保存到一个桌面的文件中
导出:
- iptables-save > /root/Desktop/ipt.txt
导入:
- iptables-restore < /root/Desktop/ipt.txt
将当前状态保存为默认规则
- service iptables save
无论你重启多次,它也会一直存在生效
nat
网络地址转换
关于NAT桥接的详细信息,见我的博客:
[网络安全学习篇19]:NAT、动态路由及实验(千峰网络安全视频笔记 19 day)
SNAT模式(源地址转换)
实验
Linux网关服务器
查看nat表
- iptables -t nat -nvL
- iptables -t nat -A POSTROUTING -p tcp -o eth1 -s 192.168.1.0/24 -j SNAT --to-source 12.34.56.78
写入成功
配置FORWARD
清空FORWARD即可
- iptables -F FORWARD
PC访问成功
如果Linux网关服务器ip地址变换,
这里我们可以看到PC无法访问
写入新的规则
- iptables -t nat -A POSTROUTING -p tcp -o eth1 -s 192.168.1.0/24 -j MASQUERADE
写入成功
可以看到这里的-A没有生效
删除它上面的规则,使其生效
- iptables -t nat -D POSTROUTING 1
PC可以成功访问了
DNAT模式(目标地址转换)
实验
实验原理:
确认是外网的PC访问80带端口
如果不是,就将其扔给filter表的INPUT链
注:这里有个优先级的顺序,我们的nat表中的链的优先级是高于filterl表中的链
Linux网关服务器
设定路由前规则
- iptables -t nat -A PREROUTONG -i eth1 -d 12.34.56.80 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:8080
再结合前面一个实验我们配置好的路由后的规则
外网PC通过80端口成功访问内网服务器的8080端口
参考文献: