[网络安全学习篇31]:Linux 防火墙 iptables 中 filter(包过滤防火墙)和 nat(路由转换)详解

目录

 

防火墙iptables

filter

filter的3条链

filter规则写入

iptables的基本语法

注意事项:

数据包的基本控制类型

写入规则

添加新的规则

查看规则列表

删除、清空规则

匹配条件

导出备份规则

nat

SNAT模式(源地址转换)

DNAT模式(目标地址转换)


防火墙iptables

iptables 工具

4个功能(表):

  1. raw    不常配置
  2. mangle    不常配置
  3. nat
  4. 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的基本语法

注意事项:

  1. 不指定表名时,默认指向filter表
  2. 不指定链名时,默认表内所有链
  3. 除非设置链的默认策略,负责必须指定匹配条件
  4. 选项、链名、控制类型使用大小字母,其余均为小写

数据包的基本控制类型

  • 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端口


参考文献:

千峰网络安全视频笔记:https://www.bilibili.com/video/BV1i7411G7vm?p=152

发布了58 篇原创文章 · 获赞 28 · 访问量 3713

猜你喜欢

转载自blog.csdn.net/weixin_43252204/article/details/105546187
今日推荐