作为IT工程师,我们可以通过一系列命令行工具和技术来增强Linux服务器的安全性。以下是一套全面的安全加固方案:
# 更新软件包列表并升级所有已安装的包
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
sudo yum update -y # CentOS/RHEL
sudo dnf upgrade -y # Fedora
# 设置自动安全更新
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 # CentOS/RHEL
# 然后编辑/etc/pam.d/common-password或/etc/pam.d/system-auth
# 设置密码过期策略
sudo chage -M 90 -m 7 -W 7 username
# 锁定不必要账户
sudo passwd -l username
# 编辑SSH配置文件
sudo nano /etc/ssh/sshd_config
# 推荐设置:
Port 2222 # 修改默认端口
PermitRootLogin no
PasswordAuthentication no # 强制使用密钥认证
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 0
AllowUsers user1 user2 # 只允许特定用户
# 重启SSH服务
sudo systemctl restart sshd
# 生成SSH密钥对(在客户端执行)
ssh-keygen -t ed25519
ssh-copy-id -p 2222 user@server
# UFW (Ubuntu/Debian)
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp # SSH端口
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
# 安装并配置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 # 根据需求调整
# 启动服务
sudo systemctl enable --now fail2ban
# 安装并配置日志分析工具
sudo apt install logwatch # Debian/Ubuntu
sudo yum install logwatch # CentOS/RHEL
# 配置每日日志报告
sudo nano /etc/logwatch/conf/logwatch.conf
# 查找全局可写文件
sudo find / -xdev -type f -perm -0002 -exec ls -l {} \;
# 查找无主文件
sudo find / -xdev -nouser -o -nogroup
# 检查SUID/SGID文件
sudo find / -xdev -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
# 设置文件权限
sudo chmod 750 /home/*
sudo chmod 700 /home/*/.ssh
sudo chmod 600 /home/*/.ssh/authorized_keys
# 查看运行中的服务
sudo systemctl list-units --type=service --state=running
# 禁用不必要的服务
sudo systemctl disable servicename
sudo systemctl stop servicename
# 检查监听端口
sudo netstat -tulnp
sudo ss -tulnp
# 安装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 --check
# 创建每日安全检查脚本
sudo nano /etc/cron.daily/security_checks
#!/bin/bash
/usr/bin/rkhunter --cronjob --report-warnings-only
/usr/bin/lynis --quick
/usr/sbin/logwatch --output mail --mailto admin@example.com --detail high
# 设置可执行权限
sudo chmod +x /etc/cron.daily/security_checks
# 创建备份脚本
sudo nano /usr/local/bin/backup.sh
#!/bin/bash
tar -czf /backups/$(date +%Y%m%d).tar.gz --exclude=/backups --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys /
# 设置cron任务每天执行
sudo crontab -e
0 2 * * * /usr/local/bin/backup.sh
通过以上命令行工具和技术的组合使用,可以显著提升Linux服务器的安全性。建议定期执行这些检查和配置更新,以应对新的安全威胁。