Redhat安全加固.docx

上传人:b****5 文档编号:6400665 上传时间:2023-01-06 格式:DOCX 页数:36 大小:82.18KB
下载 相关 举报
Redhat安全加固.docx_第1页
第1页 / 共36页
Redhat安全加固.docx_第2页
第2页 / 共36页
Redhat安全加固.docx_第3页
第3页 / 共36页
Redhat安全加固.docx_第4页
第4页 / 共36页
Redhat安全加固.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

Redhat安全加固.docx

《Redhat安全加固.docx》由会员分享,可在线阅读,更多相关《Redhat安全加固.docx(36页珍藏版)》请在冰豆网上搜索。

Redhat安全加固.docx

Redhat安全加固

 

RHEL操作系统安全加固手册

 

图目录

未找到图形项目表。

表目录

未找到图形项目表。

第1章账号安全

1.1密码规则

1.1.1密码长度、有效期(必做)

/etc/login.defs文件是当创建用户时的一些规划,比如创建用户时,是否需要家目录,UID和GID的范围;用户的期限等等,这个文件是可以通过root来定义的

PASS_MAX_DAYS90----两次改变密码之间相距的最大天数,密码有效最大天数

PASS_MIN_DAYS6----两次改变密码之间相距的最小天数,为零时代表任何时候都可以更改密码

PASS_MIN_LEN6----密码最小长度

PASS_WARN_AGE30----在密码过期之前警告的天数

注意:

以上只对之后新增的用户有效,如果要修改已存在的用户密码规则,需要使用chage命令

查看用户的密码规则

chage-ltest

最近一次密码修改时间:

6月08,2011

密码过期时间:

9月06,2011

密码失效时间:

从不

帐户过期时间:

从不

两次改变密码之间相距的最小天数:

6

两次改变密码之间相距的最大天数:

90

在密码过期之前警告的天数:

30

修改方法:

chage-M90-m6-W30test

注意:

不要用该命令给root用户加上有效期,如果密码过期,再加上后文说的/etc/shadow文件加锁禁止修改,会导致root提示修改密码,无法成功修改密码,从而无法登陆。

如果要修改密码过期时间为“从不”

chage-M99999test

1.1.2空密码检查(必做)

执行:

awk-F:

'($2==""){print$1}'/etc/shadow,检查是否存在空口令账号

1.1.3密码复杂度(必做)

redhat公司专门开发了cracklib这个安装包来判断密码的复杂度

检查是否安装了cracklib模块,

#rpm-qa|grepcracklib

cracklib-2.8.9-3.3

cracklib-2.8.9-3.3

cracklib-dicts-2.8.9-3.3

在/etc/pam.d/system-auth中修改:

(原文件自带pam_cracklib.so模块)

passwordrequisitepam_cracklib.sotry_first_passretry=3

修改为

passwordrequisitepam_cracklib.sotry_first_passretry=3difok=3minlen=8dcredit=-1ucredit=-1lcredit=-1ocredit=-1

下一行后边追加remember=5,表示5次更改密码不能有重复,并且每次修改密码都会将历史密码记录在/etc/security/opasswd文件中

passwordsufficientpam_unix.somd5shadownulloktry_first_passuse_authtokremember=5

retry=N----改变输入密码的次数,默认值是1,一般设置为3。

就是说,如果用户输入的密码强度不够可以重复输入的次数。

minlen=N----密码最小长度(除了credit信用度的字符长度以外)

dcredit=N----密码中至少(N<0)或至多(N>=0)有几个数字

ucredit=N----密码中至少(N<0)或至多(N>=0)有几个大写字母

lcredit=N----密码中至少(N<0)或至多(N>=0)有几个小写字母

ocredit=N----密码中至少(N<0)或至多(N>=0)有几个特殊字符

difok=M----新密码与前一个旧密码之间至少有M个字符不相同

注意:

dcredit、ucredit、lcredit、ocredit为信用度字符,如果N<0,表示至少,则新密码长度最小长度就等于minlen.。

而当N>0时,表示至多,比如ocredit=1,至多有1个特殊字符,这样的话,即使没有特殊字符也会允许设置新密码。

还有,此时新密码长度会大于minlen。

算法交复杂,这里不赘述。

因此,通常情况下推荐使用N<0来做密码复杂度限制。

另外,此密码规则对root用户无效,只针对普通用户修改自身密码

1.2登录验证规则

1.2.1记录用户登录失败次数并锁定(必做)

在/etc/pam.d/system-auth中“#%PAM-1.0”下面一行加入

authrequiredpam_tally2.soonerr=faildeny=10no_magic_rootunlock_time=300

注意:

一定要加在#%PAM-1.0下面一行

参数说明:

deny[=n]----用户连续错误登陆的最大次数,超过则锁定

unlock_time----设定普通用户锁定后,多少时间后解锁,单位是秒

even_deny_root----也限制root用户

root_unlock_time[=n]----设定root用户锁定后,多少时间后解锁,单位是秒

quiet----不对已锁定的用户发出提示信息

注意:

以上参数根据实际需要取舍,如果使用了even_deny_root参数限制root用户登录错误次数,而没有配置root_unlock_time的话,一旦root用户被锁,解锁将很麻烦。

1.2.2查看用户登录失败次数(查看)

通过以下命令可以查看用户登录失败次数以及

#pam_tally2-utest

LoginFailuresLatestfailureFrom

test305/23/1114:

46:

07192.168.7.25

当登录错误次数达到最大限制后,用户再次登录时,会提示:

Youraccountislocked.Maximumamountoffailedattemptswasreached.

1.2.3解锁已锁定用户

自动解锁:

如果配置了unlock_time或root_unlock_time(针对root用户)参数,则等待超过这个时长后,帐户会自动解锁。

手动解锁:

只能以root用户通过以下命令可以手动解锁因登录错误次数达到最大限制后自动锁定的用户,同时登录错误次数会被重置为0

#pam_tally2-utest-r

1.3访问控制

1.3.1禁止root用户直接远程ssh登录(必做)

#vi/etc/ssh/sshd_config

将#PermitRootLoginyes改为

PermitRootLoginno

重启ssh服务

#servicesshdrestart

1.3.2禁止root用户直接远程telnet登录(必做)

系统安装telnet-server服务后,默认就是禁止root用户直接远程telnet登录的。

确认只要存在/etc/securetty文件,就可以限制root直接远程telnet登录。

注:

以下是移动安全加固规范里的描述,已不适应rhel5.x系统

1.3.3禁止无用的系统用户登录(必做)

#usermod-s/sbin/nologinusername

一般以下这几个系统用户根据实际需要可以进行禁止登陆,可能现网系统还存在其他用户

foriin\

bin\

daemon\

adm\

lp\

sync\

shutdown\

halt\

mail\

news\

uucp\

operator\

games\

gopher\

ftp\

nobody\

nscd\

vcsa\

ntp\

pcap\

dbus\

avahi\

rpc\

mailnull\

smmsp\

sshd\

oprofile\

pegasus\

xfs\

rpcuser\

nfsnobody\

haldaemon\

avahi-autoipd\

gdm\

netdump\

pvm\

cyrus\

mysql\

postgres\

amanda\

;

dousermod-s/sbin/nologin$i;done

1.3.4删除系统特殊的的用户帐号(必做)

注意:

事先备份好以下文件,以防删除后出现问题

/etc/passwd

/etc/group

/etc/shadow

/etc/gshadow

foriinadmlpsyncshutdownhaltnewsuucpoperatorgamesgopher;douserdel$i;done

1.3.5删除特殊的组(必做)

foriinadmlpnewsuucpgamesdippppuserspopusersslipusers;dogroupdel$i;done

1.3.6登录超时控制(必做)

对于bash用户,修改/etc/profile或/etc/bashrc,所有使用bash的用户都会继承

#vi/etc/profile

TMOUT=180

exportTMOUT

对于csh用户,修改/etc/csh.cshrc,所有使用csh的用户都会继承

#vi/etc/csh.cshrc

setenvTMOUT180

1.3.7检查是否存在除root之外UID为0的用户(必做)

执行

awk-F:

'($3==0){print$1}'/etc/passwd

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

1.3.8允许或禁止指定用户或组直接ssh远程登录(可选)

1.允许(白名单)

vi/etc/ssh/sshd_config

增加

AllowUserstest1test2#表示只有列表中的用户允许直接登录,其他都禁止

AllowGroupstestgrp1testgrp2#表示只有列表中组内的用户允许直接登录,其他都禁止

注意:

如果AllowUsers和AllowGroups同时配置,则取交集。

建议还是使用其中一种,避免引起混乱

2.禁止(黑名单)

DenyUserstest1

DenyGroupstestgrp1testgrp2

注意:

如果DenyUsers和DenyGroups同时配置,则取并集。

1.3.9允许或禁止指定用户或组直接telnet远程登录

系统不支持限制普通用户telnet远程登录

1.3.10允许或禁止指定IP地址ssh远程登录(可选)

/etc/hosts.allow控制可以访问本机的IP地址,/etc/hosts.deny控制禁止访问本机的IP。

如果两个文件的配置有冲突,以/etc/hosts.deny为准。

/etc/hosts.allow

sshd:

192.168.1.10192.168.1.11

/etc/hosts.deny

sshd:

ALL

表示只有192.168.1.10和192.168.1.11地址可以访问ssh服务,其他IP全都禁止

all:

192.168.4.44:

allow#允许单个IP访问所有服务进程

sshd:

192.168.1.:

allow#允许192.168.1的整个网段访问SSH服务进程

1.3.11允许或禁止指定IP地址telnet远程登录(可选)

/etc/hosts.allow

in.telnetd:

192.168.1.10192.168.1.11

/etc/hosts.deny

in.telnetd:

ALL

1.3.12指定wheel组的用户可以su作为root(可选,先不做,测试有问题)

#vi/etc/pam.d/su

#%PAM-1.0

authsufficientpam_rootok.so

#Uncommentthefollowinglinetoimplicitlytrustusersinthe"wheel"group.

#authsufficientpam_wheel.sotrustuse_uid

#Uncommentthefollowinglinetorequireausertobeinthe"wheel"group.

#authrequiredpam_wheel.souse_uid

去掉红色行前面的#号

这样以来只有wheel组的用户可以su作为root

指定某个用户可以su到root用户,需要将该用户加入到wheel组中

#usermod-Gwheelusername

注意,如果禁止root用户直接登录,也不存在wheel组的用户,就无法进入root用户了

1.4用户和文件权限

Linux文件系统的安全主要是通过设置文件的权限来实现的。

每一个Linux的文件或目录,都有3组属性,分别定义文件或目录的所有者,用户组和其他人的使用权限(只读、可写、可执行、允许SUID、允许SGID等)。

特别注意,权限为SUID和SGID的可执行文件,在程序运行过程中,会给进程赋予所有者的权限,如果被黑客发现并利用就会给系统造成危害。

1.4.1查找未授权的SUID/SGID文件(必做)

find/-xdev-typef\(-perm-04000-o-perm-02000\)-print

建议经常性的对比suid/sgid文件列表,以便能够及时发现可疑的后门程序

举例,普通用户无法直接vi修改/etc/passwd文件,但却可以通过passwd命令来修改自身的密码。

这时就利用了/bin/passwd的SUID的权限。

如果一个程序被设置成了S位标志,那么普通用户就可以以root身份来运行这个程序。

对系统安全性有较大不利影响,所以应禁止所有不必要的SUID/SGID程序。

修改部分系统文件的SUID和SGID的权限:

chmoda-s/usr/bin/chage

chmoda-s/usr/bin/gpasswd

chmoda-s/usr/bin/wall

chmoda-s/usr/bin/chfn

chmoda-s/usr/bin/chsh

chmoda-s/usr/bin/newgrp

chmoda-s/usr/bin/write

chmoda-s/usr/sbin/usernetctl

chmoda-s/bin/mount

chmoda-s/bin/umount

chmoda-s/sbin/netreport

1.4.2设定用户创建目录和文件的默认权限(必做)

使用umask指定当前用户创建文件夹和文件的默认权限属性

•若使用者建立为『文件』,则预设『没有可执行(x)项目』,亦即只有rw这两个项目,也就是最大为666分

--rw-rw-rw-

•若使用者建立为『目录』,则由于x与是否可以进入此目录有关,因此预设为所有权限均开放,亦即为777分

drwxrwxrwx

修改/etc/profile、/etc/bashrc、/etc/csh.login、/etc/csh.cshrc

举例:

umask002

生成目录的权限为777-002=775,即drwxrwxr-x

生成文件的权限为666-002=664,即-rw-rw-r--

umask022

生成目录的权限为777-022=755,即drwxrwxr-x

生成文件的权限为666-022=644,即-rw-r--r--

注意,不要单纯的进行数字加减

比如,umask003,如果以数字加减,则文件权限为666-003=663,相当于-rw-rw--wx,显然不正确,应该先转换成权限属性再相减-rw-rw-rw-减去--------wx,即应该为-rw-rw-r--

影响:

移动规范要求umask027,这样生成的文件默认权限为-rw-r-----,只有本用户可读、写、执行。

如果业务需要,其他用户也需要操作该用户的文件,就会有问题。

可以使用默认的022。

1.4.3root用户环境变量的安全性(必做)

执行:

echo$PATH|egrep'(^|:

)(\.|:

|$)'检查是否包含父目录

检查是否包含组目录权限为o+w的目录或者g+w的目录

执行:

find`echo$PATH|tr':

'''`-typed\(-perm-002-o-perm-020\)-ls

-002表示任何目录或文件,只要带o+w就匹配

+002表示目录或文件只有o+w权限,-------w-

可能会出现报错提示/root/bin目录不存在,PATH里有该路径,而实际上没有,可以先在/root下建立一个bin目录

1.4.4检查root用户环境变量path规范(必做)

检查系统root用户环境变量path中是否包含“.”

env|grepPATH

修改文件/etc/profile、/etc/bashrc或/root/.bash_profile在“PATH=……”这句中删除

1.4.5远程连接的安全性配置(必做)

执行:

find/-name.netrc,检查系统中是否有.netrc文件,

执行:

find/-name.rhosts,检查系统中是否有.rhosts文件

如无必要,删除这两个文件

在多机互备的环境中,需要保留其他主机的IP可信任。

如果确实需要保留,应确认该文件内不存在"+"符号,,更不能存在"++",因为++表示允许来自任何主机的任何用户无须密码就可以使用rlogin登陆。

1.4.6重要目录和文件的权限设置(必做)

执行以下命令检查目录和文件的权限设置情况:

ls-l/etc/

ls-l/etc/rc.d/init.d/

ls-l/tmp

ls-l/etc/inetd.conf

ls-l/etc/passwd

ls-l/etc/shadow

ls-l/etc/group

ls-l/etc/security

ls-l/etc/services

ls-l/etc/rc*.d

对于重要目录,建议执行如下类似操作:

#chmod-R750/etc/rc.d/init.d/*

这样只有root可以读、写和执行这个目录下的脚本。

chmod644/etc/passwd

chmod600/etc/shadow

chmod644/etc/group

chmod600/etc/gshadow

chmod700/bin/rpm//只有root用户可以使用rpm命令,安装软件包

chmod644/usr/bin/xhost

chmod664/etc/hosts

chmod644/etc/exports

chmod644/etc/issue

chmod664/var/log/wtmp

chmod644/etc/services

chmod600/etc/xinetd.conf

chmod600/etc/login.defs

chmod600/etc/hosts.allow

chmod600/etc/hosts.deny

chmod600/etc/securetty

chmod600/etc/ssh/ssh_host_key

chmod600/etc/ssh/sshd_config

chmod600/var/log/lastlog

chmod600/var/log/messages

chmod600/etc/security

影响:

有的移动安全加固标准要求/etc目录是750权限,但如果/etc目录是权限是750(drwxr-x---)的话,由于其他组没有x权限,那么普通用户就无权访问/etc目录以及以下所有文件,用户获取不到基本的环境变量/etc/profile和/etc/passwd、group等文件,一些基本命令都会出现问题,本用户的文件只有uid、gid,无法对应名用户名称和组名称。

1.4.7检查任何人都有写权限的目录(必做)

带有stickybit标志校验的命令

find/-xdev-typed\(-perm-0002-a!

-perm-1000\)-print

不带stickybit标志校验的

find/-typed-perm-2-execls-ldg{}\;

之前在福建做的检查中,使用了这条不带stickybit标志校验的命令,结果把/tmp、/dev/shm、/var/tmp这类目录也搜索出来了。

这些目录是存放每个用户临时文件的,目录本身是带stickybit粘滞位的,即使里面的文件有o+w权限也没问题,系统本身有保护性措施。

1.4.8查找任何人都有写权限的文件(必做)

带有stickybit标志校验的命令

find/-xdev-typef\(-perm-0002-a!

-perm-1000\)-print

不带stickybit标志校验的

find/-typef-perm-2-execls-lg{}\;

解释同上

1.4.9检查没有属主的文件(必做)

find/-nouser-o-nogroup-print

发现没有属主的文件往往就意味着有黑客入侵你的系统了。

不能允许没有主

人的文件存在。

如果在系统中发现了没有属主的文件或目录,先查看它的完

整性,如果一切正常,给它一个属主。

有时候卸载程序可能会出现一些没有

主人的文件或目录,在这种情况下可以把这些文件和目录删除掉。

在我的安全加固脚本中,把没有属主或属组的文件直接赋予了nobody用户和组

find/-path"/proc"-prune-nouser-o-nogroup-execchownnobody:

nobody{}\;

说明:

命令中排除了/proc目录

注意:

不用管“/dev”目录下的那些文件。

(移动新规范)

1.4.10检查异常隐含文件(必做)

#find/-xdev-name"..*"-print

#find/-xdev-name"...*"-print|cat-v

#find/-xdev-name"..^G"-print|cat-v

同时也要注意象“.xx”和“.mail”这样的文件名的。

(这些文件名看起来都很象正常的文件名)在系统的每个地方都要查看一下有没有异常隐含文件(点号是起始字符的,用“ls”命令看不到的文件),因为这些文件可能是隐藏的黑客工具或者其它一些信息(口令破解程序、其它系统的口令文件,等等)。

在UNIX下,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1