Centos7、mysql数据库安全整改

一、操作系统

(1)Linux账户管理重命名默认账户

1.vi /etc/passwd

修改第1行第1个root为新的用户名
各个字段的顺序和含义如下:
注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序

2.vi /etc/shadow

修改第1行第1个root为新的用户名

每个字段的含义如下:

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

若文件为只读,按【:wq!】 强制保存后离开。

修改后重启服务器。

创建用户:

useradd -d /DATA/ -m test

 -d 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。

修改test用户的密码:

passwd test  

修改用户所属组:

usermod -g  root test

查看用户信息:

cat /etc/passwd|grep test

(2)密码复杂度策略

chage -l 用户名 查看用户的过期时间。

-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。

-M:密码保持有效的最大天数。

-w:用户密码到期前,提前收到警告信息的天数。

-E:帐号到期的日期。过了这天,此帐号将不可用。-d:上一次更改的日期。

-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

chage  -m 0 -M 180 -W 10 test  

设置密码最低有效期0和最高有限期180,提前10天发警报提示。

设置复杂度:

CentOS密码复杂度配置通过/etc/pam.d/system-auth文件中的pam_cracklib.so模块来实现。

首先查看/etc/pam.d/system-auth文件

可以看到当前并没有看到pam_cracklib.so模块

查找资料发现:

pam_pwquality.so是兼容pam_cracklib.so模块的,所以pam_cracklib.so的选项也适用于pam_pwquality.so

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用户输入旧密码,因此不会执行比较旧密码和新密码的检查

接下来修改system-auth文件,配置密码复杂度策略:

验证生效:

详见:CentOS7密码复杂度配置 - 夜信。 - 博客园 。

(3)登录失败处理策略

详见:centos7下如何设置输入密码三次错误后锁定用户-CentOS-PHP中文网 , linux pam模块篇(1)_pam_tally2模块 – 云原生之路 。

1、限制用户远程登录

vim /etc/pam.d/sshd

#%PAM-1.0 
auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=10

2、限制用户从tty登录

vim /etc/pam.d/login
在#%PAM-1.0的下面,即第二行,添加内容,一定要写在前面,如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的!

auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10

使用ssh工具登录,故意输错密码3次:

此时,用户已经被锁定了,输入正确密码也无法登录。

查看登录失败次数:

pam_tally2 --user test

解锁账号:

pam_tally2 -r -u test

此时输入正确密码就可以成功登录。

(4)安全补丁升级

官方没有发布关于centos操作系统的补丁更新操作系统软件包:yum update 。

(5)日志审计

详见:Linux 设置日志保存半年_huofeige-CSDN博客_linux系统日志保存6个月 。

logrotate是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件修改/etc/logrotate.conf 中的
# keep 4 weeks worth of backlogs
rotate 4
改为rotate 12
将/var/log/wtmp {
    monthly
    create 0664 root utmp
    rotate 1 中的1改为3,
}

启:sudo systemctl restart rsyslog 。

(6)病毒查杀

安装杀毒软件ClamAV。

详见:centos7安装杀毒软件ClamAV - 何为实施 - 博客园  。

二、数据库

(1)重命名默认账户

mysql -u root -p

UPDATE mysql.user set user='datacenter' where user='root';

  

 service mysql restart重启数据库后,再用root账号登录则不可用访问了。

表数据能够正确查询,但视图查询报错:

详见:更改数据库权限导致视图不能查询 - 知乎 ,https://blog.csdn.net/michaelwoshi/article/details/104034670 。

这里我将安全性定义由definer设置为invoker。

创建用户:

create user exporter identified by '`1Qazx123_';

用户授权:

grant all privileges on  *.*  to exporter@'%' identified by '`1Qazx123_' with grant option;

删除用户:

drop user datauser@'%';

详见: MySQL用户管理:添加用户、授权、删除用户 - 陈树义 - 博客园  。

(2)密码复杂度策略

查看默认策略配置:

show variables like 'validate_password%';

validate_password_dictionary_file:密码策略文件,策略为STRONG才需要

validate_password_length:密码最少长度

validate_password_mixed_case_count:大小写字符长度,至少1个

validate_password_number_count :数字至少1个

validate_password_special_char_count:特殊字符至少1个。

详见:MySQL密码复杂度与密码过期策略介绍 - 程序员丁先生 - 博客园  。

(3)登录失败处理策略

1.查看插件:

 show variables like '%connection_control%';

上图表示没有安装控制插件。

2.安装MySQL控制插件

install plugin CONNECTION_CONTROL soname 'connection_control.so';

install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';

现在已经可以看到插件了,但属于没有没有配置策略的状态,锁定时间仅为:1000毫秒 = 1秒(失败三次锁定1秒)

3.配置策略MySQL登录失败锁定策略。

vim /etc/my.cnf

connection-control-failed-connections-threshold=3

connection-control-min-connection-delay=1800000            (30分钟)

4.重启mysql。

show variables like '%connection_control%';

5.验证

添加完策略后,在输入错误口令第4次时输入框的位置卡住不动了,强制退出输入正确口令依然卡住无法登录。

详见:MySQL数据库登录失败锁定策略的设置 - 海龙。 - 博客园 。

(4)限制访问策略

指定的管理终端或应用、接口服务器的ip限制访问策略。

数据库mysql中的user表datacenter的原始数据如下:

表示只允许mysql服务器连接:mysql -udatacenter -p,输入密码后连接成功。

这条数据的host不做任何修改,否则可能引起服务器端连接失败。此时,客户端任一ip都无法连接数据库。

采用授权的方式指定能连接的ip,可以指定特定ip,也可以指定ip段。

指定ip,如:

mysql> grant all privileges on *.* to datacenter@'192.168.162.35' identified by 'datacenter的密码';

mysql> flush privileges;

指定ip后客户端ip为192.168.100.147无法连接,192.168.162.35能正常连接。

改为ip段:

mysql> grant all privileges on *.* to datacenter@'192.168.%' identified by 'datacenter的密码';

mysql> flush privileges;

此时192.168.100.147可以正常连接。

(5)数据异地备份

备份方法详见:  linux mysql数据库定时备份到远程服务器_FinelyYang的专栏-CSDN博客 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值