LINUX系统加固
目录
一、关于服务器的安全级别 ........................................................................................................... 2 二、系统加固 ................................................................................................................................... 2
A、漏洞修补 ............................................................................................................................. 2
1、 内核漏洞 ............................................................................................................. 4 2、 应用漏洞 ............................................................................................................. 4 B、系统防护提升 ..................................................................................................................... 5
1、系统配置的安全性 ..................................................................................................... 5 2、应用软件配置的安全性 ............................................................................................. 8 3、 用户权限配置的安全性 ................................................................................... 12
END .................................................................................................................................................. 13
1
-
一、关于服务器的安全级别
《可信计算机评估标准》TCSEC(Trusted Computer System Evaluation Criteria),又称桔皮书。”可信计算机系统评估准则”将计算机系统的可信程度(安全等级)划分成四大类(D、C、B、A),七个小类(D、C1、C2、B1、B2、B3、A)。 类别 名称 主要特征 形式化的最高级描述和验证,形式化的隐秘通道A1 可验证的安全设计 分析,非形式化的代码一致性证明。 B3 安全域机制 安全内核,高抗渗透能力。 设计系统必须有一个合理的总体设计方案,面向安全的体系结构, 遵循最小授权原则,较好的抗B2 结构化安全保护 渗透能力,访问控制应对所有的主体和客体进行保护,对系统进行隐蔽通道分析。 除了C2级的安全需求外,增加安全策略模型,数B1 标号安全控制 据标号(安全和属性),托管访问控制。 C2 C1 D 受控的访问控制 选择的安全保护 最小保护 存取控制以用户为单位,广泛的审计。 有选择的存取控制,用户与数据分离,数据的保护以用户组为单位。 保护措施很少,没有安全功能。 按照行业领域和我司业务情况分析,我司的LINUX系统安全级别做到B2级别防护即可。更高级别的防护涉及到网安产品需求,如硬件防火墙,硬件网关。由于我司MCU产品均在系统网络防火墙和网关的后端,MCU处于受保护状态。
二、系统加固
系统加固分A、漏洞修补,B、系统防护提升 A、漏洞修补
针对LINUX系统,有做一套自有的分析方式,可以使用NMAP、lsat、tiger和Nessus, NMAP倾向网络端口漏洞扫描, lsat和tiger倾向去本地漏洞扫描,Nessus是兼顾本地和网络漏洞扫描,推荐使用Nessus。
NMAP是一款嗅探服务器是否开放了不安全端口的扫描器。扫描结果参看《1400.xml》
2
-
Lsat和tiger是本地的命令行下执行的漏洞扫描器。
Nessus漏洞扫描是S/C模式的,便于操作和使用,由于该软件是商业版的,目前使用的均为试用版本。
3
-
扫描后会有详细的安全检测报告,详见《Nessus Scan Report.doc》
可以依照安全检测报告,对系统进行有针对性的打补丁包修复。修复请况依照实际情况考量和取舍。
漏洞分类
针对系统漏洞分两种类型:内核漏洞和应用漏洞 1、 内核漏洞
属于本地漏洞,同时能使用此类漏洞的入侵者都属于软件高手,此类入侵较为麻烦和困难,此类漏洞必须等待新版内核修正。 2、 应用漏洞
有本地漏洞和远程漏洞之分。本地漏洞,只能本地入侵后使用;远程漏洞,入侵者可以透过网络
应用漏洞
4
-
B、系统防护提升
是对既有系统进行相关的系统策略和用户权限管控,涉及的方面有:1、系统配置的安全性,2、应用软件配置的安全性,3、用户权限配置的安全性,
系统配置的安全性 应用软件配置的安全性 用户权限配置的安全性
1、系统配置的安全性 名称 实施目的 问题影响 系统当前状态 只开放有用的服务 根据实际需求删除未使用的服务,提高系统安全。 防止未知服务对系统产生漏洞风险。 who –r或runlevel 查看当前init级别 chkconfig --list 查看所有服务的状态 KS.CFG脚本执行代码段: for i in `ls /etc/rc3.d/S*` do CURSRV=`echo $i|cut -c 15-` echo $CURSRV case $CURSRV in sysstat | lvm2-monitor | iscsid | auditd | rsyslog | iscsi | mdmonitor | messagebus | acpid | udev-post | postfix | qpidd | sanlock | wdmd | local | crond | irqbalance | microcode_ctl | network | sshd | cpuspeed ) echo \"Base services, Skip!\" 实施步骤 5
-
echo $CURSRV >> /root/server.txt ;; *) echo \"change $CURSRV to off\" chkconfig --level 235 $CURSRV off service $CURSRV stop echo $CURSRV >> /root/server.txt ;; esac done 名称 实施目的 问题影响 屏蔽掉泄露信息的文件的读写权限 修改文件的授权群组 任何用户可获取系统安全敏感信息,出现风险。 系统当前状态 cat /etc/passwd 记录当前用户列表 chmod 600 /etc/ssh/sshd_config chown -R sshd:sshd /home/avconssh/ chmod 0744 /home/avconssh/ chmod 600 /etc/services chmod -R 700 /etc/rc.d/init.d/* mv /etc/issue /etc/issue.bak mv /etc/issue.net /etc/issue.net.bak 如sshd_config、passwd、group等。 设置帐户锁定登录失败锁定次数、锁定时间 禁止无限制的错误密码输入 防止入侵者口令扫描。 cat /etc/pam.d/system-auth 查看有无auth required pam_tally.so条目的设置 vi /etc/pam.d/system-auth auth required pam_tally.so onerr=fail deny=6 unlock_time=300 设置为密码连续错误6次锁定,锁定时间300秒 解锁用户 faillog -u <用户名> -r 风险:需要PAM包的支持;对pam文件的修改应仔细检查,一旦出现错误会导致无法登陆; 当系统验证出现问题时,首先应当检查/var/log/messages或者/var/log/secure中的输出信息,根据这些信息判断用户账号的有效性。 实施步骤 名称 实施目的 问题影响 系统当前状态 实施步骤 6
-
名称 实施目的 问题影响 系统当前状态 去除不需要的帐号、修改默认帐号的shell变量 删除系统不需要的默认帐号、更改危险帐号缺省的shell变量 允许非法利用系统默认账号 cat /etc/passwd 记录当前用户列表, cat /etc/shadow 记 录当前密码配置 1、参考配置操作 # userdel lp # groupdel lp 如果下面这些系统默认帐号不需要的话,建议删除。 lp, sync, shutdown, halt, news, uucp, operator, games, gopher 修改一些系统帐号的shell变量,例如uucp,ftp和news等, 还有一些仅仅需要FTP 功能的帐号,一定不要给他们设置 /bin/bash或者/bin/sh 等Shell变量。可以在/etc/passwd中将它 们的shell 变量设为/bin/false 或者/dev/null 等,也可以使用 usermod -s /dev/null username命令来更改username的shell 为/dev/null。 名称 实施目的 问题影响 系统当前状态 限制超级管理员远程登录 限制具备超级管理员权限的用户远程登录。远程执行管理员 权限操作,应先以普通权限用户远程登录后,再切换到超级 管理员权限账。 允许root远程非法登陆 cat /etc/ssh/sshd_config cat /etc/securetty 1、 参考配置操作 SSH: #vi /etc/ssh/sshd_config 把 PermitRootLogin yes 改为 PermitRootLogin no 重启sshd服务 #service sshd restart CONSOLE: 在/etc/securetty文件中配置:CONSOLE = /dev/tty0 实施步骤 实施步骤 7
-
名称 实施目的 问题影响 系统当前状态 为空口令用户设置密码 禁止空口令用户,存在空口令是很危险的,用户不用口令认 证就能进入系统。 用户被非法利用 cat /etc/passwd awk -F: '($2 == \"\"){print $1}' /etc/passwd awk -F: '($2 == \"\"){print $1}' /etc/passwd 用root用户登陆Linux系统,执行passwd命令,给用户增 加口令。 例如:passwd test test。 实施步骤 2、应用软件配置的安全性 名称 实施目的 问题影响 shhd_config文件配置 加强SSH登陆安全性 防止入侵者恶意SSH登陆,获取root权限 系统当前状态 cat /etc/ssh/sshd_config 1、 参考配置操作 sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config sed -i 's/#PermitEmptyPasswords no/PermitEmptyPasswords no/' /etc/ssh/sshd_config sed -i '38i AllowGroups sshd' /etc/ssh/sshd_config sed -i '38i AllowUsers avconssh' /etc/ssh/sshd_config sed -i 's/#X11Forwarding no/X11Forwarding no/' /etc/ssh/sshd_config sed -i 's/X11Forwarding yes/#X11Forwarding yes/' /etc/ssh/sshd_config sed -i 's/#MaxStartups 10:30:100/MaxStartups 6:30:60/' /etc/ssh/sshd_config sed -i 's/UseDNS no/UseDNS yes/' /etc/ssh/sshd_config 实施步骤 详情如下图: I禁用SSH使用ROOT登录可能不行,AVCON软件安装权限要求很高。
8
-
先用普通权限登陆ssh后,通过LINUX系统自带的su命令键入root密码可以提升为root权限就可以达到要求了。这样的好处是黑客即使获取了ssh的权限却没有root对系统的危害性小。消除root带有直接网络登陆的隐形风险。 II修改SSH登录端口,这个需要考虑一线的方便性。 这个可以向一线宣导一下,下图为ssh登陆界面,只要设置一次并保存后续只需键入密码就好了。 名称 实施目的 问题影响 更改默认端口 更改Apache服务器默认端口,防止非法访问。 恶意攻击。 系统当前状态 查看 httpd.conf文件,查看端口是否与原来相同。 1、参考配置操作 (1)修改httpd.conf配置文件,更改默认端口到8080 Listen x.x.x.x:8080 (2)重启Apache服务 实施步骤 回退方案 恢复原始状态。 1、判定条件 使用8080端口登陆页面成功 2、检测操作 登陆http://ip:8080 禁用Apache Server 中的执行功能 判断依据 名称 9
-
实施目的 问题影响 系统当前状态 避免用户直接执行Apache 服务器中的执行程序,而造成服务器系统的公开化。 越权使用造成非法攻击。 ls -al `which apachectl` apachectl –V | grep SERVER_CONFIG 在配置文件access.conf 或httpd.conf中的Options指令处加入Includes NO EXEC选项,用以禁用Apache Server 中的执行功能。避免用户直接执行Apache 服务器中的执行程序,而造成服务器系统的公开化。 备份access.conf 或httpd.conf文件 修改: Options Includes Noexec 实施步骤 名称 实施目的 问题影响 系统当前状态 隐藏Apache的版本号及其它敏感信息 隐藏Apache的版本号及其它敏感信息 越权使用造成非法攻击。 ls -al `which apachectl` apachectl –V | grep SERVER_CONFIG 默认情况下,很多Apache安装时会显示版本号及操作系统版本,甚至会显示服务器上安装的是什么样的Apache模块。这些信息可以为黑客所用,并且黑客还可以从中得知你所配置的服务器上的很多设置都是默认状态。 添加到你的httpd.conf文件中: ServerSignature Off ServerTokens Prod 补充说明: ServerSignature出现在Apache所产生的像404页面、目录列表等页面的底部。ServerTokens目录被用来判断Apache会在Server HTTP响应包的头部填充什么信息。如果把ServerTokens设为Prod,那么HTTP响应包头就会被设置成: Server:Apache 也可以通过源代码和安全模块进行修改 名称 Apache 413错误页面跨站脚本漏洞修复 实施步骤 10
-
实施目的 问题影响 修复Apache HTTP Server处理畸形用户请求时存在漏洞 远程攻击者可能利用此漏洞获取脚本源 系统当前状态 Cat httpd.conf Apache HTTP Server处理畸形用户请求时存在漏洞,远程攻击者可能利用此漏洞获取脚本源码。 向Apache配置文件httpd.conf添加ErrorDocument 413语句禁用默认的413错误页面。 实施步骤 名称 实施目的 问题影响 限制请求消息长度 限制http请求的消息主体的大小。 恶意攻击。 系统当前状态 Cat httpd.conf文件,看是否与原来相同。 实施步骤 1、参考配置操作 编辑httpd.conf配置文件,修改为102400Byte LimitRequestBody 102400 名称 实施目的 问题影响 系统当前状态 错误页面处理 Apache错误页面重定向。 恶意攻击。 查看 httpd.conf文件,查看ErrorDocument文件是否与修改前相同。 1、参考配置操作 (1) 修改httpd.conf配置文件: ErrorDocument 400 /custom400.html ErrorDocument 401 /custom401.html ErrorDocument 403 /custom403.html ErrorDocument 404 /custom404.html ErrorDocument 405 /custom405.html ErrorDocument 500 /custom500.html Customxxx.html为要设置的错误页面。 (2)重新启动Apache服务 实施步骤 11
-
名称 实施目的 问题影响 拒绝服务防范 防止恶意攻击 恶意攻击。 系统当前状态 查看 httpd.conf文件,查看Timeout等文件是否与原来相同。 1、参考配置操作 (1) 编辑httpd.conf配置文件, Timeout 10 KeepAlive On KeepAliveTimeout 15 AcceptFilter http data AcceptFilter https data (2)重新启动Apache服务 实施步骤 3、 用户权限配置的安全性 名称 实施目的 问题影响 为不同的管理员分配不同的账号 根据不同类型用途设置不同的帐户账号,提高系统安全。 账号混淆,权限不明确,存在用户越权使用的可能。 系统当前状态 cat /etc/passwd 记录当前用户列表 1、参考配置操作 为用户创建账号: #useradd username #创建账号 #passwd username #设置密码 修改权限: #chmod 750 directory #其中755为设置的权限,可根据 实际情况设置相应的权限,directory是要更改权限的目录) 使用该命令为不同的用户分配不同的账号,设置不同的口令 及权限信息等。 对系统账号进行登录限制 对系统账号进行登录限制,确保系统账号仅被守护进程和服 务使用。 可能利用系统进程默认账号登陆,账号越权使用 实施步骤 名称 实施目的 问题影响 系统当前状cat /etc/passwd查看各账号状态。 态 12
-
实施步骤 1、 参考配置操作 Vi /etc/passwd 例如修改 ssh:x:500:500::/home/lynn:/sbin/bash 更改为: ssh:x:500:500::/home/lynn:/sbin/nologin 该用户就无法登录了。 禁止所有用户登录。 touch /etc/nologin 除root以外的用户不能登录了。 建立普通特定权限用户 useradd -g sshd avconssh sed -i 's/avconssh:x:500/avconssh:x:74/' /etc/passwd 2、补充操作说明 禁止交互登录的系统账号,比如daemon,bin,sys、adm、lp、 uucp、nuucp、smmsp等等
END 13
因篇幅问题不能全部显示,请点此查看更多更全内容