03
2024
07
00:43:53

企业安全要求:Linux系统安全配置指南

Linux系统安全配置指南,相关配置基于Centos7.4下进行,其它版本可以适当参考,希望也可以帮助到你!




一、账号管理

(一)删除多余账号

1、安全基线说明

即删除无用账号。


2、操作指南


(1)参考配置操作

检查 /etc/passwd文件属性设置是否为 644:ls -l /etc/passwd,

查看是否存在可能无用的账号:more /etc/passwd,无用账号类似:uucp nuucp lpd guest printq;

删除用户:userdel username

3、检查办法

(1)判定条件

与管理员确认是否存在无用账号,若存在则删除掉。

(二)禁止账号共享

1、安全基线说明

即禁止共享账号,按照不同的用户分配不同的账号。


2、操作指南


(1)参考配置操作

命令cat /etc/passwd 查看当前所有用户的信息,与管理员确认是否有共享账号情况存在。

(2) 补充操作说明

避免共享账号存在,应按照不同的用户分配不同的账号。

3、检查办法

(1)判定条件

不应存在账号共享的情况。


(三)删除无用用户组


1、安全基线说明

即删除无用的用户组。


2、操作指南


(1)参考配置操作

查看用户组文件权限是否为644:ls -l /etc/group

more /etc/group ,查看用户组是否存在如下可能无用组类似:uucp printq。

删除用户组的命令:groupdel groupname

3、检查办法

(1)判定条件

删除无用的用户组。


(四)指定用户组成员使用su命令


1、安全基线说明

即指定用户组成员使用su命令。


2、操作指南


(1)参考配置操作

编辑su文件(vi /etc/pam.d/su),在开头添加下面内容:

auth required pam_wheel.so use_uid

这表明只wheel组的成员可以使用su命令成为root用户。普通用户之间无法随意su,只能用已设置账户su到其他账户,其他账户不能su到已设置账户。

添加方法为:# usermod –G wheel username

3、检查办法

(1)判定条件

#cat /etc/pam.d/su,查看是否配置以上的内容。


(五)禁止除root之外UID为0的用户


1、安全基线说明

即禁止除root之外UID为0的用户。


2、操作指南


(1)参考配置操作

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

返回值应只有root。

若存在其他值则使用userdel username命令删除该用户。

(2) 补充操作说明

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


3、检查办法

(1)判定条件

除了root用户外,不存在UID为0 的用户。


二、密码策略


(一)密码长度及复杂度策略


1、安全基线说明

即密码必须符合密码长度及复杂度的要求,防止暴利破解


2、操作指南


(1)参考配置操作

a、修改/etc/login.defs文件

PASS_MIN_LEN 10 #密码最小长度

b、修改/etc/pam.d/system-auth文件,找到 password requisite pam_cracklib.so这么一行替换成如下(数字可以根据实际填):

password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict

参数含义:

尝试次数:5 新旧密码最少不同字符:3 最小密码长度:10 最少大写字母:1 最少小写字母:3 最少数字:3 密码字典:/usr/share/cracklib/pw_dict。

3、检查办法

(1)判定条件

执行:more /etc/login.defs

检查


PASS_MAX_DAYS/PASS_MIN_LEN/PASS_MIN_DAYS/PASS_WARN_AGE参数,


其中PASS_MIN_LEN 为${key} #设定最小用户密码长度为${key} 位,其中修改其参数使其符合要求。

执行:awk -F: '($2 == "") { print $1 }' /etc/shadow,

检查是否存在空口令账号,将口令配置为强口令。

创建一个普通账号,为用户配置与用户名相同的口令、只包含字符或数字的简单口令以及长度短于${key} 的口令,查看系统是否对口令强度要求进行提示;输入带有特殊符号的复杂口令、普通复杂口令,查看系统是否可以成功设置。

(二)配置密码的生存期


1、安全基线说明

即配置密码的生产期,保证密码的更新,防止密码被泄露。


2、操作指南


(1)参考配置操作

编辑/etc/login.defs 文件中指定配置项决定,其中:

PASS_MAX_DAYS 配置项决定密码最长使用期限;

PASS_MIN_DAYS 配置项决定密码最短使用期限;

PASS_WARN_AGE 配置项决定密码到期提醒时间。

3、检查办法

(1)判定条件

cat /etc/login.defs 查看对应属性值;


三、访问控制


(一)限制非授权终端登录


1、安全基线说明

即设定终端登录安全策略及措施,非授权终端无法登录管理。


2、操作指南


(1)参考配置操作

修改/etc/hosts.deny、/etc/hosts.allow中对终端登录限制的相关配置参数。


3、检查办法

(1)判定条件

查看/etc/hosts.deny、/etc/hosts.allow配置文件,是否设定了终端登录限制的相关配置参数。


(二)远程管理使用SSH加密协议


1、安全基线说明

即系统应配置使用ssh 等加密协议进行远程登录维护,并安全配置sshd 的设置。不使用telnet 进行远程登录维护。


2、操作指南


(1)参考配置操作

查看SSH 服务状态:# ps –elf|grep ssh

手动编辑/etc/ssh/sshd_config,配置相关选项(可根据实际情况决定配置那些选项)。

SSHD 相关安全设置选项解释如下:

Protocol 2 #使用ssh2 版本

X11Forwarding yes #允许窗口图形传

输使用ssh 加密

IgnoreRhosts yes#完全禁止SSHD 使用.rhosts 文件

RhostsAuthentication no #不设置使用基于rhosts 的安全验证

RhostsRSAAuthentication no #不设置使用RSA 算法的基于rhosts 的安全验证

HostbasedAuthentication no #不允许基于主机白名单方式认证

PermitRootLogin no #不允许root 登录

PermitEmptyPasswords no #不允许空密码

Banner /etc/motd #设置ssh 登录时显示的banner

3、检查办法

(1)判定条件

查看SSH 服务状态:# ps -elf|grep ssh

查看telnet 服务状态:# ps -elf|grep telnet

应禁止telnet,使用ssh远程登录。

(三)限制root用户SSH远程登录

1、安全基线说明

即限制root用户远程登录,只允许本地登录。


2、操作指南


(1)参考配置操作

限制root从远程Telnet登录 ,

在/etc/securetty文件中配置CONSOLE=/dev/tty01

限制root 从远程ssh 登录,

修改/etc/ssh/sshd_config 文件,

将PermitRootLogin yes 改为PermitRootLogin no,重启sshd 服务。

3、检查办法

(1)判定条件

#service telnet status,判断是否安装Telnet;

#cat /etc/ssh/sshd_config,检测PermitRootLogin的配置。

四、资源控制


(一)登录超时时间配置


1、安全基线说明

即配置登录超时使登录后超过一段时间无操作后自动退出登录。


2、操作指南


(1)参考配置操作

通过修改帐户中“TMOUT”参数,可以实现此功能。TMOUT 按秒计算。编辑profile 文件(vi /etc/profile),在文件的后面加入下面这行:export TMOUT=(可根据情况设定)

这里的时间以秒未单位。

重新登录使配置生效。

3、检查办法

(1)判定条件

#cat /etc/profile,查看是否配置超时时间。


(二)远程连接的安全性配置(可选)


1、安全基线说明

.rhosts,.netrc,hosts.equiv等文件都具有潜在的危险,如无应用,应删除该文件。


2、操作指南


(1)参考配置操作

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

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

.rhosts,.netrc,hosts.equiv等文件都具有潜在的危险,如

无应用,删除以上文件。

3、检查办法

(1)判定条件

如无应用,删除.rhosts,.netrc,hosts.equiv文件。


(三)root用户环境变量的安全性


1、安全基线说明

确保root用户的系统路径中不包含父目录,在非必要的情况下,不应包含组目录权限为777的目录。


2、操作指南


(1)参考配置操作

执行:

echo $PATH | egrep '(^|:)(\.|:|$)'

检查是否包含父目录,

执行:

find `echo $PATH | tr ':' ' '` -type d \( -perm -002 -o -perm -020 \) -ls

检查是否包含组目录权限为777的目录。

确保root用户的系统路径中不包含父目录,在非必要的情况下,不应包含组目录权限为777的目录。

3、检查办法

(1)判定条件

在非必要的情况下,不应包含组权限为777的目录。


(四)禁止ctrl+alt+delete功能键


1、安全基线说明

Linux默认情况下开启Ctrl+Alt+Del重启或关机的功能,为了避免误操作,禁止Ctrl+Alt+Del功能键。


2、操作指南


(1)参考配置操作

#查看/etc/inittab确认Ctrl+Alt+Del相关配置文件

cat /etc/inittab

# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target #相关配置文件存放位置

#查看Ctrl+Alt+Del配置文件的属性信息

ls -ld /usr/lib/systemd/system/ctrl-alt-del.target

#删除软链接文件

rm -f /usr/lib/systemd/system/ctrl-alt-del.target

或者

mv /usr/lib/systemd/system/ctrl-alt-del.target /tmp

#重新加载初始化守护进程配置文件(Reload init daemon configuration)

init q

3、检查办法

(1)判定条件

按下Ctrl+Alt+Del不能重启或关机。


五、日志审计


(一)Cron任务授权


1、安全基线说明

只允许指定授权用户启用cron/at任务


2、操作指南


(1)参考配置操作

只允许指定授权用户启用cron/at任务,删除cron.deny、at.deny文件,创建cron.allow、at.allow文件。


3、检查办法

(1)判定条件

执行:ls -l /etc/cron.allow


 ls -l /etc/at.allow 


查看cron.allow、 at.allow文件的授权情况


(二)对syslog登录事件记录


1、安全基线说明

记录认证、授权使用的相关信息。


2、操作指南


(1)参考配置操作

#vim /etc/rsyslog.conf

配置authpriv.* /var/log/secure

(2)补充说明

将 authpirv 设备的任何级别的信息记录到/var/log/secure 文件中,这主要是一些和认证、权限使用相关的信息。


3、检查办法

(1)判定条件

/etc/rsyslog.conf 文件中配置有authpriv.* /var/log/secure


(三)对rsyslog.conf配置审核


1、安全基线说明

设置记录什么类型的日志信息。


2、操作指南


(1)参考配置操作

执行:


vim /etc/rsyslog.conf,


设置了下列项: 


kern.warning;*.err;authpriv.none\t@loghost *.info;mail.none;authpriv.none;cron.none\t@loghost  *.emerg\t@loghost local7.*\t@loghost


3、检查办法

(1)判定条件

/etc/rsyslog.conf文件中必须设置日志记录信息。


(四)系统日志读写权限


1、安全基线说明

系统日志文件由 syslog 创立并且不可被其它用户修改;其它的系统日志文件不是全局可写,保护系统日志避免被篡改、覆盖等。


2、操作指南


(1)参考配置操作

查看如下等日志的访问权限,保证日志文件不能非授权访问。


#ls –l 查看下列日志文件权限

/var/log/messages 、

/var/log/secure 、

/var/log/maillog 、

/var/log/cron、

/var/log/spooler、

/var/log/boot/log

3、检查办法

(1)判定条件

非授权不能访问日志文件。


(五)history命令(可选)


1、安全基线说明

为了方便审计,设置系统在记录历史命令的同时,记录时间和用户。


2、操作指南


(1)参考配置操作

在/etc/profile中添加如下变量即可:


export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S `whoami` "

然后运行source /etc/profile命令即可,注意引号中的空格。

source /etc/profile

为防止history记录被删除可以在/etc/profile文件中添加如下变量:

export PROMPT_COMMAND=' history -a >(tee -a ~/.bash_history | logger -t "$USER[$$] $SSH_CONNECTION") '

(2)补充操作说明


history命令的用法及参数usage: 

history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]

参数:

n :数字,要列出最近的若干命令列表

-c :将目前的 shell 中的所有 history 内容全部消除

-a :将目前新增的 history 指令新增入 histfiles 中,若没有加 histfiles ,则预设写入 ~/.bash_history

-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中

-w :将目前的 history 记忆内容写入 histfiles

3、检查办法

(1)判定条件

执行history命令,查看历史命令是否包含时间和用户。


(六)远程日志服务器配置(可选)


1、安全基线说明

配置远程日志功能,将需要重点关注的日志内容传输到日志服务器进行备份。


2、操作指南


(1)参考配置操作

修改配置文件vi /etc/rsyslog.conf,


加上这一行:*.* @192.168.100.1

可以将"*.*"替换为你实际需要的日志信息。比如:kern.* / mail.* 等等;可以将此处192.168.100.1 替换为实际的IP 或域名。

重新启动syslog 服务,执行下列命令:

services syslogd restart

(2)补充操作说明


*.*和@之间为一个Tab。


3、检查办法

(1)判定条件

cat /etc/rsyslog.conf 查看是否有对应配置;


六、系统文件管理


(一)系统磁盘状态


1、安全基线说明

查看磁盘状态,保证有足够的磁盘可用空间。


2、操作指南


(1)参考配置操作

执行:df -h,检查当前系统文件配置情况,保证有足够的磁盘可用空间;


(2)补充操作说明


处理空间不足情况。


3、检查办法

(1)判定条件

保证有足够的磁盘可用空间;


(二)重要目录和文件的权限设置(可选)


1、安全基线说明

设置重要目录和文件的权限,禁止非授权访问。


2、操作指南


(1)参考配置操作

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

ls -l /etc/

安全建议

根据安全需要,配置某些关键目录其所需的最小权限;重点要求password 配置文件、shadow 文件、group 文件权限。

(2)补充操作说明


/etc/passwd 所有用户都可读,root 用户可写 –rw-r—r—

配置命令:chmod 644 /etc/passwd

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

配置命令:chmod 600 /etc/shadow;

/etc/group 必须所有用户都可读,root 用户可写 –rw-r—r—

配置命令:chmod 644 /etc/group;

3、检查办法

(1)判定条件

查看关键目录的权限#ls -l /etc/


(三)删除未授权的suid/sgid文件


1、安全基线说明

删除未授权的suid/sgid文件。


2、操作指南


(1)参考配置操作

用下面的命令查找系统中所有的SUID和SGID文件,执行:


for PART in `grep -v ^# /etc/fstab | awk '($6 == "0") {print $2 }'`;do

find $PART -xdev -type f \( -perm -04000 -o -perm -02000 \) -print 

done

若存在未授权文件则删除文件或给该文件授权。


(2)补充操作说明


系统中suid和sgid文件很有可能成为安全隐患,必须被严密监控。因为这些程序都给了它的用户一些特权,所以要确保危险的suid没有被安装。


3、检查办法

(1)判定条件

检查查询结果中不存在未授权的文件。


(四)检查任何人都是写权限的目录


1、安全基线说明

系统中不应存在任何人都有写权限的目录。


2、操作指南


(1)参考配置操作

用下面的命令查找系统中都有写权限的文件,执行:


for PART in `awk '($3 == "ext2" || $3 == "xfs" {print $2}'`;do

find $PART -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

done

若存在则删除该目录或给该目录授权。


(2)补充操作说明



3、检查办法

(1)判定条件

自检查;


(五)检查任何人都有写权限的文件


1、安全基线说明

系统中不应存在任何人都有写权限的文件。


2、操作指南


(1)参考配置操作

用下面的命令查找系统中任何人都有写权限的文件,执行:


for PART in `grep -v ^# /etc/fstab | awk '($6 == "0") {print $2}'`;do

find $PART -xdev -type f \( -perm -0002 -a ! -perm -1000 \) -print

done

若存在则删除文件或给该文件授权。


(2)补充操作说明



3、检查办法

(1)判定条件

不存在任何人都有写权限的文件。


(六)删除没有属主的文件


1、安全基线说明

检查没有属主的文件,若存在应删除。


2、操作指南


(1)参考配置操作

用下面的命令查找系统中都有写权限的文件,执行:


for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2}'`;do

find $PART -nouser -o -nogroup -print

done

若存在没有属主的文件,应删除该文件。


(2)补充操作说明


发现没有属主的文件往往就意味着有黑客入侵的可能。不能允许没有属主的文件存在。如果在系统中发现了没有属主的文件或目录,先查看它的完整性,如果一切正常,给它一个属主。有时候卸载程序可能会出现一些没有属主的文件或目录,在这种情况下可以把这些文件和目录删除掉。


3、检查办法

(1)判定条件

不存在没有属主的文件。


(七)检查异常隐含文件


1、安全基线说明

不应存在异常隐含文件。


2、操作指南


(1)参考配置操作

用“find”程序可以查找到这些隐含文件。例如:

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

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

同时也要注意象“.xx”和“.mail”这样的文件名的。(这些文件名看起来都很象正常的文件名)

若存在则删除异常隐含文件。

(2)补充操作说明


在系统的每个地方都要查看一下有没有异常隐含文件(点号是起始字符的,用“ls”命令看不到的文件),因为这些文件可能是隐藏的黑客工具或者其它一些信息(口令破解程序、其它系统的口令文件,等等)。在UNIX下,一个常用的技术就是用一些特殊的名,如:“…”、“.. ”(点点空格)或“..^G”(点点control-G),来隐含文件或目录。


3、检查办法

(1)判定条件

检查结果中不存在类似文件。


(八)系统补丁


1、安全基线说明

在保证业务网络稳定运行的前提下,安装最新的OS 补丁(补丁在安装前需要测试确定)。


2、操作指南


(1)参考配置操作

执行下列命令,查看版本及大补丁号。

#uname –a

在保证业务网络稳定运行的前提下,安装最新的OS 补丁(补丁在安装前需要测试确定)

(2)补充操作说明


在系统安装时建议只安装基本的 OS 部份,其余的软件包则以必要为原则,非必需的包就不装。


3、检查办法

(1)判定条件

系统补丁的版本应为最新版本。


(九)/etc/passwd、/etc/shadow文件安全性(可选)


1、安全基线说明

Passwd、shadow、group文件中不应存在“+”,有”+”条目的文件允许通过NIS Map中系统配置的某些点插入数据,passwd shadow group文件中如包含此条目,可能会使入侵者通过网络添加用户。


2、操作指南


(1)参考配置操作

执行:grep ^+: /etc/passwd /etc/shadow /etc/group,查看文件中是否包含”+”。

更改文件权限,执行chmod o-w /etc/passwd /etc/shadow /etc/group删除文件中的”+”条目

(2)补充操作说明



3、检查办法

(1)判定条件

执行:grep ^+: /etc/passwd /etc/shadow /etc/group,查看文件中是否包含”+”。返回值应为空。


七、网络与服务


(一)关闭不必要的系统服务


1、安全基线说明

关闭不必要的服务。


2、操作指南


(1)参考配置操作

#ps –ef

#chkconfig --list

#ls /etc/xinetd.d

在xinetd.d中关闭不用的服务,用vi编辑器编辑xinetd.d目录下对于服务的文件,把disable配置成yes,则为禁止改服务,重启xinetd服务,即可。

还可使用如下方式禁用不必要的服务:

#service <服务名> stop

#chkconfig --level 35 off

(2)补充操作说明

在/etc/xinetd.d文件夹中禁止不必要的基本网络服务。

注意:改变了“/etc/xinetd.d”目录下的服务文件之后,需要重新启动xinetd。

根据每台机器的不同角色,关闭不需要的系统服务。操作指南中的服务项提供参考,根据服务器的角色和应用情况对启动项进行修改。如无特殊需要,应关闭Sendmail、Telnet、Bind 等服务Linux/Unix 系统服务中,部分服务存在较高安全风险,应当禁用,包括:

“lpd”,此服务为行式打印机后台程序,用于假脱机打印工作的UNIX 后台程序,此服务通常情况下不用,建议禁用;

“telnet”,此服务采用明文传输数据,登录信息容易被窃取,建议用ssh 代替;

“routed”,此服务为路由守候进程,使用动态RIP 路由选择协议建议禁用;

“sendmail”,此服务为邮件服务守护进程,非邮件服务器应将其关闭;

“Bluetooth”,此服务为蓝牙服务,如果不需要蓝牙服务时应关闭;

“identd”,此服务为AUTH 服务,在提供用户信息方面与finger类似,一般情况下该服务不是必须的,建议关闭;

“xfs”,此服务为Linux 中X Window 的字体服务,关于该服务历史上出现过信息泄露和拒绝服务等漏洞,应以减少系统风险;

R 服务(“rlogin”、“rwho”、“rsh”、“rexec”),R 服务设计上存在严重的安全缺陷,仅适用于封闭环境中信任主机之间便捷访问,其它场合下均必须禁用;

基于inetd/xinetd 的服务(daytime、chargen、echo 等),此类服务建议禁用。

3、检查办法

(1)判定条件

#ps –ef


#chkconfig --list

#ls /etc/xinetd.d

所需的服务都列出来;没有不必要的服务;




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/6921.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: