centos7安全防护配置
前言
这段时间公司的服务器在做等保验证,对服务器的做了一些安全防护配置,留此记录。
操作系统版本:centos 7.6
密码有效周期
- 相关文件:/etc/login.defs
| 参数 | 说明 | 默认值 | 修改值 |
|---|---|---|---|
| PASS_MAX_DAYS | 密码生存周期 | 9999 | 90 |
| PASS_MIN_DAYS | 密码更改最小间隔天数 | 0 | 30 |
| PASS_MIN_LEN | 密码最小长度 | 5 | 8 |
| PASS_WARN_AGE | 密码失效前警告天数 | 7 | 30 |
密码复杂度策略
- 相关文件:/etc/security/pwquality.conf
| 参数 | 说明 | 默认值 | 修改值 |
|---|---|---|---|
| minlen | 密码最小长度 | 默认注释 | 8 |
| dcredit | 密码中的数字个数,小于0则表示至少n个 | 默认注释 | -1 |
| ucredit | 密码中大写字母个数,小于0则表示至少n个 | 默认注释 | -1 |
| lcredit | 密码中小写字母个数,小于0则表示至少n个 | 默认注释 | -1 |
| ocredit | 密码中特殊字符个数,小于0则表示至少n个 | 默认注释 | -1 |
密码重复使用次数限制
- 相关文件:
/etc/pam.d/system-auth,找到password sufficient,并替换成以下内容。密码重复使用次数限制不超过5次。主要就是追加remember=5
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5
命令行界面超时退出
- 相关文件:
/etc/profile,添加如下配置,10分钟内无交互则超时退出
export TMOUT=600
# readonly设置后无法临时修改TMOUT,需要修改profile后才行
readonly TMOUT
telnet相关
- 禁止telnet远程登录。编辑/etc/services ,找到telnet并注释
- 关闭telnet
systemctl stop telnet && systemctl disable telnet
禁止root用户远程登录
- 相关文件:
/etc/ssh/sshd_config,将PermitRootLogin的值设置为no
PermitRootLogin no
查看是否有空密码的用户
- 有则手动修改密码
cat /etc/shadow | awk -F ':' '{if($2==0) print $0}'
用户认证失败次数限制
- ssh方式认证失败次数限制。相关文件:/etc/pam.d/sshd。参考如下配置,在初始配置基础上加了第2行和第8行
#%PAM-1.0
auth pam_tally2.so deny=5 unlock_time=600 no_lock_time
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
# Used with polkit to reauthorize users in remote sessions
-auth optional pam_reauthorize.so prepare
account required pam_tally2.so
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
# Used with polkit to reauthorize users in remote sessions
-session optional pam_reauthorize.so prepare
- 用户认证次数限制。相关文件:
/etc/pam.d/login。将如下内容放在#%PAM-1.0的下一行,也就是放在第二行
auth required pam_tally2.so deny=5 ulock_time=600 even_deny_root root_unlock_time=600
禁止wheel组之外的用户su为root
- 相关文件:
/etc/pam.d/su,将以下内容放在第二行和第三行。这表明只有wheel组的成员可以使用su命令成为root用户。 可以把用户添加到wheel组,以使它可以使用su命令成为root用户。 添加方法为:usermod –aG wheel username
auth sufficient pam_rootok.so
auth required pam_wheel.so group=wheel
是否设置除root之外UID为0的用户
- 相关文件:
/etc/passwd
cat /etc/passwd | awk -F ':' '{if($3==0) print $0}'
是否允许匿名用户登录FTP
使用命令:ps -ef|grep vsftpd 查看vsftp进程是否存在,并查看vsftpd.conf的文件目录
cat vsftpd.conf|grep "anonymous_enable"
/etc/passwd文件内不包含ftp用户已禁用且vsftpd.conf文件中包含anonymous_enable=NO语句。
非FTP服务器建议直接停用vsftpd
系统文件权限
chmod 644 /etc/group
chmod 000 /etc/shadow
chmod 644 /etc/passwd
# 用户设置完后再设置文件的隐藏权限
# 集合等保的要求及运维难度,shadow文件从等保的角度来说的话设置好权限就行,不需要加锁
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
chattr +i /etc/passwd
chmod 600 /boot/grub2/grub.cfg
chmod 600 /etc/security
chmod 750 /tmp
chmod 750 /etc/rc.d/init.d/
chmod 750 /etc/rc0.d
chmod 750 /etc/rc1.d
chmod 750 /etc/rc2.d
chmod 750 /etc/rc3.d
chmod 750 /etc/rc4.d
chmod 750 /etc/rc5.d
chmod 750 /etc/rc6.d
# 检查日志文件是否非全局可写
# 日志文件的权限设置为非全局可写,即限制相关用户访问日志文件的权限
chmod 775 /var/log/maillog
chmod 755 /var/log/messages
# chmod 775 /var/log/localmessages
chmod 775 /var/log/spooler
chmod 775 /var/log/boot.log
chmod 775 /var/log/mail
chmod 775 /var/log/cron
chmod 775 /var/log/secure
可执行文件的SUID权限
检查/usr/bin目录下有SUID权限的可执行文件,视情况剔除SUID权限。
find /usr/bin -type f \( -perm -04000 -o -perm -02000 \) -exec ls -lg {} \;
用户目录缺省访问权限设置
- 相关文件:
/etc/login.defs,将UMASK的值从077改为027
日志文件权限设置
- 检查syslog进程,
ps -ef | grep syslog - 根据syslog的不同执行指令
# syslogd
LOGDIR=`cat /etc/syslog.conf 2>/dev/null | grep -v "^[[:space:]]*#"|sed '/^#/d' |sed '/^$/d' |awk '(($2!~/@/) && ($2!~/*/) && ($2!~/-/)) {print $2}';`;ls -l $LOGDIR 2>/etc/null | grep "^-";
# syslog-ng
LOGDIR=`cat /etc/syslog-ng/syslog-ng.conf 2>/dev/null | grep -v "^[[:space:]]*#"|grep "^destination"|grep file|cut -d\" -f2`;ls -l $LOGDIR 2>/dev/null | grep "^-";
# rsyslogd
LOGDIR=`cat /etc/rsyslog.conf | grep -v "^[[:space:]]*#" |sed '/^#/d' |sed '/^$/d' |awk '(($2!~/@/) && ($2!~/*/) && ($2!~/-/)) {print $2}'`;ls -l $LOGDIR 2>/etc/null | grep "^-";
权限值没有限定,只要满足同组用户、其他用户不出现r-x,rw-,rwx即可。640或600
安全事件日志配置
- 查看配置文件
# 查询运行中的日志服务
ps -ef|grep syslog
# syslog-ng服务使用以下命令查看配置文件:
cat /etc/syslog-ng/syslog-ng.conf
# syslog服务使用以下命令查看配置文件:
cat /etc/syslog.conf
# rsyslog服务使用以下命令查看配置文件:
cat /etc/rsyslog.conf
- rsyslog日志服务配置安全事件日志。编辑/etc/rsyslog.conf
# 其中/var/adm/messages为日志文件
# 如果该文件不存在,则创建该文件
# touch /var/adm/messages
# chmod 666 /var/adm/messages
# 添加以下配置
*.err;kern.debug;daemon.notice /var/adm/messages
- 重启日志服务
systemctl restart rsyslog
设置ssh登录警告Banner
- 登录前banner警告
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
# 编辑 /etc/ssh/sshd_config , 添加如下行
Banner /etc/ssh_banner
# 重启sshd
systemctl restart sshd
- 登录后警告
echo "Login success. All activity will be monitored and reported " > /etc/motd
历史命令设置
编辑/etc/profile,修改如下变量,无则添加
HISTSIZE=5
HISTFILESIZE=5
删除或锁定用户
需要锁定的用户:adm, lp, 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。
# 删除用户
userdel username
# 锁定用户
usermod -L username
# 解锁用户
usermod -U username
authconfig使用
# 密码复杂度
authconfig --enablereqdigit --update
authconfig --enablereqlower --update
authconfig --enablerequpper --update
authconfig --enablereqother --update
centos7安全防护配置的更多相关文章
- [原创]Centos7 从零配置Nginx+PHP+MySql
序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...
- Centos7下安装配置Redsocks
Redsocks是一个开源的网络程序,代码依赖开源的libevent网络库.Redsocks允许你将所有TCP连接重定向到SOCKS或HTTPS代理,比如Shadowsocks(Centos7下安装配 ...
- Centos7安装并配置mysql5.6完美教程
Centos7安装并配置mysql5.6完美教程 Centos7将默认数据库mysql替换成了Mariadb,对于我们这些还想使用mysql的开发人员来说并不是一个好消息.然而,网上关于Linux安装 ...
- Hadoop(一)Centos7虚拟机网络配置
Centos7虚拟机网络配置(桥接模式) 一 VirtualBox提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式). 1 桥接模式(br ...
- Centos7中hadoop配置
Centos7中hadoop配置 1.下载centos7安装教程: http://jingyan.baidu.com/article/a3aad71aa180e7b1fa009676.html (注意 ...
- [Centos7]无法访问配置好的nginx
Centos7无法访问配置好的nginx 临时生效 # 重启虚拟机,将失效 iptables -I INPUT -p TCP --dport 80 -j ACCEPT 永久有效 # 在防火墙中开放80 ...
- VirtualBox安装CentOS7的网络配置
VirtualBox安装CentOS7的网络配置 这几天在本机VirtualBox安装CentOS时遇到了网络的坑... VirtualBox的下载地址:https://www.virtualbox. ...
- 安装centos7启动项配置
安装centos7启动项配置 1.将 setparams 'Install CentOS Linux 7' linuxefi/images/pxeboot/vmlinuz inst.stage2=hd ...
- 基于CentOS7系统一键配置Aria2 实现服务器离线下载工具
我们有些网友购买的海外VPS主机并不是用来做网站的,而是用来作为下载资源工具使用的.确实用这样的工具搭建之后是比本地下载速度快,因为有些资源.软件等是海外资源,而且挂载在服务器上不占用本地的资源.在这 ...
- CentOS7安装及配置vsftpd (FTP服务器)
CentOS7安装及配置vsftpd (FTP服务器) 1.安装vsftpd 1 yum -y install vsftpd 2.设置开机启动 1 systemctl enable vsftpd 3. ...
随机推荐
- MySQL中的Join 的算法(NLJ、BNL、BKA)
本文已收录至Github,推荐阅读 Java随想录 微信公众号:Java随想录 目录 摘要 什么是Join Index Nested-Loop Join Block Nested-Loop Join ...
- sh: vue-cli-service: command not found
mac环境下运行vue项目报错sh: vue-cli-service: command not found 解决方法:cd到项目目录下,执行命令sudo rm -rf node_modules pac ...
- 2022-03-25:给定一个长度为 N 的字符串 S,由字符‘a‘和‘b‘组成,空隙由 ‘?‘ 表示。 你的任务是用a字符或b字符替换每个间隙, 替换完成后想让连续出现同一种字符的最长子串尽可能短。
2022-03-25:给定一个长度为 N 的字符串 S,由字符'a'和'b'组成,空隙由 '?' 表示. 你的任务是用a字符或b字符替换每个间隙, 替换完成后想让连续出现同一种字符的最长子串尽可能短. ...
- 2022-02-28:k8s安装adminer,yaml如何写?
2022-02-28:k8s安装adminer,yaml如何写? 答案2022-02-28: yaml如下: apiVersion: apps/v1 kind: Deployment metadata ...
- 2022-01-06:N个结点之间,表世界存在双向通行的道路,里世界存在双向通行的传送门. 若走表世界的道路,花费一分钟. 若走里世界的传送门,不花费时间,但是接下来一分钟不能走传送门. 输入: T为
2022-01-06:N个结点之间,表世界存在双向通行的道路,里世界存在双向通行的传送门. 若走表世界的道路,花费一分钟. 若走里世界的传送门,不花费时间,但是接下来一分钟不能走传送门. 输入: T为 ...
- Maven安装、阿里云镜像配置、Idea中创建Maven项目、Tomcat的部署
我为什么要学这个技术? 为了更快创建web开发项目和jar包 在javaweb开发中,需要使用大量的jar包,我们手动去导入: 如何能够让一个东西自动帮我导入和配置这个jar包 因此,Maven诞生了 ...
- JS 数组常用操作全集
文章目录 1.push()方法 2.unshift()方法 3.pop() 方法 4.shift() 方法 5.filter() 方法 6.join()方法 7. indexOf() 方法 8.rev ...
- ENVI5.3 安装教程,新手入门(超详细)附安装包和常见问题
ENVI是一个完整的遥感图像处理平台,广泛应用于科研.环境保护.气象.农业.林业.地球科学.遥感工程.水利.海洋等领域.目前ENVI已成为遥感影像处理的必备软件,包含辐射定标.大气校正.镶嵌裁剪.分类 ...
- 使用numpy计算分子内坐标
技术背景 当我们打开一个用于表示分子构象的xyz文件或者pdb文件,很容易可以理解这种基于笛卡尔坐标的空间表征方法.但是除了笛卡尔坐标表示方法之外,其实也有很多其他的方法用于粗粒化或者其他目的的表征方 ...
- 不同大小的缓冲区对 MD5 计算速度的影响
最*需要在计算大文件的 MD5 值时显示进度,于是我写了如下的代码: public long Length {get; private set; } public long Position { ge ...