梦见你的名字 发表于 2024-8-2 06:26:04

Linux防火墙2

一、SNAT和DNAT

   SNAT:让内网机器可以访问外网服务器
DNAT:  让外网机器可以访问内网服务器
1.1、SNAT原理与应用

SNAT 应用环境
局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由),私转公
SNAT原理:源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映射
SNAT转换前提条件:
1.局域网各主机已精确设置IP地址、子网掩码、默认网关地址
2.Linux网关开启IP路由转发 
   数据包从内网发送到公网时,SNAT会把数据包的源IP由私网IP转换成公网IP
当响应的数据包从公网发送到内网时,会把数据包的目的IP由公网IP转换为私网IP
 切记:私网地址永久不会出现在公网地址上
https://i-blog.csdnimg.cn/direct/c2b2e42b6cec43039b1ade397f591260.png 
私网->公网->公网
公网->公网->私网
P 地址范围子网掩码描述10.0.0.0 - 10.255.255.255/8 或 255.0.0.0A类私有网络地址172.16.0.0 - 172.31.255.255/12 或 255.255.0.0B类私有网络地址192.168.0.0 - 192.168.255.255/16 或 255.255.255.0C类私有网络地址 1.1.1、启用IP转发功能

linux体系本身是没有转发功能 只有路由发送数据 
在Linux体系中,命令 echo 1 > /proc/sys/net/ipv4/ip_forward 用于启用IP转发功能。


[*]/proc/sys/net/ipv4/ip_forward:这是一个特殊的虚拟文件,用于控制Linux内核的IPv4网络层是否应该转发数据包。当这个文件的值为1时,表现启用IP转发;当值为0时,表现禁用IP转发。
因此,当你执行 echo 1 > /proc/sys/net/ipv4/ip_forward 命令时,你现实上是在告诉Linux内核:“对于IPv4数据包,请允许它们被转发到其他网络接口
或者
sysctl -w net.ipv4.ip_forward=1 上面的命令的结果是暂时的,仅在当前会话中有效。一旦体系重启,这个设置将不会保留。要使这个设置永久生效,你必要在体系启动时主动执行这个命令,或者编辑网络配置文件(如/etc/sysctl.conf),在其中添加一行net.ipv4.ip_forward=1,然后运行sysctl -p来应用更改。
永久打开步骤如下:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1    #将此行写入配置文件
   
sysctl -p  #将取修改后的配置 注:另有一种方式静态路由,这个就比较麻烦

1.1.2、SNAT转换

SNAT转换1:固定的公网IP地址:
#配置SNAT策略,实现snat功能,将全部192.168.100.0这个网段的ip的源ip改为10.0.0.1
-o是出站网卡
iptables  -t  nat  -A  POSTROUTING  -s  192.168.100.0/24  -o ens33 -j  SNAT   --to 10.0.0.1
可换成单独IP                   出站                                                       外网网卡                    外网IP


iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10
                                    出站                                                   外网网卡                    外网IP或地址池

                                                
SNAT转换2:非固定的公网IP地址(共享动态IP地址):
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
                                                                                                             就是masquerade控制类型
小知识扩展:
一个IP地址做SNAT转换,一样平常可以让内网100到200台主机实现上网。
 

1.2、DNAT原理与应用:

DNAT应用环境
在Internet中发布位于局域网内的服务器,公转私
DNAT原理
目的地址(目标机,就是其他机)转换,根据指定条件修改数据包的目的IP地址,包管了内网服务器的安全,通常被叫做目的映射。

DNAT转换前提条件:
1.局域网的服务器可以大概访问Internet
2.网关的外网地址有精确的DNS解析记录
3. Linux网关开启IP路由转发

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

2.1.1、DNAT转换

DNAT转换1:发布内网的Web服务
#把从ens37进来的要访问web服务的数据包目的地址转换为192.168.100.13
iptables -t nat -A PREROUTING  -i  ens37  -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.100.13
或                                入站                                 公网IP                                  
内网服务器IP
iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.13
                                   入站                                   公网IP             端口                          
                          内网服务器IP
                           
回包
iptables -t nat -A POSTROUTING  -s 192.168.100.13 -o ens37 -j SNAT --to 10.0.0.1
                                                                      内网IP    出站外网网卡              外网地址

可以现场做个域名解析

1.3、实验

以下实验以snat为例:
示意图
https://i-blog.csdnimg.cn/direct/ae145864f8fc45139a10c016bc906175.png
需求:内网客户端可以访问公网网站
思绪:必要用防火墙做nat转换
内网用户客户端访问公网服务器
注意:网防火墙网关服务器必要关闭firewalld防火墙,公网服务器的iptables防火墙策略要干净(不能有拒绝,坑),selseinux都要关,内网windows客户端防火墙也要关。
   实验环境:
内网客户端(内网pcwin客户机):192.168.100.130
公网服务器(公网linux服务机):  12.0.0.100                 开启httpd服务
网防火墙网关服务器:12.0.0.1和 192.168.100.100

1.编辑的虚拟网络编辑
Vmnet1模式网段:192.168.100.0,Vmnet3模式网段:12.0.0.0
https://i-blog.csdnimg.cn/direct/bdb5dcc06dd3435a8258a5547ec672cb.png


2.现在配置防火墙网关署理机
添加两快网卡(两个网络适配器,cp内容),并设置
https://i-blog.csdnimg.cn/direct/a12147ca3d8a43b18ad8710ff314a24a.png
a.关闭firewalld防火墙,设为开机不自启
systemctl stop firewalld.service  
systemctl disable firewalld.service            
b.安装iptables,开启服务(可以提前下)
yum -y  install iptables iptables-services     
systemctl start iptables. Service 
c.为了不须要的麻烦,再关一下selinux
setenforce 0        

3.Linux网关开启IP路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
4.在linux网关服务器上做SNAT转换
iptables -F -t nat
iptables -nvL -t nat  查看
iptables -t nat -A POSTROUTING  -s 192.168.100.0/24 -o ens37 -j SNAT  --to 12.0.0.1
iptables -nvL -t nat  查看


5.配置公网服务器,修改网卡和网络适配器,为vm3,仅主机模式
https://i-blog.csdnimg.cn/direct/8d4ceb966ff0444e887caf055ed4df0f.png
vim /etc/sysconfig/network-scripts/ifcfg-ens33
https://i-blog.csdnimg.cn/direct/dd9a9cdb46eb445cb25839c262d51a6c.png

a.关闭防火墙firewalld selinux
b.提前下载开启httpd
systemctl restart httpd.service 
c.可以在防火墙网关署理机上curl  12.0.0.100 测试


6.配置内网客户端
https://i-blog.csdnimg.cn/direct/392b1ce795ad47d289f1650e5717c90b.png
访问
https://i-blog.csdnimg.cn/direct/0bb86629019d45eb8faedbf4569d045e.png

总结
https://i-blog.csdnimg.cn/direct/8d0e9eac6e964c87bc12d97992179a43.png








其他内容

开启路由转发功能
vim /etc/sysctl.conf  
net.ipv4.ip_forward=1
或配置内核参数开启路由转发,echo 1 > /proc/sys/net/ipv4/ip_forward为暂时配置

sysctl -p   从文件加载体系参数
配置防火墙策略(先清空nat表规则)
iptables -t nat -A PREROUTING -d 12.0.0.128 -i ens38 -j DNAT --to-destination 192.168.192.210
iptables -t nat -I POSTROUTING -s 192.168.192.0/24 -o ens38 -j SNAT --to-source 12.0.0.128
验证:内网客户端访问12.0.0.211
           公网客户端访问12.0.0.128
 

DNAT转换1:入站外网网卡外网IP到内网服务器IP
iptables -t nat -A PREROUTING -i ens37 -p tcp --dport 80 -j DNAT --to 192.168.100.13-192.168.100.20

                                                                            
DNAT转换2:发布时修改目标端口
发结构域网内部的OpenSSH服务器,外网主机需使用250端口进行连接

iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.100.13:22
                                                 入站外网网卡    外网IP           外网长途端口                                  内网IP和长途端口号


在外网环境中使用SSH测试
ssh -p 250 root@10.0.0.1  
yum -y install net-tools    #若没有ifconfig 命令可提前使用yum 进行安装
ifconfig ens33
iptables -nvL -t nat  查看
注意:使用DNAT时,同时另有配合SNAT使用,才气实现响应数据包的精确返回


1.4、防火墙规则备份和还原

主机型防火墙主要使用INPUT、OUTPUT链,设置规则时一样平常要具体的指定到端口
网络型防火墙主要使用FORWARD链,设置规则时很少去指定到端口,一样平常指定到IP地址或者到网段即可

防火墙规则的备份和还原
导出(备份)全部表的规则.
iptables-save > /opt/ipt.txt
导入(还原)规则
iptables-restore < /opt/ipt.txt
将iptables规则文件保存在/etc/sysconfig/iptables中,iptables服务启动时会主动还原规则
iptables-save > /etc/sysconfig/iptables
systemctl stop iptables      #停止iptables服务会清空掉全部表的规则
systemctl start iptables     #启动iptables服务会主动还原/etc/sysconfig/iptables中的规则

二、网络分析工具tcpdump

tcpdump tcp -i ens33 -t -s 0 -C 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i ens33 : 只抓经过接口ens33的包,i是入站
(3)-t : 不表现时间戳
(4)-s 0: 抓取数据包时默认抓取长度为68字节。加上-s   0后可以抓到完整的数据包
(5)-c 100 :只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Linux防火墙2