iptables实现网络防火墙功能,SNAT以及DNAT功能

本文涉及的产品
公网NAT网关,每月750个小时 15CU
云防火墙,500元 1000GB
简介:

iptables实现网络防火墙功能,SNAT以及DNAT功能

一、网络防火墙的实现

wKioL1k_lGOziwWSAACYa8FwcdU334.jpg

	1.环境准备:
虚拟机vmware workstation 11
系统CentOS 7.3
               软件包安装:yum install httpd vsftpd tcpdump
2.前提条件
2.1各主机正确设置IP地址/子网掩码
 参考设置:
主机A 网卡ens33:10.0.0.110/24 内网客户端
主机B 网卡ens33:10.0.0.111/24 ens37:172.16.252.52/24 网关服务器
主机C 网卡ens33:172.16.254.52/24 外网服务端
2.2各主机正确设置网关地址
 参考设置:
主机A添加默认路由信息
route add default gw 10.0.0.111
主机C添加路由信息
route add -net 10.0.0.0/24 gw 172.16.252.52
3.推荐实现步骤
开启路由转发功能
在filter表中的FORWARD链中实现
4.要注意的问题
1.请求和响应均会经过FORWARD链,要注意规则的方向性
2.如果要启用conntrack机制,建议双方向的状态为ESTABLISHED的报文直接放行通过
3.配置规则时可使用tcpdump抓包分析数据报文
 

步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1.主机A添加默认路由信息
     route add default gw 10.0.0.111 
     route -n
2.主机B开启核心转发功能
     sysctl -w net.ipv4.ip_forward=1
3.tcpdump抓包测试数据
     主机A: ping  172.16.254.52 
     主机B抓包:tcpdump -i ens33 -nn icmp
     测试结果:有10.0.0.110到172.16.254.52的请求报文信息,但没有回应报文信息
4.主机C使用tcpdump抓包测试数据
     tcpdump -i ens33 -nn icmp
     测试结果:有回应报文信息,但回应报文信息发往给其他主机,因此要设定网关信息
5.主机C添加路由信息
     route add -net 10.0.0.0 /24  gw 172.16.252.52
     route -n
6.主机A  ping 请求测试
     ping  172.16.254.52
     测试结果: ping
7.主机C启动httpd服务
         systemctl start httpd.service
8.主机A访问主机C的web页面
         curl http: //172 .16.254.52  #此时应该正常显式页面内容

在上面的基础上搭建网络防火墙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
方式一:
9.拒绝所有转发服务
         iptables -A FORWARD -j REJECT
10.添加链规则:允许本地主机A访问外网主机C的80端口的服务
         iptables -I FORWARD -s 10.0.0.0 /24  -p tcp --dport 80 -j ACCEPT
11.添加链规则:允许外网主机C的80端口http服务响应本机
         iptables -I FORWARD 2 -d 10.0.0.0 /24  -p tcp --sport 80 -j ACCEPT
12.主机A测试能否访问主机C的web页面
         curl http: //172 .16.254.52 #此时应该正常显式页面内容
方式二:
9.拒绝所有转发服务
         iptables -A FORWARD -j REJECT
10.放行所有建立连接的数据报文
         iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT
11.新建一条链规则允许本地主机A访问外网主机C
         iptables -I FORWARD 2 -s 10.0.0.0 /24  -m state --state NEW -j ACCEPT
12.主机A测试
         curl http: //172 .16.254.52  #此时应该正常显式页面内容
13.添加链规则:允许外网主机C访问本地主机A的80端口的http服务
         iptables -I FORWARD 3 -d 10.0.0.110 -p tcp --dport 80 -m state --state NEW -j ACCEPT 
14.主机C测试
         curl http: //10 .0.0.110  #此时应该正常显式页面内容
15.添加链规则:允许本机主机A开放更多端口的服务
         iptables -R FORWARD 3 -d 10.0.0.110 -p tcp -m multiport --dport 21:23,80 -m state --state NEW -j ACCEPT
16.加载FTP模块(两种方式)
         1.modprobe nf_conntrack_ftp
         2. vi  /etc/sysconfig/iptables-config 
         IPTABLES_MODULES= "nf_conntrack_ftp"
17.建立FTP访问链规则,开放FTP被动模式
         iptables -A FORWARD -d 10.0.0.110 -p tcp -m state --state RELATED -j ACCEPT
18.主机C测试
         lftp 10.0.0.110
         ssh  root@10.0.0.110
         curl http: //10 .0.0.110  #此时测试应该都能正常获取信息

二、SNAT转发功能实现

wKiom1k_lK-AEjZCAACgLTy0RV0669.jpg

	前提条件
各主机正确设置IP地址/子网掩码
 参考设置:
主机A 网卡ens33:10.0.0.110/24 内网客户端
主机B 网卡ens33:10.0.0.111/24 ens37:172.16.252.52/24 网关服务器
主机C 网卡ens33:172.16.254.52/24 外网服务器
各主机正确设置网关地址
 参考设置:
主机A添加默认路由信息
route add default gw 10.0.0.111
主机C添加路由信息
route add -net 10.0.0.0/24 gw 172.16.252.52
推荐实现步骤
1. 开启网关主机的路由转发功能
主机B开启核心转发功能
sysctl -w net.ipv4.ip_forward=1
2. 添加使用SNAT策略的防火墙规则
规则示例
iptables -t nat -I POSTROUTING -j SNAT --to-source 172.16.252.52

3.验证SNAT结果
主机A curl http://172.16.254.52
主机C tail -f /var/log/httpd/access_log #查看到的ip地址应该为主机B的公网地址

三、DNAT转发功能的实现

wKioL1k_lM7wsB9_AACHGqWj7Gc415.jpg


         前提条件
各主机正确设置IP地址/子网掩码
 参考设置:
主机A 网卡ens33:10.0.0.110/24 内网服务器
主机B 网卡ens33:10.0.0.111/24 ens37:172.16.252.52/24,网关服务器
主机C 网卡ens33:172.16.254.52/24 外网客户端
各主机正确设置网关地址
 参考设置:
主机A添加默认路由信息
route add default gw 10.0.0.111
主机C添加路由信息
route add -net 10.0.0.0/24 gw 172.16.252.52
推荐实现步骤
1. 开启网关主机的路由转发功能
主机B开启核心转发功能
sysctl -w net.ipv4.ip_forward=1
2. 添加使用SNAT策略的防火墙规则
规则示例
iptables -t nat -I PREROUTING  -d 172.16.252.52 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.110
3.验证DNAT结果(主机C访问主机B的公网地址显式的内应该为主机A的web内容)
主机C curl http://172.16.252.52
主机A tail -f /var/log/httpd/access_log #查看到的ip地址应该为外网主机C的地址

 



本文转自 PowerMichael 51CTO博客,原文链接:http://blog.51cto.com/huwho/1934983,如需转载请自行联系原作者

相关文章
|
7天前
|
Kubernetes 安全 Devops
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
29 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
|
25天前
|
机器学习/深度学习 运维 安全
图神经网络在欺诈检测与蛋白质功能预测中的应用概述
金融交易网络与蛋白质结构的共同特点是它们无法通过简单的欧几里得空间模型来准确描述,而是需要复杂的图结构来捕捉实体间的交互模式。传统深度学习方法在处理这类数据时效果不佳,图神经网络(GNNs)因此成为解决此类问题的关键技术。GNNs通过消息传递机制,能有效提取图结构中的深层特征,适用于欺诈检测和蛋白质功能预测等复杂网络建模任务。
52 2
图神经网络在欺诈检测与蛋白质功能预测中的应用概述
|
17天前
|
存储 安全 算法
揭秘网络安全的盾牌与矛:漏洞防护与加密技术的较量
在数字化时代的棋局中,网络安全是每个参与者必须面对的挑战。本文将深入探讨网络安全中的两个关键角色——漏洞与加密技术。通过分析最新的安全漏洞案例,我们揭示网络攻击者如何利用这些漏洞进行破坏。同时,我们将展示加密技术如何成为保护数据不被窃取的强大盾牌。文章还将讨论提升个人和企业的安全意识的重要性,并通过实际的代码示例,展示如何在实践中应用这些知识来加强我们的网络防线。
|
17天前
|
SQL 安全 算法
网络安全的盾牌:漏洞防护与加密技术的融合之道
在数字化浪潮中,网络安全成为维护信息完整性、保障个人隐私的关键。本文深入探讨网络漏洞的产生机理和防御策略,揭示加密技术的核心原理及其在信息安全中的重要角色。通过分析安全意识的培养方法,文章旨在提升大众对网络安全的认知水平,促进一个更加安全的网络环境。
|
23天前
|
安全 网络安全 数据安全/隐私保护
利用Docker的网络安全功能来保护容器化应用
通过综合运用这些 Docker 网络安全功能和策略,可以有效地保护容器化应用,降低安全风险,确保应用在安全的环境中运行。同时,随着安全威胁的不断变化,还需要持续关注和研究新的网络安全技术和方法,不断完善和强化网络安全保护措施,以适应日益复杂的安全挑战。
42 5
|
24天前
|
SQL 运维 安全
网络安全的护城河:漏洞防护、加密技术与安全意识
在数字时代的浪潮中,网络安全成为了我们每个人都无法回避的话题。本文将深入浅出地探讨网络安全中的几个关键要素——漏洞防护、加密技术和安全意识,并通过实际案例和代码示例,揭示它们如何共同构建起保护信息安全的坚固防线。无论你是IT专业人士还是对网络安全感兴趣的普通用户,这篇文章都将提供给你宝贵的知识和见解。
61 5
|
22天前
|
存储 监控 数据挖掘
计算机网络的功能
计算机网络支持信息交换、资源共享、分布式处理、可靠性增强及集中管理。信息交换涵盖多种媒体形式,促进远程协作;资源共享降低用户成本,提高效率;分布式处理提升计算能力;冗余机制保障系统稳定;集中管理简化网络维护,确保安全运行。
30 2
|
1月前
|
负载均衡 安全 网络安全
|
25天前
|
SQL 人工智能 安全
网络安全的盾牌:漏洞防护与加密技术解析
在数字时代的浪潮中,网络安全和信息安全成为了维护社会稳定和保护个人隐私的关键。本文将深入探讨网络安全中的常见漏洞、先进的加密技术以及提升安全意识的重要性。通过分析网络攻击的手法,揭示防御策略的构建过程,并分享实用的代码示例,旨在为读者提供一套全面的网络安全知识体系,以增强个人和组织在网络空间的防御能力。