linux和mysql三级等保常见修复操作

Linux系统常见加固

(1)Linux 设置密码最长过期天数,最小长度等

vim /etc/login.defs

增加如下内容

PASS_MAX_DAYS   90    # 密码最长过期天数

PASS_MIN_DAYS   80    # 密码最小过期天数

PASS_MIN_LEN    8     # 密码最小长度

PASS_WARN_AGE   7     # 密码过期警告天数

vim /etc/pam.d/system-auth

 password requisite pam_cracklib.so 一行换成如下内容:

password  requisite pam_cracklib.so retry=5  difok=3 minlen=8 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict

参数含义:

修改密码尝试次数:5 ;

与旧口令最少不同字符:3 ;

最小密码长度:8 ;

最少大写字母:1;

最少小写字母:3 ;

最少数字:3 ;

字典位置:/usr/share/cracklib/pw_dict

(2)设置登录限制,规定在n 次失败后限制n秒后才能重新登录

vim /etc/pam.d/sshd

增加如下内容

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

解释:设置为密码连续错误5次锁定,锁定时间300秒 root密码连续错误3次锁定,时间为 300秒 )

root_unlock_time: 表示root用户锁定时间

unlock_time: 表示普通用户锁定时间

onerr=fail: 表示连续失败

deny=5: 表示超过5次登录失败即锁定

如果不想限制root用户,可以去掉:even_deny_root root_unlock_time=300。

编辑完成后重启sshd

systemctl restart sshd.service

(3)登录连接超过5分钟自动退出

1.修改ssh配置文件(适用于SSH会话)

vim /etc/ssh/sshd_config

ClientAliveInterval 1800    #秒

ClientAliveCountMax 0     #次数

systemctl reload sshd  #更新sshd配置

2、修改终端环境变量(适用于交互式终端会话)

用户级:

#修改~/.bashrc或~/.bash_profile

vim ~/.bashrc

TMOUT=3600    #秒

source ~/.bashrc

系统级:

vim /etc/profile

export TMOUT=43200    #秒

source /etc/profile

3、修改用户在使用 su 命令切换到其他用户后的超时时间

用户级则修改各用户的.bashrc 或 .bash_profile 文件

vim /etc/login.defs

SU_TIMEOUT 10    #分钟

(4)限制root用户登录

vim /etc/ssh/sshd_config

增加如下内容

PermitRootLogin = no

编辑完成后重启sshd

systemctl restart sshd.service

(5)Linux强制用户首次登陆修改密码

[root@123 ~]# chage -d 0 user01

-d 0 user01设置该用户密码是在1970年1月1日更改的,这实际上是让当前密码立即到期,从而让密码在下一次登录时被更改。

chage 命令说明

使用示例:

1、查看user01用户以及密码的有效期

[root@123 ~]# chage -l user01

(6)linux设置user01用户90天后密码过期,

设置至少7天后才能修改密码,密码过期前30天开始收到告警信息。

[root@123 ~]# chage -M 90 -m 7 -W 30 user01

验证结果:

[root@123 ~]# chage -l user01

(7)linux设置服务器审计记录保存时间6个月以上

7.1设置审计日志保存6个月以上:需要调整日志滚动策略。

vi /etc/audit/auditd.conf
max_log_file = 180
表示保留180个日志文件,每个文件一天。

要定期自动压缩和删除旧的审计记录,可以使用logrotate工具。在/etc/logrotate.d/目录下创建一个名为audit的文件,文件内容可以如下所示:

/var/log/audit/*.log {

daily

rotate 180

compress

delaycompress

notifempty

missingok

}

这将使日志每天轮转一次,并保留180个日志文件。旧的日志文件将被压缩,并在下次轮转时被删除。

修改完重启审计服务
sudo systemctl start auditd

  1. linux设置日志文件保存时间为6个月

vi /etc/logrotate.conf

将全局的weekly下的rotate 4改为rotate 24,表示6个月;

将指定文件的monthly下的rotate 1改为rotate 6,表示6个月

Mysql数据库加固

(1)设置 mysql 数据库密码复杂度、密码长度

设置密码负责度策略,密码最小长度设置为8位,采用数字、字母、特殊符号等组合的方式。

1.1 安装插件:

mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';

1.2 vi /etc/my.cnf,增加以下配置,

[mysqld]

plugin-load-add=validate_password.so

validate_password = on

validate_password_policy = 1

validate_password_length=8

1.3 重启数据库生效:

各项解释如下:

plugin-load-add=validate_password.so

这一行的意思是数据库重启的时候自动加载密码复杂度插件,不配置的话,一般没问题,但遇到数据库迁移的话,可能会启动数据库失败,为保险起见,还是加上这一行。

validate_password = on  #开启密码复杂度验证插件

validate_password_policy = 1 #密码负责度策略,这里设置为1,中复杂度。

validate_password_policy类型如下,有三个可选项

validate_password_length=8 #设置密码的最小长度

验证:使用弱口令进行密码验证

mysql>CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

结果如下:

(3)设置 mysql 登录失败次数

  1. 登录数据库,安装插件

install plugin CONNECTION_CONTROL soname 'connection_control.so';

install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';

2、查看所有已安装的插件

show plugins;

3、按需修改配置文件(/etc/my.cnf)

vim /etc/my.cnf

添加如下两行配置:

connection-control-failed-connections-threshold=5   #登陆失败次数限制

connection-control-min-connection-delay=1800000    #限制重试时间,此处为毫秒,注意按需求换算

4、重新启动MySQL

5、重新登录数据库,查看配置是否生效

mysql>show variables like '%connection_control%';

6、验证

输错5次密码后,会发现第6次登录会卡住,限制登录,时间为设定的限制时间30分钟

(4)设置 mysql 数据库连接超时时间

临时设置

登录mysql以后执行如下命令即可

mysql>SET GLOBAL wait_timeout = 1800;

mysql>SET GLOBAL interactive_timeout = 1800;

永久设置

vi my.cnf

添加如下内容

wait_timeout = 1800;

interactive_timeout = 1800;

然后重启mysql

查看连接空闲超时时间命令 show variables like 'wait_timeout' ;

参数说明:

Connect_time:mysql 客户端在尝试与 mysql 服务器建立连接时,mysql 服务器返回错误握 手协议前等待客户端数据包的最大时限。默认 10 秒。

Wait_timeout:等待超时时间、默认值 28800 秒(8 小时)

interactive_timeout:交互式连接超时时间(mysql 工具、mysqldump 等) wait_timeout:非交互式连接超时时间

(4)设置 mysql 数据库用户及用户允许登录的 IP

设置用户root登录IP为192.168.1.100

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY 'password';

刷新权限

mysql>FLUSH PRIVILEGES;

查询用户权限:mysql>show grants for root@localhost ;

查询用户列表及对应的登录 IP:select user,host from mysql.user;

参数说明:

Host 列指定了允许用户登录所使用的 IP,比如 user=root Host=192.168.1.1。这里的意思 就是说 root 用户只能通过 192.168.1.1 的客户端去访问。

而%是个通配符,如果 Host=192.168.1.%,那么就表示只要是 IP 地址前缀为“ 192.168.1. ” 的客户端都可以连接。如果 Host=%,表示所有 IP 都有连接权限。

(5)设置 mysql 数据库开启通用日志功能

临时设置

 mysql>SET GLOBAL general_log = 'ON';

永久设置

vi my.cnf  添加如下内容:

general_log = 'ON';

然后重启mysql

mysql> SHOW VARIABLES LIKE '%general%';

参数说明:

general_log:记录所有到达 MySQL Server 的 SQL 语句记录,VALUE 值为 ON,说明已开启。

  1. 设置 mysql 数据库开启log_bin 日志功能

vi my.cnf

[mysqld] 节下,添加以下配置项:

log-bin=mysql-bin    ##mysql 5.7版本使用此配置

log_bin = /var/log/mysql/mysql-bin.log  ##设置binlog存储路径

编辑完成重启mysql

查看数据库 log_bin 的日志文件是否开启:

mysql>show variables like 'log_bin' ;

参数说明:

Log_bin:记录了所有的 DDL 和 DML(除了数据查询语句)语句,VALUE 值为 ON,说明已开启。

  1. 设置 mysql 数据库开启审计功能

mysql> INSTALL PLUGIN audit_log SONAME 'audit_log.so';

mysql> SHOW PLUGINS;

vi my.cnf  在[mysqld]添加以下配置项:

plugin_load_add = "audit_log.so"  # 启用审计功能

# 审计日志文件路径

audit_log = "/var/log/mysql/audit.log"

修改完重启mysql

验证:mysql>show variables like '%audit%' ;

  1. 设置 mysql 数据库密码有效期

临时设置

mysql> SET GLOBAL default_password_lifetime = 90;

或者

mysql> ALTER USER 'username'@'hostname' PASSWORD EXPIRE INTERVAL 90 DAY;

查看过期时间

mysql> SHOW VARIABLES LIKE 'default_password_lifetime';

永久设置

vi  my.cnf

[mysqld]

default_password_lifetime=90  #过期时间90天

5、查看账号过期状态

mysql> SELECT user, host, password_expired, password_last_changed, account_locked FROM mysql.user;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值