作为IT工程师,维护Linux服务器的安全性是至关重要的日常工作。以下是一些关键的命令行工具和技术,可以帮助你有效保护服务器安全。
# 检查可用更新(Ubuntu/Debian)
sudo apt update
sudo apt list --upgradable
# 执行安全更新(Ubuntu/Debian)
sudo apt upgrade --only-upgrade
# CentOS/RHEL检查更新
sudo yum check-update
sudo yum update --security
# 检查当前登录用户
who
# 查看所有用户
cat /etc/passwd
# 检查空密码账户
sudo awk -F: '($2 == "") {print}' /etc/shadow
# 锁定用户账户
sudo passwd -l username
# 设置密码过期策略(编辑)
sudo vi /etc/login.defs
# 编辑SSH配置文件
sudo vi /etc/ssh/sshd_config
# 推荐设置:
# Port 2222 (修改默认端口)
# PermitRootLogin no
# PasswordAuthentication no (使用密钥认证)
# MaxAuthTries 3
# ClientAliveInterval 300
# ClientAliveCountMax 0
# 重启SSH服务
sudo systemctl restart sshd
# 检查SSH登录尝试
sudo grep "Failed password" /var/log/auth.log
# UFW防火墙(Ubuntu)
sudo ufw enable
sudo ufw allow 2222/tcp # SSH端口
sudo ufw status verbose
# firewalld(CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
# iptables(通用)
sudo iptables -L -v -n
# 检查SUID/SGID文件
sudo find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
# 检查无主文件
sudo find / -nouser -o -nogroup
# 检查文件权限
sudo find / -type f -perm -o+w -exec ls -l {} \;
# 检查/etc/passwd和/etc/shadow权限
ls -l /etc/passwd /etc/shadow
# 查看运行中的服务
sudo systemctl list-units --type=service --state=running
# 检查异常进程
ps aux | grep -E '(nmap|nikto|john|hydra|medusa)'
# 检查网络连接
sudo netstat -tulnp
# 或
sudo ss -tulnp
# 检查可疑的cron任务
sudo crontab -l -u root
ls /etc/cron.*/
# 查看系统日志
sudo journalctl -xe
# 查看认证日志
sudo tail -f /var/log/auth.log
# 查找失败的登录尝试
sudo grep "authentication failure" /var/log/auth.log
# 使用logwatch进行日志分析(需安装)
sudo logwatch --detail High
# 安装和使用Lynis进行安全审计
sudo apt install lynis # Ubuntu/Debian
sudo yum install lynis # CentOS/RHEL
sudo lynis audit system
# 使用chkrootkit检查rootkit
sudo apt install chkrootkit
sudo chkrootkit
# 使用rkhunter检查rootkit
sudo apt install rkhunter
sudo rkhunter --check --sk
#!/bin/bash
# 简单安全检查脚本
echo "===== 安全检查报告 ====="
echo "生成日期: $(date)"
echo ""
echo "1. 系统更新状态:"
sudo apt list --upgradable 2>/dev/null || sudo yum list updates 2>/dev/null
echo ""
echo "2. 最近登录用户:"
last -n 10
echo ""
echo "3. 开放的端口:"
sudo netstat -tulnp
echo ""
echo "4. SUID/SGID文件检查:"
sudo find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \; 2>/dev/null | head -n 20
echo ""
echo "5. 失败的登录尝试:"
sudo grep "Failed password" /var/log/auth.log | tail -n 10
echo ""
echo "检查完成"
# 备份重要配置文件
sudo tar -czvf /backup/security_config_$(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服务器。