在PVE上给EVE-NG开个后门:手把手配置SSH密钥登录与自定义Web端口(Ubuntu 22 LTS)

张开发
2026/4/7 1:18:15 15 分钟阅读

分享文章

在PVE上给EVE-NG开个后门:手把手配置SSH密钥登录与自定义Web端口(Ubuntu 22 LTS)
在PVE上为EVE-NG打造安全通道SSH密钥与自定义Web端口实战指南当你在Proxmox VEPVE虚拟化平台上部署了EVE-NG网络模拟环境后如何安全地从外部访问这个强大的网络实验室成为关键问题。本文将带你深入探索两种核心安全加固方案通过SSH密钥对彻底取代危险的密码登录以及灵活配置Apache将Web服务映射到非标准端口避免常见的端口冲突和安全扫描风险。1. 为什么需要安全加固你的EVE-NG环境EVE-NG作为一款强大的网络仿真平台默认安装配置往往只考虑了基础功能实现而忽略了生产环境中的安全需求。在PVE这类虚拟化平台上部署时我们面临几个典型挑战SSH密码登录风险默认开启的root密码登录是暴力破解的主要目标Web服务端口暴露80端口常被运营商封锁或已被其他服务占用虚拟化环境特殊性PVE的嵌套虚拟化配置可能影响EVE-NG的网络性能我曾在一个客户的生产环境中亲眼目睹一台仅开放了SSH密码登录的EVE-NG服务器在公网暴露不到24小时就被植入了挖矿木马。攻击者利用的正是默认配置的安全漏洞。这促使我形成了现在的安全配置理念最小化攻击面最大化访问控制。2. SSH密钥登录告别危险的密码认证2.1 生成专属密钥对密钥认证的核心在于创建一对数学上关联的密钥私钥保留在本地绝不外泄公钥上传到服务器用于验证。以下是创建ED25519密钥对的最佳实践比传统RSA更安全高效ssh-keygen -t ed25519 -C eve-ngpve-host -f ~/.ssh/eve-ng_pve_key执行后会生成两个文件eve-ng_pve_key私钥权限必须为600eve-ng_pve_key.pub公钥内容需上传到服务器提示为密钥设置强密码短语passphrase可增加额外保护层即使私钥泄露也无法直接使用2.2 部署公钥到EVE-NG服务器将公钥安装到EVE-NG服务器的正确方法# 在本地机器执行假设服务器IP为192.168.1.100 ssh-copy-id -i ~/.ssh/eve-ng_pve_key.pub root192.168.1.100如果ssh-copy-id不可用可手动操作cat ~/.ssh/eve-ng_pve_key.pub | ssh root192.168.1.100 mkdir -p ~/.ssh cat ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys2.3 强化SSH服务配置修改/etc/ssh/sshd_config关键参数Port 63122 # 改用非标准端口 PermitRootLogin prohibit-password # 禁止root密码登录 PasswordAuthentication no # 完全禁用密码认证 PubkeyAuthentication yes # 启用密钥认证 AllowUsers root # 明确允许的用户列表验证配置并重启服务sshd -t systemctl restart sshd关键检查点确保新端口在PVE防火墙和主机防火墙上都已放行测试密钥登录成功前保持现有SSH会话不退出建议使用tmux或screen防止配置错误导致失去连接3. 自定义Web访问端口突破80端口限制3.1 Apache多端口监听配置EVE-NG使用Apache作为Web前端默认监听80端口。要添加63110端口示例需修改两个关键文件/etc/apache2/ports.confListen 80 Listen 63110 # 新增自定义端口/etc/apache2/sites-enabled/unetlab.confVirtualHost *:63110 ServerAdmin adminyour-domain.com DocumentRoot /opt/unetlab/html ErrorLog /opt/unetlab/data/Logs/error_63110.log CustomLog /opt/unetlab/data/Logs/access_63110.log combined # 静态资源别名 Alias /Exports /opt/unetlab/data/Exports Alias /Logs /opt/unetlab/data/Logs # HTML5 Guacamole代理配置 Location /html5/ ProxyPass http://127.0.0.1:8080/guacamole/ ProxyPassReverse http://127.0.0.1:8080/guacamole/ /Location # WebSocket隧道配置 Location /html5/websocket-tunnel ProxyPass ws://127.0.0.1:8080/guacamole/websocket-tunnel ProxyPassReverse ws://127.0.0.1:8080/guacamole/websocket-tunnel /Location /VirtualHost3.2 权限与SELinux/AppArmor调整在Ubuntu 22.04上AppArmor可能限制Apache访问非标准端口# 检查AppArmor状态 aa-status # 如果AppArmor启用添加端口例外 echo /etc/apache2/ports.conf r, /etc/apparmor.d/local/usr.sbin.apache2 apparmor_parser -r /etc/apparmor.d/usr.sbin.apache2对于SELinux系统如CentOS基础镜像semanage port -a -t http_port_t -p tcp 631103.3 最终验证与防火墙配置完成配置后执行apache2ctl configtest # 检查语法 systemctl restart apache2PVE防火墙需放行新端口# 在PVE主机上执行 iptables -A INPUT -p tcp --dport 63110 -j ACCEPT4. 高级安全加固技巧4.1 双因素认证增强SSH安全对于需要更高安全级别的环境可结合Google Authenticator实现SSH双因素认证# 安装PAM模块 apt install libpam-google-authenticator # 生成初始配置 google-authenticator修改/etc/pam.d/sshd添加auth required pam_google_authenticator.so同时更新sshd_configChallengeResponseAuthentication yes AuthenticationMethods publickey,keyboard-interactive4.2 自动化密钥轮换策略定期更换SSH密钥是安全最佳实践可通过cron实现自动化# 每月1日午夜轮换密钥 0 0 1 * * /usr/bin/ssh-keygen -t ed25519 -f /root/.ssh/auto_rotated_key -N \ /usr/bin/ssh-copy-id -i /root/.ssh/auto_rotated_key.pub localhost \ mv /root/.ssh/auto_rotated_key /root/.ssh/id_ed255194.3 端口敲门Port Knocking隐藏服务通过端口敲门技术只有按特定顺序访问多个端口后才会开放SSH端口# 安装knockd apt install knockd # 配置示例/etc/knockd.conf [options] logfile /var/log/knockd.log [openSSH] sequence 7000,8000,9000 seq_timeout 10 command /sbin/iptables -A INPUT -s %IP% -p tcp --dport 63122 -j ACCEPT tcpflags syn [closeSSH] sequence 9000,8000,7000 seq_timeout 10 command /sbin/iptables -D INPUT -s %IP% -p tcp --dport 63122 -j ACCEPT tcpflags syn5. 故障排查与日常维护5.1 常见问题解决方案SSH连接被拒绝检查PVE防火墙规则pve-firewall list验证SSH服务状态systemctl status ssh检查端口监听ss -tulnp | grep sshApache无法启动检查端口冲突netstat -tulnp | grep 63110查看错误日志journalctl -xe -u apache25.2 性能监控与优化建议的监控指标指标项监控命令健康阈值CPU使用率top -b -n1grep Apache内存占用free -hSwap使用率10%活动连接数netstat -angrep 63110请求响应时间curl -o /dev/null -s -w %{time_total}2秒5.3 备份与恢复策略关键配置文件备份清单/etc/ssh/sshd_config/etc/apache2/ports.conf/etc/apache2/sites-enabled/unetlab.conf/root/.ssh/authorized_keys推荐备份命令# 创建带时间戳的备份 tar -czvf /backups/eve-ng-config_$(date %Y%m%d).tar.gz \ /etc/ssh /etc/apache2 /root/.ssh在PVE环境中部署EVE-NG的这几年我发现最容易被忽视的就是初始安全配置。很多用户急于体验网络模拟功能而跳过了这些基础安全措施。实际上花费一小时进行这些加固可以避免日后数十小时的安全事件处理。特别是在使用PVE这样的共享虚拟化平台时一个漏洞可能危及宿主机上的所有虚拟机。

更多文章