Linux 安全配置

学习系统安全加固、访问控制和安全监控,构建安全可靠的Linux环境

安全概述

Linux安全配置是系统管理的重要组成部分,通过多层防护策略、访问控制和安全监控, 可以有效保护系统免受各种安全威胁。

访问控制

用户权限和身份验证

防火墙配置

网络访问控制和过滤

安全监控

日志审计和入侵检测

用户和权限管理

强密码策略

# 安装密码质量检查工具
sudo apt install libpam-pwquality
# 配置密码策略 /etc/security/pwquality.conf
minlen = 12
minclass = 3
maxrepeat = 2
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1

SSH 安全配置

# 编辑SSH配置 /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
# 重启SSH服务
sudo systemctl restart sshd

sudo 权限控制

# 编辑sudoers文件
sudo visudo
# 限制sudo权限
username ALL=(ALL) NOPASSWD: /usr/bin/systemctl
%admin ALL=(ALL) ALL
# 设置sudo超时
Defaults timestamp_timeout=5

防火墙配置

UFW 防火墙

# 启用UFW
sudo ufw enable
# 默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 允许特定服务
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 查看状态
sudo ufw status verbose

iptables 规则

# 清空现有规则
sudo iptables -F
# 设置默认策略
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# 允许本地回环
sudo iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

系统加固

文件系统安全

# 设置重要文件权限
sudo chmod 600 /etc/shadow
sudo chmod 644 /etc/passwd
sudo chmod 600 /etc/ssh/sshd_config
# 查找SUID文件
find / -perm -4000 -type f 2>/dev/null
# 移除不必要的SUID权限
sudo chmod u-s /usr/bin/program

内核参数调优

# 编辑 /etc/sysctl.conf
# 禁用IP转发
net.ipv4.ip_forward = 0
# 防止SYN洪水攻击
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
# 忽略ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# 应用配置
sudo sysctl -p

服务管理

# 查看运行的服务
sudo systemctl list-units --type=service --state=running
# 禁用不必要的服务
sudo systemctl disable telnet
sudo systemctl disable rsh
sudo systemctl disable ftp
# 查看监听端口
sudo netstat -tuln
sudo ss -tuln

安全监控和审计

日志监控

# 查看认证日志
sudo tail -f /var/log/auth.log
sudo journalctl -u ssh -f
# 查看失败登录
sudo grep "Failed password" /var/log/auth.log
sudo lastb
# 查看成功登录
last
who
w

入侵检测

# 安装fail2ban
sudo apt install fail2ban
# 配置fail2ban /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
# 启动服务
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

文件完整性监控

# 安装AIDE
sudo apt install aide
# 初始化数据库
sudo aideinit
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# 检查文件完整性
sudo aide --check
# 定期检查(添加到crontab)
0 2 * * * /usr/bin/aide --check

安全最佳实践

推荐做法

  • 定期更新系统和软件包
  • 使用强密码和双因素认证
  • 最小权限原则
  • 定期备份重要数据
  • 监控系统日志和异常

安全风险

  • 使用默认密码
  • 开放不必要的端口
  • 忽略安全更新
  • 过度的用户权限
  • 缺乏安全监控

继续学习

掌握了安全配置后,继续学习更多高级主题