当前位置: 首页 > news >正文

第十四篇:《Linux 安全加固与最小权限运维》

运维不只是保障“快”和“稳”,还得确保“不被入侵”。安全加固的本质是减少攻击面——关闭不需要的服务、限制访问来源、最小化权限。本文围绕 Linux 服务器的远程访问安全(SSH) 、防火墙(iptables/nftables) 、强制访问控制(SELinux/AppArmor) 和权限审计四个核心维度,提供一套可落地的安全加固实践。

一、SSH 安全加固
SSH(Secure Shell)是服务器的“大门”,也是最常被攻击的入口。

1.1 禁用 root 直接登录

# 编辑 /etc/ssh/sshd_configPermitRootLogin no

普通用户登录后通过 sudo 提权,所有操作都可被审计(参见后续 sudo 日志部分)。

1.2 使用密钥认证,禁用密码登录

# 在本地生成密钥对ssh-keygen-ted25519-C"your_email@example.com"# 将公钥复制到服务器ssh-copy-id user@your-server# 服务器上禁用密码认证PasswordAuthentication no

1.3 修改默认端口

# /etc/ssh/sshd_configPort2222

修改后需更新防火墙规则,并在客户端连接时指定端口:ssh -p 2222 user@server。

1.4 限制可登录用户

# /etc/ssh/sshd_configAllowUsers alice bob

1.5 安装 Fail2ban 防止暴力破解
Fail2ban 会扫描 /var/log/secure(或 /var/log/auth.log)中的登录失败记录,对频繁失败的 IP 进行临时封禁。

# 安装sudoaptinstallfail2ban# 配置(/etc/fail2ban/jail.local)[sshd]enabled=trueport=2222logpath=/var/log/secure maxretry=3bantime=3600

二、iptables / nftables:防火墙策略
防火墙是网络层的第一道防线。现代 Linux 发行版多使用 nftables 替代 iptables,但 iptables 命令在多数系统中仍然可用,且习惯用法依然通用。

2.1 基础规则

# 查看当前规则sudoiptables-L-n-v# 拒绝所有入站流量(先确保放行了 SSH)sudoiptables-PINPUT DROP# 放行已建立的连接sudoiptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT# 放行本地回环sudoiptables-AINPUT-ilo-jACCEPT# 放行 SSH(假设端口 2222)sudoiptables-AINPUT-ptcp--dport2222-jACCEPT# 放行 HTTP/HTTPSsudoiptables-AINPUT-ptcp--dport80-jACCEPTsudoiptables-AINPUT-ptcp--dport443-jACCEPT

2.2 保存规则
Ubuntu/Debian(iptables-persistent):

sudonetfilter-persistent save CentOS/RHEL(firewalld 或 iptables-services):bashsudoserviceiptables save

2.3 使用 nftables(新版推荐)

# 安装sudoaptinstallnftables# 创建规则集文件 /etc/nftables.conftable inet filter{chain input{typefilter hook input priority0;policy drop;ct state{established, related}accept iif lo accept tcp dport2222accept tcp dport{80,443}accept}}# 加载规则sudonft-f/etc/nftables.conf

三、SELinux 与 AppArmor:强制访问控制
SELinux(Security-Enhanced Linux)和 AppArmor 是 Linux 的强制访问控制(MAC, Mandatory Access Control) 系统,即使进程以 root 运行,也无法违反安全策略访问未授权的文件。

3.1 两者对比

3.2 SELinux:检查与状态管理
查看状态:

getenforce

输出:Enforcing(强制执行)、Permissive(仅记录不拦截)、Disabled(关闭)。

临时切换模式:

sudosetenforce0# 切换为 Permissive(排错用)sudosetenforce1# 切换回 Enforcing

常见排错场景:服务无法启动,检查 /var/log/audit/audit.log 中是否有 denied 记录。

sudogrep"denied"/var/log/audit/audit.log|tail-20

使用 audit2allow 生成策略(谨慎操作,建议由有经验的管理员执行):

# 将最近被拒绝的访问生成自定义策略模块sudoaudit2allow-a-Mmy_custom_modulesudosemodule-imy_custom_module.pp

3.3 AppArmor:管理与排错
查看状态:

sudoaa-status

切换模式:

# 将配置文件从 enforcing 改为 complain 模式(排错)sudoaa-complain /path/to/bin# 恢复 enforcingsudoaa-enforce /path/to/bin

日志:AppArmor 的拒绝日志通常出现在 /var/log/syslog 或 dmesg 中,包含 DENIED 字样。

sudogrepDENIED /var/log/syslog|tail-10

四、用户权限与审计
4.1 sudo 日志
所有通过 sudo 执行的命令都会被记录。通过审计 sudo 日志,可以追溯谁在什么时间执行了什么管理命令。

查看 sudo 日志:

# CentOS/RHELsudotail-f/var/log/secure# Ubuntu/Debiansudotail-f/var/log/auth.log

配置更详细的 sudo 日志(/etc/sudoers):

text
Defaults logfile=“/var/log/sudo.log”
Defaults log_input,log_output
4.2 重要系统文件的权限检查
敏感配置文件应严格限制读写权限:

# 检查 shadow(用户密码哈希)权限ls-l/etc/shadow# 应为 -r-------- 1 root root# 检查 sudoersls-l/etc/sudoers# 应为 -r--r----- 1 root root

4.3 使用 ACL(访问控制列表)实现细粒度权限

# 赋予特定用户对特定目录的读写权限setfacl-mu:alice:rwx /data/shared/# 查看现有 ACLgetfacl /data/shared/

五、其他安全实践
内核参数加固(/etc/sysctl.conf):

禁用 IP 转发(除非是路由器):net.ipv4.ip_forward = 0

禁用 ICMP 重定向:net.ipv4.conf.all.send_redirects = 0

启用 TCP SYN Cookie 防御 SYN Flood:net.ipv4.tcp_syncookies = 1

关闭不必要的服务:

# 查看正在运行的服务sudosystemctl list-units--type=service--state=running

定期更新系统补丁:

sudoaptupdate&&sudoaptupgrade-y# Ubuntusudoyum update-y# CentOS

六、小结
SSH 加固:禁用 root 登录、禁用密码、修改端口、安装 fail2ban。

防火墙:默认拒绝入站,仅放行必要端口。

SELinux/AppArmor:提供高于文件权限的强制访问控制,按需启用和排错。

审计:通过 sudo 日志和文件权限管理,确保操作可追溯。

http://www.jsqmd.com/news/1154014/

相关文章:

  • 体验家 XMPlus 移动端离线问卷与弱网优化:确保在任何网络条件下不丢失一条客户反馈摘要
  • Three.js sketchfab免费模型教程
  • APT、YUM与国产化适配:Linux软件安装的底层逻辑与实战指南
  • 一个文件夹搞定Codex长期项目管理,再也不用重新解释!
  • Windows Cleaner终极指南:3步解决电脑卡顿,开源工具让Windows重获新生!
  • WorkshopDL:解锁Steam创意工坊的全平台解决方案
  • TTS-Backup终极指南:3步轻松保护你的Tabletop Simulator珍贵数据
  • 3分钟快速上手:用Python通过手机号查询QQ号的完整指南
  • 爆炸女孩AI VLOG
  • 【注意力机制】AAAI 2026 | DCMM:度修正混合成员注意力模块,可微社区结构建模让医学影像分析更精准!
  • 如何3分钟解锁网易云音乐NCM加密文件:ncmdumpGUI完全指南
  • 2026年上海正规语音芯片服务商有哪些:行业选型参考与核心服务商能力解析
  • gitea如何集成驱动jenkins
  • QTphone 海外应用分发实战:从打包到上架,全链路踩坑指南
  • DeepSeek接入Codex:AI编程助手自定义配置实战指南
  • 告别拍摄内耗:AI生成菱格棉服广告图的价值分析
  • 丰益捷RFID成功案例分享|看山西这家医院如何用RFID,把固定资产管理“卷”成智能化标杆?
  • VMware Linux 连不上网络VMTools安装灰色
  • 贝思兰德——USPTO 7·20终局规则全面解读:中国企业赴美专利申请合规指南
  • 抖音下载器:如何让3分钟搞定一周的素材收集工作?
  • WS2812B驱动例程
  • 为什么换一批布料,AI准确率会下降?
  • STM32与A3908实现高精度步进电机控制方案
  • 直流电机静音控制:TB9051FTG与PIC24FJ1024GB610方案解析
  • 实时计数器/排行榜首选:阿里云 Tair 高并发数据结构实践
  • 双节锂电池主动均衡方案设计与实现
  • 必应搜索API 2025年停用应对:3种替代方案与SerpAPI迁移指南
  • Python通达信数据接口完整指南:5分钟快速入门金融量化分析
  • 软件测试专栏(14/20):测试右移:线上监控与故障排查
  • 【船舶】基于加权和 + 多初始点网格采样罚函数法,解决AUV壳体多目标优化局部最优问题,对比传统增广拉格朗日收敛特性附matlab代码