对一台空白的 Linux 主机进行安全加固,可以增强其防御能力,减少被攻击的风险。以下是全面的安全加固步骤和相应指令:
1. 更新系统和安装安全补丁
保持系统和软件的更新是第一步。
# 更新包列表和升级系统
sudo apt update && sudo apt upgrade -y # 对于 Ubuntu/Debian
sudo yum update -y # 对于 CentOS/RHEL
2. 配置最小化用户权限
创建普通用户,避免直接使用
root
:adduser newuser passwd newuser usermod -aG sudo newuser # 给予新用户 sudo 权限
限制 root 登录:编辑 SSH 配置,禁止 root 登录。
sudo vim /etc/ssh/sshd_config # 找到以下行并修改 PermitRootLogin no
重启 SSH 服务 使配置生效:
sudo systemctl restart sshd
3. 配置 SSH 安全
修改 SSH 默认端口(如非必须,避免使用默认端口 22)。
sudo vim /etc/ssh/sshd_config # 修改端口,例如 Port 2222
禁用密码认证,使用密钥认证:
# 在 /etc/ssh/sshd_config 中 PasswordAuthentication no
生成 SSH 密钥(在本地机器执行)并将公钥添加到服务器:
ssh-keygen -t rsa -b 4096 ssh-copy-id -i ~/.ssh/id_rsa.pub newuser@server_ip
4. 安装并配置防火墙
使用 ufw
或 firewalld
管理防火墙规则。
UFW(Ubuntu)
# 允许SSH、HTTP、HTTPS等常用端口
sudo ufw allow 2222/tcp # 根据SSH配置的端口号设置
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# 启用防火墙
sudo ufw enable
Firewalld(CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
5. 禁用不必要的服务
查看开机启动服务并禁用不必要的服务:
systemctl list-unit-files --type=service | grep enabled
sudo systemctl disable <service_name> # 禁用不需要的服务
6. 安装和配置 Fail2Ban 防暴力破解
安装 Fail2Ban:
sudo apt install fail2ban # Ubuntu/Debian sudo yum install epel-release -y && sudo yum install fail2ban -y # CentOS/RHEL
创建本地配置文件:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
配置 SSH 监控:
sudo vim /etc/fail2ban/jail.local # 在 sshd 部分配置 [sshd] enabled = true port = 2222 # 根据实际的 SSH 端口填写 maxretry = 5 bantime = 3600
启动并启用 Fail2Ban:
sudo systemctl enable fail2ban sudo systemctl start fail2ban
7. 配置日志审核和系统日志管理
设置 logrotate 以管理日志文件:
sudo vim /etc/logrotate.conf # 配置日志文件定期轮换,确保重要日志不会被覆盖
启用审核日志:
sudo apt install auditd -y # Ubuntu/Debian sudo yum install audit -y # CentOS/RHEL sudo systemctl enable auditd sudo systemctl start auditd
8. 配置文件权限和安全性
设置重要文件的权限:
sudo chmod 600 /etc/ssh/sshd_config sudo chmod 600 /etc/fstab
检查和修复 SUID 和 SGID 文件权限:
sudo find / -perm /6000 -type f -exec ls -l {} \;
9. 禁用不必要的网络协议
禁用 IPv6(如果不使用):
sudo vim /etc/sysctl.conf # 添加以下行 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
重启 sysctl 使配置生效:
sudo sysctl -p
10. 定期自动更新(可选)
- 安装
unattended-upgrades
,确保系统自动接收安全更新。sudo apt install unattended-upgrades sudo dpkg-reconfigure unattended-upgrades
11. 检查系统账号和服务
删除无用的用户账号:
sudo userdel <username>
锁定系统中未使用的账号:
sudo usermod -L <username>
设置密码过期策略:
sudo vim /etc/login.defs # 配置以下参数 PASS_MAX_DAYS 90 PASS_MIN_DAYS 7 PASS_WARN_AGE 7
总结
这些步骤会大大增强 Linux 服务器的安全性。按需调整上述配置,并确保在操作前有备份,以避免误操作导致系统无法正常使用。
作者:严锋 创建时间:2024-10-08 16:41
最后编辑:严锋 更新时间:2024-11-06 17:37
最后编辑:严锋 更新时间:2024-11-06 17:37