作为IT工程师,确保Linux服务器安全是我们的核心职责之一。以下是一套全面的Linux安全命令和最佳实践指南。
更新系统软件包
# Debian/Ubuntu
sudo apt update && sudo apt upgrade -y
# RHEL/CentOS
sudo yum update -y
# Fedora
sudo dnf upgrade -y
自动安全更新
# Debian/Ubuntu
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
# RHEL/CentOS 8+
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer
用户账户管理
# 创建新用户
sudo adduser newuser
# 设置/修改密码
sudo passwd username
# 锁定/解锁账户
sudo usermod -L username # 锁定
sudo usermod -U username # 解锁
# 删除用户
sudo userdel -r username # -r同时删除主目录
sudo权限管理
# 添加用户到sudo组
sudo usermod -aG sudo username # Debian/Ubuntu
sudo usermod -aG wheel username # RHEL/CentOS
# 查看sudo权限
sudo -l -U username
检查特权账户
# 查看UID为0的账户(超级用户)
awk -F: '($3 == "0") {print}' /etc/passwd
# 查看可登录用户
grep -v '/nologin\|/false' /etc/passwd
基本SSH安全
# 修改SSH端口(编辑后重启sshd)
sudo nano /etc/ssh/sshd_config
# 修改: Port 2222 (或其他非标准端口)
# 禁止root登录
# 修改: PermitRootLogin no
# 限制用户登录
# 修改: AllowUsers user1 user2
# 应用更改
sudo systemctl restart sshd
密钥认证
# 生成SSH密钥对(在客户端)
ssh-keygen -t ed25519 -a 100
# 复制公钥到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server -p 2222
# 禁用密码认证(服务器端sshd_config)
# 修改: PasswordAuthentication no
SSH暴力破解防护
# 安装fail2ban
sudo apt install fail2ban # Debian/Ubuntu
sudo yum install fail2ban # RHEL/CentOS
# 配置fail2ban监控SSH
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# 修改[sshd]部分
UFW (简单防火墙)
# 安装
sudo apt install ufw # Debian/Ubuntu
# 基本配置
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp # SSH端口
sudo ufw enable
sudo ufw status verbose
FirewallD (RHEL/CentOS)
# 基本命令
sudo firewall-cmd --state
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
iptables (高级配置)
# 查看当前规则
sudo iptables -L -n -v
# 保存iptables规则
sudo iptables-save > /etc/iptables.rules
文件权限检查
# 查找全局可写文件
find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
find / -xdev -type f \( -perm -0002 -a ! -perm -1000 \) -print
# 查找无主文件
find / -xdev \( -nouser -o -nogroup \) -print
# 查找SUID/SGID文件
find / -xdev -type f \( -perm -4000 -o -perm -2000 \) -print
修改文件权限
# 设置安全umask
umask 027 # 在/etc/profile或~/.bashrc中设置
# 递归修改目录权限
chmod -R 750 /path/to/directory
# 修改文件所有者
chown user:group filename
文件完整性检查
# 使用AIDE(高级入侵检测环境)
sudo apt install aide # Debian/Ubuntu
sudo yum install aide # RHEL/CentOS
# 初始化数据库
sudo aideinit
# 手动检查
sudo aide --check
系统监控命令
# 查看运行进程
ps aux
top -c
htop
# 查看网络连接
netstat -tulnp
ss -tulnp
lsof -i
# 查看登录用户
who
w
last
服务管理
# 列出所有服务
systemctl list-unit-files --type=service
# 禁用不必要的服务
sudo systemctl disable servicename
sudo systemctl stop servicename
# 查看服务状态
systemctl status servicename
查找可疑进程
# 查找隐藏进程
ps -ef | grep -i '\['
# 检查异常CPU/内存使用
top -o %CPU
top -o %MEM
关键日志文件
# 认证日志
tail -f /var/log/auth.log # Debian/Ubuntu
tail -f /var/log/secure # RHEL/CentOS
# 系统日志
journalctl -xe
tail -f /var/log/syslog
# SSH登录尝试
grep 'sshd' /var/log/auth.log | grep 'Failed'
日志分析工具
# 使用logwatch进行日志分析
sudo apt install logwatch # Debian/Ubuntu
sudo yum install logwatch # RHEL/CentOS
# 每日发送日志摘要到邮箱
sudo nano /etc/logwatch/conf/logwatch.conf
# 修改: Output = mail
# 修改: MailTo = your@email.com
网络配置检查
# 查看网络接口
ip a
ifconfig
# 查看路由表
ip route
netstat -rn
# ARP缓存
ip neigh
arp -a
端口扫描与监控
# 本地监听端口
ss -tulnp
netstat -tulnp
# 远程端口扫描(从安全测试机器)
nmap -sS -p 1-65535 server_ip
# 持续监控网络连接
sudo apt install nethogs # Debian/Ubuntu
sudo nethogs
Lynis - 安全审计工具
# 安装
sudo apt install lynis # Debian/Ubuntu
sudo yum install lynis # RHEL/CentOS
# 运行审计
sudo lynis audit system
ClamAV - 防病毒扫描
# 安装
sudo apt install clamav clamav-daemon # Debian/Ubuntu
sudo yum install clamav clamd # RHEL/CentOS
# 更新病毒库
sudo freshclam
# 扫描系统
sudo clamscan -r --bell -i /
Rkhunter - Rootkit检测
# 安装
sudo apt install rkhunter # Debian/Ubuntu
sudo yum install rkhunter # RHEL/CentOS
# 更新数据库
sudo rkhunter --update
# 运行检查
sudo rkhunter --check --sk
关键数据备份
# 使用tar创建备份
sudo tar -czvf /backup/$(date +%Y%m%d)_full_backup.tar.gz --exclude=/backup --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run --exclude=/tmp /
# 增量备份(使用rsync)
sudo rsync -aAXv --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/backup"} / /backup/$(date +%Y%m%d)_incremental/
自动化备份
# 创建每日备份脚本
sudo nano /usr/local/bin/daily_backup.sh
# 添加备份命令
# 设置cron任务
sudo crontab -e
# 添加: 0 2 * * * /usr/local/bin/daily_backup.sh
定期执行安全检查
最小权限原则
保持系统更新
深度防御策略
备份验证
通过熟练使用这些命令和遵循最佳实践,您可以显著提高Linux服务器的安全性,降低被入侵的风险。