Day 22 - NFS 与档案权限

出於书本 Chapter 11. Linux

NFS

NFS 攻击

网路档案系统 (Network File System) 是用来从本地端挂载远端档案系统。由於远端存取的这项天生特性,的确也有可能就这样分享给骇客。架设 NFS 的时,若将主要的设定欓 /etc/exports 里的内容设定成 整个世界 都能读取 整座档案系统 ,例如在 /etc/exports 里设定

# 汗
/    rw

对骇客来说,很容易就获得远端存取的权限,并且对系统做操作。

当然啦!除了设定欓之外,下面的条件都符合才会遭成威胁:

  • NFS 的服务 (nfsd) 必须启动,且透过 portmap 服务绑定 NFS 给 RPC
  • 防火墙必须要允许 NFS 流量通过
  • 被允许进入服务器中执行 NFS 服务的远端系统,必须被列在 /etc/hosts.allow 档案里

远端挂载的东西很容易因为误解而被设置错误,进而让有心人士获得远端存取的能力。

因应 NFS 攻击的方式

  • 不需要 NFS 的话,关掉它
  • 如果需要 NFS 的话
    • 在防火墙做 NFS 相关 port (例如:111, 2049,等等) 的设定
    • 确定 /etc/exports/etc/hosts.allow 都有妥善被设定

档案权限 (File Permissions)

在 Linux 中,透过设定档案特殊的类型,来允许程序以档案拥有者的权限执行:

SetUID ( 用於使用者 ID)
SetGID ( 用於 group ID)

查看档案是否有 setuid 及 setgid 权限可以使用 ls [1] ,像是

https://ithelp.ithome.com.tw/upload/images/20211007/201411845N48bTMKmB.png

其中 -rws 的小写 s 就代表有 setuid 权限,如果看到大写 S 则代表有 setgid 权限。这样描述起来很危险,但像是上图举例的 passwd 就确实需要 setuid 来解决。

档案权限攻击

一旦有恶意档案是使用 root 权限来执行,是很容易被隐藏的。骇客或恶意使用者能够编写带有 setuidsetgid 程序破坏系统。

因应档案权限攻击的方式

  • 手动测试
# 找出有设定成 setuid 类型的档案
find / -perm -4000 -print 
# 找出有设定成 setgid 类型的档案
find / -perm -2000 -print
# 找出能被任何人读取的档案
find / -perm -2 type f -print
# 找出隐藏档案
find / -name ".*"
  • 自动测试
    • 使用类似 change-detection 的稽核用程序,当这些被设定有 setuid 或 setgid 的档案被修改时要能发出告警。

飞快告别这本书的第四个部分,明天将进入第五个部分 Hacking Application ,从网站与应用程序的攻击研读起~

[1] Linux 设定 setuid 及 setgid 权限


<<:  Day#22 一直忘记实作的Logout

>>:  Day-23 : git协作

格线系统(1) DAY43

这里要先介绍 为什麽要 模组化格线系统?? 因为若因 功能性命名 区块若命名为某个功能之後 就不会运...

Rails 如何新增 Migration 档案

执行以下指令,就会在 db/migrate/ 目录下产生如 20110203070100_migra...

[NestJS 带你飞!] DAY30 - 实战演练 (中)

API 设计 前面有提到这次实作的系统共有两大资源,分别是:使用者 (user) 与 待办事项 (t...

Day 09 pipenv

Pipenv 是什麽呢? 想像一下,当你现在是个专业的工程师,身上背着十几个不同类型的专案(好啦,有...

Day27-useMemo

前言 前两天我们学习了React性能优化 memo 组件记忆 useCallback 函式参考记忆 ...