当前位置:首页 > 系统 > CentOS7等保问题处理

CentOS7等保问题处理

系统9个月前 (08-30)

CentOS7等保问题处理


密码复杂度策略

#修改为至少包含8个字符
cp /etc/security/pwquality.conf /etc/security/pwquality.conf.bak
cp /etc/security/limits.conf /etc/security/limits.conf.bak
cp /etc/pam.d/su /etc/pam.d/su.bak
sed -i '/minlen/'d   /etc/security/pwquality.conf
sed -i '/dcredit/'d  /etc/security/pwquality.conf
sed -i '/ucredit/'d  /etc/security/pwquality.conf
sed -i '/lcredit/'d  /etc/security/pwquality.conf
sed -i '/ocredit/'d  /etc/security/pwquality.conf
sed -i '$aminlen = 8'  /etc/security/pwquality.conf
sed -i '$adcredit = -1' /etc/security/pwquality.conf
sed -i '$aucredit = -1 ' /etc/security/pwquality.conf
sed -i '$alcredit = -1 ' /etc/security/pwquality.conf
sed -i '$aocredit = -1' /etc/security/pwquality.conf
sed -i '$a * soft  core 0'    /etc/security/limits.conf
sed -i '$a * hard  core 0'    /etc/security/limits.conf
sed -i '$aauth      sufficient         pam_rootok.so' /etc/pam.d/su
sed -i '$aauth      required           pam_wheel.so use_uid' /etc/pam.d/su


口令定期更换策略

#修改密码的最大有效期90天,非10天后可修改,密码最小长度8位,密码失效前7天在用户登录时通知用户修改密码
cat /etc/login.defs
cp /etc/login.defs /etc/login.defs.bak
sed -i '/PASS_MAX_DAYS/'d /etc/login.defs
sed -i '/PASS_MIN_DAYS/'d  /etc/login.defs
sed -i '/PASS_MIN_LEN/'d   /etc/login.defs
sed -i '/PASS_WARN_AGE/'d   /etc/login.defs
sed -i '$aPASS_MAX_DAYS   90' /etc/login.defs
sed -i '$aPASS_MIN_DAYS   10'  /etc/login.defs
sed -i '$aPASS_MIN_LEN    8'    /etc/login.defs
sed -i '$aPASS_WARN_AGE   7'   /etc/login.defs


登录连接超时策略

#待机180秒后强制登出
cp /etc/profile /etc/profile.bak
sed -i '/TMOUT/'d /etc/profile
sed -i '$aexport TMOUT=180' /etc/profile
source /etc/profile
sed -i '$aumask 027' /etc/profile
source /etc/profile


登陆失败处理策略

cp /etc/pam.d/passwd /etc/pam.d/passwd.bak
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
cat > /etc/pam.d/system-auth << EOF
auth        required      pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=300
auth        required      pam_env.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

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
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
EOF

cat > /etc/pam.d/password-auth << EOF
auth        required      pam_env.so
auth        required      pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=300
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_tally2.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_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
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
EOF

cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
sed -i.bak '2i\auth required pam_tally2.so onerr=fail deny=3 unlock_time=300 even_deny_root root_unlock_time=300' /etc/pam.d/sshd


用户分配账户和权限

#新增操作账户voscn
adduser voscn
echo "V0scn$#@" | passwd --stdin voscn
usermod -G wheel voscn
cp /etc/sudoers /etc/sudoers.bak
echo "voscn ALL=(ALL:ALL)  NOPASSWD:ALL" >> /etc/sudoers
#解锁pam_tally2 --user test --reset


删除多余用户

egrep "^(adm|lp|sync|halt|news|nfsnobody|mail|uucp|operator|games|gopher|ftp|nobody|nobody4|noaccess|listen|webservd|rpm|dbus|avahi|mailnull|smmsp|nscd|vcsa|rpc|rpcuser|nfs|sshd|pcap|ntp|haldaemon|distcache|apache|webalizer|squid|xfs|gdm|sabayon|named):" /etc/passwd 2>/dev/null|awk -F':' '($7 != "/bin/false" && $7 != "/sbin/nologin") {print $1":"$7}'

userdel sync
userdel halt


设置banner

cp -p /etc/motd /etc/motd.bak
cp -p /etc/issue /etc/issue.bak
cp -p /etc/issue.net /etc/issue.net.bak
echo "Login success. All activity will be monitored and reported" > /etc/motd 
echo "Authorized users only. All activity may be monitored and reported" > /etc/issue
echo "Authorized users only. All activity may be monitored and reported" > /etc/issue.net
echo " Authorized only. All activity will be monitored and reported " > /etc/ssh_banner
chown bin:bin /etc/ssh_banner
chmod 644 /etc/ssh_banner
sed -i -c '/^Banner.*/d' /etc/ssh/sshd_config
echo "Banner /etc/ssh_banner" >> /etc/ssh/sshd_config
systemctl restart sshd


启用安全审计功能

systemctl status rsyslog
systemctl status auditd
ps -ef |grep rsyslog
ps -ef |grep auditd
cp /etc/rsyslog.conf /etc/rsyslog.conf.bak
cp /etc/audit/rules.d/audit.rules /etc/audit/rules.d/audit.rules.bak

cat > /etc/audit/rules.d/audit.rules << EOF
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change
-a always,exit -F arch=b32 -S adjtimex -S settimeofday -S stime -k timechange
-a always,exit -F arch=b64 -S clock_settime -k time-change
-a always,exit -F arch=b32 -S clock_settime -k time-change
-w /etc/localtime -p wa -k time-change
-w /etc/group -p wa -k identity
-w /etc/passwd -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/security/opasswd -p wa -k identity
-a always,exit -F arch=b64 -S sethostname -S setdomainname -k system-locale
-a always,exit -F arch=b32 -S sethostname -S setdomainname -k system-locale
-w /etc/issue -p wa -k system-locale
-w /etc/issue.net -p wa -k system-locale
-w /etc/hosts -p wa -k system-locale
-w /etc/sysconfig/network -p wa -k system-locale
-w /etc/sysconfig/network-scripts/ -p wa -k system-locale
-w /var/log/lastlog -p wa -k logins
-w /var/run/faillock/ -p wa -k logins
-w /var/run/utmp -p wa -k session
-w /var/log/wtmp -p wa -k logins
-w /var/log/btmp -p wa -k logins
-a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts
-a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=4294967295 -k mount
-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete
-a always,exit -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete
-w /etc/sudoers -p wa -k scope
-w /etc/sudoers.d/ -p wa -k scope
-w /sbin/insmod -p x -k modules
-w /sbin/rmmod -p x -k modules
-w /sbin/modprobe -p x -k modules
-a always,exit -F arch=b64 -S init_module -S delete_module -k modules
EOF

useradd audit
usermod -G audit audit
chown audit:audit -R /var/log
chown root:root -R /var/log/audit


关闭多余服务

systemctl stop sendmail && systemctl disable sendmail


限制远程登陆范围

cp /etc/hosts.allow /etc/hosts.allow.bak
cp /etc/hosts.deny /etc/hosts.deny.bak
echo sshd:192.168.1.*:allow >> /etc/hosts.allow
echo sshd:10.10.1.*:allow >> /etc/hosts.allow
echo all:all >> /etc/hosts.deny


补丁更新

yum update --security


本站所有文章均可随意转载,转载时请保留原文链接及作者。

本文链接:https://www.vos.cn/os/528.html

相关文章

Fedora Workstation 23安装提示Failed to load ldlinux.c32错误

Fedora Workstation 23安装提示Failed to load ldlinux.c32错误

 以前使用u盘安装系统,选择刻录软件均为UltraISO,很是好用,但是今天刻录安装fedora23的时候,一直提示Boot failed:please change&n...

Centos安装lrzsz通过Zmodem协议传输数据

Centos安装lrzsz通过Zmodem协议传输数据

主要还是懒,不想打开ssh之类的客户端进行windows与linux之间文件交互,想起来了使用modem协议传。系统是centos,客户端软件xshell,直接yum安装yum instal...

Oracle主备容灾方案

Oracle主备容灾方案

【实验需求】生产中心有一台Oracle服务器安装于Redhat Linux上,灾备中心有一台对应的容灾Oracle服务器,两台服务器的数据库空间来自各自所连接的T系列阵列LUN,阵列同Oracle服务...

CentOS7安装cacti

CentOS7安装cacti

网上有一种叫cactiez的集成版本,rrd组件一直有问题,版本也太老,于是就想着重新搭建一个环境试试配置环境关闭Selinux vi /etc/selinux/config 将SELI...

利用LVM特性对EVE-NG硬盘分区扩容

利用LVM特性对EVE-NG硬盘分区扩容

下载的EVE-NG镜像中,存放模拟器镜像的分区太小了,上传几个cisco和juniper的模拟器就快满了,所以需要使用lvm特性对ubuntu server的硬盘分区进行扩容,首先先将eve-ng虚拟...

CentOS7安装PureFTP和vsFTP使用加密连接

CentOS7安装PureFTP和vsFTP使用加密连接

LNMP环境搭建好后,日后需要管理webroot路径下的文件,采用加密方式的FTP方式比较简单也安全安装PureFTPyum install pure-ftpd配置PureFTPv...