[网络服务]:Linux 防火墙 iptables 中 filter和 nat详解

[网络服务]:Linux 防火墙 iptables 中 filter和 nat详解
 
 
防火墙iptables
 
iptables 工具
 
4个功能(表):
 
  1.     raw    不常配置
  2.     mangle    不常配置
  3.     nat
  4.     filter   过滤
 
filter
 
包过滤防火墙
 
查看filter的详细规则
 
  •     iptables -t filter -nvL

image

 
filter的3条链
 
每个表都有专门写规则的地方(链)
 
INPUT 入站链
 

image

 
    注:规则是从上向下逐条进行匹配。
 
FORWARD   转发规则链
 
(当源地址192.168.1.1 以及目标地址172.16.1.20 都不是本机)
 

image

 
对iptables -t filter -nvl     
 
  •     watch -n1 iptables -t filter -nvl
 
 
OUTPUT 出站链
 
 
filter规则写入
 
格式
 
  •     iptables -t filter -I INPUT -p tcp --dport 90 -j ACCEPT
 

image

查看filter规则表:
 

image

 
这样,我们就可以在外部访问这台服务器的网站了。
 
iptables的基本语法
 

image

 
注意事项:
 
  1.     不指定表名时,默认指向filter表
  2.     不指定链名时,默认表内所有链
  3.     除非设置链的默认策略,负责必须指定匹配条件
  4.     选项、链名、控制类型使用大小字母,其余均为小写
 
数据包的基本控制类型
 
  •     ACCEPT 允许通过
  •     DOROP 直接丢弃,不给出任何提示
  •     REJECT 拒绝通过,必要时给出提示
  •     LOG 记录日志信息,然后传给下一条规则继续匹配
 
我们可以实际操作(icmp协议PING)看一下DOROP的REJECT的区别
 
REJECT
 

image

 
写入规则
 
  •     iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP
 
DROP
 

image

 
    注:相同的规则最上面的生效
 
添加新的规则
 
  •     -A   在链的末尾追加一条规则
  •     -I 在链的开头(或指定序号)插入一条规则
 
例如:
 

image

 
查看规则列表
 
  •     -L 列出所有规则条目
  •     -n 数字的形式显示地址、端口信息
  •     -v 以更详细的方式显示规则信息
  •     -line-number 查看规则时,显示规则的序号
 

image

 
删除、清空规则
 
  •     -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
 

image

 
匹配条件
 
常见的通用匹配条件
 
  •     协议匹配 -p [协议名]
  •     地址匹配 -s [源地址] -d [目的地址]
  •     接口匹配 -i [入站网卡] 、-o [出站网卡]
 
常见的隐含匹配条件
 
  •     端口匹配 --sport [源端口]、--dport [目的端口]
  •     TCP标记端口 --tcp-flags [检查范围] [被设置的标记]
  •     ICMP类型匹配 --icmp-type [ICMP类型]
 
例如:
 

image

 
    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
 
网络地址转换
 
SNAT模式(源地址转换)
 
实验
 

image

 
Linux网关服务器
 
查看nat表
 
  •     iptables -t nat -nvL

image

 
  •     iptables -t nat -A POSTROUTING -p tcp -o eth1 -s 192.168.1.0/24 -j SNAT --to-source 12.34.56.78
 
写入成功
 

image

 
配置FORWARD
 
清空FORWARD即可
 
  •     iptables -F FORWARD
 
PC访问成功
 

image

 
如果Linux网关服务器ip地址变换,这里我们可以看到PC无法访问
 

image

 
写入新的规则
 
  •     iptables -t nat -A POSTROUTING -p tcp -o eth1 -s 192.168.1.0/24 -j MASQUERADE
 
写入成功
 

image

 
可以看到这里的-A没有生效,删除它上面的规则,使其生效
 
  •     iptables -t nat -D POSTROUTING 1
 
PC可以成功访问了
 

image

 
DNAT模式(目标地址转换)
 
实验
 

image

 
实验原理:
 
确认是外网的PC访问80带端口
 

image

 
如果不是,就将其扔给filter表的INPUT链
 

image

 
注:这里有个优先级的顺序,我们的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端口
 

image

posted @ 2021-06-21 17:36  jpSpaceX  阅读(583)  评论(0编辑  收藏  举报