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
安全最佳实践
推荐做法
- 定期更新系统和软件包
- 使用强密码和双因素认证
- 最小权限原则
- 定期备份重要数据
- 监控系统日志和异常
安全风险
- 使用默认密码
- 开放不必要的端口
- 忽略安全更新
- 过度的用户权限
- 缺乏安全监控