linux系统部署项目安全基线相关配置修改方法

linux系统一些安全基线部署要求

1、限制root用户ssh远程登录

参考配置操作
1、执行备份: #cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
2、新建一个普通用户并设置高强度密码(防止设备上只存在root用户可用时,无法远程访问): #useradd username #passwd username
3、禁止root用户远程登录系统
(1)、编辑文件/etc/ssh/sshd_config(vi /etc/ssh/sshd_config),修改PermitRootLogin值为no并去掉注释。 PermitRootLogin no #则禁止了root从ssh登录。
(2)、重启SSH服务 #/etc/init.d/sshd restart
4、修改SSH协议版本
(1)、编辑文件/etc/ssh/sshd_config(vi /etc/ssh/sshd_config),修改Protocol的值为2并去掉注释。
(2)、重启ssh服务 #/etc/init.d/sshd restart

检测方法
1、执行以下命令查看配置文件/etc/ssh/sshd_config是否配置拒绝root用户通过ssh协议远程登录: #grep -v “1#" /etc/ssh/sshd_config|grep “PermitRootLogin no”
2、执行以下命令查看ssh协议版本是否为2: #grep -v "2
#” /etc/ssh/sshd_config|egrep “protocol\s*2|Protocol\s*2” 判定依据 /etc/ssh/sshd_config文件存在PermitRootLogin no(表示禁止root用户通过ssh协议远程登录)且ssh协议为protocol 2(表示ssh协议版本为2)则合规,否则不合规。

2. 普通用户赋予sudo执行权限

编辑sudoers文件 vi /etc/sudoers 找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名) ps:这里说下你可以sudoers添加下面四行中任意一条 youuser ALL=(ALL) ALL %youuser ALL=(ALL) ALL youuser ALL=(ALL) NOPASSWD: ALL %youuser ALL=(ALL) NOPASSWD: ALL 第一行:允许用户youuser执行sudo命令(需要输入密码). 第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码). 第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码. 第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.

配置命令:

sed -i ‘95a temobi ALL=(ALL) NOPASSWD: ALL’ /etc/sudoers

检查配置:

grep “ALL=(ALL)” /etc/sudoers|grep -v “#”

3. 禁止存在心血漏洞,升级openssl版本到1.0.1t

解压安装

tar zxf openssl-1.0.1g.tar.gz

cd openssl-1.0.1g

./config

make

make install

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

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

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/ssl/include/openssl /usr/include/openssl

echo “/usr/local/ssl/lib” >> /etc/ld.so.conf

ldconfig -v

查看是否升级成功

[root@zj ~]# openssl version -a

OpenSSL 1.0.1g 7 Apr 2014

tips: 由于服务器没有root权限,可以创建一个http服务器供所有服务器下载openssl源码包

wget http://10.213.30.130/openssl-1.0.1t.tar.gz

4. 口令复杂度设置(此配置只对普通用户生效,root不生效)

redhat系统 编辑文件/etc/pam.d/system-auth,在文件中找到如下内容: password requisite pam_cracklib.so,将其修改为: password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
#至少包含一个数字、一个小写字母、一个大写字母、一个特殊字符、且密码长度>=8
命令:

sed -i ‘s/type=/type= dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8/g’/etc/pam.d/system-auth

检查:

grep pam_cracklib.so /etc/pam.d/system-auth

5. 口令生存周期

检测方法 查看文件/etc/login.defs( more /etc/login.defs),检查如下参数值是否满足要求: PASS_MAX_DAYS 90 #新建用户的密码最长使用天数不大于90 PASS_MIN_DAYS 0 #新建用户的密码最短使用天数为10 PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数为7

参考配置操作 1、执行备份: #cp -p /etc/login.defs /etc/login.defs_bak 2、修改策略设置,编辑文件/etc/login.defs(vi /etc/login.defs),在文件中加入如下内容(如果存在则修改,不存在则添加): PASS_MAX_DAYS 90 PASS_MIN_DAYS 0 PASS_WARN_AGE 7
命令:
sed -i ‘/^PASS_MAX_DAYS/cPASS_MAX_DAYS 90’ /etc/login.defs
检查:

grep ^PASS_MAX_DAYS /etc/login.defs

6、使用PAM认证模块禁止wheel组之外的用户su为root

检测方法 执行命令cat /etc/pam.d/su,查看文件中是否存在如下配置: auth sufficient pam_rootok.so auth required pam_wheel.so group=wheel 判定依据 使用pam_rootok.so认证模块认证且配置了只允许wheel组的用户才能su为root则合规,否则不合规。

参考配置操作
1、编辑文件(vi /etc/pam.d/su)
(1)、redhat4.x(32位)在文件开头加入如下两行(有则修改,没有则添加): auth sufficient /lib/security/ I S A / p a m r o o t o k . s o a u t h r e q u i r e d / l i b / s e c u r i t y / ISA/pam_rootok.so auth required /lib/security/ ISA/pamrootok.soauthrequired/lib/security/ISA/pam_wheel.so use_uid #注意auth与sufficient之间由两个tab建隔开,sufficient与动态库路径之间使用一个tab建隔开
(2)、redhat4.x(64位)在文件开头加入如下两行(有则修改,没有则添加): auth sufficient /lib64/security/ I S A / p a m r o o t o k . s o a u t h r e q u i r e d / l i b 64 / s e c u r i t y / ISA/pam_rootok.so auth required /lib64/security/ ISA/pamrootok.soauthrequired/lib64/security/ISA/pam_wheel.so use_uid #注意auth与sufficient之间由两个tab建隔开,sufficient与动态库路径之间使用一个tab建隔开
(3)、redhat5.x和redhat6.x在文件开头加入如下两行(有则修改,没有则添加): auth sufficient pam_rootok.so auth required pam_wheel.so use_uid #注意auth与sufficient之间由两个tab建隔开,sufficient与动态库路径之间使用一个tab建隔开 说明:(这表明只有wheel组中的用户可以使用su命令成为root用户。你可以把用户添加到wheel组,以使它可以使用su命令成为root用户。) 添加方法: #usermod -G wheel username #username为需要添加至wheel组的账户名称。

操作命令:
sed -i ‘6s/#//’ /etc/pam.d/su
usermod -G wheel temobi

检查命令:
grep “pam_wheel.so use_uid” /etc/pam.d/su

7、 登陆超时时间设置

echo -e “TMOUT=300 \nexport TMOUT” >> /etc/profile

检查命令:

grep -A 1 TMOUT /etc/profile

8、文件与目录缺省权限控制

检测方法

查看文件/etc/profile的末尾是否设置umask值: #awk ‘{print $1":"$2}’ /etc/profile|grep umask|tail -n1 判定依据 /etc/profile文件末尾存在umask 027,则合规,否则为不合规。
参考配置操作
1、首先对/etc/profile进行备份: #cp /etc/profile /etc/profile.bak
2、编辑文件/etc/profile,在文件末尾加上如下内容: umask 027
3、执行以下命令让配置生效: #source /etc/profile

操作命令:
echo “umask 027” >> /etc/profile

检测命令:

grep umask /etc/profile

9、 oracle限制sysdba权限类用户远程登录

检测步骤:
一、使用以下命令查看REMOTE_LOGIN_PASSWORDFILE的值: #select t.VALUE from v$parameter t where upper(t.NAME) like ‘%REMOTE_LOGIN_PASSWORDFILE%’; 判定依据: REMOTE_LOGIN_PASSWORDFILE的值为NONE则合规,否则不合规.
参考步骤:
(1).oracle用户登录系统。
(2).sqlplus / as sysdba登陆数据库。
(3).执行alter system set REMOTE_LOGIN_PASSWORDFILE=NONE SCOPE=SPFILE;
(4).shutdown immediate.
(5).startup. 补充说明 此配置影响远程以Sql*Net方式对数据库的管理 此配置也可能使某些第三方ORACLE管理工具不正常

10、 oracle检查口令强度设置

检测步骤:
一、创建一个用户,口令长度设置为<8位,应该创建失败 sql>create user test identified by qwe123 判定依据: 设置了验证密码函数来对账号进行校验则合规,否则不合规.
参考步骤
(1).oracle用户登录系统
(2).修改Oracle自带的默认文件$ORACLE_HOME/rdbms/admin/utlpwdmg.sql创建verify_function函数 (注:utlpwdmg.sql中已经对口令长度,是否包含字母、数字、特殊字符验证)。 1)#vi O R A C L E H O M E / r d b m s / a d m i n / u t l p w d m g . s q l 将 以 下 内 容 : I F l e n g t h ( p a s s w o r d ) < 4 T H E N r a i s e a p p l i c a t i o n e r r o r ( − 20002 , ′ P a s s w o r d l e n g t h l e s s t h a n 4 ′ ) ; E N D I F ; 修 改 为 I F l e n g t h ( p a s s w o r d ) < 8 T H E N r a i s e a p p l i c a t i o n e r r o r ( − 20002 , ′ P a s s w o r d l e n g t h l e s s t h a n 8 ′ ) ; E N D I F ; 2 ) 修 改 u t l p w d m g . s q l 里 面 最 后 面 的 部 分 配 置 : A L T E R P R O F I L E D E F A U L T L I M I T P A S S W O R D L I F E T I M E 60 P A S S W O R D G R A C E T I M E 10 P A S S W O R D R E U S E T I M E 1800 P A S S W O R D R E U S E M A X U N L I M I T E D F A I L E D L O G I N A T T E M P T S 3 P A S S W O R D L O C K T I M E 1 / 1440 P A S S W O R D V E R I F Y F U N C T I O N v e r i f y f u n c t i o n ; 为 A L T E R P R O F I L E D E F A U L T L I M I T P A S S W O R D V E R I F Y F U N C T I O N v e r i f y f u n c t i o n ; 注 : o r a c l e 10 g 口 令 不 区 分 大 小 写 , o r a c l e 11 g 口 令 区 分 大 小 写 。 u t l p w d m g . s q l 设 置 完 毕 ( 3 ) . c o n n / a s s y s d b a 登 陆 数 据 库 后 , 执 行 s q l > @ ORACLE_HOME/rdbms/admin/utlpwdmg.sql 将以下内容: IF length(password) < 4 THEN raise_application_error(-20002, 'Password length less than 4'); END IF; 修改为 IF length(password) < 8 THEN raise_application_error(-20002, 'Password length less than 8'); END IF; 2)修改utlpwdmg.sql里面最后面的部分配置: ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10 PASSWORD_REUSE_TIME 1800 PASSWORD_REUSE_MAX UNLIMITED FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1/1440 PASSWORD_VERIFY_FUNCTION verify_function; 为 ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION verify_function; 注:oracle10g口令不区分大小写,oracle11g口令区分大小写。 utlpwdmg.sql设置完毕 (3).conn / as sysdba登陆数据库后,执行 sql>@ ORACLEHOME/rdbms/admin/utlpwdmg.sql:IFlength(password)<4THENraiseapplicationerror(20002,Passwordlengthlessthan4);ENDIF;IFlength(password)<8THENraiseapplicationerror(20002,Passwordlengthlessthan8);ENDIF;2)utlpwdmg.sql:ALTERPROFILEDEFAULTLIMITPASSWORDLIFETIME60PASSWORDGRACETIME10PASSWORDREUSETIME1800PASSWORDREUSEMAXUNLIMITEDFAILEDLOGINATTEMPTS3PASSWORDLOCKTIME1/1440PASSWORDVERIFYFUNCTIONverifyfunction;ALTERPROFILEDEFAULTLIMITPASSWORDVERIFYFUNCTIONverifyfunction;:oracle10g,oracle11gutlpwdmg.sql(3).conn/assysdba,sql>@ORACLE_HOME/rdbms/admin/utlpwdmg.sql

以上为权重为7的问题处理方法

11、 系统core dump状态

检测方法
1、查看/etc/security/limits.conf文件中是否配置如下内容: * soft core 0 * hard core 0
2、查看/etc/profile文件中是否存在如下配置,存在则注释掉: ulimit -S -c 0 > /dev/null 2>&1 判定依据 设置* soft core、* hard core为0,且注释掉ulimit -S -c 0 > /dev/null 2>&1行则合规,否则不合规。

检测方法
查看/etc/profile文件中是否配置超时设置: #cat /etc/profile |grep -i TMOUT 判定依据 输出存在TMOUT,且其值=300秒则合规,否则不合规。
参考配置操作
1、执行备份 #cp -p /etc/profile /etc/profile_bak
2、在/etc/profile文件增加以下两行(如果存在则修改,否则手工添加): #vi /etc/profile TMOUT=300 #TMOUT按秒计算 export TMOUT
操作命令:
参考配置操作
1、编辑文件/etc/security/limits.conf(vi /etc/security/limits.conf),在文件末尾加入如下两行(存在则修改,不存在则新增): * soft core 0 * hard core 0
2、编辑文件/etc/profile(vi /etc/profile)注释掉如下行: #ulimit -S -c 0 > /dev/null 2>&1

操作命令:

echo -e “* soft core 0 \n* hard core 0” >> /etc/security/limits.conf

检查命令:

grep ‘core|ulimit’ /etc/security/limits.conf

12、 禁止存在bash安全漏洞

检测方法 执行如下命令查看设备是否存在bash安全漏洞。 #env -i X=’() { (a)=>’ bash -c ‘/dev/stdout echo vulnerable’ 2>/dev/null 判定依据 如果以上命令的输出为以下内容则不合规: vulnerable
参考操作步骤:
(1).目前官网已经提供了升级包bash-4.1.2-15.el6_5.1.x86_64.rpm,请自行下载升级.

操作命令:
rpm -Uvh bash-4.1.2-40.el6.x86_64.rpm
检查命令:

env -i X=’() { (a)=>’ bash -c ‘/dev/stdout echo vulnerable’ 2>/dev/null

tips: 由于服务器没有root权限,可以创建一个http服务器供所有服务器下载bash rpm包

wget http://10.213.30.130/bash-4.1.2-40.el6.x86_64.rpm

13、配置用户最小文件权限

检测方法
使用以下命令查看如下文件的权限设置: ls -lL /etc/passwd 2>/dev/null ls -lL /etc/group 2>/dev/null ls -lL /etc/services 2>/dev/null ls -lL /etc/shadow 2>/dev/null ls -lL /etc/xinetd.conf 2>/dev/null ls -lLd /etc/security 2>/dev/null 判定依据
1、/etc/passwd文件的权限小于等于644
2、/etc/shadow文件的权限小于等于400
3、/etc/group文件的权限小于等于644
4、/etc/services文件权限小于等于644
5、/etc/xinetd.conf文件权限小于等于600
6、/etc/security目录权限权限小于等于600 以上六者同时满足则合规,否则不合规。

检查权限命令:

ls -lL /etc/passwd |awk ‘{print $1" "$9}’

ls -lL /etc/group |awk ‘{print $1" "$9}’

ls -lL /etc/shadow |awk ‘{print $1" "$9}’

ls -lL /etc/xinetd.conf|awk ‘{print $1" "$9}’

ls -lLd /etc/security |awk ‘{print $1" "$9}’

配置操作

赋予用户相关账号文件最小权限

chmod 644 /etc/passwd

chmod 400 /etc/shadow

chmod 644 /etc/group

chmod 644 /etc/services

chmod 600 /etc/xinetd.conf

chmod 600 /etc/security

14、设置关键文件属性,设置message只能添加不能删除

检测方法
使用命令查看messages文件是否只可追加不可修改: #lsattr /var/log/messages 判定依据 以上两个文件的权限第六位为a则合规,否则不合规。
参考配置操作
1、更改该日子文件属性 chattr +a /var/log/messages

以上权重为5

以下权重为4-1

15、禁止ICMP重定向

检测方法
使用如下命令查看参数net.ipv4.conf.all.accept_redirects的值: #sysctl -n net.ipv4.conf.all.accept_redirects 判定条件 net.ipv4.conf.all.accept_redirects的值为0则合规,否则不合规。
参考配置操作
1、备份文件 #cp -p /etc/sysctl.conf /etc/sysctl.conf_bak
2、编辑文件 /etc/sysctl.conf,将net.ipv4.conf.all.accept_redirects的值改为0
3、使配置生效#sysctl -p
操作命令:
echo “net.ipv4.conf.all.accept_redirects = 0” >> /etc/sysctl.conf
sysctl -p
检查命令:
sysctl -n net.ipv4.conf.all.accept_redirects

16、 history历史记录条数

检测方法
编辑文件/etc/profile查看是否存在如下内容: HISTFILESIZE=5 HISTSIZE=5 判定依据 HISTFILESIZE和HISTSIZE的值小于等于5则合规,否则不合规。
参考配置操作
1、编辑文件/etc/profile,在文件中加入如下两行(存在则修改): HISTFILESIZE=5 HISTSIZE=5
2、执行以下命令让配置生效 #source /etc/profile

操作命令:
sed -i ‘/^HISTSIZE=1000/cHISTFILESIZE=5\nHISTSIZE=5’ /etc/profile

source /etc/profile

检查命令:
grep HIS /etc/profile

tomcat

17、HTTP加密协议-Linux

检测方法
使用HTTPS协议登录tomcat服务器管理页面。 判定依据 使用HTTPS协议可以成功tomcat服务器管理页面则合规,否则不合规。
参考配置操作
1、使用JDK自带的keytool工具生成一个证书: $JAVA_HOME/bin/keytool -genkey –alias tomcat –keyalg RSA -keystore /path/to/my/keystore 其中目录:/path/to/my需要用户自行创建。
2、修改tomcat安装目录下/conf/server.xml配置文件,更改为使用HTTPS方式,增加如下行: 其中keystorePass的值为生成keystore时输入的密码。
3、重新启动tomcat服务

18、tomcat禁用非法HTTP方法-Linux

检测方法
编辑tomcat配置文件/conf/web.xml文件,查看是否禁用PUT、DELETE等危险的HTTP 方法,查找org.apache.catalina.servlets.DefaultServlet的: readonly true 判定依据
1、readonly的值不存在
2、readonly的值等于true则合规,否则不合规。

参考配置操作
编辑web.xml文件,查看org.apache.catalina.servlets.DefaultServlet是否存在如下配置: readonly true 如果存在,则将false修改为true。readonly参数默认是true,即不允许delete和put操作


  1. [:space:] ↩︎

  2. [:space:] ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值