Linux安全能力提升路径_长期防护思维说明【指导】
发布时间 - 2025-12-31 00:00:00 点击率:次默认 sudo 配置不等于安全,因 %wheel ALL=(ALL) NOPASSWD: ALL 等宽松策略易被滥用;需最小化授权、限定命令路径、启用日志审计与 seccomp-bpf 等深度防护措施。
为什么默认的 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 元字符 - 加
requiretty和env_reset,防止伪终端逃逸和环境变量污染 - 启用
sudo_logfile并轮转日志,否则攻击者删掉/var/log/sudo.log就没痕迹
seccomp-bpf 不是容器专属,普通服务也能用
很多人只在 Docker 的 --security-opt seccomp=... 里见过 seccomp-bpf,但 systemd 从 v245 起就支持为任意 service 单独加载过滤器。比如运行一个只读配置解析器,完全不需要 openat 以外的文件操作,更不该调用 execve 或 socket。
实操步骤:
- 用
libseccomp工具生成策略:scmp_bpf_compile -m 2 -o nginx-seccomp.bpf nginx-seccomp.json - 在 service 文件中添加:
SystemCallFilter=@system-service @file-system ~@privileged ~@mount - 注意:
@system-service是白名单组,不是通配符;漏掉clock_gettime或getrandom可能导致进程启动失败 - 测试时先加
SystemCallErrorNumber=EPERM,避免直接 kill 进程,方便抓 syscall 日志
SSH 登录后第一件事不是改密码,而是查 ~/.ssh/authorized_keys 和 P
AM 模块链
AM入侵者很少暴力破解密码,更多是复用已有密钥或通过 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 yes或PasswordAuthentication yes - 检查
/etc/ssh/sshd_config中的AuthorizedKeysCommand,它可能动态拉取远程密钥列表
日志不是存着就行,journald 默认配置会丢关键事件
journalctl --since "2 hours ago" 查不到东西?大概率是 Storage=volatile(默认值),所有日志只存在内存里,重启即清空。更隐蔽的问题是 RateLimitIntervalSec 和 RateLimitBurst 过严,导致暴力破解尝试被合并成一条 “Failed password for user”,掩盖真实攻击频次。
必须调整的几项:
- 编辑
/etc/systemd/journald.conf,设Storage=persistent并确认/var/log/journal/目录存在且属root:systemd-journal - 加大速率限制:
RateLimitIntervalSec=30s,RateLimitBurst=10000,避免漏记高频登录失败 - 启用字段过滤:
ForwardToSyslog=yes+ rsyslog 转发到远程服务器,本地日志仍可被删,远程不可逆 - 定期用
journalctl --verify检查日志完整性,返回非零码说明有篡改或损坏
长期防护不是堆工具,是持续验证每个环节是否真在生效——比如改完 sudoers 后,立刻用受限用户跑一遍预期命令;加了 seccomp 就用 strace -e trace=all 看实际调用是否被拦截;连上 SSH 后第一行命令永远是 sudo journalctl -n 20 --no-pager,而不是急着改配置。
# linux
# word
# python
# js
# json
# go
# docker
# nginx
# app
# 端口
# 工具
# ai
# 环境变量
# for
# volatile
# 堆
# var
# 事件
# ssh
# 的是
# 不需要
# 已有
# 见过
# 很多人
# 开了
# 一遍
# 就行
# 就没
# 问题是
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
如何快速使用云服务器搭建个人网站?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
利用JavaScript实现拖拽改变元素大小
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
如何快速搭建高效服务器建站系统?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Android okhttputils现在进度显示实例代码
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
java中使用zxing批量生成二维码立牌
Laravel如何与Pusher实现实时通信?(WebSocket示例)
如何在景安服务器上快速搭建个人网站?
如何快速建站并高效导出源代码?
JS弹性运动实现方法分析
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
如何用VPS主机快速搭建个人网站?
详解vue.js组件化开发实践
linux top下的 minerd 木马清除方法
图册素材网站设计制作软件,图册的导出方式有几种?
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
高防服务器租用指南:配置选择与快速部署攻略
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
Python文件操作最佳实践_稳定性说明【指导】
Laravel如何升级到最新版本?(升级指南和步骤)
实例解析Array和String方法
北京专业网站制作设计师招聘,北京白云观官方网站?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
动图在线制作网站有哪些,滑动动图图集怎么做?
iOS发送验证码倒计时应用
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
详解jQuery停止动画——stop()方法的使用
Laravel怎么为数据库表字段添加索引以优化查询
JavaScript Ajax实现异步通信
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
如何在云主机上快速搭建网站?
如何在宝塔面板中修改默认建站目录?
详解Oracle修改字段类型方法总结
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
网站建设整体流程解析,建站其实很容易!
如何在万网自助建站中设置域名及备案?

