1 操作系统安全加固

操作系统安全加固

1.1 Linux安全加固

1.1.1 对系统账号进行登录限制

1.1.2 设置登录超时时间

1.1.3 设置关键目录的权限

1.1.4 设置关键文件的属性

1.1.5 修改umask 

1.1.6 记录用户登录信息

1.1.7 记录系统安全事件

1.1.8 记录系统服务日志

1.1.9 更改主机解析地址的顺序

1.1.10 打开 syncookie

1.1.11 不响应ICMP请求

1.1.12 syn 攻击优化

1.1.13 禁止ICMP重定向

1.1.14 关闭网络数据包转发

1.1.15 补丁装载

1.1.16 禁用无用inetd/xinetd服务

1.1.17 为空口令用户设置密码

1.1.18 删除root之外 UID 的用户

1.1.19 缺省密码长度限制

1.1.20 缺省密码生存周期限制

1.1.21 口令过期提醒



1.1 Linux安全加固

 1.1.1 对系统账号进行登录限制(风险高)

实施目的

对系统账号进行登录限制,确保系统账号仅被守护进程和服务使用。

问题影响

可能利用系统进程默认账号登陆,账号越权使用。

系统当前状态

cat /etc/passwd 查看各账号状态。

实施步骤

一.执行命令

# chsh username -s /bin/false

举例:

[root@localhost ~]# chsh sheng -s /sbin/nologin 

Changing shell for sheng.

Shell changed.

[root@localhost ~]# cat /etc/passwd

......

sheng:x:1002:1002::/home/sheng:/sbin/nologin

imgDownload?uuid=add33cb3e78745b7bac6f47

此命令通过修改用户的shell来禁止用户登录;

对于suse操作系统使用/bin/false,其他操作系统使用/sbin/nologin

 

二.补充操作说明

1.禁止交互登录的系统账号,比如daemonbinsysadmlp

uucpnuucpsmmsp等等

2.数据库用户mysql需要禁止登录

3.禁止所有用户登录。

touch /etc/nologin

root以外的用户不能登录了。

回退方案

将用户的shell修改成原来的。

判断依据

/etc/passwd 中的禁止登陆账号的shell  /bin/false


  1.1.2 设置登录超时时间(风险中)

实施目的

对于具备字符交互界面的设备,应配置定时帐户自动登出。

问题影响

管理员忘记退出被非法利用。

系统当前状态

查看/etc/profile 文件的配置状态,并记录。

实施步骤

编辑文件/etc/profile

#vi /etc/profile

文件末尾增加如下行:

TMOUT=180

export TMOUT

改变这项设置后,重新登录才能有效。

回退方案

修改/etc/profile 的配置到加固之前的状态。

判断依据

TMOUT=180  imgDownload?uuid=add33cb3e78745b7bac6f47 TMOUT=180单位秒

 

 1.1.3 设置关键目录的权限(风险高)

实施目的

在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。

问题影响

非法访问文件。

系统当前状态

运行ls -al /etc/ 记录关键目录的权限。

实施步骤

1、参考配置操作

通过chmod 命令对目录的权限进行实际设置。

2、补充操作说明

/etc/passwd  必须所有用户都可读, root 用户可写

–rw-r—r—

/etc/shadow 只有root 可读 –r--------  

/etc/group  必须所有用户都可读, root 用户可写

–rw-r—r—

使用如下命令设置:

chmod 644 /etc/passwd

chmod 400 /etc/shadow

chmod 644 /etc/group

如果是有写权限,就需移去组及其它用户对/etc 的写权限

(特殊情况除外)

执行命令#chmod -R go-w /etc

回退方案

通过chmod 命令还原目录权限到加固前状态。

判断依据

[root@localhost sysconfig]# ls -al /etc/passwd | grep '^...-.--.--'

-rw-r--r-- 1 root root 720 Mar  8 15:45 /etc/passwd

[root@localhost sysconfig]# ls -al /etc/group | grep '^...-.--.--'

-rw-r--r-- 1 root root 347 Jan 27 19:25 /etc/group

[root@localhost sysconfig]# ls -al /etc/shadow | grep '^...-------'

-r-------- 1 root root 436 Mar  6 19:39 /etc/shadow

举例:

[root@localhost ~]# ls -al /etc/passwd

-rw-r--r--. 1 root root 2378 Jan 24 19:42 /etc/passwd

[root@localhost ~]# ls -al /etc/group

-rw-r--r--. 1 root root 994 Jan 24 19:41 /etc/group

[root@localhost ~]# ls -al /etc/shadow

----------. 1 root root 1337 Jan 24 19:42 /etc/shadow


 1.1.4 设置关键文件的属性(风险高)

实施目的

增强关键文件的属性,减少安全隐患。 使 messages文件只可追加。 使轮循的 messages文件不可更改。

问题影响

非法访问目录,或者删除日志。

系统当前状态

# lsattr /var/log/messages

# lsattr /var/log/messages.*

# lsattr /etc/shadow

# lsattr /etc/passwd

# lsattr /etc/group

实施步骤

# chattr +a /var/log/messages

# chattr +i /var/log/messages.*

# chattr +i /etc/shadow

# chattr +i /etc/passwd

# chattr +i /etc/group


用chattr命令防止系统中某个关键文件被修改:

chattr +i /etc/fstab

然后试一下rm、mv、rename等命令操作于该文件,都是得到Operation not permitted的结果。


让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作:

chattr +a /data1/user_act.log


建议管理员对关键文件进行特殊设置(不可更改或只能追加等)

imgDownload?uuid=add33cb3e78745b7bac6f47

/var/log/目录下有可能不存在message.*的文件。

回退方案

使用chattr 命令还原被修改权限的目录。

chattr -i /etc/fstab

chattr -a /data1/user_act.log

判断依据

# lsattr /var/log/messages

# lsattr /var/log/messages.*

# lsattr /etc/shadow

# lsattr /etc/passwd

# lsattr /etc/group

判断属性

imgDownload?uuid=65d86e88fe2b4b0e861dfe8

linux的文件系统为Reiserfs,不支持使用lsattr命令


 1.1.5 修改umask 值(风险高)

实施目的

控制用户缺省访问权限,当在创建新文件或目录时,屏蔽掉新文件或目录不应有的访问允许权限。防止同属于该组的其它用户及别的组的用户修改该用户的文件或更高限制。

问题影响

非法访问目录。

系统当前状态

more /etc/profile

检查是否包含umask 

实施步骤

步骤 1   设置全局默认权限:

/etc/profile修改或添加umask 077

#vi /etc/profile

umask 077

步骤 2   设置单个用户默认权限:

如果用户需要使用一个不同于默认全局系统设置的umask,可以编辑该用户目录下的.profile文件或.bash_profile文件:

#vi $home/.profile (.bash_profile)

修改或者添加umask 077             

         #具体值可以根据实际需要进行设置,umask 的默认设置一般为 022,这给新创建的文件默认权限755777-022=755),这会给文件所有者读、写权限,但只给组成员和其他用户读权限。

imgDownload?uuid=add33cb3e78745b7bac6f47

umask 的计算:

umask 是使用八进制数据代码设置的,对于目录,该值等于八进制数据代码777减去需要的默认权限对应的八进制数据代码值;对于文件,该值等于八进制数据代码 666 减去需要的默认权限对应的八进制数据代码值。

回退方案

修改  

/etc/profile

文件到加固前状态。

判断依据


 1.1.6 记录用户登录信息(风险低)

实施目的

设备应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号,登录是否成功、登录时间、以及远程登录时、用户使用的IP地址

问题影响

无法对用户的登陆进行日志记录

系统当前状态

cat /etc/login.defs,记录LASTLOG_ENAB当前配置。

实施步骤

编辑/etc/login.defs

#vi /etc/login.defs

修改LASTLOG_ENAB的属性:

LASTLOG_ENAB            yes

回退方案

还原“LASTLOG_ENAB”的设置到加固之前配置。

判断依据

1.    验证方法:

使用last命令察看登陆日志

2.    预期结果:

# last

root     :0/10.164.10 10.164.104.73    Fri Feb 20 14:29 - 16:53  (02:24)   

root     10.164.104.7 10.164.104.73    Fri Feb 20 14:29 - 16:53  (02:23)   

root     pts/3                                         Fri Feb 20 14:21 - 14:28  (00:06)   

rokay  pts/3         10.164.104.73         Fri Feb 20 14:16 - 14:19 


  1.1.7 记录系统安全事件(风险高)

实施目的

通过设置让系统记录安全事件,方便管理员分析

问题影响

无法记录系统的各种安全事件

系统当前状态

cat /etc/syslog-ng/syslog-ng.conf

实施步骤

# vi /etc/syslog-ng/syslog-ng.conf

添加以下行:

destination d_errors { file("/var/log/errors"); };

filter f_errors { level(err); };

log { source(src); filter(f_errors); destination(d_errors); };

 

destination d_authpriv { file("/var/log/authpriv_info"); };

filter f_authpriv { level(info) and facility(authpriv); };

log { source(src); filter(f_authpriv); destination(d_authpriv); };

 

destination d_auth { file("/var/log/auth_none"); };

filter f_auth { level(none) and facility(auth); };

log { source(src); filter(f_auth); destination(d_auth); };

 

destination d_info { file("/var/log/info"); };

filter f_info { level(info); };

log { source(src); filter(f_info); destination(d_info); };

 

重启syslog-ng服务

# rcsyslog restart

imgDownload?uuid=65d86e88fe2b4b0e861dfe8

其中log { source(s_sys); filter(f_errors); destination(d_errors); }; “src”视其源不同可能会为“s_sys”,配置时需注意。

1.    增加安全日志后,日志将会大大增加。要注意监控磁盘可用空间,及时备份清理安全日志文件。

2.    对维护有要求,需询问客户后确定是否实施。

回退方案

还原/etc/syslog-ng/syslog-ng.conf的设置到加固之前配置,重启syslog-ng服务。

判断依据

1.    验证方法:

查看/var/log/errors/var/log/messages

#more /var/log/errors

#more /var/log/authpriv_info

#more /var/log/info

#more /var/log/auth_none

2.    预期结果:

记录有需要的设备相关的安全事件


 1.1.8 记录系统服务日志(风险低)

实施目的

系统上运行的应用/服务也应该配置相应日志选项,比如cron

问题影响

无法记录 cron 服务(计划任务)

系统当前状态

cat /etc/syslog-ng/syslog-ng.conf

实施步骤

# vi /etc/syslog-ng/syslog-ng.conf

添加以下行:

destination d_cron { file("/var/log/cron"); };

filter f_cron { level(info) and facility(cron); };

log { source(src); filter(f_cron); destination(d_cron); };

重启syslog-ng服务

# rcsyslog restart

imgDownload?uuid=add33cb3e78745b7bac6f47

其中log { source(src); filter(f_cron); destination(d_cron); }; “src”视其源不同可能会为“s_sys”,配置时需注意。

另外,实施此项需要开启cron服务

回退方案

还原/etc/syslog-ng/syslog-ng.conf的设置到加固之前配置,重启syslog-ng服务。

判断依据

1.    验证方法

执行crontab -l命令,然后查看日志文件:#more /var/log/cron

2.    预期结果:

日志中能够列出cron服务的详细日志信息


 1.1.9 更改主机解析地址的顺序(风险高)

实施目的

更改主机解析地址的顺序,减少安全隐患。

问题影响

对本机未经许可的IP欺骗。

系统当前状态

cat /etc/host.conf

实施步骤

“/etc/host.conf”  说明了如何解析地址。编辑“/etc/host.conf”  文件( vi /etc/host.conf ),                        

# Lookup names via DNS first then fall back to /etc/hosts.  

order bind,hosts

# We have machines with multiple IP addresses.  

  multi on  

# Check for IP address spoofing

  nospoof on 

第一项设置首先通过 DNS 解析 IP 地址,然后通过 hosts 

件解析。第二项设置检测是否“/etc/hosts”文件中的主机是

否拥有多个 IP 地址(比如有多个以太口网卡)。第三项设置

说明要注意对本机未经许可的 IP欺骗。

回退方案

恢复/etc/host.conf 配置文件。

判断依据

查看/etc/host.conf 文件中的以下配置:

order bind,hosts

multi on

nospoof on


  1.1.10 打开 syncookie(风险高)

实施目的

打开 syncookie 缓解 syn flood攻击。

问题影响

syn flood 攻击

系统当前状态

cat /proc/sys/net/ipv4/tcp_syncookies

实施步骤

# echo 1 > /proc/sys/net/ipv4/tcp_syncookies

可以加入/etc/rc.d/rc.local中。

回退方案

echo 0 > /proc/sys/net/ipv4/tcp_syncookies

判断依据

cat /proc/sys/net/ipv4/tcp_syncookies 值为  1

 

  1.1.11 不响应ICMP请求(风险高)

实施目的

不响应ICMP请求,避免信息泄露。

问题影响

信息泄露

系统当前状态

cat /proc/sys/net/ipv4/icmp_echo_ignore_all

实施步骤

不响应ICMP请求:

# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

回退方案

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

判断依据

cat /proc/sys/net/ipv4/icmp_echo_ignore_all  返回1


本地计算机内系统原因,

怀疑是信任关系或者注册表中某些键值

本地计算机内系统原因,

怀疑是信任关系或者注册表中某些键值


本地计算机内系统原因,

怀疑是


本地计算机内系统原因,

怀疑是信任关系或者注册表中某些键值

 1.1.12 syn 攻击优化(风险高)

实施目的

提高未连接队列大小

问题影响

SYN flood attack

系统当前状态

sysctl net.ipv4.tcp_max_syn_backlog

实施步骤

sysctl -w net.ipv4.tcp_max_syn_backlog="4096"

回退方案

sysctl -w net.ipv4.tcp_max_syn_backlog= 恢复加固之前的值

判断依据

sysctl net.ipv4.tcp_max_syn_backlog 值为 4096


  1.1.13 禁止ICMP重定向(风险高)

实施目的

主机系统应该禁止ICMP重定向,采用静态路由。

问题影响

系统当前状态

sysctl -a,记录待修改属性的当前值。

实施步骤

禁止系统发送ICMP重定向包:

# vi /etc/sysctl.conf

只接受有可靠来源的重定向。

net.ipv4.conf.default.secure_redirects=0

net.ipv4.conf.all.secure_redirects=0

net.ipv4.conf.default.send_redirects=0

net.ipv4.conf.all.send_redirects=0

net.ipv4.conf.default.accept_redirects = 0

net.ipv4.conf.all.accept_redirects = 0

执行以下命令使设置生效:

# sysctl -p

imgDownload?uuid=add33cb3e78745b7bac6f47

根据业务需求情况确定是否禁止ICMP重定向。

回退方案

编辑/etc/sysctl.conf,恢复原设置,执行sysctl -p使设置生效。

判断依据

1.    验证方法:

使用sysctl -a查看配置:

#sysctl -a

2.    预期结果:

相关设置符合预期


 1.1.14 关闭网络数据包转发(风险高)

实施目的

对于不做路由功能的系统,应该关闭数据包转发功能。

问题影响

系统当前状态

sysctl -a,记录待修改属性的当前值。

实施步骤

关闭数据包转发功能:

# vi /etc/sysctl.conf

关闭IP转发:

net.ipv4.ip_forward = 0

关闭转发源路由包:

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0

执行以下命令使设置生效:

# sysctl -p

回退方案

编辑/etc/sysctl.conf,恢复原设置,执行sysctl –p使设置生效。

判断依据

1.    验证方法:

使用sysctl -a查看配置:

#sysctl -a

2.    预期结果:

相关设置符合预期


 1.1.15 补丁装载(风险高)

实施目的

可以使系统版本为最新并解决安全问题。

问题影响

系统存在严重的安全漏洞

系统当前状态

uname -a

rpm -qa

cat /proc/version

实施步骤

可以使用Online UpdatePatch CD Update等方式升级系统补丁。

回退方案

patchrm

判断依据

1.    验证方法:

# uname -a

2.    预期结果:

系统安装必要的补丁。

重要等级

imgDownload?uuid=add33cb3e78745b7bac6f47

应根据需要及时进行补丁装载。对服务器系统应先进行兼容性测试。

  

 1.1.16 禁用无用inetd/xinetd服务(风险高)

实施目的

关闭无效的服务,提高系统性能,增加系统安全性。

imgDownload?uuid=add33cb3e78745b7bac6f47

ISOVHD安装包不需要执行该加固项目。

问题影响

不用的服务会带来很多安全隐患。

系统当前状态

chkconfig -l记录当前状态。

实施步骤

步骤 1   关闭inetd服务

# chkconfig 服务名 off

步骤 2   关闭xinetd服务

修改其配置文件,在其属性中修改Disable yes,如没有,请添加

#vi /etc/xinetd.d/服务名

disable       =  yes

步骤 3   重启inetd服务

# /etc/init.d/xinetd restart

回退方案

恢复记录的原inetd/xinetd服务状态。

判断依据

1.    验证方法:

# chkconfig -l

2.    预期结果:

仅有允许的服务处于开启状态

重要等级

imgDownload?uuid=add33cb3e78745b7bac6f47

建议关闭的服务:

chargenchargen-udpcups-lpdcvsdaytimedaytime-udpechoecho-udpfamnetstatrsyncserversservicessystattimetime-udp

请根据需要开启相应的服务


  1.1.17 为空口令用户设置密码(风险高)

实施目的

禁止空口令用户,存在空口令是很危险的,用户不用口令认证就能进入系统。

问题影响

用户被非法利用。

系统当前状态

awk -F: '($2 == ""){print $1}' /etc/passwd

实施步骤

awk -F: '($2 == ""){print $1}' /etc/passwd ,查询空口令用户

root 用户登陆Linux 系统,执行passwd 命令,给用户增加口令。

例如:passwd test test

回退方案

root 身份设置用户口令,取消口令

如做了口令策略则失败

判断依据

awk -F: '($2 == ""){print $1}' /etc/passwd

返回值为空

 

  1.1.18 删除root之外 UID 的用户(风险高)

实施目的

帐号与口令-检查是否存在除 root 之外 UID 的用户。

问题影响

账号权限过大,容易被非法利用。

系统当前状态

awk -F: '($3 == 0) { print $1 }' /etc/passwd

实施步骤

删除 root 以外的 UID   0 的用户。

回退方案

判断依据

返回值包括“root”以外的条目,则低于安全要求。

重要等级

imgDownload?uuid=add33cb3e78745b7bac6f47

UID 的任何用户都拥有系统的最高特权,保证只有 root用户的 UID 0


 1.1.19 缺省密码长度限制(风险低)

实施目的

防止系统弱口令的存在,减少安全隐患。对于采用静态口令认证技术的设备,口令长度至少 8 位。

问题影响

增加密码被暴力破解的成功率。

系统当前状态

cat /etc/login.defs

实施步骤

# vi /etc/login.defs

按如下设置

PASS_MIN_LEN  8

退出root用户重新登录,密码设置生效。

回退方案

vi /etc/login.defs ,修改设置到系统加固前状态。

判断依据

PASS_MIN_LEN  8

重要等级


 1.1.20 缺省密码生存周期限制

实施目的

对于采用静态口令认证技术的设备,帐户口令的生存期不长于90 天,减少口令安全隐患。

问题影响

密码被非法利用,并且难以管理。

系统当前状态

运行 cat /etc/login.defs  查看状态,并记录。

实施步骤

# vi /etc/login.defs

按如下设置

PASS_MAX_DAYS  90

PASS_MIN_DAYS  0

回退方案

vi /etc/login.defs ,修改设置到系统加固前状态。

判断依据

PASS_MAX_DAYS  90

PASS_MIN_DAYS  0

实施风险

低  

  1.1.21 口令过期提醒

实施目的

口令到期前多少天开始通知用户口令即将到期。

问题影响

密码被非法利用,并且难以管理。

系统当前状态

运行 cat /etc/login.defs  查看状态,并记录。

实施步骤

# vi /etc/login.defs

按如下设置

PASS_WARN_AGE  7

回退方案

vi /etc/login.defs ,修改设置到系统加固前状态。

判断依据

PASS_WARN_AGE  7

实施风险



本文转自 Mr_sheng 51CTO博客,原文链接:http://blog.51cto.com/sf1314/2064733


  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值