网络环境下Linux安全防护:nmap与防火墙的应用
在网络环境中,保障Linux系统的安全至关重要。本文将介绍如何使用nmap工具评估网络服务以及如何利用防火墙保护系统安全。
1. Linux服务限制的演变
最初,限制Linux系统上的服务意味着为每个物理服务器仅配置少数几个服务。后来,在物理主机上运行多个Linux虚拟机,能够在虚拟机上锁定小范围的服务。近年来,容器化应用使得每个物理主机可以运行更多独立且安全的服务。
2. 使用nmap评估网络服务访问
nmap安全扫描器是一个从网络角度审查网络服务的优秀工具。它在大多数Linux发行版的软件仓库中都可以找到,其官网(http://nmap.org )提供了丰富的信息。
2.1 安装nmap
- Fedora或RHEL系统 :使用具有root权限的yum或dnf命令进行安装。
# yum install nmap -y
- Ubuntu系统 :在命令行输入以下命令进行安装。
sudo apt-get install nmap
2.2 nmap的用途
nmap全称为Network Mapper,可用于安全审计和网络探索。通过nmap进行各种端口扫描,能够查看本地网络中所有服务器上运行的服务以及它们是否公开了可用性。
2.3 基本端口扫描类型
- TCP Connect端口扫描 :nmap尝试使用服务器上的传输控制协议(TCP)连接到端口。如果端口正在监听,连接尝试将成功。TCP是TCP/IP网络协议套件中的一种面向连接的协议,通过“三次握手”(SYN - SYN - ACK)来建立连接。
# nmap -sT 127.0.0.1
- UDP端口扫描 :nmap向被扫描系统的每个端口发送UDP数据包。UDP是TCP/IP网络协议套件中的另一种流行协议,它是无连接的。如果端口正在监听并且有使用UDP协议的服务,它将对扫描做出响应。
# nmap -sU 127.0.0.1
2.4 端口状态
nmap扫描报告中,端口有六种可能的状态:
| 状态 | 描述 |
| ---- | ---- |
| open | 端口开放,表明服务器上有服务在处理该端口的请求。 |
| closed | 端口可访问,但没有服务在监听。 |
| filtered | 这是保护不想被访问的端口的最佳状态,无法确定扫描的IP地址是否存在Linux服务器。 |
| unfiltered | nmap能看到端口,但无法确定其是开放还是关闭。 |
| open|filtered | nmap能看到端口,但无法确定其是开放还是被过滤。 |
| closed|filtered | nmap能看到端口,但无法确定其是关闭还是被过滤。 |
3. 使用nmap审计网络服务广告
为了确保正确区分对不同类型服务的访问,需要比较Linux服务器从内部和外部看起来的样子。如果发现某些本应保密的网络服务可以从外部访问,就需要采取措施阻止外部接口对它们的访问。
3.1 扫描位置建议
为了全面了解Linux服务器端口的可见性,需要从多个位置进行扫描:
- 在Linux服务器本身进行扫描。
- 从组织内部网络的另一台服务器进行扫描。
- 从组织外部网络进行扫描。
3.2 示例审计
假设有两台服务器:Host - A(Fedora系统)和Host - B(Linux Mint系统),且它们在同一网络中。
-
确定Host - A的IP地址
:
# ip addr show
- 从Host - A进行TCP Connect扫描 :
# nmap -sT 10.140.67.23
- 从Host - B进行TCP Connect扫描 :
$ nmap -sT 10.140.67.23
如果扫描提示主机似乎关闭,可使用 -PN 选项禁用ping探测再次扫描:
$ nmap -sT -PN 10.140.67.23
3.3 启动新服务并降低防火墙
在Host - A上启动sshd服务:
# systemctl start sshd.service
# systemctl status sshd.service
关闭Host - A的防火墙(Fedora 21或RHEL 7系统):
# systemctl stop firewalld.service
# systemctl status firewalld.service
再次从Host - B进行扫描,会发现更多信息,这体现了防火墙的重要性。
4. 防火墙相关知识
4.1 防火墙概述
计算机防火墙类似于建筑物中的防火墙,用于阻止恶意或不需要的数据进出计算机系统或网络。在Linux中,iptables是内核级的防火墙功能,常用于允许或阻止外部系统对本地系统上运行的服务的访问。
4.2 iptables规则
iptables允许创建规则,应用于每个尝试进入(INPUT)、离开(OUTPUT)或穿过系统(FORWARD)的数据包。除了基本的数据包进出控制,还可以实现以下功能:
- 阻止系统内的进程访问远程主机、地址范围或选定的服务。
- 将数据包从系统的一个网络接口转发到另一个,使计算机充当两个网络之间的路由器。
- 将目标端口的数据包重定向到本地系统的另一个端口或远程系统。
- 修改数据包头部信息(数据包篡改)以重定向数据包或标记其进行更多处理。
- 允许私有网络中的多台计算机通过单个公共IP地址与互联网通信(IP伪装)。
4.3 防火墙分类
防火墙可分为基于网络的防火墙和基于主机的防火墙。基于网络的防火墙用于保护整个网络或子网,例如工作场所的网络可以通过筛选路由器的防火墙进行保护。
graph LR
A[Linux系统] --> B[nmap扫描]
B --> C{端口状态}
C -->|open| D[有服务监听]
C -->|closed| E[无服务监听]
C -->|filtered| F[被防火墙保护]
A --> G[防火墙]
G --> H{规则类型}
H -->|INPUT| I[进入数据包控制]
H -->|OUTPUT| J[离开数据包控制]
H -->|FORWARD| K[转发数据包控制]
通过使用nmap工具评估网络服务以及合理配置防火墙规则,可以有效提高Linux系统在网络环境中的安全性。在进行nmap扫描时,要注意扫描范围仅限于自己的系统,避免引起不必要的误解。同时,在降低防火墙进行扫描后,务必及时恢复防火墙的开启状态。
网络环境下Linux安全防护:nmap与防火墙的应用
5. 早期Linux的访问控制:TCP 包装器
早期的 Linux 系统使用 TCP 包装器来允许或拒绝外部系统对 Linux 服务的访问。它通过
/etc/hosts.allow
和
/etc/hosts.deny
文件来实现,在这些文件中可以明确指定哪些服务对特定的外部系统名称和/或 IP 地址可用,哪些服务被阻止。不过,从 Fedora 28 和 RHEL 8 开始,这些发行版中已经移除了 TCP 包装器功能。但像 vsftpd 这样的一些服务,仍然会通过其他方式遵循这些配置文件。
6. 防火墙的工作原理与操作
在 Linux 系统中,防火墙的核心功能是对进出系统的网络数据包进行过滤,确保只有合法和安全的数据能够通过。下面我们详细介绍 iptables 这个常用的内核级防火墙工具及其操作方法。
6.1 iptables 规则的创建与应用
iptables 的主要工作方式是创建规则,这些规则会应用到每一个尝试进入(INPUT)、离开(OUTPUT)或穿过系统(FORWARD)的数据包。以下是一些常见的规则创建示例:
- 允许特定 IP 地址访问 SSH 服务
iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT
这条规则的含义是,将来自 IP 地址
192.168.1.100
的 TCP 协议且目标端口为 22(SSH 服务端口)的数据包添加到 INPUT 链中,并允许其通过。
- 拒绝所有外部主机对 FTP 服务的访问
iptables -A INPUT -p tcp --dport 21 -j DROP
此规则会将所有尝试访问本地 FTP 服务(端口 21)的外部数据包添加到 INPUT 链中,并直接丢弃。
6.2 iptables 规则的持久化
默认情况下,iptables 的规则在系统重启后会丢失。为了让规则在重启后仍然生效,需要将规则保存下来。不同的 Linux 发行版有不同的保存方法,以下是一些常见的示例:
- 在 CentOS/RHEL 系统上
service iptables save
这条命令会将当前的 iptables 规则保存到
/etc/sysconfig/iptables
文件中。
- 在 Ubuntu/Debian 系统上
iptables-save > /etc/iptables.rules
此命令将当前的 iptables 规则保存到
/etc/iptables.rules
文件中,然后可以通过以下命令在系统启动时加载规则:
iptables-restore < /etc/iptables.rules
7. 防火墙规则的优化与管理
随着系统的运行和网络环境的变化,防火墙规则可能会变得复杂和冗余。因此,定期对防火墙规则进行优化和管理是非常必要的。
7.1 规则的清理与整理
可以使用以下命令查看当前的 iptables 规则:
iptables -L -n -v
该命令会列出所有的规则,并显示详细的信息,包括规则的序号、匹配的数据包数量、字节数等。根据这些信息,可以删除那些不再需要的规则,例如:
iptables -D INPUT 3
这条命令会删除 INPUT 链中的第 3 条规则。
7.2 规则的分组与注释
为了方便管理和维护,可以将相关的规则分组,并为每个规则添加注释。例如:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT -m comment --comment "Allow HTTP traffic"
此规则允许 HTTP 流量通过,并添加了注释 “Allow HTTP traffic”,这样在查看规则时可以更清楚地了解每条规则的用途。
8. 网络数据包的基本概念
在深入理解防火墙的工作原理之前,我们需要了解网络数据包的基本概念。网络数据包是将数据分割成可传输的小块,在传输过程中,这些数据包会根据 OSI 模型添加额外的数据。这些额外的数据就像是给信件加上信封一样,其主要目的是确保数据包能够安全、完整地到达目的地。当数据包到达目的地后,这些额外的数据会被逐步剥离,就像打开信封并将信件交给上一层一样。
9. 不同类型防火墙的应用场景
防火墙可以根据其功能分为不同的类型,每种类型在保护服务器和网络安全方面都有其独特的作用。
| 防火墙类型 | 特点 | 应用场景 |
|---|---|---|
| 基于网络的防火墙 | 保护整个网络或子网,通常部署在网络边界 | 企业网络、数据中心等,防止外部网络的恶意攻击 |
| 基于主机的防火墙 | 保护单个主机,安装在每台服务器或客户端上 | 个人电脑、服务器等,对单个设备进行精细的访问控制 |
10. 总结与建议
通过使用 nmap 工具对网络服务进行评估,我们可以清晰地了解 Linux 服务器上运行的服务以及端口的开放情况。同时,合理配置防火墙规则可以有效地阻止恶意攻击,保护系统的安全。在实际操作中,需要注意以下几点:
- 在使用 nmap 进行扫描时,务必确保扫描范围仅限于自己的系统,避免对他人的系统进行未经授权的扫描,以免引起不必要的麻烦。
- 在进行防火墙规则配置时,要根据实际需求进行精细的设置,避免过度开放端口导致安全风险。
- 定期对防火墙规则进行检查和优化,确保规则的有效性和合理性。
- 如果在进行 nmap 扫描时降低了服务器的防火墙,扫描完成后一定要及时恢复防火墙的开启状态,以保障系统的安全。
graph LR
A[网络数据包] --> B{防火墙过滤}
B -->|允许| C[进入系统]
B -->|拒绝| D[丢弃数据包]
E[规则创建] --> F[iptables规则]
F --> G{规则类型}
G -->|INPUT| H[进入数据包控制]
G -->|OUTPUT| I[离开数据包控制]
G -->|FORWARD| J[转发数据包控制]
通过以上对 nmap 工具和防火墙的介绍和操作指南,希望能够帮助你更好地保护 Linux 系统在网络环境中的安全。不断学习和实践这些安全技术,将有助于你构建更加安全可靠的网络环境。
超级会员免费看
1283

被折叠的 条评论
为什么被折叠?



