在云服务器上搭建安全的Linux命令练习环境,建议遵循以下步骤:
一、环境隔离与访问控制
-
创建专用用户
sudo useradd -m -s /bin/bash trainee # 创建练习用户 sudo passwd trainee # 设置密码(若需SSH登录)- 建议禁用
root直接登录,仅允许普通用户通过sudo提权。
- 建议禁用
-
使用容器或虚拟机隔离
- Docker方案(轻量且易重置):
# 创建仅包含基础工具的容器 docker run -it --name linux-practice --cap-drop=ALL # 禁用所有特权 --read-only # 只读根目录(可选) ubuntu:22.04 /bin/bash - LXC/LXD方案:
lxc launch ubuntu:22.04 practice-env lxc config set practice-env security.nesting false # 禁止嵌套容器
- Docker方案(轻量且易重置):
-
网络隔离
- 云服务器安全组:仅开放SSH端口(如修改为非22端口),禁止外部访问其他服务。
- 容器内禁用网络(如需完全隔离):
docker run --network none -it alpine
二、权限与安全限制
-
限制用户权限
- 编辑
/etc/sudoers,限制用户仅能运行必要命令:trainee ALL=(ALL) NOPASSWD: /usr/bin/ls, /usr/bin/cat - 使用
ulimit限制资源:ulimit -u 50 # 最大进程数 ulimit -t 600 # CPU时间(秒)
- 编辑
-
文件系统保护
- 关键目录设为只读:
mount -o remount,ro /bin /usr # 临时方案 - 使用
chattr防止文件被修改:sudo chattr +i /etc/passwd /etc/shadow
- 关键目录设为只读:
-
审计与日志
- 启用
auditd监控用户操作:sudo auditctl -w /home/trainee -p war -k trainee_activity - 记录所有SSH会话(通过
tlog或script命令)。
- 启用
三、环境快速重置
-
使用快照/镜像功能
- 云平台提供系统盘快照,练习后可直接回滚。
-
Docker自动化重置
# 编写Dockerfile定制环境 FROM alpine:latest RUN apk add --no-cache coreutils bash CMD ["/bin/bash"] # 每次练习后重启容器即可重置 docker rm -f practice && docker run -it --name practice practice-env -
使用临时文件系统
# 将用户目录挂载为tmpfs,重启后数据消失 mount -t tmpfs tmpfs /home/trainee
四、增强安全措施
-
SSH加固
- 使用密钥登录,禁用密码:
sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config - 启用
fail2ban防止暴力破解。
- 使用密钥登录,禁用密码:
-
入侵检测
- 安装
rkhunter或lynis定期扫描。
- 安装
-
备份与监控
- 定期备份系统日志。
- 使用
netdata或prometheus监控异常行为。
五、推荐工具与镜像
-
预置练习环境
- 使用
linuxzoo.net或overthewire.org的离线镜像。 - 部署
WebShell工具(如Wetty)提供Web终端。
- 使用
-
危险命令拦截
# 在用户bashrc中加入别名拦截 alias rm='echo "禁用rm,请使用trash-put"' alias dd='echo "此命令被禁止"'
注意事项
- 定期更新系统:
sudo apt update && sudo apt upgrade。 - 最小化安装:仅安装必要包(如
coreutils、bash)。 - 敏感命令监控:记录
sudo、ssh、scp等操作。
通过以上步骤,可在云服务器上构建一个隔离、可监控、易重置的安全练习环境,适合初学者或教学使用。
CLOUD技术笔记