当前位置: 首页 > article >正文

ubuntu安全配置基线

ubuntu安全配置基线

  • 1. 身份鉴别策略组检测
    • 1.1. 口令周期检测
      • 1.1.1. 最长使用周期小于等于90天(非强制)
      • 1.1.2. 查看密码期限:最短更换周期大于等于2天
      • 1.1.3. 距失效提示天数大于等于5天
    • 1.2. 密码复杂度检测
      • 1.2.1. 密码复杂性要求
    • 1.3. 登录锁定检测
    • 1.4. Root权限用户
      • 1.4.1. root权限用户检测 (非强制)
    • 1.5. Wheel组(非强制)
      • 1.5.1. wheel组检测 (非强制)
  • 2. 访问控制策略组检测
    • 2.1. 空口令监测
      • 2.1.1. 空口令账户
    • 2.2. 弱口令检测
      • 2.2.1. 弱口令账户
  • 3. 安全审计策略组检测
    • 3.1. 日志守护进程
      • 3.1.1. 开启日志守护进程
  • 4. SSH策略检测
    • 4.1. SSH检测
      • 4.1.1. 最大失败尝试登录次数小于等于5(需要修改)
      • 4.1.2. 开启密码认证
      • 4.1.3. 开启RSA认证
  • 5. 入侵防范策略组监测
    • 5.1. 防火墙

1. 身份鉴别策略组检测

准备:

安装一个PAM模块来启用cracklib支持,这可以提供额外的密码检查功能。

在Debian,Ubuntu或者Linux Mint使用命令:

sudo apt-get install libpam-cracklib

这个模块在CentOS,Fedora或者RHEL默认安装了。但是在Ubuntu这些系统上就必需安装。

1.1. 口令周期检测

1.1.1. 最长使用周期小于等于90天(非强制)

sudo vim /etc/login.defs

1

PASS_MAX_DAYS 90

PASS_MAX_DAYS 99999 代表永不过期

1.1.2. 查看密码期限:最短更换周期大于等于2天

PASS_MIN_DAYS 2

检查命令:

chage -l root

1.1.3. 距失效提示天数大于等于5天

PASS_WARN_AGE 5

1.2. 密码复杂度检测

1.2.1. 密码复杂性要求

pam_cracklib.so支持的部分选项如下:

retry=N:定义登录/修改密码失败时,可以重试的次数

minlen=N:新密码的最小长度

dcredit=N:当N>0时表示新密码中数字出现的最多次数;当N<0时表示新密码中数字出现最少次数;

ucredit=N: 当N>0时表示新密码中大写字母出现的最多次数;当N<0时表示新密码中大写字母出现最少次数;

lcredit=N: 当N>0时表示新密码中小写字母出现的最多次数;当N<0时表示新密码中小写字母出现最少次数;

ocredit=N:当N>0时表示新密码中特殊字符出现的最多次数;当N<0时表示新密码中特殊字符出现最少次数;

maxrepeat=N:拒绝包含多于N个相同连续字符的密码。 默认值为0表示禁用此检查

maxsequence=N:拒绝包含长于N的单调字符序列的密码。默认值为0表示禁用此检查。实例是’12345’或’fedcb’。除非序列只是密码的一小部分,否则大多数此类密码都不会通过简单检查。

enforce_for_root: 如果用户更改密码是root,则模块将在失败检查时返回错误。默认情况下,此选项处于关闭状态,只打印有关失败检查的消息,但root仍可以更改密码。不要求root用户输入旧密码,因此不会执行比较旧密码和新密码的检查
2

方法:

vim /etc/pam.d/common-password
password requisite pam_cracklib.so retry=3 minlen=10 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1

pam_cracklib.so 后添加minlen=10 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1

参数含义:密码长度最小为10位,数字出现的最少次数为1次,大写字母出现最少1次,小写字母出现最少1次,特殊字符出现最少1次

1.3. 登录锁定检测

普通用户触发锁定次数小于等于5
普通用户锁定时间大于等于5分钟
Root用户触发锁定次数小于等于5
Root用户锁定时间大于等于5分钟具体安装配置:
1、修改如下配置文件:(不建议修改)

这个只是限制了用户从tty登录,而没有限制远程登录,如果想限制远程登录,需要改sshd文件

vim /etc/pam.d/login

在第二行添加

auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root=5 root_unlock_time=300

3

此处使用的是 pam_tally2 模块,如果不支持 pam_tally2 可以使用 pam_tally 模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。

注意

在第二行,添加内容,一定要写在前面,如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的!

这个只是限制了用户从tty登录,而没有限制远程登录,如果想限制远程登录,需要改sshd文件

2、修改sshd文件(建议修改)

vim /etc/pam.d/sshd

继续在第二行上添加

auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root=5 root_unlock_time=300

4

查看用户登录失败的次数:

sudo pam_tally2 --user

结果

ubuntu@VM-0-5-ubuntu:~$ sudo pam_tally2 --user

Login   Failures Latest failure  From

root    3 09/29/19 15:53:24 45.119.212.105

ubuntu    9 09/29/19 15:46:58 223.107.140.84

解锁指定用户:

sudo pam_tally2 -r -u admin
admin@VM-0-5-ubuntu:~$ sudo pam_tally2 -r -u admin

Login   Failures Latest failure  From

admin    15 09/29/19 15:58:49 223.107.140.84

ps:这个远程ssh的时候,输入密码错误超过三次但是没有提示,但是只要超过设定的值,输入正确的密码也是登陆不了的!,还是要等到设定的时间在重新尝试输入正确密码进行登录认证

1.4. Root权限用户

1.4.1. root权限用户检测 (非强制)

检查配置文件cat /etc/passwd,不能包含用户标识号为0,除root用户外。
5

以第一行为例,从左至右,分别表示:
帐号名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell

1.5. Wheel组(非强制)

1.5.1. wheel组检测 (非强制)

命令:cat /etc/group

检查文件/etc/group中,wheel后面是否有用户名,如果有,将其删除。
6

如下图中示例,viewer用户加入了wheel组中,因此viewer用户拥有了root的部分功能和权限,因此需要将viewer删除。

Wheel组概念

Wheel组是Unix系统一个遗留物。当服务器需要做比日常例行维护更高级的工作的时候,就经常需要用到root权限了。而这个wheel组就是建立用来归纳一些特殊的系统用户用的,这其中的用户都或多或少地拥有root的部分功能和权限。也就是说如果你不是wheel组成员,那就没有root身上任何的特权。也因为这样,使用wheel组成员用户的话,会尽量减少对系统“摧毁性”破坏的概率和风险。如今大多数的Linux发行版本中,仍然保留了wheel这个组,虽然它已经不像当初设计出来的那样必要了,但是有些老玩家还是忠于这种旧式经典风格的,所以他们经常还是依旧让wheel组发挥着以往的作用。他们是这样做的:在建立他们自己的用户时,将其添加入wheel组中(用wheel组作为用户的主组),或者使用vigr来编辑/etc/group文件,将他们的用户名追加到wheel组那行的末尾。

1.6. 相同ID用户
1.6.1. 相同ID用户检测
命令:cat /etc/passwd
7

检查配置/etc/passwd中,是否包含用户标识号相同的帐号,用户标识号位置如下:

以第一行为例,从左至右,依次为:

帐号名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell

2. 访问控制策略组检测

2.1. 空口令监测

2.1.1. 空口令账户

命令:cat /etc/shadow(检查shadow文件中密码为空且的用户)
8

如图上所示,输出test3为空口令账户,且可以登录的用户。

用户test2:!!:18820:0:99999:7:::第二个字段是“:!!:”代表没有设置密码,但无法登录。

用户test3::18820:0:99999:7:::第二个字段是“::”代表第二个字段密码为空,且可以登录。

如果检测出有空口令账户,可以做以下处理:

A. 删除该用户

命令如下:

userdel 用户名

rm -rf /home/用户名 (可选,表示删除该用户的主目录)

B. 给该用户设置密码

passwd 用户名

2.2. 弱口令检测

2.2.1. 弱口令账户

如果检测出弱口令账户,建议设置符合秘密复杂度要求的密码,命令如下:

passwd 用户名

3. 安全审计策略组检测

3.1. 日志守护进程

3.1.1. 开启日志守护进程

当rsyslog没有在运行,则检测失败,操作命令如下:

systemctl status rsyslog (查看状态)

systemctl stop rsyslog (停止)

systemctl start rsyslog (启动)

启动成功后状态:
9

查看进程有没有启动:

命令:ps -ef | grep rsyslog
10

4. SSH策略检测

4.1. SSH检测

执行如下命令,修改配置文件

sudo vim /etc/ssh/sshd_config

4.1.1. 最大失败尝试登录次数小于等于5(需要修改)

MaxAuthTries 5

11

4.1.2. 开启密码认证

PasswordAuthentication yes

12

4.1.3. 开启RSA认证

RSAAuthentication yes  (有的系统 需要手动添加)

4.1.4. 开启公钥验证

PubkeyAuthentication yes

重启sshd生效,重启命令如下:

CentOS系列: systemctl restart sshd

后续随着建立应用账户会回收root权限登陆。

5. 入侵防范策略组监测

5.1. 防火墙

查看状态

systemctl status firewalld.service

启动防火墙

systemctl start firewalld.service

关闭防火墙

systemctl stop firewalld.service

重新启动防火墙

systemctl restart firewalld.service

13


http://www.kler.cn/a/509843.html

相关文章:

  • 数组常见解决方案
  • Linux下源码编译安装Nginx1.24及服务脚本实战
  • v2富文本框封装 @wangeditor/editor-for-vue
  • python中的RPA->playwright自动化录制脚本实战案例笔记
  • Spring boot框架下的RocketMQ消息中间件
  • Chrome谷歌浏览器如何能恢复到之前的旧版本
  • 蓝桥杯训练—字符串对比
  • Git代码管理工具 — 5 GitHub远程仓库
  • 将.ext4文件挂载在ubuntu系统本地的步骤和方法
  • Redis 部署模式
  • Pandas库的常用内容归纳
  • [LeetCode] 链表完整版 — 虚拟头结点 | 基本操作 | 双指针法 | 递归
  • 安路FPGA开发工具TD:问题解决办法 及 Tips 总结
  • 鲍厚霖:引领AI广告创新,搭建中美合作桥梁
  • Python 的 WebSocket 实现详解
  • mysql 创建临时表报错
  • Spring boot框架下的RocketMQ消息中间件
  • 解析Three.js中几何体是如何构建的--BufferGeometry(四)
  • PG vs MySQL mvcc机制实现的异同
  • NodeJS | 搭建本地/公网服务器 live-server 的使用与安装
  • RabbitMQ基础篇
  • 如何让AI助力制作PPT,轻松实现PPT智能生成
  • docker swarm 部署问题 和 指定节点部署服务
  • RabbitMQ踩坑- RabbitMQ service is already present
  • 高可用AD单域架构
  • 免费的接口请求api