【安全等保】Linux服务器基线安全--⼲货业务标签:医院信息集成平台、互联⽹医院、互联⽹护理、慢性病随访
技术标签:ESB、ETL+CDC、NLP、FaaS、SaaS、Hadoop、MicroService
技术:
加:wonter 发送:技术Q
医疗:
加:wonter 发送:医疗Q
关注查看
⼀、系统安全基线
1.1 系统登录弱⼝令
**描述**
若系统使⽤弱⼝令,存在极⼤的被恶意猜解⼊侵风险,需⽴即修复。
**加固建议**
执⾏命令 `passwd [<user>]`,然后根据提⽰输⼊新⼝令完成修改,其中 `<user>` 为⽤户名,如果不输⼊则修改的是当前⽤户的⼝令。⼝令应符合复杂性要求:
1、长度8位以上
2、包含以下四类字符中的三类字符:
英⽂⼤写字母(A 到 Z)
英⽂⼩写字母(a 到 z)
10 个基本数字(0 到 9)
⾮字母字符(例如 !、$、#、%、@、^、&)
3、避免使⽤已公开的弱⼝令,如:abcd.1234 、admin@123等
1.2 确保root是唯⼀的UID为0的帐户
**描述**
除`root`以外其他`UID`为`0`的⽤户都应该删除,或者为其分配新的`UID`
**加固建议**
除`root`以外其他`UID`为`0`的⽤户,都应该删除,或者为其分配新的`UID`
查看命令:
cat/etc/passwd| awk-F: '($3 == 0) { print $1 }'|grep-v'^root$'
1.3 开启地址空间布局随机化
**描述**
它将进程的内存空间地址随机化来增⼤⼊侵者预测⽬的地址难度,从⽽降低进程被成功⼊侵的风险
**加固建议**
在`/f`或`/etc/sysctl.d/*`⽂件中设置以下参数:
kernel.randomize_va_space = 2
执⾏命令:sysctl -w kernel.randomize_va_space=2
1.4 设置⽤户权限配置⽂件的权限
**描述**
设置⽤户权限配置⽂件的权限
**加固建议**
执⾏以下5条命令
chown root:root /etc/passwd/etc/shadow/etc/group/etc/gshadow
chmod0644 /etc/group
chmod0644 /etc/passwd
chmod0400 /etc/shadow
chmod0400 /etc/gshadow
1.5 访问控制配置⽂件的权限设置
**描述**
访问控制配置⽂件的权限设置
**加固建议**
运⾏以下4条命令:
chown root:root /etc/hosts.allow
chown root:root /etc/hosts.deny
chmod644 /etc/hosts.deny
chmod644 /etc/hosts.allow
如果您是`redhat8`⽤户
chown root:root /etc/ssh/sshd_config
chmod600 /etc/ssh/sshd_config
1.6 确保SSH LogLevel设置为INFO
**描述**
确保`SSH LogLevel`设置为`INFO`,记录登录和注销活动
**加固建议**
编辑 `/etc/ssh/sshd_config` ⽂件以按如下⽅式设置参数(取消注释):
LogLevel INFO
1.7 确保rsyslog服务已启⽤安全审计
**描述**
确保`rsyslog`服务已启⽤,记录⽇志⽤于审计
**加固建议**
运⾏以下命令启⽤`rsyslog`服务:
systemctl enable rsyslog
systemctl start rsyslog
1.8 确保SSH MaxAuthTries设置为3到6之间
**描述**
设置较低的`Max AuthTrimes`参数将降低`SSH`服务器被暴⼒攻击成功的风险。
**加固建议**
在`/etc/ssh/sshd_config`中取消`MaxAuthTries`注释符号`#`,设置最⼤密码尝试失败次数`3-6`,建议为`4`:MaxAuthTries 4
1.9 确保密码到期警告天数为7或更多
**描述**
确保密码到期警告天数为`7`或更多
**加固建议**
在 `/etc/login.defs` 中将 `PASS_WARN_AGE` 参数设置为`7-14`之间,建议为`7`:
PASS_WARN_AGE 7
同时执⾏命令使`root`⽤户设置⽣效:
chage --warndays 7 root
1.10 禁⽌SSH空密码⽤户登录 SSH服务配置
**描述**
禁⽌`SSH`空密码⽤户登录
**加固建议**
编辑⽂件`/etc/ssh/sshd_config`,将`PermitEmptyPasswords`配置为`no`:
PermitEmptyPasswords no
1.11 检查系统空密码账户
**描述**
检查系统空密码账户
**加固建议**
为⽤户设置⼀个⾮空密码,或者执⾏`passwd -l <username>`锁定⽤户
1.12 检查密码重⽤是否受限制
强制⽤户不重⽤最近使⽤的密码,降低密码猜测攻击风险
**加固建议**
在`/etc/pam.d/password-auth`和`/etc/pam.d/system-auth`中`password sufficient pam_unix.so` 这⾏的末尾配置`remember`参数为`5-24`之间,原来的内容不⽤更改,只在末尾加了`remember=5`。
1.13 密码复杂度检查
**描述**
检查密码长度和密码是否使⽤多种字符类型
**加固建议**
编辑`/etc/f`,把`minlen`(密码最⼩长度)设置为`8-32`位,把`minclass`(⾄少包含⼩写字母、⼤写字母、数字、特殊字符等`4`类字符中等`3`类或`4`类)设置为`3`或`4`。如:
minlen=10
minclass=3
1.14 设置SSH空闲超时退出时间
**描述**
设置`SSH`空闲超时退出时间,可降低未授权⽤户访问其他⽤户`ssh`会话的风险
**加固建议**
编辑`/etc/ssh/sshd_config`,将`ClientAliveInterval` 设置为`300`到`900`,即`5-15`分钟,将`ClientAliveCountMax`设置为`0-3`之间。
ClientAliveInterval 600
ClientAliveCountMax 2nginx 配置文件
1.15 设置密码修改最⼩间隔时间
**描述**
设置密码修改最⼩间隔时间,限制密码更改过于频繁
**加固建议**
在 `/etc/login.defs` 中将 `PASS_MIN_DAYS` 参数设置为`7-14`之间,建议为`7`:
PASS_MIN_DAYS 7
需同时执⾏命令为root⽤户设置:
chage --mindays 7 root
1.16 设置密码失效时间
**描述**
设置密码失效时间,强制定期修改密码,减少密码被泄漏和猜测风险,使⽤⾮密码登陆⽅式(如密钥对)请忽略此项。
**加固建议**
使⽤⾮密码登陆⽅式如密钥对,请忽略此项。
在 `/etc/login.defs` 中将 `PASS_MAX_DAYS` 参数设置为 `60-180`之间,如:
PASS_MAX_DAYS 90
需同时执⾏命令设置root密码失效时间:
chage --maxdays 90 root
⼆、Nginx安全基线
2.1 确保已禁⽤⾃动索引模块
**描述**
⾃动索引模块处理以斜杠字符结尾的请求。此功能启⽤⽬录列表,这在攻击者侦察中可能很有⽤,因此应将其禁⽤。
**加固建议**
执⾏以下操作以禁⽤⾃动索引模块:
搜索 NGINX 配置⽂件( f 和任何包含的配置⽂件)以查 `autoindex` 指令。
egrep-i '^\s*autoindex\s+'<main_config_path> egrep-i '^\s*autoindex\s+'<sub_config_path>
在 `location` 下删除或者修改为 `autoindex off;`
2.2 针对Nginx SSL协议进⾏安全加固
Nginx SSL 协议的加密策略进⾏加固
**加固建议**
Nginx SSL 协议采⽤ TLSv1.2:
打开 `f` 配置⽂件(或主配置⽂件中的 `inlude` ⽂件);
server {
...
ssl_protocols TLSv1.2;
...
}
**备注**:配置此项请确认 nginx ⽀持 `OpenSSL`,运⾏ `nginx -V` 如果返回中包含 `built with OpenSSL` 则表⽰⽀持 `OpenSSL`。如不⽀持,可能需要增加配置 `ssl_protocols TLSv1 TLSv1.1 TLSv1.2;`
2.3 确保NGINX配置⽂件权限为644
**描述**
把控配置⽂件权限以抵御外来攻击
**加固建议**
修改 Nginx 配置⽂件权限:执⾏ `chmod 644 <conf_path>` 来限制 Nginx 配置⽂件的权限;
(`<conf_path>`为配置⽂件的路径,如默认 `/安装⽬录/f` 或者 `/etc/f`,或⽤户⾃定义,请⾃⾏查)
2.4 Nginx的WEB访问⽇志记录状态
**描述**
应为每个核⼼站点启⽤ `access_log` 指令。默认情况下启⽤。
**加固建议**
开启 Nginx 的 WEB 访问⽇志记录:
1、打开 `f` 配置⽂件,含主配置⽂件中 include 项包含的⼦配置⽂件;
2、在http下配置 `access_log` 项 `access_log logs/host.access.log main;`
3、并在主配置⽂件,及主配置⽂件下的include⽂件中删除 `off` 项或配置为适当值
2.5 隐藏Nginx服务的Banner
**描述**
Nginx 服务的 Banner 隐藏状态
**加固建议**
Nginx 后端服务指定的 Header 隐藏状态隐藏 Nginx 服务 Banner 的状态:
1、打开 `f` 配置⽂件;
2、在 `server` 栏⽬下,配置 `server_tokens` 项 `server_tokens off;` 如出现多项不⽀持,执⾏ `ln <conf_path> /etc/f`
2.6 Nginx后端服务指定的Header隐藏状态
**描述**
隐藏 Nginx 后端服务 `X-Powered-By` 头
**加固建议**
隐藏 Nginx 后端服务指定Header的状态:
1、打开 `f` 配置⽂件;
2、在 http 下配置 `proxy_hide_header` 项;
增加或修改为 `proxy_hide_header X-Powered-By;` `proxy_hide_header Server;`
2.7 检查Nginx进程启动账号
**描述**
Nginx 进程启动账号状态,降低被攻击概率
**加固建议**
修改 Nginx 进程启动账号:
1、打开 `f` 配置⽂件;
2、查看配置⽂件的 `user` 配置项,确认是⾮ `root` 启动的;
3、如果是 `root` 启动,修改成 `nobody` 或者 `nginx` 账号;
备注:4、修改完配置⽂件之后需要重新启动 Nginx。
2.8 检查是否配置Nginx账号锁定策略
**描述**
1.执⾏系统命令 `passwd -S nginx` 来查看锁定状态
出现 `Password locked` 证明锁定成功
如:`nginx LK 2020-12-29 -1 -1 -1 -1 (Password locked.)`
2.默认符合,修改后才有(默认已符合)
3.执⾏系统命令`passwd -l nginx`进⾏锁定
**加固建议**
配置 Nginx 账号登录锁定策略:
Nginx 服务建议使⽤⾮ `root` ⽤户(如`nginx`,`nobody`)启动,并且确保启动⽤户的状态为锁定状态。
可执⾏ `passwd -l <Nginx启动⽤户>` 如 `passwd -l nginx` 来锁定 Nginx 服务的启动⽤户。
命令 `passwd -S <⽤户>` 如 `passwd -S nginx` 可查看⽤户状态。
修改配置⽂件中的 `nginx` 启动⽤户修改为 `nginx` 或 `nobody`
如:`user nobody;`
如果您是 `docker` ⽤户,可忽略该项(或添加⽩名单)
三、Redis安全基线
3.1 Redis未授权访问⾼危风险
**描述**
Redis 端⼝对外开放并且没有配置认证选项,未授权⽤户除了可直接获取数据库中所有信息,造成严重的信息泄露外,还可以通过未授权访问漏洞⼊侵攻击系统。
**加固建议**
可以使⽤以下⽅法修复:
1、为 Redis 服务配置认证,在配置⽂件 `f` 中 `requirepass` 配置复杂密码,然后重启 `redis`。
2、在 Redis 的配置⽂件 `f` 中配置如下:`bind 127.0.0.1`,只允许本机访问,然后重启 `redis`
3.2 开启redis密码认证,并设置⾼复杂度密码
**描述**
`redis` 在 `f` 配置⽂件中,设置配置项 `requirepass`,开户密码认证。
`redis` 因查询效率⾼,`auth`这种命令每秒能处理9w次以上,简单的`redis`的密码极容易为攻击者暴破。
**加固建议**
打开 `f`,到 `requirepass` 所在的地⽅,修改为指定的密码,密码应符合复杂性要求:
1、长度8位以上
2、包含以下四类字符中的三类字符:
英⽂⼤写字母(A 到 Z)
英⽂⼩写字母(a 到 z)
10 个基本数字(0 到 9)
⾮字母字符(例如 !、$、#、%、@、^、&)
3、避免使⽤已公开的弱⼝令,如:abcd.1234 、admin@123等
再去掉前⾯的#号注释符,然后重启 `redis`
3.3 修改默认6379端⼝
**描述**
避免使⽤熟知的端⼝,降低被初级扫描的风险
**加固建议**
编辑⽂件 `redis` 的配置⽂件 `f`,到包含 `port` 的⾏,将默认的 `6379` 修改为⾃定义的端⼝号,然后重启 `redis`
3.4 打开保护模式
**描述**
`redis` 默认开启保护模式。要是配置⾥没有指定 `bind` 和密码,开启该参数后,`redis` 只能本地访问,拒绝外部访问。
**加固建议**
`f` 安全设置:# 打开保护模式 `protected-mode yes`
3.5 禁⽤或者重命名危险命令
**描述**
Redis中线上使⽤keys *命令,也是⾮常危险的。因此线上的Redis必须考虑禁⽤⼀些危险的命令,或者尽量避免谁都可以使⽤这些命令,Redis没有完整的管理系统,但是也提供了⼀些⽅案。
**加固建议**
修改 f ⽂件,添加
rename-command FLUSHALL ""
rename-command FLUSHDB ""
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论