作为IT工程师,我将为您提供一套系统的Linux服务器安全加固方案,通过命令行操作全面提升系统安全性。以下为分步骤实施方案:
# 更新软件包列表并升级所有软件
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
sudo yum update -y # RHEL/CentOS
# 配置自动安全更新
sudo apt install unattended-upgrades # Debian/Ubuntu
sudo dpkg-reconfigure unattended-upgrades
# 检查空密码账户
sudo awk -F: '($2 == "") {print}' /etc/shadow
# 强制密码复杂度要求
sudo apt install libpam-pwquality # Debian/Ubuntu
sudo yum install pam_pwquality # RHEL/CentOS
# 编辑密码策略
sudo nano /etc/security/pwquality.conf
# 添加以下内容:
minlen = 12
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1
# 备份原配置文件
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
# 编辑SSH配置
sudo nano /etc/ssh/sshd_config
# 修改以下参数:
Port 22222 # 更改默认端口
PermitRootLogin no
PasswordAuthentication no # 强制密钥认证
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 0
AllowUsers your_username # 限制可登录用户
# 重启SSH服务
sudo systemctl restart sshd
# 注意:修改前确保已添加SSH密钥并测试连接!
# UFW防火墙 (Ubuntu)
sudo ufw enable
sudo ufw default deny incoming
sudo ufw allow 22222/tcp # 对应修改的SSH端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# firewalld (RHEL/CentOS)
sudo firewall-cmd --permanent --add-port=22222/tcp
sudo firewall-cmd --reload
# 安装配置fail2ban
sudo apt install fail2ban -y # Debian/Ubuntu
sudo yum install fail2ban -y # RHEL/CentOS
# 创建本地配置
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# 修改SSH相关配置:
[sshd]
enabled = true
port = 22222
maxretry = 3
bantime = 1h
# 启动服务
sudo systemctl enable --now fail2ban
# 安装日志分析工具
sudo apt install logwatch -y
sudo logwatch --output mail --format html --range yesterday
# 检查敏感文件权限
sudo find / -type f -perm -o+w -exec ls -l {} \; # 全局可写文件
sudo find / -type d -perm -o+w -exec ls -ld {} \; # 全局可写目录
# 配置文件属性保护
sudo chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow
sudo chattr +i /etc/sudoers
sudo chattr +i /etc/ssh/sshd_config
# 安装文件完整性检查工具
sudo apt install aide -y
sudo aideinit
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# 编辑sysctl配置
sudo nano /etc/sysctl.conf
# 添加以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
# 应用配置
sudo sysctl -p
# 安装审计工具
sudo apt install lynis -y # Debian/Ubuntu
sudo yum install lynis -y # RHEL/CentOS
# 执行系统审计
sudo lynis audit system
# 检查开放端口
sudo ss -tulnp
sudo netstat -tulnp # 旧版系统
# 检查运行进程
sudo ps auxf
# 创建备份目录
sudo mkdir /backups
# 创建系统关键文件备份
sudo tar -czvf /backups/etc_backup_$(date +%Y%m%d).tar.gz /etc
# 设置定时任务
(crontab -l 2>/dev/null; echo "0 3 * * * tar -czvf /backups/etc_backup_$(date +\%Y\%m\%d).tar.gz /etc") | crontab -
# 安装安全更新提醒
sudo apt install apt-listchanges -y
# 设置安全日志监控
sudo nano /etc/logrotate.d/security
# 添加以下内容:
/var/log/auth.log {
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
实施建议: 1. 所有操作前先创建系统快照或备份 2. 每次只修改一个配置并测试效果 3. 使用SSH连接时保持现有会话不退出 4. 重要操作前记录当前状态以便回滚 5. 定期检查/var/log/auth.log和/var/log/syslog
完成以上步骤后,您的Linux服务器将获得显著的安全提升。建议每月执行一次安全审计,并保持系统更新。对于生产环境,建议结合SELinux或AppArmor实现更严格的访问控制。