作为IT工程师,掌握命令行工具是保障Linux服务器安全的基础。以下是一些实用的命令行安全技巧和最佳实践:
# 创建新用户并设置密码
sudo useradd -m -s /bin/bash username
sudo passwd username
# 将用户添加到sudo组
sudo usermod -aG sudo username
# 查看用户sudo权限
sudo -l -U username
# 锁定不必要账户
sudo passwd -l username
# 检查空密码账户
sudo awk -F: '($2 == "") {print}' /etc/shadow
# 修改SSH默认端口
sudo sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
# 禁止root直接登录
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# 限制登录用户
echo "AllowUsers username" | sudo tee -a /etc/ssh/sshd_config
# 使用密钥认证替代密码
ssh-keygen -t rsa -b 4096
ssh-copy-id -i ~/.ssh/id_rsa.pub username@server -p 2222
# 重启SSH服务
sudo systemctl restart sshd
# 查看失败登录尝试
sudo grep "Failed password" /var/log/auth.log
# 查看最近登录记录
last
# 实时监控日志
sudo tail -f /var/log/syslog
# 检查异常进程
ps aux | grep -E '(cron|sshd|apache|nginx|mysql)'
# 查找SUID/SGID文件
find / -perm -4000 -o -perm -2000 -type f -exec ls -la {} \; 2>/dev/null
# 查找可写文件
find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
# 检查重要文件权限
ls -l /etc/passwd /etc/shadow /etc/sudoers
# 使用UFW简单防火墙
sudo ufw allow 2222/tcp # SSH端口
sudo ufw enable
# 使用iptables高级规则
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
sudo iptables -A INPUT -j DROP
# 查看网络连接
ss -tulnp
netstat -antp
# 检查异常连接
lsof -i
# 使用Lynis进行安全审计
sudo apt install lynis
sudo lynis audit system
# 使用chkrootkit检查rootkit
sudo apt install chkrootkit
sudo chkrootkit
# 使用rkhunter扫描恶意软件
sudo apt install rkhunter
sudo rkhunter --check --sk
# 设置自动安全更新
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
# 检查过期账户
lastlog -b 90 # 90天未登录的账户
# 清理临时文件
sudo find /tmp -type f -atime +10 -delete
# 检查磁盘使用情况
df -h
du -sh /var/*
# 安装配置Fail2Ban防止暴力破解
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo systemctl enable fail2ban --now
# 使用AIDE进行文件完整性检查
sudo apt install aide
sudo aideinit
sudo aide --check
# 配置SELinux/AppArmor
sudo apt install apparmor apparmor-utils
sudo aa-status
通过以上命令行工具和技巧,您可以显著提高Linux服务器的安全性。根据实际环境调整这些命令,并定期审查安全配置。