LINUX基线要求及加固方法

《YDT 2701-2014 电信网和互联网安全防护基线配置要求及检测要求 操作系统  LINUX篇》

一、账号

应按照不同用户分配不同账号

检查/etc/passwd是否有只有root用户,应用应使用其他用户账号部署


限制用户su到root

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

auth sufficient /lib/security/pam_rootok.so

auth required /lib/security/pam_wheel.so group=wheel

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


删除或锁定无关账号

使用删除或锁定的与工作无关的账号登录系统;
需要锁定的用户:listen,gdm,webservd,nobody,nobody4、noaccess。
vi /etc/passwd --修改需要锁定的用户登录方式为/bin/false


建立多账户组

cat /etc/passwd;cat /etc/group,检查是否有只有root用户组,应用应使用其他用户组部署

二、口令

密码创建要求是否配置

口令长度至少8 位,并包括数字、小写字母、大写字母和特殊符号4 类中至少3 类。
vi /etc/login.defs ,修改设置如下
PASS_MIN_LEN=8 #设定最小用户密码长度为8 位
vi /etc/pam.d/system-auth
password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=8 ucredit=-1   lcredit=-1   dcredit=-3  ocredit=-1 #设定密码策略


帐户口令的生存期不长于90天

1、参考配置操作
vi /etc/login.defs
PASS_MAX_DAYS=90 #设定口令的生存期不长于90 天

注:该设置对已存在的用户的口令不产生影响,新建用户,默认密码会强制90天过期。

三、授权

配置用户最小授权

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


配置文件与目录缺省权限控制

设置默认权限:
vi /etc/login.defs 在末尾增加umask 027,将缺省访问权限设
置为750


用户 FTP 访问安全是否配置

编辑 /etc/vsftpd/chroot_list 文件,将需要限制的用户名加入到文件中

四、远程登录

限制 root 用户远程登录

1、参考配置操作
修改/etc/ssh/sshd_config 文件,将
PermitRootLogin yes 改为PermitRootLogin no,重启sshd 服务。


使用ssh加密登录

应配置使用ssh服务进行远程登录,开启使用密码参数,并禁止使用telnet

五、补丁

系统是否安装最新补丁

uname -a检查系统版本,升级到最新版本

yum update 

注:升级应最好相关备份动作,以防升级后对部分应用的不兼容。

六、日志

启用 Syslog 日志审计

1、参考配置操作
#cat /etc/syslog.conf 查看是否有#authpriv.* /var/log/secure


配置日志文件安全权限

系统日志文件由 syslog 创立并且不可被其他用户修改;其它的系统日志文件不是全局可写
chmod 600 /var/log/messages
chmod 600 /var/log/boot.log
chmod 600 /var/log/cron
chmod 600 /var/log/secure
chmod 600 /var/log/maillog
chmod 600 /var/log/spooler
chmod 600 /var/log/mail
chmod 600 /var/log/cron


启用记录cron行为日志功能

1、参考配置操作
Vi /etc/syslog.conf
# Log cron stuff
cron.*


配置远程日志功能

1、参考配置操作
修改配置文件 vi /etc/syslog.conf,
加上这一行:
*.* @192.168.0.1
可以将"*.*"替换为你实际需要的日志信息。比如:kern.* ; mail.* 等等。
可以将此处 192.168.0.1 替换为实际的IP 或域名。

七、不必要的服务、端口

关闭不必要的服务

1、参考配置操作
查看所有开启的服务:
#ps –ef
#chkconfig --list
#cat /etc/xinetd.conf
在xinetd.conf中关闭不用的服务首先复制/etc/xinetd.conf。 #cp
/etc/xinetd.conf /etc/xinetd.conf.backup 然后用vi编辑器编辑
xinetd.conf文件,对于需要注释掉的服务在相应行开头标记"#"字
符,重启xinetd服务,即可。

八、系统Banner 设置

修改系统 banner

mv /etc/issue /etc/issue.bak
mv /etc/issue.net /etc/issue.net.bak

九、登陆超时时间设置

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

1、参考配置操作
通过修改账户中“TMOUT”
参数,可以实现此功能。TMOUT 按秒计算。编辑profile 文
件(vi /etc/profile),在“HISTFILESIZE=”后面加入下
面这行:
建议 TMOUT=300(可根据情况设定)

十、删除潜在危险文件

删除潜在危险文件

1、参考配置操作
执行:find / -name .netrc,检查系统中是否有.netrc 文件,
执行:find / -name .rhosts ,检查系统中是否有.rhosts 文件
如无应用,删除以上文件:

十一、FTP设置

禁止匿名 FTP

1、参考配置操作
以 vsftpd 为例:
打开vsftd.conf文件,修改下列行为:
anonymous_enable=NO


修改ftp banner信息

修改/etc/vsftpd/vsftpd.conf;banner /path/to/ftpbanner,在指定目录下创建包含ftp信息的banner文件


禁止 root 用户登录 FTP

1、参考配置操作
在 ftpaccess 文件中加入下列行
sed -i "s/root/\#root/g" /etc/vsftpd/ftpusers
sed -i "/\#root/a root"   /etc/vsftpd/ftpusers

十二、一键加固脚本

#!/bin/bash
####running for redhat 2701-2014##########################

####1、禁止su至root用户###################################
sed -i -r -e " /\#\%PAM/a auth\t\trequired\tpam_wheel.so group=wheel"  /etc/pam.d/su
sed -i -r -e " /\#\%PAM/a auth\t\tsufficient\tpam_rootok.so"  /etc/pam.d/su

####2、密码最小长度策略###################################
sed -i -r -e  "/[[:space:]]*PASS_MIN_LEN/d" /etc/login.defs 
echo -e "PASS_MIN_LEN\t8"  >> /etc/login.defs


####3、密码复杂度(加入限制root创建弱密码)################
echo "#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=8 ucredit=-1   lcredit=-1   dcredit=-3  ocredit=-1 enforce_for_root
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok  remember=5
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
" >/etc/pam.d/system-auth


####4、帐户口令的生存期不长于90天#####################
sed -i "s/PASS_MAX_DAYS/\#PASS_MAX_DAYS/g" /etc/login.defs
echo "PASS_MAX_DAYS   90" >>   /etc/login.defs



####5、配置用户最小授权##################################
chmod 644 /etc/passwd
chmod 400 /etc/shadow
chmod 644 /etc/group


####6、配置文件与目录缺省权限控制########################
sed -i -r -e "/umask|UMASK/d" /etc/login.defs 
echo -e "UMASK\t027" >> /etc/login.defs



####7、禁止root登录###################################
sed -i "s/PermitRootLogin yes/PermitRootLogin no/g"   /etc/ssh/sshd_config 
service sshd restart 



####8、日志审计及远程日志功能(替换日志转发地址)############
echo "*.*   @192.168.1.1" >> /etc/rsyslog.conf
echo "cron.*"  >> /etc/rsyslog.conf
echo "authpriv.*" /var/log/secure
systemctl restart rsyslog


####9、配置日志文件安全权限##############################
if [ -f /var/log/messages ]; then chmod 600 /var/log/messages; else  touch /var/log/messages; chmod 600 /var/log/messages; fi
if [ -f /var/log/secure ]; then chmod 600 /var/log/secure; else  touch /var/log/secure; chmod 600 /var/log/secure; fi
if [ -f /var/log/maillog ]; then chmod 600 /var/log/maillog; else  touch /var/log/maillog; chmod 600 /var/log/maillog; fi
if [ -f /var/log/cron ]; then chmod 600 /var/log/cron; else  touch /var/log/cron; chmod 600 /var/log/cron; fi
if [ -f /var/log/spooler ]; then chmod 600 /var/log/spooler; else  touch /var/log/spooler; chmod 600 /var/log/spooler; fi
if [ -f /var/log/boot.log ]; then chmod 600 /var/log/boot.log; else  touch /var/log/boot.log; chmod 600 /var/log/boot.log; fi


####10、关闭不必要的服务#################################

systemctl disable  firewalld.service 
systemctl disable  irqbalance.service
systemctl disable  NetworkManager.service  
systemctl disable  postfix.service  


####11、修改系统 banner#################################
mv /etc/issue /etc/issue.bak
mv /etc/issue.net /etc/issue.net.bak


####12、登录超时设置###################################
sed -i -r -e "/TMOUT/d" /etc/profile
echo "TMOUT=300" >> /etc/profile


####13、删除潜在危险文件###############################
find / -maxdepth 3 -name .netrc 2>/dev/null
find / -maxdepth 3 -name hosts.equiv 2>/dev/null
find / -maxdepth 3 -name .rhosts 2>/dev/null


####14、ftp相关设置###################################
sed -i "s/anonymous_enable/\#anonymous_enable/g" /etc/vsftpd/vsftpd.conf
sed -i "/\#anonymous_enable/a anonymous_enable=NO"  /etc/vsftpd/vsftpd.conf
sed -i "s/root/\#root/g" /etc/vsftpd/ftpusers
sed -i "/\#root/a root"   /etc/vsftpd/ftpusers

     There are many things that can not be broken!

     如果觉得本文对你有帮助,欢迎点赞、收藏、评论!

你可能感兴趣的:(安全运维,linux,运维,服务器)