作为IT工程师,保护Linux服务器安全是首要任务。以下是一套全面的命令行安全措施,帮助您加固服务器防御。
# 更新软件包列表
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
sudo yum update -y # CentOS/RHEL
sudo dnf upgrade -y # Fedora
# 自动安全更新 (Debian/Ubuntu)
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
# 检查需要重启的服务
sudo needs-restarting -r # RHEL/CentOS
# 检查空密码账户
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添加:
# password requisite pam_pwquality.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
# 锁定不必要账户
sudo passwd -l username
sudo usermod -s /sbin/nologin username
# 检查UID为0的账户(除root外)
sudo awk -F: '($3 == 0) {print}' /etc/passwd
# 编辑/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
# 推荐设置:
Port 2222 # 更改默认端口
PermitRootLogin no # 禁止root登录
MaxAuthTries 3 # 最大尝试次数
LoginGraceTime 1m # 登录宽限时间
ClientAliveInterval 300 # 客户端活动间隔
ClientAliveCountMax 0 # 客户端活动计数
AllowUsers user1 user2 # 只允许特定用户
PasswordAuthentication no # 禁用密码认证,使用密钥
# 重启SSH服务
sudo systemctl restart sshd
# 检查登录失败尝试
sudo grep "Failed password" /var/log/auth.log
sudo lastb | less
# UFW (Ubuntu)
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
sudo ufw status verbose
# firewalld (RHEL/CentOS)
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
sudo firewall-cmd --list-all
# iptables (通用)
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -j DROP
sudo iptables-save > /etc/iptables.rules
# 安装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
# 修改[sshd]部分启用并设置端口
# 启动fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 检查被ban的IP
sudo fail2ban-client status sshd
# 安装并配置rkhunter rootkit检测
sudo apt install rkhunter # Debian/Ubuntu
sudo yum install rkhunter # CentOS/RHEL
sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check
# 安装Lynis进行安全审计
sudo apt install lynis # Debian/Ubuntu
sudo yum install lynis # CentOS/RHEL
sudo lynis audit system
# 检查SUID/SGID文件
sudo find / -perm -4000 -type f -exec ls -la {} 2>/dev/null \;
sudo find / -perm -2000 -type f -exec ls -la {} 2>/dev/null \;
# 检查世界可写文件
sudo find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
sudo find / -xdev -type f \( -perm -0002 -a ! -perm -1000 \) -print
# 检查无属主文件
sudo find / -xdev \( -nouser -o -nogroup \) -print
# 设置文件权限
sudo chmod 600 /etc/shadow
sudo chmod 644 /etc/passwd
sudo chmod 600 /home/*/.ssh/authorized_keys
# 查看系统日志
sudo tail -f /var/log/syslog # Debian/Ubuntu
sudo tail -f /var/log/messages # RHEL/CentOS
# 查看认证日志
sudo tail -f /var/log/auth.log # Debian/Ubuntu
sudo tail -f /var/log/secure # RHEL/CentOS
# 安装logwatch进行日志分析
sudo apt install logwatch # Debian/Ubuntu
sudo yum install logwatch # RHEL/CentOS
sudo logwatch --output mail --range yesterday --detail high
# 使用journalctl查看systemd日志
sudo journalctl -xe
sudo journalctl -u sshd --since "1 hour ago"
# 检查监听端口
sudo netstat -tulnp
sudo ss -tulnp
sudo lsof -i
# 禁用不必要服务
sudo systemctl list-unit-files --type=service | grep enabled
sudo systemctl disable servicename
sudo systemctl stop servicename
# 检查异常进程
sudo ps auxf
sudo top
# 使用OpenSCAP进行合规性检查
sudo apt install openscap-scanner scap-security-guide # Debian/Ubuntu
sudo yum install openscap-scanner scap-security-guide # RHEL/CentOS
sudo oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_standard --results scan-results.xml /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml
# 使用chkrootkit检查rootkit
sudo apt install chkrootkit # Debian/Ubuntu
sudo yum install chkrootkit # RHEL/CentOS
sudo chkrootkit
# 创建关键配置文件备份
sudo tar -czvf /backup/etc_backup_$(date +%F).tar.gz /etc
# 设置自动备份 (使用cron)
sudo crontab -e
# 添加: 0 3 * * * tar -czf /backup/etc_backup_$(date +\%F).tar.gz /etc
# 检查备份完整性
sudo tar -tzvf /backup/etc_backup_*.tar.gz
通过实施这些命令行安全措施,您可以显著提高Linux服务器的安全性。定期执行这些检查并根据您的特定环境调整配置,以保持服务器的最佳安全状态。