LINUX系统加固

LINUX系统加固
目录
一、关于服务器的安全级别 2
二、系统加固 2
A、漏洞修补 2
1、内核漏洞 4
2、应用漏洞 4
B、系统防护提升 5
1、系统配置的安全性 5
2、应用软件配置的安全性 8
3、用户权限配置的安全性 12






























一、关于服务器的安全级别
《可信计算机评估标准》TCSEC(Trusted Computer System Evaluation Criteria),又称桔皮书。”可信计算机系统评估准则”将计算机系统的可信程度(安全等级)划分成四大类(D、C、B、A),七个小类(D、C1、C2、B1、B2、B3、A)。
类别 名称 主要特征
A1 可验证的安全设计 形式化的最高级描述和验证,形式化的隐秘通道分析,非形式化的代码一致性证明。
B3 安全域机制 安全内核,高抗渗透能力。
B2 结构化安全保护 设计系统必须有一个合理的总体设计方案,面向安全的体系结构, 遵循最小授权原则,较好的抗渗透能力,访问控制应对所有的主体和客体进行保护,对系统进行隐蔽通道分析。
B1 标号安全控制 除了C2级的安全需求外,增加安全策略模型,数据标号(安全和属性),托管访问控制。
C2 受控的访问控制 存取控制以用户为单位,广泛的审计。
C1 选择的安全保护 有选择的存取控制,用户与数据分离,数据的保护以用户组为单位。
D 最小保护 保护措施很少,没有安全功能。


按照行业领域和我司业务情况分析,我司的LINUX系统安全级别做到B2级别防护即可。更高级别的防护涉及到网安产品需求,如硬件防火墙,硬件网关。由于我司MCU产品均在系统网络防火墙和网关的后端,MCU处于受保护状态。 


二、系统加固
系统加固分A、漏洞修补,B、系统防护提升
A、漏洞修补
针对LINUX系统,有做一套自有的分析方式,可以使用NMAP、lsat、tiger和Nessus, NMAP倾向网络端口漏洞扫描, lsat和tiger倾向去本地漏洞扫描,Nessus是兼顾本地和网络漏洞扫描,推荐使用Nessus。
NMAP是一款嗅探服务器是否开放了不安全端口的扫描器。扫描结果参看《1400.xml》
 
Lsat和tiger是本地的命令行下执行的漏洞扫描器。
Nessus漏洞扫描是S/C模式的,便于操作和使用,由于该软件是商业版的,目前使用的均为试用版本。
 
 
扫描后会有详细的安全检测报告,详见《Nessus Scan Report.doc》
   可以依照安全检测报告,对系统进行有针对性的打补丁包修复。修复请况依照实际情况考量和取舍。


   漏洞分类
针对系统漏洞分两种类型:内核漏洞和应用漏洞
1、 内核漏洞
属于本地漏洞,同时能使用此类漏洞的入侵者都属于软件高手,此类入侵较为麻烦和困难,此类漏洞必须等待新版内核修正。
2、 应用漏洞
有本地漏洞和远程漏洞之分。本地漏洞,只能本地入侵后使用;远程漏洞,入侵者可以透过网络


























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!"
   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中的输出信息,根据这些信息判断用户账号的有效性。


名称 去除不需要的帐号、修改默认帐号的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




名称 为空口令用户设置密码
实施目的 禁止空口令用户,存在空口令是很危险的,用户不用口令认
证就能进入系统。
问题影响 用户被非法利用
系统当前状态 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软件安装权限要求很高。
先用普通权限登陆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 中的执行功能
实施目的 避免用户直接执行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错误页面跨站脚本漏洞修复
实施目的 修复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服务


名称 拒绝服务防范
实施目的 防止恶意攻击
问题影响 恶意攻击。
系统当前状态 查看 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查看各账号状态。
实施步骤 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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值