0

0

Linux安全能力提升路径_长期防护思维说明【指导】

冰川箭仙

冰川箭仙

发布时间:2025-12-31 21:31:02

|

795人浏览过

|

来源于php中文网

原创

默认 sudo 配置不等于安全,因 %wheel ALL=(ALL) NOPASSWD: ALL 等宽松策略易被滥用;需最小化授权、限定命令路径、启用日志审计与 seccomp-bpf 等深度防护措施。

linux安全能力提升路径_长期防护思维说明【指导】

为什么默认的 sudo 配置不等于安全

很多管理员以为只要开了 sudo、禁了 root 登录,系统就算“加固”了。实际上,/etc/sudoers 里一行 %wheel ALL=(ALL) NOPASSWD: ALL 就足以让任意 wheel 成员绕过所有命令级约束,执行 sudo setcap 'cap_net_bind_service+ep' /usr/bin/python3 后直接监听 80 端口——这和拥有 root 权限几乎无异。

真正需要做的是最小化授权:

  • visudo -f /etc/sudoers.d/app-deploy 拆分策略,避免主文件被误改
  • 显式限定命令路径:deployer ALL=(www-data) /usr/bin/systemctl start nginx,禁用通配符和 shell 元字符
  • requirettyenv_reset,防止伪终端逃逸和环境变量污染
  • 启用 sudo_logfile 并轮转日志,否则攻击者删掉 /var/log/sudo.log 就没痕迹

seccomp-bpf 不是容器专属,普通服务也能用

很多人只在 Docker 的 --security-opt seccomp=... 里见过 seccomp-bpf,但 systemd 从 v245 起就支持为任意 service 单独加载过滤器。比如运行一个只读配置解析器,完全不需要 openat 以外的文件操作,更不该调用 execvesocket

实操步骤:

  • libseccomp 工具生成策略:scmp_bpf_compile -m 2 -o nginx-seccomp.bpf nginx-seccomp.json
  • 在 service 文件中添加:SystemCallFilter=@system-service @file-system ~@privileged ~@mount
  • 注意:@system-service 是白名单组,不是通配符;漏掉 clock_gettimegetrandom 可能导致进程启动失败
  • 测试时先加 SystemCallErrorNumber=EPERM,避免直接 kill 进程,方便抓 syscall 日志

SSH 登录后第一件事不是改密码,而是查 ~/.ssh/authorized_keysPAM 模块链

入侵者很少暴力破解密码,更多是复用已有密钥或通过 PAM 模块注入。一次看似正常的登录,背后可能是 auth [success=done] pam_exec.so /usr/local/bin/pam-backdoor.sh 在静默执行。

红墨
红墨

一站式小红书图文生成器

下载

应立即检查:

  • grep -r "pam_exec\|pam_python" /etc/pam.d/ —— 非标准模块需人工审计
  • ssh-keygen -l -f ~/.ssh/authorized_keys 查看密钥指纹,比对上次备份
  • systemctl show sshd | grep -i "pam\|permit" 确认未启用 PermitRootLogin yesPasswordAuthentication yes
  • 检查 /etc/ssh/sshd_config 中的 AuthorizedKeysCommand,它可能动态拉取远程密钥列表

日志不是存着就行,journald 默认配置会丢关键事件

journalctl --since "2 hours ago" 查不到东西?大概率是 Storage=volatile(默认值),所有日志只存在内存里,重启即清空。更隐蔽的问题是 RateLimitIntervalSecRateLimitBurst 过严,导致暴力破解尝试被合并成一条 “Failed password for user”,掩盖真实攻击频次。

必须调整的几项:

  • 编辑 /etc/systemd/journald.conf,设 Storage=persistent 并确认 /var/log/journal/ 目录存在且属 root:systemd-journal
  • 加大速率限制:RateLimitIntervalSec=30sRateLimitBurst=10000,避免漏记高频登录失败
  • 启用字段过滤:ForwardToSyslog=yes + rsyslog 转发到远程服务器,本地日志仍可被删,远程不可逆
  • 定期用 journalctl --verify 检查日志完整性,返回非零码说明有篡改或损坏

长期防护不是堆工具,是持续验证每个环节是否真在生效——比如改完 sudoers 后,立刻用受限用户跑一遍预期命令;加了 seccomp 就用 strace -e trace=all 看实际调用是否被拦截;连上 SSH 后第一行命令永远是 sudo journalctl -n 20 --no-pager,而不是急着改配置。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

227

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

490

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

496

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

222

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

329

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3505

2024.08.07

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

403

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

528

2023.08.23

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.3万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号