博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux系统基准
阅读量:5898 次
发布时间:2019-06-19

本文共 12633 字,大约阅读时间需要 42 分钟。

1.补丁安装

1.1 系统补丁升级

编号

名称

系统补丁

实施方案

#yum -y update

升级所有包,改变软件设置和系统设置,系统版本内核都升级
#yum -y upgrade
升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变

实施目的

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

实施要求

一般漏洞在三个月内完成修复,重大漏洞在一个月内完成修复,紧急漏洞当天完成修复。

实施风险

慎重对系统打补丁,补丁安装先先在测试机上完成。补丁安装可能导致

系统异常或无法启动。

回退方案

验证方法

2.升级openssl和openssh

编号

名称

升级openssl和openssh

实施方案

1.安装zlib

下载安装包:wget

(1)安装zlib-1.2.11

sudo tar -zvxf zlib-1.2.11.tar.gz

cd zlib-1.2.11

sudo ./configure --prefix=/usr/local/zlib --shared

sudo make

sudo make install

(2)安装zlib-devel

sudo yum -y install zlib-devel

2.升级openssl

注意:我们当前使用的是openssl1.0.2系列的版本,版本会隔一段时间升级一次,当前是openssl-1.0.2k版本,下次可能是更新的版本,升级时需要到openssl官网下载最新的版本来安装。

下载安装包:wget

sudo tar -zvxf openssl-1.0.2k.tar.gz

sudo cd openssl-1.0.2k

sudo ./config shared --prefix=/usr/local/ssl_1.0.2k \

--openssldir=/usr/local/ssl_1.0.2k zlib-dynamic

sudo make

sudo make install

备份openssl旧版本的相关文件

sudo mv /usr/bin/openssl /usr/bin/openssl.bak

sudo mv /usr/include/openssl /usr/include/openssl.bak

链接新版本的文件

sudo ln -s /usr/local/ssl_1.0.2k/bin/openssl /usr/bin/openssl

sudo ln -s /usr/local/ssl_1.0.2k/include/openssl /usr/include/openssl

#设置库文件路径。

sudo vim /etc/ld.so.conf,在文件最后写入/usr/local/ ssl_1.0.2k /lib

执行:

sudo ldconfig

注意,如果后面要部署nginx等使用到openssl可文件的程序,则需要引用openssl新版本的库文件。

3.升级openssh

注意:openssh版本会隔一段时间升级一次,当前是openssh-7.4p1版本,下次可能是更新的版本,升级时需要到openssh官网下载最新的版本来安装。

下载安装包:

wget

(1)卸载旧版openssh程序

rpm -e rpm -qa | grep openssh --allmatches –nodeps

备份原ssh配置

sudo mkdir /etc/sshbak

sudo mv /etc/ssh/* /etc/sshbak/

(2)安装 pam-devel

sudo yum install -y pam-devel

(3)安装openssh

sudo tar -zvxf openssh-7.4p1.tar.gz

cd openssh-7.4p1

sudo ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl_1.0.2k/ --with-md5-passwords --mandir=/usr/share/man

sudo make

sudo make install

生成ssh服务管理脚本

sudo cp ./openssh-7.4p1/contrib/redhat/sshd.init /etc/init.d/sshd

sudo chmod +x /etc/init.d/sshd

sudo chkconfig --add sshd

sudo /etc/init.d/sshd start

Starting sshd: [ OK ]

sudo ssh -V

OpenSSH_7.4p1, OpenSSL 1.0.2k 1 Mar 2016

(3)配置ssh的pam认证文件

查看/etc/pam.d/目录下是否有sshd文件,如果没有,则执行

sudo mv /etc/pam.d/sshd.rpmsave /etc/pam.d/sshd

注意:升级openssh后,登记该主机时可能会出现

RSA host key has changed错误

解决方法:在源主机上编辑/home/用户账号/.ssh/known_hosts文件,将包含有目标主机(升级了openssh版本的那台主机)的IP的所在行删掉,保存退出编辑即可。

实施目的

解决openssl和openssh低版本存在安全漏洞问题

实施要求

实施风险

在升级过程中可能导致ssh会话中断连接不上目标主机,如果是无法通过VMware vSphere Client进行终端管理的主机,建议先安装启用telnet服务,能通过telnet服务连接后再升级openssh,成功升级openssh服务后,再卸载telnet服务。

回退方案

通过备份的配置文件进行回退

验证方法

执行ssh –V

如果显示的是所安装的版本,则说明升级成功。

3.账号、口令策略

3.1账号最小化

编号

名称

账号最小化

实施方案

Linux下多余可关闭的用户如下:

IP,news,uucp,games,ftp

#groupdel (ip news uucp,games)

#userdel(ip,news,uucp,games)

更改一些用户shell

chmod -s /bin/nologin ftp

实施目的

去除不需要的账号,更改危险账号缺省的shell

实施要求

实施风险

应当明确系统的角色,避免误删除默认账号

回退方案

恢复默认配置

验证方法

cat /etc/passwd

3.2设置密码过期策略

编号

名称

设置密码过期策略

实施方案

备份配置文件

sudo cp -a /etc/login.defs /etc/login.defs.bak

修改/etc/login.defs文件如下:

sudo vi /etc/login.defs

PASS_MAX_DAYS 90

PASS_MIN_DAYS 6

PASS_MIN_LEN 8

PASS_WARN_AGE 30

参数说明:

PASS_MAX_DAYS 密码有效期

PASS_MIN_DAYS 修改密码的最短期限

PASS_MIN_LEN 密码最短长度

PASS_WARN_AGE 密码过期前提前提醒时间

实施目的

定期更换密码,保护口令安全

实施要求

90天需要更换密码,密码最小长度要求8位以上

实施风险

口令过期前应修改密码,tomcat用户可能不可用,导致堡垒机脚本失败

回退方案

还原变更的参数值或者使用备份文件进行还原

验证方法

#cat /etc/login.defs |grep PASS_MAX_DAYS

3.3超时自动注销登录

编号

名称

超时自动注销登录

实施方案

如果用户在离开系统前忘记注销账户,将会带来很大的安全隐患,应让系统自动注销。

#vi /etc/profile

增加或修改文件

export TMOUT=300

HISTFILESIZE=100

HISTSIZE=100

实施目的

避免用户忘记注销登录,减少安全隐患

实施要求

登录超时时间5分钟,历史命令记录数100条

实施风险

回退方案

还原变更的参数值或者使用备份文件进行还原

验证方法

#cat /etc/profile |grep TMOUT

3.4增强密码加密算法

编号

名称

增强密码加密算法

实施方案

sudo authconfig --test |grep password

查看系统加密算法,如果为MD5则需要改为sha512

需要root用户实施:

authconfig --passalgo=sha512 --enablenis –update

如果实施过程中NIS服务不能自动启动,则需要手动重启NIS服务:

service ypbind restart

实施目的

增强密码加密算法,提升系统密码安全性

实施要求

将密码加密算法升级到sha512

实施风险

实施过程当中,会关闭NIS服务,NIS服务关闭后如未能再次成功启动,此时用户则不能同时NIS认证登录系统,仅可以通过本地用户登录。

回退方案

还原回MD5

还原:authconfig --passalgo=md5 --enablenis --update

验证方法

sudo authconfig --test |grep password

3.5密码复杂度

编号

名称

密码复杂度

实施方案

sudo cp -a /etc/pam.d/system-auth /etc/pam.d/system-auth.bak

sudo vi /etc/pam.d/system-auth

针对centos或者redhat 6.X版本

password requisite pam_cracklib.so retry=3 minlen=8 difok=3 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1

改成

password requisite pam_cracklib.so minlen=8 difok=5 dcredit=-1 lcredit=-1 ocredit=-1 retry=1 type=

针对centos 7.X版本

password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=

改成

password requisite pam_pwquality.so try_first_pass local_users_only retry=1 dcredit=-1 lcredit=-1 ocredit=-1 minlen=8 difok=5 authtok_type=

备注:

minlen=8:最小长度8位

difok=5:新、旧密码最少5个字符不同

dcredit=-1:最少1个数字

lcredit=-1:最少1个小写字符,(ucredit=-1:最少1个大写字符)

ocredit=-1:最少1个特殊字符

retry=1:1次错误后返回错误信息

type=xxx:此选项用来修改缺省的密码提示文本

实施目的

防止系统弱口令和口令破解,减少安全隐患

实施要求

密码最短要求8位,并必须至少同时含有1个数字,1个小写字母,1个特殊符号。新、旧密码最少5个字符不同。

实施风险

回退方案

还原变更的参数值或者使用备份文件进行还原

验证方法

#cat /etc/pam.d/system-auth

3.6记住5个历史密码

编号

名称

记住5个历史密码

实施方案

sudo vi /etc/pam.d/system-auth

在这行password sufficient pam_unix.so sha512 shadow nis nullok try_first_pass use_authtok

的后面添加remember=5

实施目的

防止系统弱口令和口令破解,减少安全隐患

实施要求

对密码进行修改时,不允许设置与此前5个相同的密码。

实施风险

回退方案

还原变更的参数值或者使用备份文件进行还原

验证方法

#cat /etc/pam.d/system-auth

3.75次登陆失败锁定账户

编号

名称

5次登陆失败锁定账户

实施方案

针对login进程登录:

sudo vim /etc/pam.d/system-auth

在#%PAM-1.0的下面,即第二行,添加

auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800

针对SSH进程登录:

sudo cp -a /etc/pam.d/sshd /etc/pam.d/sshd.bak

sudo vim /etc/pam.d/sshd

在#%PAM-1.0的下面,即第二行,添加

auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800

实施目的

防止系统弱口令和口令破解,减少安全隐患

实施要求

5次登录失败,锁定账号30分钟。

实施风险

合法用户忘记密码多次输入错误导致账号被锁

回退方案

还原变更的参数值或者使用备份文件进行还原

验证方法

#cat /etc/pam.d/system-auth

#cat /etc/pam.d/sshd

3.8 使用PAM禁止不相关人员su为root

编号

名称

使用PAM禁止不相关人员su为root

实施方案

#sudo cp -a /etc/pam.d/su /etc/pam.d/su.bak

#sudo vi /etc/pam.d/su

#%PAM-1.0

auth sufficient pam_rootok.so

Uncomment the following line to implicitly trust users in the "wheel" group.

auth sufficient pam_wheel.so trust use_uid

Uncomment the following line to require a user to be in the "wheel" group.

auth required pam_wheel.so use_uid

auth include system-auth

account sufficient pam_succeed_if.so uid = 0 use_uid quiet

account include system-auth

password include system-auth

session include system-auth

session optional pam_xauth.so

将这行的注释去掉

#auth required pam_wheel.so use_uid

这表明只有wheel 组的成员可以使用su 命令成为root 用户

实施目的

避免无关人员可以su为root,减少安全隐患。

实施要求

只有加入wheel组的人员才能su为root。

实施风险

回退方案

还原变更的参数值或者使用备份文件进行还原

验证方法

#cat /etc/pam.d/su

4.网络与服务加固

4.1禁止不必要的服务

编号

名称

禁止不必要的服务

实施方案

Telnet,rsh,ldp,lpd,krb5-telnet,pcmcia

1、#chkconfig --list

1、#service 服务名 stop

3、#chkconfig --level 35 服务名 off

实施目的

禁用系统开机时启动不需要的服务,减少安全隐患。避免敏感信息泄露

实施要求

实施风险

该服务或与之相关的服务不可用

回退方案

验证方法

4.2 SSH安全配置

编号

名称

SSH安全配置

实施方案

sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

sudo vi /etc/ssh/sshd_config

使用版本2

Protocol 2

禁止root通过ssh登录

PermitRootLogin no

采用PAM模块进行认证

UsePAM yes

允许密码认证

PasswordAuthentication yes

使用密钥进行身份验证

PubkeyAuthentication yes

禁止空密码登录

PermitEmptyPasswords no

关闭ssh的tcp转发

AllowTcpForwarding no

关闭S/KEY(质疑-应答)认证方式

ChallengeResponseAuthentication no

关闭基于GSSAPI 的用户认证

将GSSAPIAuthentication yes参数,改成

GSSAPIAuthentication no

保存配置文件,并重启ssh服务

sudo /etc/init.d/sshd restart

实施目的

使用加密协议登录系统,避免密码被监听

实施要求

禁止root通过ssh远程登录系统,增强系统安全性

实施风险

回退方案

还原变更的参数值或者使用备份文件进行还原

验证方法

4.3设置登录警告语

编号

名称

设置登录警告语

实施方案

#vi /etc/ssh/sshd_conf

把Banner /some/path修改为 Banner /etc/ssh/alert

建立alert 文件

sudo vim /etc/ssh/alert

增加内容如入:


Warning!!!Any Access Without Permission Is Forbidden!!!


sudo service sshd restart(重启sshd 服务)

实施目的

设置登录警告语,明确系统归宿,同时对非法登录用户起到震慑作用。

实施要求

实施风险

回退方案

还原变更的参数值或者使用备份文件进行还原

验证方法

5.安全性增强

5.1新建文件权限增强

编号

名称

新建文件权限增强

实施方案

1.备份配置文件

sudo cp -a /etc/bashrc /etc/bashrc.default

2.编辑配置文件

sudo vim /etc/bashrc

在文件末尾增加参数

umask 027

3.保存配置文件

  1. 备份配置文件

sudo cp -a /etc/profile /etc/profile.default

5.编辑配置文件

sudo vim /etc/profile

在文件末尾增加参数

umask 027

6.保存配置文件

实施目的

设置新建文件权限,减少信息泄露风险

实施要求

实施风险

可能存在这样的情况,web服务器使用非root启动,但应用目录的所有者为root,web服务用户将无法访问在应用目录下新建的文件。

回退方案

将变更参数还原或者使用备份文件恢复

验证方法

5.2关键文件属性增强

编号

名称

关键文件属性增强

实施方案

sudo chattr +a /var/log/messages

sudo chattr +a /var/log/secure

sudo chattr +a /var/log/wtmp

sudo chmod +t /tmp

sudo chmod 644 /var/log/wtmp

sudo chmod 644 /var/run/utmp

chmod -R 700 /etc/init.d/*

touch /root/.rhosts /root/.netrc /etc/hosts.equiv

chmod 0 /root/.rhosts /root/.netrc /etc/hosts.equiv

备注:

chattr +a

设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。

chmod +t 设置粘着位,除文件所有者外,其他用户不能删除

实施目的

防止重要的日志文件被篡改

实施要求

实施风险

实施chmod -R 700 /etc/init.d/*后,/etc/init.d目录下的程序仅能通过root管理

回退方案

可通过chattr -a 取消a属性

可通过chattr -i 取消i属性

验证方法

5.3账号安全

编号

名称

关键文件属性增强

实施方案

chattr +i /etc/passwd

参数说明:

i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。

实施目的

防止被非法创建系统账号

实施要求

实施风险

不能创建系统账号,如果在应用程序安装时,要自动创建账号,则需要将该属性去掉。

回退方案

执行chattr -i /etc/passwd

验证方法

5.4设置history 历史命令时间戳

编号

名称

设置history 历史命令时间戳

实施方案

sudo cp -p /etc/profile /etc/profile.bak

sudo vim /etc/profile

在文件最后添加

export HISTTIMEFORMAT="%F %T whoami "

实施目的

便于日志审计和事件追查。

实施要求

实施风险

回退方案

还原变更的参数值或者使用备份文件进行还原

验证方法

5.5使PATH环境变更不包含当前目录”.”

编号

名称

使PATH环境变更不包含当前目录”.”

实施方案

echo $PATH

修改环境变更,去除”.”部分

/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.6.0_45/bin:/usr/local/bin:/root/bin

实施目的

防止执行恶意特洛伊×××,减少安全隐患

实施要求

实施风险

回退方案

验证方法

echo $PATH

5.6禁用control-alt-delete键盘关机命令

编号

名称

禁用control-alt-delete键盘关机命令

实施方案

centos 6.x以上版本

修改/etc/init/control-alt-delete.conf文件

找到如下行在本行前面加“#”注释掉命令功能

#exec /sbin/shutdown -r now "Control-Alt-Delete pressed"

centos 5.x:

vim /etc/inittab

找到:ca::ctrlaltdel:/sbin/shutdown -t3 -r now,在本行前面加“#”注释掉命令功能

实施目的

增加系统安全性,降低安全隐患

实施要求

禁止ctl-alt-del使用在控制台按ctl-alt-del不能重启计算机

实施风险

回退方案

还原变更的参数值

验证方法

5.7设置系统启动时运行等级

编号

名称

设置系统启动时运行等级

实施方案

编辑/etc/inittab 文件:

id:5:initdefault:

改为:

id:3:initdefault:

注:5 为带X-Windows 桌面系统的运行级别,3 为多用户运

行级别。

实施目的

最小化系统服务,降低安全隐患

实施要求

确保系统运行在级别3

实施风险

回退方案

还原变更的参数值

验证方法

5.8隐藏系统提示信息

编号

名称

隐藏系统提示信息

实施方案

隐藏Linux系统发行版的名称、版本、内核版本、服务器的名称

删除/etc目录下的isue.net和issue文件:

#rm -f /etc/issue

#rm -f /etc/issue.net

实施目的

减少系统提示信息,降低安全隐患。

实施要求

实施风险

回退方案

验证方法

5.9NTP时间同步

编号

名称

NTP时间同步

实施方案

0 /8 /usr/sbin/ntpdate 172.16.100.1; /sbin/hwclock –w

注意:实际的NTP服务器可能与这里设置的不一样,根据实际的NTP服务器IP来配置。

实施目的

统一时间,防止因时间不一致导致的审计和订单错误

实施要求

每8小时同步一次时间

实施风险

回退方案

验证方法

5.10设置grup密码

编号

名称

设置grup密码(进入单用户模式密码)

实施方案

备份配置文件

sudo cp -p /boot/grub/menu.lst /boot/grub/menu.lst.bak

grup密码使用MD5加密成密码序列

sudo grub-md5-crypt

Password: ---此处输入密码

Retype password:

设置grup密码

sudo vim /boot/grub/menu.lst

在splashimage=(hd0,0)下面添加

password --md5 xxxxxxxx (xxxxxxxx为上面的密码序列)

注意:如果设置了grup密码,则需要做好记录,以免关键时刻无法从单用户模式进入系统。

实施目的

防止恶意用户在本地通过单用户模式登录系统做非法操作

实施要求

实施风险

回退方案

还原变更的参数值或者使用备份文件进行还原

验证方法

5.11日志集中存储

编号

名称

日志集中存储

实施方案

#vi /etc/rsyslog.conf

增加一行:

. @172.16.200.5

注意:实际的日志服务器的IP地址跟这里配置的不一样,根据实际的IP地址来配置。

实施目的

日志集中发送到日志服务器存储,方便审计和日志保留。

实施要求

实施风险

回退方案

验证方法

5.12防恶意代码软件

编号

名称

防恶意代码软件

实施方案

安装ossec在/usr/local下

实施目的

文件一致性监控和报警

实施要求

监控系统重要文件的变更,如果是应用服务器,要监控应用服务器的目录,

设置脚本,在diff目录超过5G时,停止服务并删除diff文件,防止因监控目录过大导致的系统故障

实施风险

回退方案

验证方法

5.13 DNS配置

编号

名称

DNS配置

实施方案

#vi /etc/reslov.conf

nameserver 172.16.100.53

nameserver 114.114.114.114

nameserver 8.8.8.8

nameserver 58.60.188.178

search dinpay.com

options attempts:2

options timeout:2

实施目的

统一DNS解析,防止因修改DNS配置而导致的异常

实施要求

需要连接数据库的主机,需要在第一行配置nameserver 172.16.100.53

实施风险

回退方案

验证方法

5.14限制可使用sudo的用户和命令

编号

名称

限制可使用sudo的用户和命令

实施方案

#vi /etc/sudoers

User_Alias ADMINS=fxg,cqs,hjt,bzy,wxl,pb

Cmnd_Alias CMD=/bin/vi,/bin/cat,/bin/more,/bin/ls

root ALL=(ALL) ALL

ADMINS ALL=(root) NOPASSWD: ALL,!/usr/bin/passwd

ADMINS ALL=(tomcat) NOPASSWD: ALL

实施目的

限制可使用sudo的用户和命令,减少权限隐患

实施要求

实施风险

回退方案

验证方法

5.15系统备份

编号

名称

系统备份

实施方案

安装bacula客户端,设置备份目录

实施目的

对装有应用和系统配置文件进行备份,用于系统恢复。

实施要求

实施风险

回退方案

验证方法

5.16系统监控

编号

名称

系统监控

实施方案

安装Zabbix客户端

实施目的

对装有应用和系统配置文件进行备份,用于系统恢复。

实施要求

监控系统本身和应用的端口

实施风险

回退方案

验证方法

5.17脚本文件

编号

名称

脚本文件

实施方案

实施目的

统一脚本放置目录,方便管理

实施要求

脚本文件统一放在/usr/local/script目录下,如果需要每日执行的,放在/etc/cron.daily目录下

实施风险

回退方案

验证方法

5.18日志切割

编号

名称

日志切割

实施方案

例:

vim /etc/logrotate.d/nginx

/usr/local/nginx/logs/*.log{

daily

dateext

rotate 360

copytruncate

compress

notifempty

missingok

postrotate

if [ -f /usr/local/nginx/logs/nginx.pid ];then       kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`      fi

endscript

}

实施目的

对Nginx和Tomcat日志进行压缩切割,防止日志无限增大

实施要求

日志保留1年后转移到离线硬盘。

实施风险

回退方案

验证方法

5.19 /etc/hosts配置

编号

名称

/etc/hosts

实施方案

实施目的

实施要求

为避免出现IP域名不一致的情况,原则上除了200网段的主机其它网段或公网的域名一率通过dns进行解析,不允许通过/etc/hosts进行解析,如果有例外,记录在本文档最后例外记录里。

实施风险

回退方案

验证方法

4.20 NIS集中身份认证

编号

名称

NIS集中身份认证

实施方案

#vi /etc/yp.conf

domain dinpay.com server 172.16.200.3

#vi /etc/rc.d/rc.local

/bin/nisdomainname dinpay.com

vi /etc/nsswitch.conf

passwd: files nis

shadow: files nis

hosts: files nis dns

#chkconfig ypbind on

实施目的

统一系统账号管理

实施要求

实施风险

回退方案

验证方法

转载于:https://blog.51cto.com/hjt353/2171222

你可能感兴趣的文章
poj 2234 Matches Game
查看>>
2018年全国多校算法寒假训练营练习比赛(第五场)
查看>>
sax方式解析XML学习笔记
查看>>
Springboot配置(上)
查看>>
Luogu345: [POI2007]POW-The Flood
查看>>
java--Eclipse for mac 代码提示(代码助手,代码联想)快捷键修改
查看>>
Jdom的简单操作
查看>>
left join on/right join on/inner join on/full join on连接
查看>>
Codeforces 582B Once Again
查看>>
template.helper 多参数
查看>>
RadioButton布局图片+文字 实现tabhost效果
查看>>
[HEOI2012]采花
查看>>
access中设置不等于
查看>>
hdu 1221 Rectangle and Circle
查看>>
Android 四大组件之四(ContentProvider)
查看>>
Android 四大组件之一(Activity)
查看>>
扫描(一)
查看>>
MySQLDump在使用之前一定要想到的事情 [转载]
查看>>
PIE SDK矢量数据的读取
查看>>
两种方式分别改变alertdialog的宽和高
查看>>