作为IT工程师,我将为您提供一套全面的Linux服务器安全加固方案,主要使用命令行工具实现。
# 更新软件包列表
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
sudo yum update -y # CentOS/RHEL
# 设置自动安全更新
sudo apt install unattended-upgrades # Debian/Ubuntu
sudo dpkg-reconfigure -plow unattended-upgrades
# 禁用root远程登录
sudo sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# 创建新管理员用户
sudo useradd -m -s /bin/bash adminuser
sudo passwd adminuser
sudo usermod -aG sudo adminuser # Debian/Ubuntu
sudo usermod -aG wheel adminuser # CentOS/RHEL
# 设置密码策略
sudo apt install libpam-pwquality # Debian/Ubuntu
sudo yum install pam_pwquality # CentOS/RHEL
# 编辑密码策略
sudo nano /etc/security/pwquality.conf
# 设置 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
# 修改SSH端口
sudo sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config
# 禁用密码认证,启用密钥认证
sudo sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
# 限制SSH访问IP
echo "sshd: 192.168.1.0/24" | sudo tee -a /etc/hosts.allow
echo "sshd: ALL" | sudo tee -a /etc/hosts.deny
# 应用更改
sudo systemctl restart sshd
# 使用UFW (Ubuntu)
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp # SSH新端口
sudo ufw enable
# 使用firewalld (CentOS/RHEL)
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
# 检查重要文件权限
sudo chmod 600 /etc/shadow
sudo chmod 644 /etc/passwd
sudo chmod 600 /etc/ssh/sshd_config
# 查找SUID/SGID文件
sudo find / -perm /4000 -type f -exec ls -ld {} \; 2>/dev/null
sudo find / -perm /2000 -type f -exec ls -ld {} \; 2>/dev/null
# 查找世界可写文件
sudo find / -perm -2 -type f -exec ls -ld {} \; 2>/dev/null
# 安装并配置fail2ban
sudo apt install fail2ban # Debian/Ubuntu
sudo yum install fail2ban # CentOS/RHEL
# 配置fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# 修改 bantime = 1h, findtime = 10m, maxretry = 3
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 安装并配置日志分析工具
sudo apt install logwatch # Debian/Ubuntu
sudo yum install logwatch # CentOS/RHEL
# 查看所有运行中的服务
sudo systemctl list-units --type=service --state=running
# 禁用不必要的服务
sudo systemctl stop <service_name>
sudo systemctl disable <service_name>
# 检查监听端口
sudo netstat -tulnp
sudo ss -tulnp
# 检查SELinux状态 (CentOS/RHEL)
sudo sestatus
# 如果禁用,启用它
sudo sed -i 's/SELINUX=disabled/SELINUX=enforcing/' /etc/selinux/config
# 检查AppArmor状态 (Ubuntu)
sudo aa-status
# 如果没有运行,启用它
sudo systemctl enable apparmor
sudo systemctl start apparmor
# 安装并运行Lynis安全审计工具
sudo apt install lynis # Debian/Ubuntu
sudo yum install lynis # CentOS/RHEL
sudo lynis audit system
# 使用rkhunter检查rootkit
sudo apt install rkhunter # Debian/Ubuntu
sudo yum install rkhunter # CentOS/RHEL
sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check
# 备份关键配置文件
sudo tar -czvf /root/server_backup_$(date +%Y%m%d).tar.gz \
/etc/ssh/sshd_config \
/etc/passwd \
/etc/shadow \
/etc/group \
/etc/sudoers \
/etc/hosts.allow \
/etc/hosts.deny
以上命令提供了Linux服务器安全加固的全面方案。实施时请注意: 1. 先备份重要数据和配置 2. 在测试环境验证后再应用到生产环境 3. 确保不会锁定自己的访问权限 4. 定期审查和更新安全配置
安全是一个持续的过程,建议定期执行安全审计和更新策略。