一、初始用户管理体系构建

对全新安装的Ubuntu 22.04系统,推荐优先建立独立的管理账户。下面演示完整用户创建流程(所有操作均需要root权限):

# 创建专属管理用户(示例用户名为sysadmin)
adduser sysadmin  # 交互式设置密码并补充用户信息

# 添加到sudo特权组(系统会请求用户密码确认)
usermod -aG sudo sysadmin  # -a参数保留原有组成员身份

# 禁用root账户远程访问(重要安全措施)
passwd -l root  # 实际生产环境强烈建议执行

执行后建议注销当前会话,使用新账户重新登录验证权限。测试时可运行:

sudo visudo  # 尝试以普通用户身份编辑sudoers配置文件

二、SSH服务安全加固实战

修改Ubuntu默认的OpenSSH服务配置,提升远程管理安全性。编辑配置文件需特别注意:

sudo nano /etc/ssh/sshd_config  # 推荐使用nano编辑器方便新手操作

关键配置项修改指南:

# 将默认22号端口更换为动态自定义端口(示例使用5927)
Port 5927  # 需要同步调整防火墙设置

# 禁用PAM认证强化安全链路
UsePAM no

# 限制root账户直接登录
PermitRootLogin no

# 强制密钥认证优先(注:需提前部署密钥)
PasswordAuthentication no

配置完成后重启服务并测试:

sudo systemctl restart sshd  # 重载最新配置
ssh sysadmin@localhost -p 5927  # 本地快速验证

三、防火墙双保险部署方案

方案A:UFW极简操作流(推荐新手采用)

sudo ufw allow 5927/tcp  # 放行自定义SSH端口
sudo ufw enable  # 激活防火墙规则(将询问操作确认)

方案B:iptables高级控制(适用于复杂场景)

# 清除原有规则链(谨慎操作)
sudo iptables -F

# 设置默认策略(拒绝入站/允许出站)
sudo iptables -P INPUT DROP  
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

# 放行已建立连接的回话数据
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 允许SSH自定义端口访问(示例端口5927)
sudo iptables -A INPUT -p tcp --dport 5927 -j ACCEPT

规则持久化保存(Ubuntu专用):

sudo iptables-save > /etc/iptables/rules.v4

四、系统调优三部曲

时间同步校准(chronyd服务配置)

sudo apt install chrony -y
sudo systemctl enable --now chronyd  # 启动并设置开机自启
chronyc tracking  # 查看同步状态

文件资源限制调整

编辑系统限制配置文件:

sudo nano /etc/security/limits.conf

在文件末尾追加:

*               soft    nofile          65535  # 普通用户进程最大文件句柄数
*               hard    nofile          65535
sysadmin        soft    nproc           4096   # 特权用户的进程数限制
sysadmin        hard    nproc           8192

虚拟内存参数优化

sudo sysctl vm.swappiness=10  # 临时调整内存交换阈值
sudo sh -c 'echo "vm.swappiness=10" >> /etc/sysctl.conf'  # 持久化配置

五、关联安全技术拓展

SELinux防护增强(CentOS特供)

sudo yum install selinux-policy-targeted  # 安装核心策略包
sudo setenforce 1  # 立即开启强制模式
sestatus  # 验证当前状态

Fail2ban防御系统配置(Ubuntu实例)

sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local  # 创建本地配置

编辑定制化配置:

[sshd]
enabled  = true
port     = 5927  # 对齐自定义的SSH端口
maxretry = 3     # 允许失败尝试次数
findtime = 1h     # 检测时间窗口
bantime  = 2h     # 封禁持续时间

六、典型应用场景分析

开发测试环境配置要点

  • 保留密码认证方便快速调试
  • 开放临时HTTP服务端口(8000-9000区间)
  • 配置宽松的进程数限制
  • 禁用非必要的审计日志

生产服务器黄金准则

  • 强制实施SSH密钥双因素认证
  • 按周轮换系统审计日志
  • 部署入侵检测系统(如aide)
  • 开启自动安全更新机制

七、技术方案优劣势对比

自动初始化工具(如Ansible)

优势特征:

  • 支持跨平台批量部署
  • 版本控制友好的配置文件
  • 快速回滚错误变更

潜在不足:

  • 学习曲线较为陡峭
  • 过度依赖自动化可能降低排错能力

原生手动配置

优势特点:

  • 完全掌控每个配置细节
  • 适合小型单机环境
  • 深度理解系统运作机制

使用局限:

  • 重复劳动效率低下
  • 配置差异容易导致环境漂移

八、关键操作注意事项

  1. 配置快照:执行重大修改前务必创建系统快照或备份配置文件
  2. 循序渐进:每次仅修改一个参数并及时验证效果
  3. 网络隔离:执行防火墙更新时保持本地物理访问通道
  4. 日志监控:重点观察/var/log/auth.log和secure日志
  5. 白名单机制:复杂的服务访问控制推荐采用白名单策略

九、总结与展望

经过用户权限体系构建、SSH安全加固、防火墙部署、系统参数调优的全套流程,我们已完成Linux服务器的标准安全初始化配置。建议生产环境在此基础上增加定期安全扫描和入侵检测方案,个人开发环境可适当降低安全强度提升操作便利性。