Presentation is loading. Please wait.

Presentation is loading. Please wait.

中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn 《网络信息安全》 中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn.

Similar presentations


Presentation on theme: "中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn 《网络信息安全》 中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn."— Presentation transcript:

1 中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn
《网络信息安全》 中国科学技术大学 肖 明 军

2 • 第一版Unix系统最早于1971年11月安装在DEC PDP-11/45机器上
• Unix v6 手册于1975年发布 • 此后,Unix发展成好多个分支,而且越来越复杂…

3 UNIX 操作系统演进史 UNIX的历史开始于1969年ken Thompson,Dennis Ritchie(即著名的K&G,C语言的发明人)与一群人在一部PDP-7上进行的一些工作,后来这个系统变成了UNIX。它主要的几个版本为: V1(1971):第一版的UNIX,以PDP-11/20的汇编语言写成。包括文件系统,fork、roff、ed等软件 V4(1973):以C语言从头写过,这使得UNIX修改容易,可以在几个月内移植到新的硬件平台上。最初C语言是为UNIX设计的,所以C与UNIX间有紧密的关系。 V6(1975):第一个在贝尔实验室外(尤其是大学中)广为流传的UNIX版本。这也是UNIX分支的起点与广受欢迎的开始。1.xBSD (PDP-II)就是由这个版本衍生出来的。 V7(1979):在许多UNIX玩家的心目中,这是“最后一个真正的UNIX”,这个版本包括一个完整的K&RC编译器,Bourne shell。V7移植到VAX机器后称为32V。 目前开发UNIX(System V)的公司是Unix System Laboratories (USL)。USL本为AT&T所有,1993年初被Novell收购。Novell于1993年末将UNIX这个注册商标转让给X/Open组织 目前为止,UNIX有两大流派:那就是AT&T发布的UNIX操作系统System V与美国加州大学伯克利分校发布的UNIX版BSD(Berkeley Software Distribution)。SVR4是两大流派融合后的产物。1991年底,与System V针锋相对的开放软件基金会(Open Software Foundation)推出了OSF/1。

4 UNIX 操作系统分类

5 HP/UX、AIX等等– 从早期SYSV和部分BSD系统发展而来的商用操作系统
当前主流的 UNIX 系统 HP/UX、AIX等等– 从早期SYSV和部分BSD系统发展而来的商用操作系统 Solaris– 从SunOS系统发展而来,并借鉴了一些BSD规则 Linux– 是几乎所有unix系统发展而来的“混血儿”, 但看起来更像SYSV-ish FreeBSD、 NetBSD、OpenBSD– 完全从主流BSD发展而来的分支

6 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

7 计算机系统结构 一般情况下,我们不能直接操作裸机,必须通过一个叫做基本输入输出系统的软件系统(英文为Basic Input/Output System,简称BIOS),才能操作控制裸机,之所以这样称呼它,是因为它提供了最基本的计算机操作功能,如在屏幕上显示一点,接收一个键盘字符的输入等。 在基本输入输出系统的外面是操作系统(Operating System):专门负责管理计算机的各种资源,并提供操作电脑所需的工作界面。有了它们,人们才可以方便自如地使用电脑。 应用软件一般都运行在操作系统之上,由专业人员根据各种需要开发。我们平时见到和使用的绝大部分软件均为应用软件,如杀毒软件,文字处理软件,学习软件,游戏软件,上网软件等等 具体结构图如右图所示: 应用程序 操 作 系 统 基本输入输出系统(BIOS) 底层硬件设备

8 Linux 操作系统结构 用户进程 系统调用接口 LINUX 内核 硬件:CPU、内存、硬盘、网络硬件等
系统调用接口:在应用程序中,可通过系统调用来调用操作系统内核中特定的过程,以实现特定的服务,比如创建一个新进程等。由若干条指令构成的过程:SHELL、WHO等 内核:操作系统的灵魂,它负责管理磁盘上的文件、内存,负责启动并运行程序,负责从网络上接收和发送数据包等。内核实际是抽象的资源操作到具体硬件操作细节之间的接口。 硬件:这个子系统包括了LINUX安装时需要的所有可能的物理设备,如CPU、内存、硬盘、网络硬件等

9 Linux 内核的构成 内存管理子系统 (MM) 硬件无关 硬件相关 虚拟文件系统 (VFS) 进程调度 进程间通信 (SCHED)
内存管理子系统:允许多个进程安全地共享主内存区域,支持虚拟内存 硬件驱动程序 逻辑文件系统 虚拟文件系统 (VFS) 进程调度控制着进程对CPU的访问,当需要选择下一个进程运行时,由调度程序选择最值得运行的进程 进程调度 (SCHED) 进程间通信 (IPC) 虚拟文件系统隐藏了各种不同硬件的具体细节,为所有设备提供了统一的接口,VFS支持几十种不同的文件系统 进程间通信支持进程间各种通信机制 硬件驱动程序 网络协议 网络接口 (NET) 网络接口提供了对各种网络标准的存取和各种网络硬件的支持

10 在屏幕上的不同位置分别显示各自的计数器值(16 进制)
Linux 进程调度子系统 进程调度子系统完成的主要功能: 允许进程建立自己的拷贝 决定哪一个进程将占用CPU,使得可运行进程之间进行有效地转移接受中断并把他们发送到合适的内核子系统 发送信号给用户进程 管理定时器硬件 当进程结束后,释放进程所占用的资源 支持动态装入模块,这些模块代表着内核启动以后所增加的新功能,这种可装入的模块将由虚拟文件系统和网络接口使用 FS IPC 在屏幕上的不同位置分别显示各自的计数器值(16 进制) SCHED MM NET task1 task2 task3 1、进程调度与其他子系统的依赖关系 系统调 用接口 进程调度 定时器管理 模块管理 进程 调度 Scheduler内核任务调度程序 时钟中断(182次 / 秒) 3、进程调度示意图 2、进程调度的结构图 结构特定 的模块

11 Linux 内存管理子系统 中央处理单元(CPU) 功能单元 寄存器 内部cache 内部cache 主存 磁盘 昂贵 快速 小容量 便宜
低速 大容量 主存 内存管理是Linux内核最复杂的任务之一:主要包括地址映射、请页、交换、内存分配、内存回收、缓存、刷新、共享等机制 程序的创建和执行以及内存的初始化 磁盘 存储器的层次结构

12 Linux 多任务系统 内核空间 Linux 采用0 级、3 级 内核模式对应 0 级 用户模式对应 1、2、3 级 任务3
内核模式和用户模式的区别反映在线性地址空间中就是内核空间和用户空间所处位置的不同 任务3 保护特权级 用户数据 用户代码 3 2 任务2 1 OS代码 OS数据 ---GDT、IDT、TSS ---页表 ---特权数据 ---内核栈 任务4 4G 内核空间 任务1 3G 用户空间 (1、2、3 级) 任务5 任务N 0G

13 Linux 网络层 网络应用程序 应用程序 用户模式:3 级 内核模式:0 级 BSD套接字 套接字接口 INET套接字 TCP UDP
协议层 IP ARP/RARP 网络设备 PPP SLIP 以太网

14 Linux 文件系统------目录结构 bin boot dev etc home lib lost+found mnt proc
/ 根目录 bin boot dev etc home lib lost+found mnt 存放常用的命令 存放启 动文件 存放设 备文件 存放配 置文件 用户主 目录 存放共享 库文件 系统不正 常关机的 一些文件 临时挂载文件系统 proc sbin root usr var tmp 存放系统内存的映射 存放超级用户管理程序 超级用户主目录 用到的应用程序和文件 存放不断扩 充的东西 和系统日志 存放临时文件 X11R6 bin sbin doc include lib local Man src X-window 目录 应用程序 超级用户的管理程序 Linux文档 开发编译 应用程序 的头文件 常用的共享库 一般用户的/usr目录 存放帮助文档 Linux 源代码

15 Linux 进程间通信(IPC) 进程间通信(IPC) 进程调度 内存管理 文件系统
支持信号:信号是发送给进程的异步信息 支持等待队列:等待队列提供了一种机制它让等待操作完成的进程处于睡眠(SLEEP)状态 支持文件锁:这种机制允许进程把文件的一个区域或整个文件声明为只读,所有进程只能对声明的区域进行读,除了拥有锁的进程 支持管道和命名管道:这种机制允许两个进程之间面向连接,双向数据传送 支持System V IPC机制 支持信号量。 支持消息队列 支持共享内存:几个进程存取物理内存的同一区域 支持UNIX的套节口:又一种面向连接的数据传送机制,它提供了与INET sockets 相同的通信模型

16 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

17 什么是服务? 服务就是运行在网络服务器上监听用户请求的进程 服务是通过端口号来区分的 常见的服务及其对应的端口 ftp : 21 telnet : 23 http(www) : 80 pop3 : 110

18 在UNIX系统里启动与关闭服务? 在UNIX系统中, 服务是通过inetd 进程或启动脚本来启动 通过 inetd 来启动的服务可以通过在/etc/inetd.conf 文件中注释来禁用 通过启动脚本启动的服务可以通过改变脚本名称的方式禁用

19 inetd 超级服务器? 1. inetd超级服务器 inetd 的功能 inetd 的配置和管理 2. 服务的关闭 关闭通过inetd启动的服务 关闭独立启动的服务 3. inetd 的替代品 xinetd( xinetd 比inetd更多管理功能 xinetd 的配置

20 inetd 配置文件? # inetd.conf This file describes the services that will be available # through the INETD TCP/IP super server. To re-configure # the running INETD process, edit this file, then send the # INETD process a SIGHUP signal. # # Echo, discard, daytime, and chargen are used primarily for testing. # To re-read this file after changes, just do a 'killall -HUP inetd' #echo stream tcp nowait root internal #echo dgram udp wait root internal #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #daytime dgram udp wait root internal #chargen stream tcp nowait root internal #chargen dgram udp wait root internal #time stream tcp nowait root internal #time dgram udp wait root internal # These are standard services. ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

21 UNIX启动脚本 UNIX启动脚本目录 /etc/rc*.d/ 禁用启动脚本 改变脚本名,使他不以大写的‘S’ 开头
rc3.d]# ls -a S11portmap S40crond S55routed S60rusersd S85sound S15netfs S45pcmcia S55sshd S60rwhod S90xfs K30sendmail S20random S50inet S60lpd S75keytable S91smb S05apmd S30syslog S50snmpd S60nfs S85gpm S99linuxconf S10network S40atd S55named S60rstatd S85httpd S99local rc3.d]# 禁用启动脚本 改变脚本名,使他不以大写的‘S’ 开头

22 UNIX其他风格的启动脚本 系统启动脚本 sysV风格的启动脚本 rcX.d/KNprog SNprog K03rhnsd K24irda S10network S90crond K05anacron K25squid K60lpd S12syslog K05keytable K30sendmail S91smb BSD风格的启动脚本 /etc/rc.conf sshd_enable=“YES”

23 UNIX常用网络监视工具 使用命令工具来监视网络状况 netstat ifconfig Linux下的socklist Freebsd下的sockstat lsof – I tcpdump

24 建议禁止使用的网络服务 finger tftp r系列服务 telnet 大多数rpc服务 其他不必要的服务

25 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

26 PC 机启动过程 PC启动 Intel CPU进入实模式 开始执行0xFFFF0(ROM—BIOS)处的代码 BIOS 自检
初始化位于地址0 的中断向量表 BIOS将启动盘的第一个扇区装入到0x7C00, 并开始执行此处的代码 完成内核的初始化

27 1. 开始引导装入程序(boot loader) 2. 内核初始化并运行内核程序 3. 开始其他系统 “自发的” 进程
UNIX 引导概述 1. 开始引导装入程序(boot loader) 2. 内核初始化并运行内核程序 3. 开始其他系统 “自发的” 进程 4. 运行系统起始脚本

28 • 最初的引导环境通常是储存在NVRAM 设备中,并在开机的时候读入内存
引导装入程序(boot loader) • 最初的引导环境通常是储存在NVRAM 设备中,并在开机的时候读入内存 • NVRAM 引导装入程序触发初始引导模块(Boot block)里的程序,进行引导初始化 • Boot block 装载入更大的程序块,引导Unix 内核程序

29 1. 识别CPU体系结构并初始化 2. 计算物理内存并初始化虚拟内存系统 3. 为内部结构分配内存 4. 探测系统设备,配置它们和初始化它们
内核活动 1. 识别CPU体系结构并初始化 2. 计算物理内存并初始化虚拟内存系统 3. 为内部结构分配内存 4. 探测系统设备,配置它们和初始化它们

30 这些进程通常用来控制进程调度安排和 VM system
内核引导的自发进程 “自发” 进程是内核通过特别机制创建的 这些进程通常用来控制进程调度安排和 VM system 它们不是存在于文件系统中可执行的进程,而是真正的内核代码 INIT 进程开始并引导系统运行开始脚本

31 • init 运行 shell 脚本 /etc/rc: – Mounts 本地文件系统 – 初始化网络接口 – 开始系统daemon程序
BSD “起始”(start-up)脚本 • init 运行 shell 脚本 /etc/rc: – Mounts 本地文件系统 – 初始化网络接口 – 开始系统daemon程序 • /etc/rc 运行 /etc/rc.local 中的特定系统服务程序 • /etc/rc.conf 脚本用来告诉系统在引导时运行哪些服务

32 SYSV “开始” (start-up)脚本
init程序依据设定运行级别运行相应的“开始”级别脚本: S – 系统启动配置 2 – 初始化网络配置,启动系统daemon程序 3 – 输出文件系统,启动本地daemon进程 运行级别0是中止系统,运行级别6是重新引导系统 启动脚本存放在 /etc/init.d目录中 通常一个脚本对应一个daemon进程或者一项配置任务 这些脚本都可以带有“start”或“stop”参数– 这样当系统down的时候,可以很好地关闭打开的进程 每一个运行级别都对应一个/etc/rc*.d目录 /etc/rc*.d中的链接文件的原文件是/etc/init.d目录中文件 链接文件命名方式是 S nn… (脚本运行使用“start” 参数)或者 K nn… (脚本运行使用“stop”参数) nn代表脚本运行的顺序

33 管理员可以控制在系统引导结束后运行哪些服务 对于BSD系统, 编辑/etc/rc.conf (或者去掉/etc/rc*中注释标记)
底线 管理员可以控制在系统引导结束后运行哪些服务 对于BSD系统, 编辑/etc/rc.conf (或者去掉/etc/rc*中注释标记) 对于SYSV系统, 删除 (或者重命名) 在 /etc/rc*.d目录中的链接文件

34 3. 开始NFS守护进程 (NFS是一个流行的通过TCP/IP网络共享文件的协议 )
init- 控制引导进程 1. 基本系统配置 2. 开始网络服务 3. 开始NFS守护进程 (NFS是一个流行的通过TCP/IP网络共享文件的协议 ) 4. 运行系统其他守护进程 5. 提供X界面登录的窗口

35 • 装载root文件系统-包括关键程序和配置文件 • 配置网络接口 • 装载其他文件系统,其中一些可能是从网络装载
1.基本系统配置 • 装载root文件系统-包括关键程序和配置文件 • 配置网络接口 • 装载其他文件系统,其中一些可能是从网络装载

36 DNS服务-只在有DNS服务的机器上运行 Portmapper (rpcbind )– 基于RPC服务的主控守护进程
2.开始网络服务 DNS服务-只在有DNS服务的机器上运行 Portmapper (rpcbind )– 基于RPC服务的主控守护进程 NIS/NIS+– 基于RPC的网络信息数据库 Syslog– 系统日志进程 inetd – 运行其他网络服务的“meta” 守护进程

37 "Automounter" (amd or automountd)
3.开始NFS守护进程 NFS 客户端进程: lockd – NFS 文件锁定系统 statd – 在系统重引导后解锁进程 NFS 服务器端进程: mountd – 服务器响应客户请求 nfsd – NFS I/O 进程 "Automounter" (amd or automountd)

38 • cron – 在事先设定好的时间运行的后台进程 • Sendmail – 邮件服务进程
4.运行系统其他进程 • cron – 在事先设定好的时间运行的后台进程 • Sendmail – 邮件服务进程 • 其他服务进程 – NTP、 SNMP、 HTTP、“volume managers”、local services ……

39 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

40 如何衡量系统安全程度? 第一级:用户自主保护级 第二级:系统审计保护级 第三级:安全标记保护级 第四级:结构化保护级 第五级:访问验证保护级 中华人民共和国国家标准 GB 计算机信息系统安全保护等级划分准则 操作系统安全程度的度量标准:目前常用美国国防部系统所制定的TCSEC(“Trusted Computer System Evaluation Criteria”(1985)),其评估标准主要是基于: 系统安全政策(Policy)的制定 系统使用状态的可审性(Accountability) 安全政策的准确解释和实施的可靠性(Assurance) 系统安全程度被分为八个等级(D1、C1、C2、B1、B2、B3、A1和A2),其中D1系统的安全度为最低,常见的无密码保护的个人计算机系统即属此类; 通常具有密码保护的多用户工作站系统属于C1级 一个网络系统所能达到的最高安全等级不超过网络上安全性能最低环节的安全等级,因而网络系统安全的难度更大。

41 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

42 UNIX 系统物理安全 ------ 注意点1 服务器应该安放在安装了监视器的隔离房间内,并且监视器要保留15天以上的摄像记录。
机箱、键盘、电脑桌抽屉要上锁,以确保旁人即使进入房间也无法使用电脑,钥匙要放在另 外的 安全的地方。 所有设备的管理人和责任人必须明确,名单必须由相应主管定期审核; 计算机设备的访问必须得到其管理人的授权; 受控访问区域内任何计算机设备的存放都必须有完整纪录清单,清单不许定期审视; 计算机系统设备的任何物理变更,如搬迁、废弃、更换配件等都必须进行登记; 计算机设备离开公司时必须要通行证,所有此类物品的出门都必须记录。

43 关闭不用的接口:并行口、串行、红外或USB; 设置开机口令; 严格限制对系统的物理存储;
UNIX 系统物理安全 注意点2 保护硬件环境 ; 保护硬件; 关闭不用的接口:并行口、串行、红外或USB; 设置开机口令; 严格限制对系统的物理存储; 安装操作系统时应该在非生产的网络中,或放置在断开的网络中; 使用第二系统来接收厂商提供的升级报或补丁程序

44 在正式装补丁程序前需要校验(md5sum) 随时注意并更新系统和软件补丁
UNIX 系统物理安全 注意点3 使用常规介质;备份可能包括改变的代码 对于具有网络功能的设备只安装必要的选项 系统安装结束后,将最新的补丁程序打上 去掉不用的用户名或者修改其密码 使用第二系统来获得补丁程序 在正式装补丁程序前需要校验(md5sum) 随时注意并更新系统和软件补丁

45 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

46 UNIX 常用命令 ------ lsof 下载地址: http://freshmeat.net/projects/lsof/
用途: 列举打开的文件(list open files).由于在UNIX中文件的多样性,一个socket连接也可以理解为一个文件句柄描述符. 类型:基本命令: 主要功能: 查看当前连接,类似于netstat 查看某个进程打开或者使用了哪些文件 从上面可以看出来21端口ftp是由xinetd提供服务,如果我们想看关于ftp进程打开了哪些文件,可以运行命令如图: 还有其他操作引用请参看lsof 的man page

47 UNIX 常用命令 ------ chattr
给ext2系统上的文件设置属性.比如设置成只读,这样即使是root,也不能使用rm 命令删除掉. Chattr是为linux的ext2文件系统服务的,在BSD下,可以用chflags命令. 比如:锁定文件1,不允许删除: test]# ls 1 test]# lsattr /1 test]# chattr +i /*设置不能更改属性 */ ---i /1 test]# rm 1 rm: remove write-protected file `1'? y rm: cannot unlink `1': Operation not permitted /*已经不允许删除了 */ test]# chattr -i 1 rm: remove `1'? y test]# 具体详细帮助请参考man chattr

48 UNIX 常用命令 ------ Netstat /sockstat
Netstat 查看网络连接命令,可以知道当前系统有那些连接,那些端口是listen状态等。 Sockstat是BSD下的程序,可以用来查看网络进程的PID号(对应linux下netstat –p参数)。 Linux下查看TCP连接: test]# netstat -ant Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp : :* LISTEN tcp : :* LISTEN tcp : :* LISTEN tcp : :* LISTEN tcp : :* LISTEN tcp : :* LISTEN tcp : : ESTABLISHED 详细应用请参看man netstat

49 UNIX 常用命令 md5sum 文件校验和,主要用来检查文件大小,内容等是否更改。在系统被入侵后,可以很方便的用这个命令来检查一些常用命令是否被更改。 我们可以在刚安装完系统后备份一些重要命令的md5校验和,再备份结果到其他介质上,定期检查看校验和是否正确。 比如: test]# md5sum /bin/netstat /bin/ps /bin/su /bin/ls >result.txt test]# ls a.txt id.txt ls.txt result.txt test]# md5sum -c result.txt /bin/netstat: OK /bin/ps: OK /bin/su: OK /bin/ls: OK test]# 监视文件大小变化、操作等,还可以使用第三方程序:Tripwire,Swatch等。

50 UNIX 常用命令 ------ acct acct是用来记录和统计用户命令执行情况以及其他有关用户的信息。不过很少有人使用。
这一系列的工具可以在psacct的rpm包里面找到。 log]# rpm -ql psacct /etc/logrotate.d/psacct /etc/rc.d/init.d/psacct /sbin/accton /usr/bin/ac /usr/bin/lastcomm /usr/sbin/accton /usr/sbin/dump-acct /usr/sbin/dump-utmp /usr/sbin/sa /usr/share/info/accounting.info.gz /usr/share/man/man1/ac.1.gz /usr/share/man/man1/lastcomm.1.gz /usr/share/man/man8/accton.8.gz /usr/share/man/man8/sa.8.gz /var/account /var/account/pact 具体使用可以参看man 8 sa ,man 8 accton ,man lastcomm,man ac

51 UNIX 常用命令 ------ Last/lastlog
用来查询用户登陆情况以及用户最后登陆时间。 系统文件:/var/log/utmp以及/var/log/lastlog用来记录用户登陆情况和最后登陆时间。 注意:如果这两个日志被擦除,这两个命令将显示无结果

52 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

53 用户环境变量 profile 每一个用户登录进来的时候,如果有特殊需要,会在用户目录里面产生一些配置文件,比如Linux下默认bash shell的就有.bash_profile .bashrc等文件,这些文件主要用来控制用户在整个登陆会话中的一些环境变量,alias命令别名,umask值,以及初始化命令等。 比如:linux下的bash_profile文件: root]# cat .bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin BASH_ENV=$HOME/.bashrc USERNAME="root" export USERNAME BASH_ENV PATH root]# cat .bashrc # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc root]# 针对所用用户的设置文件是/etc/bashrc,有兴趣的可以打开/etc/bashrc看看

54 用户环境变量 History 用户的命令记录会在history文件里面记录起来,比如,linux下用bash shell的用户,命令会缺省记录在.bash_history文件里面: root]# tail .bash_history lsof -iTCP -m lsof -iTCP -n lsof -iTCP -n -P lsof -iTCP -n -P -s lsof -iTCP -n -P -T lsof -iTCP -n -P -U lsof -iTCP -n -P -U -X names lsof -iTCP -n -P -U --names lsof -iTCP -n -P -U -r netstat -antp root]# 在系统被入侵后,如果运气好的话,还会留下入侵者使用的一些命令哦。

55 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

56 常见目录的用途 UNIX 文件系统结构 /bin ------ 用户命令可执行文件。 /dev ------ 特殊设备文件。
/etc 系统执行文件、配置文件、管理文件。 /home 用户的起始目录。 /lib 引导系统及在 root 文件系统中运行命令所需共享。 /lost+found 与特定文件系统断开连接的丢失文件。 /mnt 临时安装的文件系统。 /proc 伪文件系统,是到内核数据结构或运行进程的接口。 /sbin 为只被root使用的可执行文件及引导系统启动的文件。 /usr 分成许多目录,包含可执行文件、头文件、帮助文件。 /var 用于电子邮件、打印、cron等的文件,统计、日志文件。

57 3. 特殊文件 —— /dev目录下的设备文件等。 4. 链接文件 —— 硬链接和符号链接。
UNIX 文件类型 文件类型 1. 普通文件——文本文件,二进制文件。 2. 目录—— 包括一组其它文件的二进制文件。 3. 特殊文件 —— /dev目录下的设备文件等。 4. 链接文件 —— 硬链接和符号链接。 5. Sockets —— 进程间通信时使用的特殊文件。

58 UNIX 文件属性 UNIX把一切都看成是个文件。包括目录以及设备等等的所有的文件都有一个i node号,作为这个文件的管理信息。文件本身存在于数据区,但是i node号存在i node block里。 i-node包含的信息 UID——文件拥有者。 GID ——文件的权限设置。 模式节点上次修改时间。 文件大小——文件所在的分组。 文件类型——文件、目录、链接等。 ctime——i-访问时间。 mtime——文件上次修改时间。 atime——文件上次访问时间。 nlink——硬链接的数目。

59 各种许可权限的含义是什么? File Owner Group Owner Everyone Else Write Permission
UNIX 文件系统权限 各种许可权限的含义是什么? File Owner Group Owner Everyone Else Write Permission Read Permission Execute Permission

60 UNIX 文件和目录权限位的含义 文件 目录 Read 可以读取文件 可以对目录中的文件列表 Write 可以修改文件内容
可以创建或删除文件阿 Execute 可以执行文件 可以访问目录中的文件 Set-UID 使用文件属主的权限执行文件 N/A Set-GID 使用文件所属组的权限执行文件 新建文件权限是继承上级目录权限 "Sticky" 只有文件属主才能删除文件

61 UNIX 绝对文件权限模式 File Owner Group Owner Everyone Else

62 下面信息的第一栏可以表明文件类型和该文件赋予不同组用户的权限
查看UNIX 文件权限 ls -l 命令可以来显示文件名与特性。 下面信息的第一栏可以表明文件类型和该文件赋予不同组用户的权限 /etc]# ls -al |more total 937 drwxr-xr-x 32 root root Aug 31 11:07 . drwxr-xr-x 16 root root May 27 08:05 .. -rw root root May 25 08:22 .pwd.lock -rw-r--r root root May 25 08:55 HOSTNAME -rw-r--r root root May 25 12:56 MACHINE.SID -rw-r--r root root Mar Muttrc drwxr-xr-x 14 root root May 27 07:46 X11 -rw-r--r root root Jun 2 08:24 adjtime -rw-r--r root root Apr 19 16:38 aliases -rw-r--r root root May 25 08:36 aliases.db --More--

63 1. chmod — 改变文件权限设置。 2. chgrp — 改变文件的分组。 3. chown — 改变文件的拥有权。
UNIX 文件驱权限修改命令 1. chmod — 改变文件权限设置。 2. chgrp — 改变文件的分组。 3. chown — 改变文件的拥有权。 4. Chattr — 设置文件属性 使用chmod命令修改文件权限: chmod 666 myfile chmod 1777 /tmp 使用umask命令设置文件默认权限 umask 022 umask 077

64 什么是umask值? 用来指明要禁止的访问权限,通常在登录文件.login或.profile中建立。 三位8进制值
用来指定新创建文件和目录权限的缺省许可权限 通过umask值来计算文件目录的许可权限 常用的值有022,027,077

65 SUID和SGID 什么是SUID和SGID程序? UNIX中的SUID(Set User ID)/SGID(Set Group ID)设置了用户id和分组id属性,允许用户以特殊权利来运行程序, 这种程序执行时具有宿主的权限. 如passwd程序,它就设置了SUID位 -r-s--x--x 1 root root Apr /usr/bin/passwd ^SUID程序 passwd程序执行时就具有root的权限 为什么要有SUID和SGID程序? SUID程序是为了使普通用户完成一些普通用户权限不能完成的事而设置的.比如每个用户都允许修改自己的密码, 但是修改密码时又需要root权限,所以修改密码的程序需要以管理员权限来运行.

66 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

67 人类倾向于使用易于猜测到的口令, 这在使用字典猜测攻击面前变得非常脆弱
帐号安全基础 选择复杂口令的意义: 防止两层攻击 基于用户信息简单密码猜测 基于口令强制猜测程序的攻击 口令选择的弱点: 人类倾向于使用易于猜测到的口令, 这在使用字典猜测攻击面前变得非常脆弱

68 不要选择可以在任何字典或语言中找到的口令 不要选择简单字母组成的口令 不要选择任何和个人信息有关的口令
选择口令的原则 如何选择口令? 严禁使用空口令和与用户名相同的口令 不要选择可以在任何字典或语言中找到的口令 不要选择简单字母组成的口令 不要选择任何和个人信息有关的口令 不要选择短于6个字符或仅包含字母或数字 不要选择作为口令范例公布的口令 采取数字混合并且易于记忆

69 如何保管好自己的口令? 不要把口令写在纸上 不要把口令贴到任何计算机的硬件上面 不要把口令以文件的形式放在计算机里 不要把口令与人共享
口令的管理 如何保管好自己的口令? 不要把口令写在纸上 不要把口令贴到任何计算机的硬件上面 不要把口令以文件的形式放在计算机里 不要把口令与人共享 5. 防止信任欺骗(电话, 等)

70 口令加密的机理 Unix系统使用一个单向函数crypt(),来加密用户的口令。单向函数crypt()从数学原理上保证了从加密的密文得 到加密前的明文是不可能的或是非常困难的。当用户登录时,系统并不是去解密已加密的口令,而是将输入的口令明文字符串传给加密函数,将加密函数的输出与 /etc/passwd文件中该用户条目的PASSWORD域进行比较,若匹配成功,则允许用户登录系统。 Crypt()的加密算法基于资料加密标准DES,它将用户输入的口令作为密钥,加密一个64bit的0/1串,加密的结果又使用用户的口令再次加密;重复该过程,一共进行25 次。最后的输出为一个11byte的字符串,存放在/etc/passwd的PASSWORD域。 Morris和Thompson 修改了crypt()函数的实现。现在Unix系统中使用的加密函数原型如下: Char *crypt(char *salt, char *passwd) Salt是一个12位长的数字,取值范围为0到4095。它略改变了DES的输出,4096个不同的salt值使同一个口令产生不同的输出。当改变口令时,系统选择当天的一个时间,得到一个salt数值。该salt被存放在加密口令的最前面。因此,passwd文件存放的密文口令是13位。一些Unix系统,例如:HP-UX,Ultrix和BSD4.4,使用了16位或更长的salt值,这种算法称为 bigcrypt()或crypt16()。

71 name:coded-passwd:UID:GID:userinfo:homedirectory:shell 2. 条目例子:
条目的格式: name:coded-passwd:UID:GID:userinfo:homedirectory:shell 2. 条目例子: jrandom:Npge08fdehjkl:523:100:J.Random:/home/jrandom:/bin/sh 3. 密文的组成 Salt + 口令的密文 Np ge08fdehjkl

72 通常不被登录,而是进程和文件所有权保留位置,如bin、daemon、mail和uucp等。
帐号管理 1. 伪用户帐号 通常不被登录,而是进程和文件所有权保留位置,如bin、daemon、mail和uucp等。 2. 单独命令帐号 如date、finger 、halt等帐号。 3. 相应策略 检查/etc/passwd文件,确保口令域中是 “*”,而非空白。 4. 公共帐号 原则上每个用户必须有自己的帐号,若一个系统必须提供guest帐号,则设置一个每天改变的口令。最好是设置受限shell,并且做chroot限制.

73 在/etc/passwd文件中用户名前加一个“#”,把“#”去掉即可取消限制。
禁用或删除帐号 1.禁用帐号 在/etc/passwd文件中用户名前加一个“#”,把“#”去掉即可取消限制。 2. 删除帐号 a) 杀死任何属于该用户的进程或打印任务。 b) 检查用户的起始目录并为任何需要保存的东西制作备份。 c) 删除用户的起始目录及其内容。 d) 删除用户的邮件文件(/var/spool/mail)。 e) 把用户从邮件别名文件中删除(/etc/sendmail/aliases)。

74 严格限制root只能在某一个终端登陆,远程用户可以使用/bin/su -l来成为root。
除非必要,避免以超级用户登录。 严格限制root只能在某一个终端登陆,远程用户可以使用/bin/su -l来成为root。 不要随意把root shell留在终端上。 若某人确实需要以root来运行命令,则考虑安装sudo这样的工具,它能使普通用户以root来运行个人命令并维护日志。 不要把当前目录(“ . /”)和普通用户的bin目录放在root帐号的环境变量PATH中。 永远不以root运行其他用户的或不熟悉的程序

75 1. 策略传播(对用户培训和宣传) 2. 进行口令检查 3. 产生随机口令 4. 口令更新 5. 设置口令失效时间
巩固帐号安全 加强口令安全 1. 策略传播(对用户培训和宣传) 2. 进行口令检查 3. 产生随机口令 4. 口令更新 5. 设置口令失效时间

76 巩固帐号安全 ------使用影子口令(shadow)文件
组成 /etc/passwd :口令域置为“X”或其它替代符号。 /etc/shadow:只被root或passwd等有SUID位的程序可读。 设置影子口令 在可选影子口令系统中,执行pwconv命令。该命令在影子口令文件不存在的情况下创建一个新的。如果已存在一个影子文件,p w c o n v把/ e t c / p a s s w d中的新用户添加到/ e t c / s h a d o w中,把/ e t c / p a s s w d中没有的用户从影子文件中删去,并把口令从/ e t c / p a s s w d移到影子文件中。

77 巩固帐号安全 ------/etc/shadow文件剖析
除了包含用户名和加密口令还包含以下域: 1. 上次口令修改日期。 2. 口令在两次修改间的最小天数。 3. 口令建立后必须修改的天数。 4. 口令更改前向用户发出警告的天数。 5. 口令终止后被禁用的天数。 6. 自从1970/1/1起帐号被禁用的天数。 7. 保留域。 示例: root:*:10612:0:99999:7:::

78 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

79 4. 它是一种在安全事件发生后,可以提供法律 证据的机制
为什么要启用审计? 1. 提供一种追踪用户活动的方法 2. 系统管理员可以知道系统的日常活动 3. 及时了解和处理安全事件 4. 它是一种在安全事件发生后,可以提供法律 证据的机制

80 如何启用审计? 1. 在UNIX中, 主要的审计工具是 syslogd,
如何启用审计? 如何启用审计? 1. 在UNIX中, 主要的审计工具是 syslogd, 2. 可以通过配置这个后台进程程序,可以提供各种水平的系统审计和指定输出目录

81 由syslog记录的日志 由syslog记录的日志:系统内核及工具产生信息时,通过调用syslog(),把信息送往守护进程syslogd,syslogd则根据/etc/syslog.conf中的配置要求进行处理(如记录到系统日志、输出到控制台等等) 由系统的守护进程syslogd记录的日志一般有: /var/log/messages /var/log/secure /var/log/maillog /var/log/cron /var/log/boot.log /var/log/spooler 这些日志记录什么内容,以及记录的标准都在/etc/syslog.conf里面定义和配置,具体内容请参看man syslog.conf,man syslogd

82 由login记录的日志文件 login主要记录用户登陆情况以及退出登陆的时间,使用时间,使用的虚拟终端等信息。一般存放在:
/var/run/utmp /var/log/wtmp /var/log/lastlog /var/spool/mail/* .hushlogin 用户可以用last、who、lastlog等命令来读取这些文件

83 由程序自己记录的日志文件 这个是由程序自己控制记录下的某些日志文件,比如:httpd 等。
比如linux下缺省安装的apache日志文件就存放在/var/log/httpd目录下面。 前面提到的acct日志记录也归纳在这里 core dump记录 用户程序发生程序错误,比如内存指针越界、特权进程对文件的不正确处理等都会导致程序崩溃,这个时候,系统就会根据配置文件决定是否产生一个core dump文件,通过这些文件我们可以找到程序发生错误的地点,并且可以知道程序崩溃时候CPU各个寄存器的值,通过这些信息我们可以知道程序是在哪个函数发生错误,引起错误发生的原因等信息。

84 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

85 采用TCP wrappers 提供更强的访问控制 限制root用户登录的tty设备 防止欺骗: 禁止IP源路径路由
Linux系统网络安全基本配置 过滤: 系统启动服务清理 屏蔽系统对ping请求的反应 屏蔽系统登录显示信息 “/etc/host.conf”文件配置 使用更安全的版本替代(比如ssh2) 采用TCP wrappers 提供更强的访问控制 限制root用户登录的tty设备 防止欺骗: 禁止IP源路径路由 防范“SYN Attack”拒绝服务攻击 配置防火墙加强网络防御

86 可以通过/etc/rc2.d/S71RPC改名来禁止rpc 清理/etc/rc3.d SNMP使用的选择 SNMP配置
系统启动服务清理 清理/etc/rc2.d 值得注意的 nfs.*(网络文件共享) 可以通过/etc/rc2.d/S71RPC改名来禁止rpc 清理/etc/rc3.d SNMP使用的选择 SNMP配置 清理/etc/xinetd.d 服务: 所有的TCP/UDP小服务 所有的调试服务 所以的R服务 几乎所有的RPC服务 使用必要的工具替换telnet,ftp 必要的时候可以完全禁止inetd或用xinetd替换

87 ----------------------------------------
禁止所有不需要的服务 /etc/xinetd.d/telnet service telnet { disable = yes flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd server_args = -h log_on_failure += USERID

88 编辑“host.conf”文件(vi /etc/host.conf)
屏蔽系统对ping请求的反应 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 编辑“host.conf”文件(vi /etc/host.conf) order bind,hosts multi on (允许主机可以有多个地址 ) nospoof on (不允许对该服务器进行IP地址欺骗 ) 屏蔽系统登录显示信息 1)编辑“/ect/rc.d/rc.local”文件 #echo "" > /etc/issue #echo "$R" >> /etc/issue #echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue #cp -f /etc/issue /etc/issue.net #echo >> /etc/issu 2)删除“/etc”目录下“issue.net”、“issue”文件

89 限制root用户登录的tty设备 “/etc/securetty”文件允许你规定“root”用户可以从那个TTY设备登录。
编辑securetty文件(vi /etc/securetty)象下面一样,注释掉一些行: tty1 #tty2 #tty3 #tty4 #tty5 #tty6 #tty7 #tty8

90 禁止IP源路径路由: 防范“SYN Attack”拒绝服务攻击
# echo 0 /proc/sys/net/ipv4/conf/*/accept_source_route; 防范“SYN Attack”拒绝服务攻击 # echo 1 > proc/sys/net/ipv4/tcp_syncookies

91 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

92 WWW服务器安全 WWW服务有何特殊性? 一旦出现问题造成的损失很大 企业形象的损害 信息资产的流失 对公众开放,成为众多攻击者的目标

93 WWW服务器安全 典型的Apache服务器配置图

94 Apache服务器软件的编译和安装 相关网址 http://www.apache.org/dist/httpd/
WWW服务器安全 Apache服务器软件的编译和安装 相关网址

95 Apache服务器配置应注意哪些问题? 1. 尽量使用高版本的服务器程序 2. 给WWW文档所在目录设置正确的权限
3. 不要以root身份运行服务器程序 4. 在CGI程序中不要信任用户输入的任何信息,特别是“& ; ` ‘ \ ” | * ? ~ < > ^ ( ) [ ] { } $ \n \r \t \0 # ../”一类的字符 5. 禁止自动目录列表 (Options –Indexes)

96 WWW服务器安全 Apache日志审查: Access_log: [24/Nov/2002:19:45: ] "GET / HTTP/1.1" "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" [24/Nov/2002:19:45: ] "GET /icons/apache_pb.gif HTTP/1.1" " "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)“ Error_log: [Mon Nov 25 08:53: ] [notice] child pid 898 exit signal Segmentation fault (11) [Mon Nov 25 12:07: ] [error] [client ] request failed: error reading the headers [Mon Nov 25 12:10: ] [error] [client ] request failed: error reading the headers

97 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

98 FTP服务器安全 FTP服务器的安全问题? 必须以root身份运行 以明文传输数据(包括用户名和口令)

99 最好能把用户shell设置成/bin/true
FTP服务器安全 FTP服务器安全注意事项? 对匿名ftp服务器尽量不要开放写权限 禁止root登录 敏感信息不要通过ftp传递 对连接数和带宽加以限制 记录详细的日志 进行访问控制 使用安全性好的ftp服务器 对于提供ftp帐号的用户,如果是系统用户, 最好能把用户shell设置成/bin/true

100 d.匿名服务器的根目录不需要特殊的目录结构,执行文件,和库文件等。
FTP服务器安全 FTP服务器软件 推荐使用proftpd proftpd的特点 a.高度可配置的ftp服务器 b.良好的安全性 c.很容易配置多个虚拟服务器和匿名服务器 d.匿名服务器的根目录不需要特殊的目录结构,执行文件,和库文件等。 e.没有SITE EXEC命令

101 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

102 DNS服务器的安全问题? Internet上最重要的服务之一 DNS与BIND BIND服务器软件存在不少远程溢出漏洞

103 使用BIND9提供的安全特性来确保服务器的安全
DNS服务器安全 使用BIND9提供的安全特性来确保服务器的安全 1. 限制查询 allow-query子句的语法: options{ allow-query { 地址匹配列表 } }; 例如: allow-query { /24;10.1.2/24 }

104 2. 防止未授权的区传送 对某个域的区传送的限制: zone “demo.com” { type master;
DNS服务器安全 2. 防止未授权的区传送 对某个域的区传送的限制: zone “demo.com” { type master; file “db.demo”; allow-transfer{ ; } }; 全局的区传送访问控制列表: options{ allow-transfer {10.1.1/24;10.1.2/24} }

105 在options可以自定义版本信息,例如: options{ … version “unknow” }
DNS服务器安全 3. 隐藏BIND的版本信息 在options可以自定义版本信息,例如: options{ version “unknow” }

106 -u 以该用户名或用户id来运行named, 例如 -u nobody
DNS服务器安全 4. 以普通用户身份运行BIND 启动named时使用以下参数: -u 以该用户名或用户id来运行named, 例如 -u nobody -g 以该用户组或组id来运行named, 例如 -g nogroup

107 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

108 ftp://ftp.ssh.com/pub/ssh
安全shell (ssh)的特点: 1. rsh和rlogin 的替代品 2. 可以在不安全的网络上提供安全的加密通信 SSH 的下载和安装? ftp://ftp.ssh.com/pub/ssh

109 加密 SSH Client 端至 SSH Server 端之间的通讯数据; 突破防火墙的限制完成一些之前无法建立的 TCP 连接。
SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。SSH 还同时提供端口转发的功能。它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程有时也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果您工作环境中的防火墙限制了一些网络端口的使用,但是允许 SSH 的连接,那么也是能够通过将 TCP 端口转发来使用 SSH 进行通讯。总的来说 SSH 端口转发能够提供两大功能: 加密 SSH Client 端至 SSH Server 端之间的通讯数据; 突破防火墙的限制完成一些之前无法建立的 TCP 连接。

110 ssh –l username hostname ssh username@hostname
远程登录、远程执行 ssh –l username hostname ssh ssh command SSH 提供的其他工具 Sftp 安全ftp客户端 2. Scp 安全远程拷贝工具

111 SSH SSH 端口转发功能 以pop3服务为例说明

112 SSH 传统的POP3连接示意图 邮件客户端软件 pop3(110)端口 非加密连接 客户端 服务器端

113 通过ssh端口转发的加密POP3连接示意图
邮件客户端软件: foxmail pop3(110)端口 客户端 服务器 加密连接 ssh客户端软件 ssh服务端口(22) 通过ssh客户端转发的本地端口(7755)

114 SSH 端口转发功能的命令格式 ssh -L <local port>:<remote host>:
<remote port> <SSH hostname> ssh -l username -L 7755: :

115 2. Windows 下可以使用SecureCRT,Putty等
SSH SSH的客户端软件 1. Linux/UNIX一般自带 2. Windows 下可以使用SecureCRT,Putty等

116 相关软件的下载地址 vmware: http://www.vmware.com
SSH 相关软件的下载地址 vmware: cygwin: SecureCRT:

117 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

118 明显的特征 1) WEB站点主页面被删除或者被篡改 2) 文件突然被删除或者被修改 3) 系统速度突然变慢 4) 系统用户异常
如何知道系统已经被入侵 明显的特征 1) WEB站点主页面被删除或者被篡改 2) 文件突然被删除或者被修改 3) 系统速度突然变慢 4) 系统用户异常 5) 某些程序运行失败

119 3) netstat 看有不明连接或者不明端口 4) 日志文件内容、大小、日期异常 5) ps ax 列举有不明进程
如何知道系统已经被入侵 2.其他异常情况: 1) 网络流量出现异常 2) 用户登陆次数明显增多 3) netstat 看有不明连接或者不明端口 4) 日志文件内容、大小、日期异常 5) ps ax 列举有不明进程

120 检查系统日志(.bash_history,last等) 检查敏感的命令是否被改动(ls,ps,su…等) 检查系统启动文件
入侵检查一般步骤和要求 在出现以上或者其他异常情况后,首先应该 使主机与网络断开,可能的话不使用已经被 入侵的系统启动. 检查系统日志(.bash_history,last等) 检查敏感的命令是否被改动(ls,ps,su…等) 检查系统启动文件 检查入侵者留下的目录/文件 检查核心级的后门(module等) 检查是否已经成了入侵内网的跳板

121 检查系统日志 last,lastlog命令的输出 /var目录下的很多日志文件 messages文件 .bash_history文件

122 手工用strings命令(显示文件中的可打印字符 )查看
检查敏感的系统命令 检查文件内容和日期 手工用strings命令(显示文件中的可打印字符 )查看 如后门口令问题,Unix操作系统里,Login程序通常用来对telnet来的用户进行口令验证。入侵者获取login的源代码并修改,使它在比较输入口令与存储 口令时先检查后门口令。如果用户敲入后门口令,它将忽视管理员设置的口令让你长驱直入:这将允许入侵者进入任何账号,甚至是root目录。由于后门口令是在用户真实登录并被日志记录到utmp和wtmP前产生的一个访问,所以入侵者可以登录获取shell却不会暴露该账号。管理员注意 到这种后门后,使用”strings”命令搜索login程序以寻找文本信息。许多情况下后门口令会原形毕露。入侵者又会开始加密或者更改隐藏口令,使 strings命令失效。所以许多管理员利用MD5校验和检测这种后门。 利用系统本身提供的校验功能 和其他同样版本操作系统的可信主机对比

123 检查启动和配置脚本 检查/etc目录文件内容及日期 与同样版本的可信系统作对比

124 Find命令 find / -type d -name “.*” find / -type d –name “ *”
检查入侵者留下的文件或目录 Find命令 find / -type d -name “.*” find / -type d –name “ *” find / -perm

125 检查核心级后门 Linux系统的检查 FreeBSD系统的检查 Solaris系统的检查

126 可以在.bash_profile或者acct文件里面看到一 些日志记录. 检查入侵者遗留下来的程序或者文件是否有 提供包转发功能.
检查是否已经成了入侵内网的跳板 检查是否已经成为跳板比较困难,运气好的话 可以在.bash_profile或者acct文件里面看到一 些日志记录. 检查入侵者遗留下来的程序或者文件是否有 提供包转发功能. 2.检查入侵者遗留下来的程序或者文件是否有 指定内网IP. 3.检查内网机器,看是否有何异常.

127 提 纲 原 理 篇 实 践 篇 UNIX/LINUX 系统概述 UNIX/LINUX 下第三方安全工具 UNIX/LINUX 系统安全特性
系统体系结构 系统服务与进程 系统启动过程 系统的安全级别 UNIX/LINUX 系统安全特性 物理安全 常用命令介绍 用户环境变量介绍 文件系统安全 账号安全 日志记录 安全配置 APACHE 服务器配置要点 FTP 服务器配置要点 DNS 服务器配置要点 UNIX/LINUX 下第三方安全工具 SSH TCP_WRAPPER TRIPWIRE NON-EXEC STACK UNIX/LINUX 系统入侵分析 特征 处理方法 UNIX/LINUX 系统配置经验 分区划分 机器的启动密码 用户管理 系统文件安全 网络服务响应

128 关于分区 安装系统时就应该注意,如果用root分区纪录数据,如log文件和 ,就可能因为拒绝服务产生大量日志或垃圾邮件,从而导致系统崩溃。所以建议为/var开辟单独的分区,用来存放日志和邮件,以避免root分区溢满。最好为特殊的应用程序单独开一个分区,特别是可以产生大量日志的程序,如为 开设/mail分区, 还有建议为/home单独分一个区,从而就避免了部分针对Linux分区溢满的恶意攻击。   

129 关于BIOS 记着要在BIOS设置中设定一个BIOS密码,不接受软盘启动。这样可以阻止不怀好意的人用专门的启动盘启动你的Linux系统,并避免别人更改BIOS设置,如更改软盘启动设置或不弹出密码框直接启动服务器等等。

130 关于口令 口令严整是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN(口令最小长度)。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS(口令使用时间)。

131 关于Ping 没有人能ping通你的机器,你可以大大增强你的站点的安全性。你可以加下面的一行命令到/etc/rc.d/rc.local,以使每次启动后自动运行,这样就可以阻止你的系统响应任何从外部/内部来的ping请求。 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

132 关于Telnet    如果你希望用户用Telnet远程登录到你的服务器时不要显示操作系统和版本信息(可以避免有针对性的漏洞攻击),你应该改写/etc/inetd.conf中的一行象下面这样: telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h 加-h标志在最后使得telnet后台不要显示系统信息,而仅仅显示login。

133 或者把passwd和shadow文件里的相关记录用’#’注释掉。
关于特权帐号 禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击。 删除你系统上的用户,用下面的命令:userdel username   删除你系统上的组用户帐号,用下面的命令:groupdel username 或者把passwd和shadow文件里的相关记录用’#’注释掉。

134 如果你希望用户admin能su作为root.就运行下面的命令: usermod -gisd admin
如果你不想任何人能够su为root的话,你应该编辑/etc/pam.d/su文件,加下面几行: auth sufficient /lib/security/pam_rootok.so debug auth required /lib/security/pam_wheel.s o group=isd 这意味着仅仅isd组的用户可以su作为root。 如果你希望用户admin能su作为root.就运行下面的命令: usermod -gisd admin  

135 你可以用chmod -s去掉一些不需要程序的suid 位。
suid程序也是非常危险的,这些程序被普通用户以euid=0(即root)的身份执行,只能有少量程序被设置为suid。用这个命令列出系统的suid二进制程序: find / -perm print 你可以用chmod -s去掉一些不需要程序的suid 位。   

136 关于账户注销 如果系统管理员在离开系统时忘了从root注销,系统应该能够自动从shell中注销。那么,你就需要设置一个特殊的 Linux 变量“tmout”,用以设定时间。 你可以修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。 编辑文件/etc/profile,在“histfilesize=”行的下一行增加如下一行: tmout= 则所有用户将在10分钟无操作后自动注销。注意:修改了该参数后,必须退出并重新登录root,更改才能生效。

137 关于系统文件 对于系统中的某些关键性文件如passwd、passwd.old、passwd._、shadow、shadow._、inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。 如将inetd文件属性改为600: chmod 600 /etc/inetd.conf

138 关于系统文件 保证文件的属主为root,还可以将其设置为不能改变: # chattr +i /etc/inetd.conf   这样,对该文件的任何改变都将被禁止。 当然,我们可以用root重新设置复位标志后才能进行修改: # chattr -i /etc/inetd.conf  

139 关于用户资源 对你的系统上所有的用户设置资源限制可以防止DoS类型攻击,如最大进程数,内存数量等。例如,对所有用户的限制,编辑/etc/security/limits.con加入以下几行:   * hard core 0   * hard rss 5000   * hard nproc 20   你也必须编辑/etc/pam.d/login文件,检查这一行的存在:  session required /lib/security/pam_limits.so  上面的命令禁止core files“core 0”,限制进程数为“nproc 50“,且限制内存使用为5M“rss 5000”。

140 关于NFS服务器 如果要使用NFS网络文件系统服务,那么确保你的/etc/exports具有最严格的存取权限设置,意味着不要使用任何通配符,不允许root写权限,mount成只读文件系统。你可以编辑文件/etc/exports并且加:   /dir/to/export host1.mydomain.com(ro,root_squash)   /dir/to/export host2.mydomain.com(ro,root_squash)   其中/dir/to/export 是你想输出的目录,host.mydomain.com是登录这个目录的机器名,ro意味着mount成只读系统,root_squash禁止root写入该目录。最后为了让上面的改变生效,还要运行/usr/sbin/exportfs -a

141 grep -v “#” /etc/inetd.conf 用下面命令统计面前服务的总数:
关于系统服务 /etc/inetd.conf,它制定了/usr/sbin/inetd将要监听的服务,你可能只需要其中的两个:telnet和ftp,其它的类如shell, login, exec, finger等,除非你真的想用它否则统统关闭之。 用下面的命令显示没有被注释掉的服务: grep -v “#” /etc/inetd.conf    用下面命令统计面前服务的总数: ps -eaf|wc -l 同时建议采用ssh代替telnet和ftp

142 关于日志 所有的日志都在/var/log下(仅对linux系统而言),默认情况下linux的日志就已经很强大了,但除ftp外。因此我们可以通过修改/etc/ftpaccess 或者/etc/inetd.conf,来保证每一个ftp连接日志都能够纪录下来。下面是一个修改inetd.conf的例子,假如有下一行: ftp  stream  tcp  nowait  root  /usr/sbin/tcpd  in.ftpd -l -L -i -o   注释:   -l 每一个ftp连接都写到syslog   -L 纪录用户的每一个命令   -i 文件received,纪录到xferlog   -o 文件transmitted,记录到xferlog

143 关于补丁 你应该经常到你所安装的Linux系统发行商的主页上去找最新的补丁。例如:对于Redhat系统而言可以在: 在Redhat6.1以后的版本带有一个自动升级工具up2date,它能自动够测定哪些rpm包需要升级,然后自动从Redhat的站点下载并完成安装。

144 作业 07PPT上关于VLAN、VPN的作业 简述Linux系统网络安全基本配置 简述VLAN的不同类型,并比较它们的区别。

145 谢谢!


Download ppt "中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn 《网络信息安全》 中国科学技术大学 肖 明 军 xiaomj@ustc.edu.cn."

Similar presentations


Ads by Google