作为IT工程师,以下是通过命令行工具增强Linux服务器安全性的全面方案:
# 检查可用更新
sudo apt update && sudo apt list --upgradable # Debian/Ubuntu
sudo yum check-update # CentOS/RHEL
# 执行安全更新
sudo apt upgrade --only-upgrade security # Debian/Ubuntu
sudo yum update --security # CentOS/RHEL
# 设置自动安全更新
sudo dpkg-reconfigure -plow unattended-upgrades # Debian/Ubuntu
sudo yum install yum-cron && sudo systemctl enable --now yum-cron # CentOS/RHEL
# 检查空密码账户
sudo awk -F: '($2 == "") {print}' /etc/shadow
# 锁定不必要账户
sudo passwd -l username
# 检查UID为0的账户(除root外)
sudo awk -F: '($3 == 0) {print}' /etc/passwd
# 设置密码策略
sudo vi /etc/login.defs # 修改PASS_MAX_DAYS, PASS_MIN_DAYS等
sudo apt install libpam-pwquality # Debian/Ubuntu
sudo yum install pam_pwquality # CentOS/RHEL
# 编辑SSH配置
sudo vi /etc/ssh/sshd_config
# 推荐设置:
Port 2222 # 修改默认端口
PermitRootLogin no
PasswordAuthentication no # 使用密钥认证
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 0
AllowUsers your_username
# 重启SSH服务
sudo systemctl restart sshd
# 生成SSH密钥对(在客户端执行)
ssh-keygen -t ed25519
ssh-copy-id -p 2222 user@server_ip
# UFW (Ubuntu)
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp # SSH端口
sudo ufw allow http
sudo ufw allow 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
# 自定义配置
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vi /etc/fail2ban/jail.local
# 检查登录尝试
lastb | less
grep "Failed password" /var/log/auth.log # Debian/Ubuntu
grep "Failed password" /var/log/secure # CentOS/RHEL
# 安装配置Lynis安全审计工具
sudo apt install lynis # Debian/Ubuntu
sudo yum install epel-release && sudo yum install lynis # CentOS/RHEL
sudo lynis audit system
# 检查SUID/SGID文件
sudo find / -perm /4000 -type f -exec ls -ld {} \;
sudo find / -perm /2000 -type f -exec ls -ld {} \;
# 检查世界可写文件
sudo find / -xdev -type d -perm -0002 -exec ls -ld {} \;
sudo find / -xdev -type f -perm -0002 -exec ls -ld {} \;
# 检查无属主文件
sudo find / -xdev -nouser -o -nogroup
# 设置文件权限
sudo chmod 700 /home/*
sudo chmod 600 /etc/shadow
sudo chmod 644 /etc/passwd
# 检查开放端口
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 netstat -antp | grep ESTABLISHED
sudo lsof -i
# 使用rkhunter检查rootkit
sudo apt install rkhunter # Debian/Ubuntu
sudo yum install rkhunter # CentOS/RHEL
sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check
# 使用chkrootkit
sudo apt install chkrootkit # Debian/Ubuntu
sudo chkrootkit
# 检查内核模块
lsmod
# 备份关键配置文件
sudo tar -czvf /backup/config_backup_$(date +%F).tar.gz /etc/ssh/sshd_config /etc/passwd /etc/shadow /etc/group /etc/sudoers /etc/fail2ban/jail.local
# 设置定期备份
sudo crontab -e
# 添加:0 3 * * * /path/to/backup_script.sh
# 安装配置AppArmor (Ubuntu)
sudo apt install apparmor apparmor-utils
sudo aa-status
sudo aa-enforce /path/to/profile
# 安装配置SELinux (CentOS/RHEL)
sudo yum install selinux-policy selinux-policy-targeted
sudo sestatus
sudo setenforce 1
通过以上命令行工具和配置,可以显著提升Linux服务器的安全性。建议定期执行安全检查,保持系统更新,并根据实际业务需求调整安全策略。