14- 端口与服务映射及安全扫描 🔍
前提条件 ✅
- 已完成 SSH 端口 2222 配置、fail2ban、AppArmor、nftables/ufw 防火墙
- 系统只暴露必要端口(当前仅 2222/tcp 允许入站)
- 以 ops 用户登录(具有 sudo 权限)
- 虚拟机环境:VMware Workstation Pro(建议桥接网络,便于从宿主机扫描)
详细步骤 🛠️
- 本地端口与服务自查
查看当前监听端口和服务映射:sudo ss -tulnjp # 显示监听端口 + 进程 PID/名称 sudo ss -tunap # 显示所有连接 + 进程 sudo lsof -i -P -n | grep LISTEN # 进程视角查看监听 netstat -tuln # 旧工具(Debian 仍可用,但 ss 更推荐)
预期输出示例(最小化系统):
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp LISTEN 0 128 0.0.0.0:2222 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
-
安装常用端口扫描工具
sudo apt update sudo apt install -y nmap net-tools -
本地扫描自身(快速自检)
sudo nmap -sT -O localhost # TCP 连接扫描 + OS 指纹 sudo nmap -sS -p- localhost # SYN 半连接扫描全端口(需 root) sudo nmap -sV -p 1-65535 localhost # 服务版本探测 sudo nmap --script safe localhost # 运行安全脚本(无破坏性) -
从外部(宿主机)扫描虚拟机
在你的宿主机(Windows/Mac/Linux)安装 nmap 后执行:# 替换为实际虚拟机 IP nmap -sS -p 1-10000 192.168.1.100 nmap -sV -O 192.168.1.100 nmap -A 192.168.1.100 # 全面扫描(OS、服务、脚本) nmap --script vuln 192.168.1.100 # 漏洞脚本检测(需时间)
预期结果(安全系统): - 只显示 2222/tcp open ssh - 其他端口 filtered 或 closed
- 自动化定期端口扫描(生产监控基础)
创建简单脚本 /opt/security/port-scan.sh:sudo nano /opt/security/port-scan.sh
内容:
#!/bin/bash
LOGFILE="/var/log/port-scan.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$DATE] Starting port scan" >> $LOGFILE
nmap -sT -p- --open 192.168.1.100 >> $LOGFILE 2>&1
echo "[$DATE] Scan completed" >> $LOGFILE
echo "---------------------" >> $LOGFILE
赋予权限并测试:
sudo chmod +x /opt/security/port-scan.sh
sudo /opt/security/port-scan.sh
tail /var/log/port-scan.log
添加到 cron 每日运行:
sudo crontab -e
# 添加行:
0 3 * * * /opt/security/port-scan.sh
- 其他安全扫描工具推荐(可选安装)
sudo apt install -y lynis # 系统安全审计 sudo apt install -y nikto # Web 服务扫描(后续章节用) sudo lynis audit system # 运行一次完整审计
实践任务 🎯
- 用
ss -tulnjp确认当前系统只监听 2222/tcp 和其他预期端口 - 在虚拟机内运行
nmap -sV localhost,记录输出 - 从宿主机用 nmap 扫描虚拟机 IP,确认只有 2222 端口开放
- 创建 port-scan.sh 脚本并手动运行一次,查看日志是否有意外开放端口
自测问题 ❓
ss -tuln和nmap localhost的输出区别是什么?- 为什么生产环境中推荐使用
-sS(SYN scan)而非-sT(TCP connect)? - 如果 nmap 显示某个端口 "filtered" 而非 "closed",代表什么情况?
- 如何快速判断系统是否意外暴露了不该开的端口?
总结 📌
定期端口扫描是发现配置漂移、未授权服务暴露的第一道警戒线。
结合防火墙“默认拒绝 + 只开必要端口”原则,通过 nmap 自检 + 外部验证 + 自动化日志,形成闭环安全监控。
后续业务服务章节中,每次新增服务后都应立即扫描验证端口暴露情况。