《LINUX系统的安全加固-中国科技网课件》由会员分享,可在线阅读,更多相关《LINUX系统的安全加固-中国科技网课件(36页珍藏版)》请在金锄头文库上搜索。
1、中国科学院计算机网络信息中心 中国科技网网络中心 All rights reserved,LINUX系统的安全加固,中国科技网网络中心 安全部 高鹏,前言,Linux系统凭借其稳定且源代码公开的特性,在互联网络上的应用已经越来越多。 当前,随着各式网络攻击、病毒威胁的不断增多,Linux系统的安全性也被愈发重视。因此,Linux系统的加固已成为网络管理员、普通用户迫在眉睫所需进行的工作。,目录,启动安全设置,GRUB引导,它允许位于主引导记录区中特定的指令来装载一个GRUB菜单或是 GRUB的命令环境。这使得用户能够开始操作系统的选择,在内核引 导时传递特定指令给内核,或是在内核引导前确定一些
2、系统参数。,LILO引导,LILO安装命令(/sbin/lilo)读取其配置文件(/etc/lilo.conf),按照 其中的参数将特定的LILO写入系统引导区。,启动安全设置,LILO引导、GRUB引导的单用户模式,引导启动后出现boot:提示时,使用一个特殊的命令,如 linuxsingle或linux 1,就能进入Linux单用户模式(Single-User mode)。 单用户模式的用户拥有root权限,其进入系统后,可编辑/etc/passwd 文件,去掉root一行中的x 即可在下次登录时无需密码使用root帐户。,启动安全设置,LILO引导单用户模式的口令设置,添加密码,设置权限
3、,改变属性,编辑配置文件lilo.conf(vim /etc/lilo.conf ),因为 /etc/lilo.conf文件中包含明文密码 所以要把它设置成root权限读取。 # chmod 600 /etc/lilo.conf,防止root误操作,可使/etc/lilo.conf文件 属性变为不可改,并更新LILO。 # chatter +i /etc/lilo.conf # /sbin/lilo -v,启动安全设置,Grub引导的口令设置,进入GRUB编辑模式,生成MD5密码,写入配置文件,启动系统后出现GRUB引导画面,按键进入命令行方式,输入md5crypt,将加密的密码添加到/boo
4、t/grub/grub.conf 中的password一行,目录,帐户安全设置,嵌入式认证模块-PAM介绍,PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。 PAM最初是集成在Solaris中,目前已移植到其它系统中,如Linux、SunOS、HP-UX 9.0等。,帐户安全设置,嵌入式认证模块-PAM介绍,帐户安全设置,PAM支持的四种
5、管理方式,认证管理(authentication management)主要是接受用户名和密码,进而对该用户的密码进行认证,并负责设置用户的一些秘密信息。 帐户管理(account management)主要是检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登录是否有时间段的限制等等。 密码管理(password management)主要是用来修改用户的密码。 会话管理(session management)主要是提供对会话的管理和记账(accounting)。,帐户安全设置,PAM的文件,/usr/lib/libpam.so.* PAM核心库 /etc/pam.d/ PAM配置文件 /
6、lib/security/pam_*.so 可动态加载的PAM服务模块,Pam_unix.so 该模块的主要功能是禁止为密码为空的用户提供服务 Pam_permit.so 总是无条件地使认证成功 Pam_deny.so 总是无条件地使认证失败,通常该模块被用来作为缺省的验证规则 Pam_cracklib.so 该模块对用户密码提供强健性检测,帐户安全设置,PAM的配置,/etc/pam.d/目录下的每个文件的名字对应服务名 例如ftp服务对应文件/etc/pam.d/ftp 如果名为xxxx的服务所对应的配置文件 /etc/pam.d/xxxx不存 在,则该服务将使用默认的配置文件/etc/p
7、am.d/other,帐户安全设置,PAM的配置,每个文件由如下格式的文本行所构成:module-type control-flag module-path arguments module-type 模块类型有四种:auth、account、session、password,即对应PAM所支持的四种管理方式。同一个服务可以调用多个 PAM模块进行认证,这些模块构成一个stack。 control-flag 用来告诉PAM库该如何处理与该服务相关的PAM模块的成功或失败情况。它有四种可能的值:required,requisite,sufficient,optional。 module-path
8、 用来指明本模块对应的程序文件的路径名,一般采用绝对路径,如果没有给出绝对路径,默认该文件在目录/usr/lib/security下 面。 arguments 是用来传递给该模块的参数,帐户安全设置,PAM的配置,required:表示即使某个模块对用户的验证失败,也要等所有的模块都执行完毕,PAM才返回错误信息。这样做是为了不让用户知道被哪个模块拒绝。如果对用户验证成功,所有的模块都会返回成功信息。 requisite:如果特定的模块对用户的验证失败,PAM马上返回一个错误信息,把控制权交回应用程序,不再执行其他模块进行验证。 sufficient:表示如果一个用户通过这个模块的验证,PAM
9、结构就立刻返回验证成功信息,把控制权交回应用程序。后面的层叠模块即使使用requisite或者required控制标志,也不再执行。如果验证失败,sufficient的作用和optional相同。 optional:表示即使本行指定的模块验证失败,也允许用户享受应用程序提供的服务。使用这个标志,PAM框架会忽略这个模块产生的验证错误,继续顺序执行下一个层叠模块。,control-flag 的四种取值,帐户安全设置,PAM的实例演示,实例描述,启用PAM,修改配置,Linux-PAM控制用户安全登录: 1:只允许root用户本地登录; 2:只允许用户paul从159.226.8网段远 程登录;
10、3:其他用户均不许登录系统。,目录,系统安全设置,关闭多余服务应用,查看/etc/inetd.conf文件,通过注释取消所有你不需要的服务(在该服务项目之前加一个#)。然后用sighup命令升级inetd.conf文件。,第一步: 更改/etc/inetd.conf权限为600,只允许root来读写该文件。 #chmod600/etc/inetd.conf,第二步: 编辑“/etc/inetd.conf”文件,取消下列服务(你不需要的):ftp,telnet,shell,login,exec,talk,ntalk,imap,pop-2,pop-3,finger,auth等等。,系统安全设置,建
11、议只保留以下服务:,系统安全设置,关闭多余服务应用,第四步: 给inetd进程发送一个HUP信号: #killall-HUPinetd,第五步: 用chattr命令把/etc/inetd.conf文件设为不可修改,这样就没人可以修改它: # chattr+i/etc/inetd.conf 这样可以防止对inetd.conf的任何修改。唯一可以取消这个属性的人只有root。如果要修改inetd.conf文件,首先要是取消不可修改性质: #chattr-i/etc/inetd.conf,限制用户通过su命令改变为root用户,系统安全设置,su(SubstituteUser替代用户)命令允许当前用
12、户成为系统中其他已存在的用户。如果不希望任何人通过su命令改变为root用户或对某些用户限制使用su命令,可以在su配置文件(在/etc/pam.d/su目录下)的开头添加下面两行: #vi/etc/pam.d/su authsufficient/lib/security/pam_rootok.sodebug authrequired/lib/security/Pam_wheel.sogroup=wheel 这表明只有“wheel”组的成员可以使用su命令成为root用户。接着可以把用户添加到“wheel组,以使它可以使用su命令成为root用户。,Telnet 服务的设定,系统安全设置,一、
13、开启Telnet服务 编辑 /etc/xinetd.d/telnet #vi /etc/xinetd.d/telnet 找到 disable = no=此项控制服务的开启与关闭 重启服务 telnet 是挂在 xinetd 底下的,所以需要重新激活 xinetd 就能够将 xinetd 里头的设定重新读进来,所以刚刚设定的 telnet 自然也就可以被激活。 # service xinetd restart,系统安全设置,Telnet 服务的设定,二、设置Telnet服务端口 #vi /etc/services 进入编辑模式后查找telnet 会找到如下内容: telnet 23/tcp 将2
14、3修改成未使用的端口号(如:2000),退出vi,重启telnet服务,telnet默认端口号就被修改了。,系统安全设置,Telnet 服务的设定,为保证更安全的Telnet服务应用,可修改其默认配置值,满足实际的应用情况。 假设一部Linux 主机,有两块网络接口,分别是对内 192.168.0.1 与对外的203.45.1.9 这两个,如果你想要让对内的接口限制较松,而对外的限制较严格,可以这样的来设定:,系统安全设置,Telnet 服务的设定,#vi /etc/xinetd.d/telnet # 先针对对外限制来设定: service telnet disable= no =预设就是激活
15、 telnet 服务 bind = 203.45.1.9 =只允许经由这个适配卡的封包进来 only_from = 203.45.1.0/24=只允许 203.45.1.0/24 这个网段的主机联机进来使用 telnet 的服务 . # 再针对内部的联机来进行限制 service telnet disable = no=预设就是激活 telnet 服务 bind = 192.168.0.1=只允许经由这个适配卡的封包进来 only_from = 192.168.0.0/16=只允许 192.168.0.0 192.168.255.255 这个网段联机进来使用 telnet 的服务 only_f
16、rom = =重复设定,只有科技网用户才能联机 no_access = 192.168.25.10,26=不许这些 PC 登入 access_times= 1:00-9:00 20:00-23:59 =每天只有这两个时段开放服务 . ,系统安全设置,FTP服务的设定,# vi /etc/vsftpd/vsftpd.conf anonymous_enable=no 是否允许匿名用户登录 anonymous_enable=no 是否允许匿名上传文件 local_enable= YES 是否允许本地用户登录 write_enable= no 是否允许本地用户上传 guest_enable=yes 是否允许虚拟用户登录; local_mask=022 设置本地用户的文件生成掩码为022,默认值为077 dirmessage_enable= YES 设置切换到目录时显示.message隐含文件的内容 xferlog_en