https://www.live400.com/newsdetail/id/17.html 服务器及MySQL安全设置指南-江苏立维-专注监控、运维服务(Zabbix|Prometheus|APM|日志|数据库)
  首页     >     新闻动态     >     服务器及MySQL安全设置指南

服务器及MySQL安全设置指南

发布日期:2024-09-29    阅读数:125

在安全设置中,密码复杂度、登录失败和登录超时等策略是关键的安全措施。这些措施可以有效防止未授权访问,并增强系统的整体安全性,接下来我们将详细介绍如何配置这些安全策略。

Linux安全配置
1、密码复杂度策略

密码复杂度规则确保用户创建的密码足够强壮,难以被猜测或暴力破解。可以通过以下几种方式来实现:

  • 长度要求:设定最小密码长度(例如至少8个字符)。

  • 字符种类:要求密码包含大写字母、小写字母、数字以及特殊字符。

  • 历史记录:不允许使用最近几次使用的旧密码。

示例:配置有效期90天、长度不少于8位、至少3种字符的密码策略。

#vim /etc/login.defsPASS_MAX_DAYS   90 (密码有效期)PASS_MIN_DAYS   0  (密码修改间隔)PASS_MIN_LEN    8 (密码最小长度)PASS_WARN_AGE   7 (密码到期前警告)

设置包含字符、大写字母、小写字母

# cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak# vim /etc/pam.d/system-auth找到包含pam_pwquality.so模块的行,将原有行注释并修改为如下的新配置:password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root# minlen=8 密码最小长度为8个字符。# lcredit=-1 密码应包含的小写字母的至少一个# ucredit=-1 密码应包含的大写字母至少一个# dcredit=-1 将密码包含的数字至少为一个# ocredit=-1 设置其他符号的最小数量,例如@,#、! $%等,至少要有一个# enforce_for_root 确保即使是root用户设置密码,也应强制执行复杂性策略

测试:使用passwd测试是否配置成功



2、登陆失败策略


登录失败策略用于限制非法尝试登录的次数,以减少通过暴力破解攻击成功的机会。通常包括锁定账户一段时间或永久锁定直至管理员解锁。

示例:配置3次锁定、锁定时长60分钟的登陆失败策略。

# vim /etc/pam.d/sshd新增以下配置:auth required pam_tally2.so onerr=fail deny=3 unlock_time=1800 even_deny_root root_unlock_time=300# root_unlock_time: 表示root用户锁定时间# unlock_time: 表示普通用户锁定时间# onerr=fail: 表示连续失败# deny=3: 表示超过3次登录失败即锁定# 如果不想限制root用户,可以去掉:even_deny_root root_unlock_time=300。

注意:auth要放到第二行,否则不生效!!

测试

如果要查看某个用户的登陆失败次数,可以使用以下命令查看:

pam_tally2   --user luweihao

重置某个用户的登陆失败次数:

pam_tally2   --user luweihao --reset

3、登录超时策略


登陆超时策略为了防止会话被长时间闲置而被他人利用,应设置合理的会话超时时间,即当用户无活动状态达到一定时限后自动断开连接。

示例:配置会话超时时间为30分钟。

# vim /etc/profile注意:在末尾增加(单位是s)TMOUT=1800

4、安全日志记录


有效的日志记录不仅可以帮助管理员监控系统活动,还能在发生安全事件时提供关键信息用于调查和响应。

示例:启用auditd/rsyslog

service auditd statusservice rsyslog status

5、账户策略


合理地分配不同的管理角色对于确保系统的安全性至关重要。通过创建系统管理员、安全管理员和审计管理员等角色,并为每个角色设定相应的权限,可以有效地实现职责分离,减少内部威胁风险。

5.1 创建系统管理员(应该对/var进行授权,修改可能会影响到ssh登录)

groupadd sysgroupuseradd sys -g sysgrouppasswd sysusermod -G sysgroup sysmkdir /vartestchown -R sys:sysgroup /vartestchmod 741 /vartest

5.2 创建安全管理员(应该对/etc进行授权)

useradd -d /security securitypasswd securitychown -R security:security /securitychmod 700 /security

5.3 创建审计管理员(应该对/var/log进行授权)

useradd auditpasswd auditvim /etc/sudoers添加audit     ALL = (ALL) NOPASSWD: /usr/bin/cat , /usr/bin/less , /usr/bin/more , /usr/bin/tail , /usr/bin/headchown -R audit:audit /var/logchmod 700 /var/log
Linux安全配置
Linux安全配置
概述
概述
MYSQL安全配置

MySQL无法直接进行密码策略配置,需要安装插件。MySQL5.7默认有

validata_password的插件,但是没有安装,需要手动安装。

注意:如果MySQL设置了只读账号,需要先关闭只读,安装完插件后,重新开启只读。

#关闭只设置set global read_only=0;#最后再打开只读设置(根据需求)set global read_only=1

1、安装validata_password插件


    INSTALL PLUGIN validate_password SONAME 'validata_password.so';

查看当前设置

SHOW VARIABLES LIKE 'validate_password%';SHOW VARIABLES LIKE '%password%';

#default_password_lifetime这个为全局设置,影响到所有账号,生产环境谨慎设置。#validate_password_check_user_name:用于是否检查密码是否与用户名相似。设置为 OFF 表示不检查。#validate_password_dictionary_file:用于指定用于密码验证的字典文件。如果为空,表示没有配置特定的字典。#validate_password_length:密码的最小长度,这里表示密码至少需要 8 个字符。#validate_password_mixed_case_count:密码中必须包含的大写和小写字母的最少数量。在此设置为 1,表示至少需要一个大写或小写字母。#validate_password_number_count:密码中必须包含的数字的最少数量。在此设置为 1,表示至少需要一个数字。#validate_password_policy:定义密码的复杂性策略。设置为 MEDIUM,表示密码需满足中等复杂性要求。#validate_password_special_char_count:密码中必须包含的特殊字符的最少数量。未设置,表示没有要求。

可以自己修改配置,如密码长度修改成10位

SET GLOBAL validate_password_length = 10;



2、创建系统管理员用户


#创建系统管理员用户CREATE USER 'sysdba'@'localhost' IDENTIFIED BY 'NBYl6vu9d5Bev&S2';#修改系统管理员用户的密码过期时间alter user 'sysdba'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;#赋予系统管理员相应的权限GRANT ALL PRIVILEGES ON *.* TO 'sysdba'@'localhost' WITH GRANT OPTION;#查看权限show grants for 'sysdba'@'localhost';#查看密码过期时间show create user 'sysdba'@'localhost';



  • 3、创建安全管理员用户


    #创建安全管理员用户CREATE USER 'safedba'@'localhost' IDENTIFIED BY 'CqLs@rGKt3RG@fMI';#修改安全管理员用户密码过期时间alter user 'safedba'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;#赋予安全管理员相应的权限GRANT SELECT, SHOW VIEW ON *.* TO 'safedba'@'localhost';#查看权限show grants for 'safedba'@'localhost';#查看密码过期时间show create user 'safedba'@'localhost';



    4、创建审计管理员用户

    #创建审计管理员用户CREATE USER 'auditdba'@'localhost' IDENTIFIED BY 'isn2ecX#ZVhjx#Eu';#修改审计管理员用户密码过期时间alter user 'auditdba'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;#赋予审计管理员相应的权限GRANT RELOAD, PROCESS, SHOW DATABASES ON *.* TO 'auditdba'@'localhost';#查看权限show grants for 'auditdba'@'localhost';#查看密码过期时间show create user 'auditdba'@'localhost';



    5、设置错误登陆限制
    #安装CONNECTION_CONTROL插件INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';#提供了一个INFORMATION_SCHEMA类型的表,用户在此表中可以查看更详细关于登陆失败连接的信息。INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';

    #查看当前配置show variables like '%connection%';

    #connection_control_failed_connections_threshold:连续失败最大次数3次,0表示不开启#connection_control_max_connection_delay:超过最大失败次数之后阻塞登录最大时间(毫秒)#connection_control_min_connection_delay:超过最大失败次数之后阻塞登录最小时间(毫秒)#例如:set global connection_control_failed_connections_threshold=0;#查询各账号登录失败次数use information_schema;select * from connection_control_failed_login_attempts;

    #卸载插件UNINSTALL PLUGIN CONNECTION_CONTROL;UNINSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;

    6、登陆超时时间

    show variables like "%wait_timeout%";#修改超时时间为600sset global wait_timeout=600;


    总结

    正确地配置以上策略能够显著提高服务器的安全性,但同时也需要注意不要给合法用户提供过多障碍。因此,在实施上述任何一种策略之前,请根据实际情况做出适当调整,确保既保证了安全性又不影响正常使用体验。

    新闻搜索

    云安全风险发现,从现在开始
    返回顶部-立维
    公众号
    关注微信公众号
    电话咨询
    服务热线:400-006-8618
    项目咨询
    项目合作,欢迎发邮件咨询
    service@live400.com