服务器安全
不言而喻,服务器的安全是非常重要的。此处列出几个常见的问题和相应的解决方法。
这个页面会不断更新。也可以参考这个页面:https://phoenixnap.com/kb/server-security-tips。
温馨提示:在操作之前,建议备份配置并做好相关的记录。
数据库篇
MySQL:修改默认3306端口
编辑/etc/my.cnf
文件,mysqld 段落中配置新的端口参数,并重启mysql服务:
vim /etc/my.cnf
port=3506
:wq
MySQL:禁用local-infile选项
禁用local_infile选项会降低攻击者通过SQL注入漏洞器读取敏感文件的能力。
编辑MySQL配置文件/etc/my.cnf,在 mysqld 段落中配置local-infile参数为0
local-infile=0
重启MySQL服务。
MySQL:禁用symbolic-links选项
禁用符号链接以防止各种安全风险。
编辑MySQL配置文件/etc/my.cnf,在mysqld 段落中配置symbolic-links=0
,5.6及以上版本应该配置为skip_symbolic_links=yes
,并重启MySQL服务。
Redis:禁用或者重命名危险命令
Redis中线上使用keys *命令,也是非常危险的。因此线上的Redis必须考虑禁用一些危险的命令,或者尽量避免谁都可以使用这些命令,Redis没有完整的管理系统,但是也提供了一些方案。
修改 redis.conf 文件,添加
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command KEYS ""
rename-command SHUTDOWN ""
rename-command DEL ""
rename-command EVAL ""
然后重启Redis。 重命名为"" 代表禁用命令,如想保留命令,可以重命名为不可猜测的字符串,如: rename-command FLUSHALL joYAPNXRPmcarcR4ZDgC
Redis:开启密码认证,并设置高复杂度密码
在redis.conf
配置文件中,设置配置项requirepass, 开户密码认证。 Redis因查询效率高,auth这种命令每秒能处理9w次以上,简单的Redis的密码极容易为攻击者暴破。
打开redis.conf
,找到requirepass所在的地方,修改为指定的密码,密码应符合复杂性要求:
1、长度8位以上
2、包含以下四类字符中的三类字符:
- 英文大写字母(A 到 Z)
- 英文小写字母(a 到 z)
- 10 个基本数字(0 到 9)
- 非字母字符(例如 !、$、%、@、^、&等,#除外)
3、避免使用已公开的弱密码,如:abcd.1234 、admin@123等
再去掉前面的#号注释符,然后重启Redis。
Redis:限制配置文件访问权限
因为Redis密码明文存储在配置文件中,禁止不相关的用户访问改配置文件是必要的,设置Redis配置文件权限为600。
执行以下命令修改配置文件权限:
chmod 600 /<filepath>/redis.conf
评论已关闭