服务器安全是每个运维和后端程序员必须重视的问题。一台暴露在公网的Linux服务器,如果不做安全加固,很容易被黑客攻击入侵。今天就来分享一些Linux服务器安全加固的实用技巧。

1. 账号安全

禁用root远程登录:

# 编辑sshd配置
vi /etc/ssh/sshd_config
# 修改
PermitRootLogin no
# 重启sshd
systemctl restart sshd

使用普通用户+sudo:

# 创建用户
useradd admin
passwd admin
# 添加sudo权限
usermod -aG wheel admin

禁用无用账号:

# 查看所有用户
cat /etc/passwd
# 禁用用户
usermod -L username

密码策略:

# 编辑密码策略
vi /etc/login.defs
# 密码最长有效期
PASS_MAX_DAYS 90
# 密码最短长度
PASS_MIN_LEN 12

2. SSH安全

修改默认端口:

vi /etc/ssh/sshd_config
Port 2222
systemctl restart sshd

使用密钥登录:

# 本地生成密钥
ssh-keygen -t rsa -b 4096
# 上传公钥到服务器
ssh-copy-id -p 2222 admin@server_ip
# 禁用密码登录
vi /etc/ssh/sshd_config
PasswordAuthentication no
systemctl restart sshd

限制登录尝试:

vi /etc/ssh/sshd_config
MaxAuthTries 3
LoginGraceTime 30

安装fail2ban:

yum install fail2ban
systemctl start fail2ban
systemctl enable fail2ban

3. 防火墙配置

使用firewalld或iptables:

# firewalld
systemctl start firewalld
systemctl enable firewalld
# 开放端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload
# 查看规则
firewall-cmd --list-all

只开放必要端口,关闭所有不需要的端口。

4. 系统更新

定期更新系统:

# CentOS
yum update -y
# Ubuntu
apt update && apt upgrade -y

配置自动安全更新:

# CentOS
yum install yum-cron
systemctl start yum-cron
systemctl enable yum-cron

5. 文件权限

检查SUID/SGID文件:

find / -perm /6000 -type f 2>/dev/null

关键目录权限:

chmod 700 /root
chmod 700 /home/admin
chmod 600 /etc/shadow
chmod 644 /etc/passwd

隐藏敏感文件:

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

6. 服务安全

关闭不必要的服务:

# 查看运行的服务
systemctl list-units --type=service --state=running
# 禁用服务
systemctl disable servicename
systemctl stop servicename

Web服务器安全:

# Nginx配置
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

数据库安全:

  • 数据库只监听本地,不暴露公网
  • 设置强密码
  • 删除默认数据库和用户
  • 定期备份

7. 日志监控

配置日志轮转:

vi /etc/logrotate.conf

安装日志监控工具:

# 安装logwatch
yum install logwatch
# 每日发送日志报告到邮箱

关键日志文件:

  • /var/log/secure - 登录日志
  • /var/log/messages - 系统日志
  • /var/log/nginx/ - Nginx日志
  • /var/log/mysql/ - MySQL日志

8. 入侵检测

安装rkhunter:

yum install rkhunter
rkhunter --check

安装AIDE:

yum install aide
aide --init
aide --check

9. 备份策略

定期备份:

  • 数据库每日备份
  • 网站文件每周备份
  • 配置文件备份
  • 备份异地存储

备份脚本示例:

#!/bin/bash
DATE=$(date +%Y%m%d)
# 备份数据库
mysqldump -u root -ppassword dbname > /backup/db_$DATE.sql
# 备份网站文件
tar -czf /backup/web_$DATE.tar.gz /var/www/html
# 删除30天前的备份
find /backup -name "*.sql" -mtime +30 -delete
find /backup -name "*.tar.gz" -mtime +30 -delete

10. 其他安全措施

  1. 安装DDoS防护:使用云服务商的DDoS防护
  2. 配置CDN:隐藏源站IP,加速访问
  3. SSL证书:全站HTTPS加密
  4. 定期安全扫描:使用安全扫描工具检查漏洞
  5. 最小权限原则:每个服务只给必要的权限
  6. 隔离运行环境:使用Docker或虚拟机隔离服务

总结

Linux服务器安全加固是一个系统工程,需要从账号、SSH、防火墙、系统更新、文件权限、服务安全、日志监控、入侵检测、备份等多个方面入手。安全没有一劳永逸,需要持续关注和维护。

希望这篇文章能帮助大家提升服务器安全性,避免被黑客攻击。