3-linux防火墙配置教程之访问外网web实验 (3例诺如病毒应多少小时报告,no_ai_sug:false}],slid:109146163648027,queryid:0x2a763449250161b)

教程大全 2026-01-08 00:49:22 浏览

1、本次实验在“linux基础网络搭建实验”的基础上,在外网虚拟机上搭建web服务,并分别配置外网和网关的防火墙规则,使内网能够访问web服务


Linux下DMZ配置

Linux下DMZ构建保护网络最常见的方法就是使用防火墙。 防火墙作为网络的第一道防线,通常放置在外网和需要保护的网络之间。 最简单的情况是直接将防火墙放置在外网和企业网络之间,所有流入企业网络的数据流量都将通过防火墙,使企业的所有客户机及服务器都处于防火墙的保护下。 这对于一些中小企业来说是简单易行的,而且这种解决方法在某些情况下也表现不错。 然而这种结构毕竟比较简单。 企业中有许多服务器、客户机等资源需要保护,不同的资源对安全强度的要求也不同。 不能用对待客户机的安全级别来对待服务器,这样服务器将会很危险;同样,也不能用对待服务器的安全级别来对待客户机,这样用户会感觉很不方便。 针对不同资源提供不同安全级别的保护,可以考虑构建一个叫做“Demilitarized Zone”(DMZ)的区域。 DMZ可以理解为一个不同于外网或内网的特殊网络区域。 DMZ内通常放置一些不含机密信息的公用服务器,比如Web、Mail、FTP等。 这样来自外网的访问者可以访问DMZ中的服务,但不可能接触到存放在内网中的公司机密或私人信息等。 即使DMZ中服务器受到破坏,也不会对内网中的机密信息造成影响。 许多防火墙产品都提供了DMZ的接口(一般老的防火墙都只有两个口,即做不了DMZ,现在的防火墙一般都有三个或四个接口)。 硬件防火墙由于使用专门的硬件芯片,所以在性能和流量上有绝对的优势。 软件防火墙的性价比非常好,一般企业使用起来效果不错。 如果使用Linux防火墙,其成本将更低。 这里将介绍的是在Linux防火墙上划分DMZ区域的方法。 构建DMZ的策略 Linux从2.4内核开始,正式使用iptables来代替以前的ipfwadm和ipchains,实现管理Linux的包过滤功能。 Linux的包过滤通过一个叫netfilter的内核部件来实现。 netfilter内建了三个表,其中默认表Filter中又包括3个规则链,分别是负责外界流入网络接口的数据过滤的INPUT链、负责对网络接口输出的数据进行过滤的OUTPUT链,以及负责在网络接口之间转发数据过滤的FORWARD链。 要构建一个带DMZ的防火墙,需要利用对这些链的设定完成。 首先要对从连接外部网络的网卡(eth0)上流入的数据进行判断,这是在INPUT链上完成。 如果数据的目标地址属于DMZ网段,就要将数据转发到连接DMZ网络的网卡(eth1)上;如果是内部网络的地址,就要将数据转发到连接内部网络的网卡(eth2)上。 表1显示了各个网络之间的访问关系。 表1 网络间访问关系表 内网 外网 DMZ 内网/YY 外网N/Y DMZ NN/ 根据表1,可以明确以下六条访问控制策略。 1.内网可以访问外网内网的用户显然需要自由地访问外网。 在这一策略中,防火墙需要进行源地址转换。 2.内网可以访问DMZ此策略是为了方便内网用户使用和管理DMZ中的服务器。 3.外网不能访问内网很显然,内网中存放的是公司内部数据,这些数据不允许外网的用户进行访问。 4.外网可以访问DMZDMZ中的服务器本身就是要给外界提供服务的,所以外网必须可以访问DMZ。 同时,外网访问DMZ需要由防火墙完成对外地址到服务器实际地址的转换。 不能访问内网很明显,如果违背此策略,则当入侵者攻陷DMZ时,就可以进一步进攻到内网的重要数据。 不能访问外网此条策略也有例外,比如DMZ中放置邮件服务器时,就需要访问外网,否则将不能正常工作。 DMZ的实现 根据以上访问控制策略可以设定Linux防火墙的过滤规则。 下面将在一个虚构的网络环境中,探讨如何根据以上六条访问控制策略建立相应的防火墙过滤规则。 这里的讨论和具体应用会有所区别,不过这种讨论将有助于实际应用。 用户在实际应用时可根据具体的情况进行设置。 该虚拟环境的网络拓扑如图1。 图1 DMZ网络拓扑图如图1所示,路由器连接Internet和防火墙。 作为防火墙的Linux服务器使用三块网卡:网卡eth0与路由器相连,网卡eth1与DMZ区的Hub相连,网卡eth2与内网Hub相连。 作为一个抽象的例子,我们用“[内网地址]”来代表“192.168.1.0/24”之类的具体数值。 同理还有“[外网地址]”和“[DMZ地址]”。 对于防火墙,原则之一就是默认禁止所有数据通信,然后再打开必要的通信。 所以在防火墙脚本的最初,需要清空系统原有的规则,然后将INPUT、OUTPUT、FORWARD的默认规则设置为丢弃所有数据包。 对应的防火墙脚本片段如下: # Flush out the tables and delete all user-defined chains/sbin/iptables -F/sbin/iptables -X/sbin/iptables -t nat -F/sbin/iptables -t nat -X# Drop every packet/sbin/iptables -P INPUT DROP/sbin/iptables -P OUTPUT DROP/sbin/iptables -P FORWARD DROP 接下来,逐一解释六种策略的实现。 1.内网可以访问外网对应的防火墙脚本片段如下:/sbin/iptables -t nat -A POSTROUTING -s [内网地址] -d [外网地址] -o eth0 -j SNAT --to [NAT的真实IP] 当数据从连接外网的eth0流出时,要将来自内网的数据包的源地址改成Internet上的真实IP,这样才能和外网的主机进行通信。 “[NAT的真实IP]”表示分配给NAT用户的真实IP,有几个就写几个,以空格分开,但至少要写一个。 2.内网可以访问DMZ对应的防火墙脚本片段如下:/sbin/iptables -A FORWARD -s [内网地址] -d [DMZ地址] -i eth2 -j ACCEPT以上命令允许所有来自内网、目的地为DMZ的数据包通过。 3.外网不能访问内网对应的防火墙脚本片段如下:/sbin/iptables -t nat -A PREROUTING -s [外网地址] -d [内网地址] -i eth0 -j DROP以上命令将来自外网、去往内网的数据包全部丢弃。 4.外网可以访问DMZ为了保护DMZ中的服务器,外网对DMZ的访问也要加以限制。 通常的思路是,只允许外网访问DMZ中服务器所提供的特定服务,比如HTTP。 对应的防火墙脚本片段如下:/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -d [分配给HTTP服务器的Internet上的真实IP] -s [外网地址] -i eth0 -j DNAT --to [HTTP服务器的实际IP]/sbin/iptables -A FORWARD -p tcp -s [外网地址] -d [HTTP服务器的实际IP] -i eth0 --dport 80 -j ACCEPT/sbin/iptables -A FORWARD -p tcp -d [外网地址] -s [HTTP服务器的实际IP] -i eth1 --sport 80 ! --syn -j ACCEPT/sbin/iptables -t nat -A PREROUTING -s [外网地址] -d [DMZ地址] -i eth0 -j DROP 该防火墙脚本片段将开放HTTP服务,使得只有访问DMZ中HTTP服务的数据包才能通过防火墙。 设置得当,Linux会能成为很好的防火墙。 需要补充的是,任何一种防火墙都只能提供有限的保护。 设置好防火墙不等于网络就是安全的,很多单位学校防火墙基本上是一个心理安慰的工具,连基本的策略都是全部any,所以关键在于综合运用各种安全手段。

怎么搭建一个可以被外网访问的linux web服务器

首先需要将你的web服务器搭建好,然后需要做NAT,我这里有我的一个做NAT的笔记,分享给你

拓扑结构图:

要求:

1.内网能够ping通外网地址,并且成功访问外网中的web服务;

2.外网能够访问内网的ftp服务。

步骤:

一:内网服务器配置

1.在内网中设置好ip地址,网关和DNS均为NAT服务器内网口地址,并搭建好ftp服务,此处略

二:NAT服务器配置

1.在NAT只能中添加一块网卡作为 外网卡,并设置好ip地址

2.开启NAT服务器的路由功能

[root@c2 ~]# vi /etc/

_forward = 1 //将0改为1

[root@c2 ~]# sysctl -p //永久生效

3.配置防火墙(必须按照以下循序配置,否则配置完成后不能拼通外网,需配置第二次)

#iptables-X

#iptables-t nat -X

#iptables --flush

#iptables -t nat --flush

//以上为重置链表的命令

#iptables-t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 202.10.10.12

//这条命令是将内网192.168.1.0/24的源地址映射为NAT服务器的外网口地址,eth1为外网卡

# iptables -t nat -A PREROUTING -p tcp--dport 21 -j DNAT --to 192.168.1.11

# iptables -t nat -A PREROUTING -p tcp--dport 20 -j DNAT --to 192.168.1.11

//这两条命令是发布内务的ftp服务

或者:

# iptables -t nat -A PREROUTING -p tcp -d 202.10.10.12--dport 21 -j DNAT --to 192.168.1.11

# iptables -t nat -A PREROUTING -p tcp -d 202.10.10.12--dport 20 -j DNAT --to 192.168.1.11

#/etc/init.d/iptablessave

#/etc/init.d/iptablesrestart

验证:

内网访问外网的web服务:

[root@c1 ~]# curl 202.10.10.13

外网访问内网的ftp服务(外网的防火墙一定要关闭,否则ls查看目录时会出错,或者打开外网的20号端口新建链接的也可以)#

[root@c3 ~]# ftp 202.10.10.12

Connected to 202.10.10.12 (202.10.10.12).

220 (vsFTPd 2.2.2)

Name (202.10.10.12:root): ftp01

331 Please specify the password.

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

227 Entering Passive Mode(192,168,1,11,93,1).

ftp: connect: Network isunreachable //列不出内容是因为进入了passive模式

ftp>passive//用passive命令切换passive模式和active模式

Passivemode off.

防火墙

200 PORT command successful. Consider usingPASV.

150 Here comes the directory listing.

226 Directory send OK.

补充:

删除防火墙中配置的记录

[root@c2 ~]# iptables -t nat -L POSTROUTING -n --Line-number //列出记录和记录序号

[root@c2 ~]# iptables -t nat -D POSTROUTING1 //根据序号删除记录

你将内网的ftp服务换成web服务就可以了,主要是弄懂NAT的原理,将内部服务通过DNAT发布到外网

服务器防火墙打开外部电脑访问浏览器访问不了

服务器防火墙导致外部电脑浏览器无法访问的核心解决思路是:先排查防火墙对DNS解析、端口开放、网络规则的限制,再结合网络连通性、浏览器缓存等辅助验证,按「从基础到复杂」的顺序逐步定位问题。 一、防火墙相关核心排查(优先验证)1. 检查DNS解析规则• 防火墙可能拦截DNS请求(如UDP 53端口),导致外部电脑无法将域名转为IP地址。 验证方法:外部电脑ping目标服务器域名(如`ping `),若返回「未知主机」,需检查防火墙是否允许DNS流量。 解决:在防火墙中开放UDP 53端口,或允许指定DNS服务器(如8.8.8.8)的通信。 2. 确认Web服务端口开放• 浏览器默认通过TCP 80(HTTP)/443(HTTPS) 访问服务器,若防火墙未开放这两个端口,会直接阻断连接。 验证方法:外部电脑用`telnet 服务器IP 80`(Windows需开启Telnet客户端),若提示「连接失败」,则端口未开放。 解决:在防火墙规则中添加「允许外部IP访问TCP 80/443端口」的条目。 3. 检查网络区域与访问规则• 部分服务器防火墙(如Windows防火墙、Linux iptables)会按「网络区域」(如公共/私有网络)设置规则,若外部电脑属于「未授权区域」,会被拦截。 解决:将外部电脑IP添加到防火墙的「信任列表」,或调整规则允许跨区域访问。 二、辅助排查(排除其他干扰因素)1. 验证网络连通性• 先确认外部电脑与服务器的物理网络连通:用`ping 服务器IP`测试,若无法ping通,需检查路由器、交换机或ISP线路(与防火墙无关)。 2. 清除浏览器缓存与DNS缓存• 浏览器缓存或本地DNS缓存过期可能导致连接异常:• Windows:运行`ipconfig /flushdns`清除DNS缓存;• 浏览器:按`Ctrl+Shift+Del`清除缓存和Cookies,重启后重试。 3. 测试IP直接访问• 若域名访问失败,尝试用服务器IP直接访问(如``),若成功则说明是域名解析问题(需排查DNS服务器或防火墙DNS规则)。 三、进阶解决(复杂场景)1. 检查服务器端Web服务状态• 确认服务器上的Web服务(如Apache、Nginx、IIS)已启动:• Linux:`systemctl status nginx`;• Windows:打开「服务」管理器,检查IIS服务状态。 2. 排查NAT与端口映射(针对内网服务器)• 若服务器部署在内网(如企业局域网),需确认路由器/防火墙已做端口映射(将公网端口80/443映射到服务器内网IP的80/443端口)。 3. 查看防火墙日志定位问题• 开启防火墙日志(如Windows防火墙日志、iptables日志),查看是否有「DROP」(拦截)外部电脑IP的记录,针对性调整规则。 若以上步骤仍无法解决,建议联系服务器提供商或网络管理员,提供防火墙规则配置、外部电脑访问报错信息(如「无法解析域名」「连接超时」)进一步排查。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐