前言

本文描写针对Centos7系列操作系统的安全加固,别的版本可作参考。

本文适用信息安全等级保护三级、系统基线核查整改等。

一、配置cron、at的安全性

echo  "root"  >>/etc/cron.allow
echo  "root"  >>/etc/at.allow

二. 检查用户umask设置

#以下设置umask 077
vi /etc/csh.cshrc   
vi /etc/csh.login
vi /etc/profile
vi /etc/bashrc


#以下设置umask 027
vi /etc/login.defs

三. 文件权限

chmod 750 /etc/login.defs
chmod 750 /etc/rc3.d
chmod 750 /etc/rc6.d
chmod 750 /etc/rc5.d/
chmod 750 /etc/rc1.d/
chmod 750 /etc/rc1.d/
chmod 600 /etc/security
chmod 750 /etc/rc4.d
chmod 644 /etc/passwd
chmod 644 /etc/group
chmod 750 /tmp
chmod 750 /etc/rc2.d/
chmod 644 /etc/services
chmod 600 /etc/xinetd.con
chmod 600 /etc/inetd.conf
chmod 600 /tmp/sangfor_mod_tmp
chmod 750 /etc/rc.d/init.d/
chmod 600 /etc/shadow
chmod 644 /etc/group
chmod 600 /etc/shadow
chmod 644 /etc/passwd
#检查日志文件是否非全局可写
chmod 775 /var/log/cron
chmod 775 /var/log/secure
chmod 775 /var/log/maillog
chmod 775 /var/log/localmessages
chmod 775 /var/log/messages
chmod 775 /var/log/spooler
chmod 775 /var/log/boot.log
chmod 775 /var/log/mail

四、SSH加固

先备份sshd_config文件

cp /etc/ssh/sshd_config /etc/ssh/sshd_config_back

将以下的#注释取消,修改成如下参数。

Protocol 2
MaxAuthTries 4
ClientAliveInterval 600
ClientAliveCountMax 2
LogLevel INFO
PermitEmptyPasswords no

增加ssh用户登录提示

touch /etc/ssh_banner
chown bin:bin /etc/ssh_banner
chmod 644 /etc/ssh_banner
echo " Authorized only. All activity will be monitored and reported " > /etc/ssh_banner
echo  "Banner /etc/ssh_banner"  >>/etc/ssh/sshd_config

重启sshd服务

systemctl restart sshd

五、限制远程登录ssh的ip地址

echo "sshd:10.0.0.1:allow" >> /etc/hosts.allow  &
echo "sshd:10.1.1.1:allow" >> /etc/hosts.allow   &
echo "sshd:192.168.2.23:allow" >> /etc/hosts.allow   &
echo "sshd:ALL" >> /etc/hosts.deny

六、检查/etc/aliases是否禁用不必要的别名

cp /etc/aliases  /etc/aliases_back
sed -i 's/games:/#&/' /etc/aliases
sed -i 's/ingres:/#&/' /etc/aliases
sed -i 's/system:/#&/' /etc/aliases
sed -i 's/uucp:/#&/' /etc/aliases
sed -i 's/manager:/#&/' /etc/aliases
sed -i 's/operator:/#&/' /etc/aliases
sed -i 's/decode:/#&/' /etc/aliases
sed -i 's/root:/#&/' /etc/aliases
/usr/bin/newaliases

七、密码策略

1、 检查账户认证失败次数限制

(1).备份配置文件:

cp -a /etc/pam.d/system-auth /etc/pam.d/system-auth.default

(2).编辑文件

vi /etc/pam.d/system-auth

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
#输入5次失败后锁定300秒
auth        required      pam_tally2.so deny=5 unlock_time=150 even_deny_root root_unlock_time=300
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_fprintd.so
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

#密码复杂度(英文小写1个+英文大写1个+字符1个+数字1个,最短8位数)
password    requisite     pam_cracklib.so try_first_pass retry=3 type= difok=1  minlen=8 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1
password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=

#记住4次历史密码末尾添加:remember=4
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=4
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

2、用户密码有效期

普通新建用户有效期修改:

1.备份配置文件:
cp -a /etc/login.defs /etc/login.defs.default
2.编辑配置文件并将相关参数改成如下(密码90天过期,密码最少适用6天,提前30天提醒修改密码)
vi /etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_DAYS 6
PASS_MIN_LEN 8
PASS_WARN_AGE 30

root密码有效期修改

#直接输入以下命令可修改
#密码90天过期,密码最少适用2天,提前15天提醒修改密码(注意别用-E参数,该参数是过期多少天后不能登录)
chage  -M  90 root
chage  -m  2  root
chage  -W  15  root

删除多余账户

查看当前用户列表

cat /etc/passwd

对不需要的用户使用userdel+用户名进行删除。

以下列出常见多余账户,(注意看清楚你的环境是否需要)。

userdel uucp
userdel nuucp
userdel lp
userdel adm
userdel sync
userdel shutdown
userdel halt
userdel news
userdel operator
userdel gopher
userdel bin
userdel mail
userdel games
userdel ftp
userdel vcsa
userdel abrt
userdel ntp
userdel saslauth
userdel tcpdump

八、系统超时退出时间

设置系统无操作后600秒自动退出,与历史命令增加时间显示。

vi /etc/profile
在文章末尾添加:
export TMOUT=600
export HISTTIMEFORMAT="%F %T `whoami` "

#立即生效
source /etc/profile 

九、系统安全审计

1、syslog日志外发到日志审计服务器。

日志审计服务器可自行搭建,也可以使用各厂商的日志审计设备(如:华为elog、天融信日志收集与分析系统等)。

#编辑文件
vi  /etc/rsyslog.conf
#在最下面添加(10.1.1.1为日志审计ip地址,514为端口号,是UDP协议的,防火墙注意放通)
*.* @10.1.1.1:514
#

#最后重启rsyslog服务
systemctl restart rsyslog

2、创建安全审计员账户

useradd audGenesis        //添加一个名为audGenesis的用户
passwd audGenesis         //修改密码
Changing password for user audGenesis.
New UNIX password:                              //在这里输入新密码
Retype new UNIX password:                  //再次输入新密码
passwd: all authentication tokens updated successfully

#创建安全审计用户组,将刚刚创建好的账户分配到该组
groupadd audit
usermod -g audit audGenesis

#分配日志文件权限
chmod 640 /var/log/messages
chmod 640 /var/log/secure
chmod 640 /var/log/audit/audit.log

#将/var/log/赋给audit
chown audGenesis:audit -R /var/log
chown root:root -R /var/log/audit

添加审计规则到auditctl

echo "-a exit,always -F arch=b64 -S umask -S chown -S chmod" >> /etc/audit/rules.d/audit.rules  &
echo "-a exit,always -F arch=b64 -S unlink -S rmdir" >> /etc/audit/rules.d/audit.rules  &
echo "-a exit,always -F arch=b64 -S setrlimit" >> /etc/audit/rules.d/audit.rules  &
echo "-a exit,always -F arch=b64 -S setuid -S setreuid" >> /etc/audit/rules.d/audit.rules  &
echo "-a exit,always -F arch=b64 -S setgid -S setregid" >> /etc/audit/rules.d/audit.rules  &
echo "-a exit,always -F arch=b64 -S sethostname -S setdomainname" >> /etc/audit/rules.d/audit.rules  &
echo "-a exit,always -F arch=b64 -S adjtimex -S settimeofday" >> /etc/audit/rules.d/audit.rules  &
echo "-a exit,always -F arch=b64 -S mount -S _sysctl" >> /etc/audit/rules.d/audit.rules  &
echo "" >> /etc/audit/rules.d/audit.rules  &
echo "-w /etc/group -p wa " >> /etc/audit/rules.d/audit.rules  &
echo "-w /etc/passwd -p wa" >> /etc/audit/rules.d/audit.rules  &
echo "-w /etc/shadow -p wa" >> /etc/audit/rules.d/audit.rules  &
echo "-w /etc/sudoers -p wa" >> /etc/audit/rules.d/audit.rules  &
echo "-w /etc/ssh/sshd_config" >> /etc/audit/rules.d/audit.rules  &
echo "-w /etc/bashrc -p wa " >> /etc/audit/rules.d/audit.rules  &
echo "-w /etc/profile -p wa" >> /etc/audit/rules.d/audit.rules  &
echo "-w /etc/profile.d/" >> /etc/audit/rules.d/audit.rules  &
echo "-w /etc/aliases -p wa" >> /etc/audit/rules.d/audit.rules  &
echo "-w /etc/sysctl.conf -p wa" >> /etc/audit/rules.d/audit.rules  &
echo "-w /var/log/lastlog" >> /etc/audit/rules.d/audit.rules  &

#查看审计规则
auditctl -l

#重启服务
service rsyslog restart
service auditd restart
或
systemctl restart rsyslog
systemctl restart auditd

如无法重启就kill掉auditd进程  
ps -ef | grep auditd #查询auditd服务进程号
kill -9 进程号

十、添加安全员、系统管理员账户

三级等保需要三权分立,所以必须有三个账户,

创建安全员账户

用于一般的业务管理,一般不加入su权限

useradd secChulix        //添加一个名为secChulix的用户
passwd secChulix         //修改密码
Changing password for user secChulix.
New UNIX password:                              //在这里输入新密码
Retype new UNIX password:                  //再次输入新密码
passwd: all authentication tokens updated successfully

创建系统管理员账户

由于root账户必须禁止远程登录,所以我们还要创建系统管理员账户。

useradd sysChulix        //添加一个名为sysChulix的用户
passwd secChulix         //修改密码
Changing password for user sysChulix.
New UNIX password:                              //在这里输入新密码
Retype new UNIX password:                  //再次输入新密码
passwd: all authentication tokens updated successfully

设置系统管理员账户具有su命令权限,允许其能够切换到root权限。

将系统管理员加入wheel组

usermod -G wheel sysChulix

设置只允许wheel组的帐号,具有使用su命令切换到root的权限

vi /etc/pam.d/su

找到#auth required pam_wheel.so use_uid

去掉行首的注释符 # 保存退出;

接着vi /etc/login.defs在最末添加SU_WHEEL_ONLY yes 保存退出即可。

`echo  "SU_WHEEL_ONLY yes" >> /etc/login .defs`

设置禁止使用root用户远程登录ssh

vim /etc/ssh/sshd_config
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
/etc/init.d/sshd restart

对重要文件加锁处理

#加锁文件:
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow


#如需修改用户信息等操作用的该文件权限时,临时解锁文件命令:
chattr -i /etc/passwd
chattr -i /etc/shadow
chattr -i /etc/group
chattr -i /etc/gshadow

以上是整理的Centos安全加固策略,如有不足欢迎大家补充。

下面是建议:

  • 针对三级等保的话还需要安装具有杀毒跟入侵防御功能的软件,一般linux版本的都是需要收费的,如(深信服EDR等)。
  • 日志保存6个月以上。如无法定时备份,需要定期手动备份,日志不可删除。
  • 操作系统的防火墙设置需要明确放通的端口,针对ssh和sql这种服务应该明细访问该端口的ip地址,如只能允许堡垒机访问ssh服务。
最后修改:2020 年 11 月 21 日 04 : 04 PM
如果觉得我的文章对你有用,请随意赞赏