侧边栏壁纸
  • 累计撰写 154 篇文章
  • 累计收到 0 条评论

系统安全及应用

2025-4-23 / 0 评论 / 23 阅读

一、Linux 系统安全基础

1. 用户与权限管理

  • 核心原则
  • 最小权限原则:普通用户不使用 root 权限,通过sudo分配特定操作权限。
  • 用户组隔离:按业务功能划分用户组(如www-datadocker),限制跨组访问。
  • 关键操作
  • 禁用闲置账户:usermod -L <username>(锁定账户)或删除无用账户:userdel -r <username>
  • 强密码策略:通过/etc/pam.d/passwd配置密码复杂度(如pam_cracklib模块),强制定期修改密码(chage -M 90 <username>)。
  • sudo配置:编辑/etc/sudoers,限制用户仅能执行指定命令(如user ALL=(ALL) NOPASSWD: /usr/sbin/service httpd restart)。

2. 文件系统安全

  • 权限控制
  • 重要文件权限示例:
  • /etc/shadow(用户密码哈希):权限-rw-------,仅 root 可读。
  • /etc/sudoers:权限-rw-r--r--,需通过visudo编辑防止语法错误。
  • 禁止用户修改关键目录:chattr +i /etc/passwd(添加不可变属性,需chattr -i取消)。
  • 文件系统挂载选项
  • 挂载时禁用执行权限:mount -o noexec /dev/sdb1 /mnt/data(防止 U 盘恶意文件执行)。
  • 启用nosuidnodev:禁止 SUID 程序和设备文件创建(如/etc/fstab中设置/home nosuid,nodev)。

3. 内核安全加固

  • 修改/etc/sysctl.conf配置
  • 禁止 IP 转发:net.ipv4.ip_forward = 0
  • 防范 SYN Flood 破坏:bash
net.ipv4.tcp_syncookies = 1  
net.ipv4.tcp_max_syn_backlog = 4096
  • 限制核心转储(Core Dump):fs.suid_dumpable = 0(防止敏感数据泄露)。
  • 加载安全模块
  • 启用grsecurityPaX内核补丁(增强内存保护,防范缓冲区溢出)。

二、网络安全防护

1. 防火墙配置

  • iptables 基础规则:bash
# 清空默认规则  
iptables -F  
iptables -X  
# 允许本地回环接口  
iptables -A INPUT -i lo -j ACCEPT  
# 允许已建立的连接回流  
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  
# 仅允许SSH(22端口)、HTTP(80)、HTTPS(443)入站  
iptables -A INPUT -p tcp --dport 22 -j ACCEPT  
iptables -A INPUT -p tcp --dport 80 -j ACCEPT  
iptables -A INPUT -p tcp --dport 443 -j ACCEPT  
# 拒绝所有其他入站流量  
iptables -P INPUT DROP  
# 保存规则(不同发行版命令可能不同,如Debian用iptables-persistent)  
service iptables save
  • firewalld(CentOS 7 + 推荐):bash
# 添加永久HTTP服务规则  
firewall-cmd --permanent --add-service=http  
firewall-cmd --reload

2. SELinux 与 AppArmor

  • SELinux(Security-Enhanced Linux)
  • 模式enforcing(强制模式,拦截违规操作)、permissive(仅日志记录,不拦截)。
  • 查看状态sestatus
  • 修改文件上下文chcon -t httpd_sys_content_t /var/www/html/newfile.txt(允许 HTTP 服务访问文件)。
  • AppArmor(Ubuntu 默认):
  • 限制程序行为:aa-complain /usr/sbin/sshd(进入警告模式,测试规则)。

3. SSH 安全加固

  • 禁止 root 直接登录:编辑/etc/ssh/sshd_config,设置PermitRootLogin no
  • 使用密钥认证
  1. 生成密钥对:ssh-keygen -t rsa -b 4096
  2. 上传公钥至服务器:ssh-copy-id user@server
  3. 禁用密码登录:PasswordAuthentication no
  • 限制登录来源AllowUsers user1@192.168.1.*(仅允许指定 IP 段用户登录)。

三、服务与应用安全

1. Web 服务(如 Apache/Nginx)

  • Apache 加固
  • 隐藏版本号:在httpd.conf中设置ServerTokens ProdServerSignature Off
  • 禁用危险模块:a2dismod autoindex(关闭目录索引)。
  • Nginx 配置示例:nginx
server {  
  listen 80;  
  server_name example.com;  
  return 301 https://$server_name$request_uri;  # 强制HTTPS  
  location / {  
    deny all;  # 默认拒绝所有访问,通过子规则开放特定路径  
  }  
}

2. 数据库服务(如 MySQL/PostgreSQL)

  • MySQL 安全措施
  • 禁用远程 root 登录:UPDATE mysql.user SET Host='localhost' WHERE User='root';
  • 启用 SSL 连接:在my.cnf中配置require_secure_transport = ON
  • PostgreSQL 访问控制:编辑pg_hba.conf,使用md5sCRAM-SHA-256认证:bash
host all all 127.0.0.1/32 scram-sha-256

3. 软件包管理与bug修复

  • 定期更新系统
  • Debian/Ubuntu:apt update && apt upgrade -y
  • RHEL/CentOS:yum update -ydnf update -y(Fedora)
  • bug扫描工具
  • yum install yum-plugin-security(查看可用安全补丁)
  • OpenVASNessus扫描系统bug。

四、日志监控与入侵检测

1. 系统日志管理

  • 关键日志文件
  • 身份验证日志:/var/log/auth.log(记录 SSH 登录、sudo 操作)
  • 系统服务日志:/var/log/syslog(通用系统消息)
  • Apache/Nginx 日志:/var/log/apache2/access.log/var/log/nginx/error.log
  • 集中日志管理
  • 通过rsyslog将日志发送至远程服务器:bash
# 在/etc/rsyslog.conf添加  
*.* @remote-log-server:514
  • 使用 ELK Stack 或logrotate进行日志分析和轮转。

2. 入侵检测工具

  • OSSEC(开源主机入侵检测系统)
  • 监控文件完整性:检测/etc/passwd等关键文件修改。
  • 实时告警:通过邮件或 API 发送异常行为通知。
  • Tripwire:基于文件哈希的完整性检查工具,定期对比文件变化。
  • 实时进程监控:bash
ps aux | grep -v grep | awk '{print $11}' | sort -u  # 查看异常进程  
lsof -i :80  # 查看占用80端口的进程

五、数据安全与加密

1. 磁盘加密

  • LUKS(Linux Unified Key Setup):bash
# 加密新分区  
cryptsetup luksFormat /dev/sdb1  
cryptsetup luksOpen /dev/sdb1 encrypted_data  
mkfs.ext4 /dev/mapper/encrypted_data
  • 文件级加密
  • gpg加密文件:gpg -c sensitive.txt(生成加密文件sensitive.txt.gpg)。
  • ecryptfs加密用户目录:ecryptfs-setup-private(自动加密 /home/user 目录)。

2. 传输安全

  • 使用scp/sftp替代ftp/scp传输文件。
  • 配置 VPN(如 OpenVPN)实现安全远程访问:bash
# OpenVPN服务器配置示例  
port 1194  
proto udp  
dev tun  
ca /etc/openvpn/ca.crt  
cert /etc/openvpn/server.crt  
key /etc/openvpn/server.key

六、安全最佳实践

  1. 最小化安装:仅安装必要服务,卸载无用软件(如yum remove httpd)。
  2. 禁用不需要的服务:bash
systemctl disable --now telnet.socket  # 禁用Telnet服务  
systemctl status | grep "enabled"  # 检查开机自启服务
  1. 定期备份
  • 全量备份:tar -czvf /backup/full_$(date +%F).tar.gz /etc /var/www
  • 增量备份:使用rsync --inplace --backup-dir
  1. 应急响应流程
  • 发现异常进程:使用kill -9 <PID>终止,结合netstat -antp查看连接来源。
  • 检查可疑文件:ls -ltr /tmp(查看临时目录近期修改文件)、使用rkhunter扫描 Rootkit。

七、常用 Linux 安全工具列表

类别

工具

功能描述

防火墙

iptables/firewalld

配置网络流量过滤规则

入侵检测

OSSEC、Tripwire

监控系统异常和文件篡改

bug扫描

Lynis、OpenVAS

检测系统配置缺陷和软件bug

日志分析

Logwatch、GoAccess

生成日志报告、可视化 Web 访问日志

安全审计

sudo-audit、auditd

记录 sudo 操作、系统调用审计

加密工具

GPG、LUKS

文件加密、磁盘加密

网络监控

nmap、tcpdump、iftop

端口扫描、抓包分析、流量监控

八、云环境下的 Linux 安全补充

  • 容器安全
  • 使用Docker Security Scanning扫描镜像bug。
  • 限制容器权限:docker run --security-opt=no-new-privileges
  • 云服务商工具
  • AWS:EC2 Instance Metadata Service (IMDSv2) 防窃取元数据。
  • 阿里云:开启安全组隔离、使用云盾主机安全。