LINUX系统安全详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– Host:files dns
• 会话劫持的可能性(session hijack)
系统启动服务清理
• 清理/etc/rc2.d
– 值得注意的
§ nfs.* § S71RPC
• 清理/etc/rc3.d
– SNMP使用的选择 – SNMP配置
• 清理/etc/init.d/inetsvc
– 禁止d – Inetd –s –t启动 (记录会话连接的IP、端口) – 禁止multicast
insmod装载模块
模块列表
Mod1----0x1000
每个模块必须包括初始化
例程和注销例程
物理内存空间
… 010010001…..
Mod2----0x2000

……





模块列表

号 Mod1----0x1000
虚拟内存
申请足够的空间来容 纳新的核心模块
Mod2----0x2000 ……
修改其未解析的核心例程和 资源的引用地址
• 在i386机器上,每个进程有独立的4G虚存空间 • 内核的代码段和数据段被映射到3G以上的空间中 • 用户态下的代码实际可申请的虚存空间为0-3GB • 每个进程用两套段描述符来访问内存,分别用来访问内核态和用户态下的内存
空间 • 在用户态下,代码不可能访问3G以上的地址空间,如果要访问内核空间,必
须通过系统调用或者中断
Linux的模块机制
• 可动态装载的内核模块(lkm)
– 一组命令:insmod、rmmod、lsmod、modprobe…
• 关于模块机制
– 可以让核心保持比较小的尺寸 – 动态装载,避免重新启动 – 模块机制常常用于设备驱动 – 内核模块一旦加载之后,与原有的核心代码同等
进程的权限
• 如果mysqld文件的属主是root,那么mysql服务被远程溢出后攻击者将得到 root shell,假设apache存在远程溢出,攻击者只能得到nobody shell
• Redhat9.0以前版本的ping程序有suid位,假设该命令的可执行文件存在缓冲 区溢出,那么本地攻击者可以获得root shell
文件类型
• 由文件长模式显示的第一个字符决定 • “-”:普通文件 • “d”:目录 • “l”:符号链接 • “s”:套接字 • 显示文件属性:lsattr
Linux文件权限 • ls –l 文件名
-rw-r--r--
分组访问权
拥有者访问权 文件类型(文件、目录、特殊文件)
其它用户访问权
Mask和umask值
[root@www /root]#useradd –u 1000 –d /home/test –s /bin/sh test
删除帐户
• userdel/deluser
– Userdel [-r] name
[root@www /root]#userdel –r test [root@www /root]#ls –l /home
• Linux系统安全分析 • 2018年12月18日
Linux内核组成部分
进程调度 虚拟文件 系统
内存管理
进程间通信 网络接口
Linux进程调度
do_fork()
收到SIG_KILL或 SIG_CONT后
Task_running
所申请资
Schedule()
源有效时 时
Task_uninterruptible
间 片

所申请资源有效 或者收到信号时
Task_interruptible
申请资源未果 Holding CPU 申请资源未果
do_exit()
Task_stopped
跟踪系统调用
Task_zombie
Linux的系统调用
• 编程接口,与POSIX兼容,C语言函数集合 • 实现形式与DOS的INT 21H相似
进程运行时的权限变化
• Suid文件改变了文件运行时的进程属主,通常是更高的root权限,进程结束 时返回原来相对较低的权限,这样普通用户可以享受到便利又不至于权限越界。 这里引入了另一个值euid,有效用户ID,表征进程运行时的实际权限,如果 euid=0那么你就拥有root权限,实际上你使用/bin/passwd更改自己密码的瞬 间拥有root权限,但你却不能用它来做其它事
– 根据每个rootkit的特征进行检测,然后设法删除 – 预防为主,安装内核检测系统,比如LIDS
Linux安全问题
• 缓冲区溢出---与各机构公布的风险列表密切相关 • 内核的安全性 • 附加软件的安全性
– Bind系统 – Mail系统 – FTP服务和WWW服务 – X-Window系统 – NFS和NIS系统
– Linux使用int 80h
• 函数名“sys_xxx”
– 比如系统调用fork的相应函数sys_fork()
• 系统调用号和系统调用表 • 系统调用都转换为Int 80h软中断 • 所有的系统调用只有一个入口system_call • 出口: ret_from_sys_call
Linux内存管理
为什么要用shadow文件
• UNIX最早用/etc/passwd存储密码散列,普通用户可读,可以使用John、 Crack之类的工具暴力破解,无安全性可言
• Shadow单独存储密码hash,passwd文件只被用于进程读取当前的属主权限
帐号密码文件
/etc/passwd和/etc/shadow(master.passwd)文件
[-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-n] [-r] name useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
管理帐号
• 查看当前用户名
[root@www /root]# whoami
• 更改用户属性 usermod
[root@www /root]# usermod --help usage: usermod [-u uid [-o]] [-g group] [-G group,...]
[-d home [-m]] [-s shell] [-c comment] [-l new_name] [-f inactive] [-e expire ] [-p passwd] [-L|-U] name
账号管理
帐户管理
• 用户类型
– Root(uid=0,仅次于RING0) – 普通用户(未设置密码和宿主目录者除外) – 系统用户(用于标识进程身份和权限) – 攻击者的目标:夺取uid 或 euid = 0
Unix口令文件存储路径
• Linux /etc/shadow (/etc/passwd) • SystemV Release 4.2 /etc/security • SystemV Release 4.0 /etc/shadow • SunOS 5.0 /etc/shadow • SCOUnix /tcb/auth/files/ • OSF/1 /etc/passwd • HP-UX /.secure/etc/passwd • BSD4.x /etc/master.passwd • AIX3 /etc/security/passwd • IRIX5 /etc/shadow
• 更改文件属主
– ch• 设置SUID/SGID程序
– 利用chmod – 典型文件如/bin/passwd – SGID通常设置在某个目录上 – Chmod 1755 和dos的TSR程序一样常驻内存
• 设置粘置位
– 典型目录如 /tmp – 粘置位可防止误删、误修改或破坏用户文件
系统启动服务清理
• 清理/etc/inetd.conf 服务
– 所有的TCP/UDP服务 – 所有的调试服务 – 所以的R服务 – 几乎所有的RPC服务 – 使用必要的工具替换telnet,ftp – 必要的时候可以完全禁止inetd或用xinetd替换
ndd 使用
• 帮助
– ndd /dev/arp \? (icmp,tcp,udp,ip)
• UNIX采用3种加密算法 • 头两字节为$1表示MD5加密算法 • $2表示使用Blowfish加密算法 • 其余为标准的DES加密算法
添加帐户
• 添加用户
– useradd /adduser
[root@www /root]# useradd --help useradd: invalid option -- usage: useradd [-u uid [-o]] [-g group] [-G group,...]

root:$1$fgvCnqo0$C6xldBN0rs.w1SCtD/RST0:10598:0:99999:7:-1:1:-1073743272
用户仍可修改口令还剩余的天数,否则到 期之后该账号将被禁止
离系统提醒用户必须 修改口令还剩下的天

保留字段
离用户必须修改 口令还剩下的天

口令的加密算法
• Mask和umask相对应 • 对于文件
umask值 || 文件权限 = 666 • 对于目录
umask值 || 目录权限 = 777 • Daemon守护进程通常需要对”/”的完全访问权限
文件管理
• 添加/删除/移动文件和目录
– touch、echo、vi、rm、mv
• 更改文件权限
– chmod、chattr
• 该特性被黑客利用
安装系统补丁
• Solaris
– Showrev –p 显示系统补丁 – Patchadd 安装系统补丁
• Linux
– RHN update – Rpm -Uvh – Src recompile
Solaris基本安全配置
• 设置一个尽可能复杂的root口令 • 设置默认路由 /etc/defaultrouter • 设置dns /etc/resolv.conf • 设置 /etc/nsswitch.conf
系统核心
程将 地模 址块 传的 递初 给始 核化 心与
注 销 例
Linux内核中的Rootkit
• 通过LKM,可以在系统内核中插入木马模块 • 一个典型的以Linux 2.2.x为基础的rootkit—— knark
– 使用insmod knark.o就可以加载到内核中
• 还有其他的ROOTKITS,比如adore • 内核ROOTKITS的对策
用户
GID
用户主
shell
目录
xylon:x:501:501:Jacky:/home/zhuxg:/bin/bash
用户名
密码 位置
UID
用户 全名
解读/etc/shadow文件
从1970年1月1日 起账号被禁用的
天数
用户名
加密口 令
上一次修改的 时间(从1970 年1月1日起的
天数)
口令在两次修 改间的最小天
• 查询
– ndd /dev/arp arp_cleanup_interval
• 设置
– ndd -set /dev/arp arp_cleanup_interval 60000
启动网络参数设定
• 设置/etc/init.d/inetinit
– ndd -set /dev/tcp tcp_conn_req_max_q0 10240 – ndd -set /dev/ip ip_ignore_redirect 1 – ndd -set /dev/ip ip_send_redirects 0 – ndd -set /dev/ip ip_ire_flush_interval 60000 – ndd -set /dev/arp arp_cleanup_interval 60 – ndd -set /dev/ip ip_forward_directed_broadcasts 0 – ndd -set /dev/ip ip_forward_src_routed 0 – ndd -set /dev/ip ip_forwarding 0 (或/etc/notrouter) – ndd -set /dev/ip ip_strict_dst_multihoming 1
文件管理
Linux/Unix文件系统类型
• Ext2/ext3、UFS、JFS • VFS抽象层文件系统,挂载具体的文件系统,lkm rootkit过滤VFS相关的系统
调用 • 文件类型
– 常规文件:ASCII文本,二进制数据,可执行binary – UNIX上的ABI:a.out,ELF文件格式 – 目录:包含一组文件的二进制可执行文件 – 特殊文件:/dev,/proc – 链接文件 – Sockets:进程间通讯使用的特殊文件
相关文档
最新文档