前几天遇到的一个不幸的事情,阿里云服务器上的数据库全部清空了,并且猖狂的建一个以他QQ号命名的数据库,这是要我联系他,交钱恢复数据啊。还好里面都是一些个人项目,没有什么特别重要的数据,而且我阿里云有磁盘备份计划每周一次,恢复一下即可。当然磁盘备份算是服务器数据的最后一道防线了。
遇到问题解决问题,是一件幸福的事情,如果遇不到问题,或者解决不了问题都是比较痛苦的经历。索性没有造成什么损失,不过不得不引起我对服务器安全的重视,为此对服务器做了一下调整:
新增普通账号
新增用户
useradd user
添加密码
passwd password
删除用户名
userdel 用户名
ssh禁止root连接
vim /etc/ssh/sshd_config
port 8888
PasswordAuthentication yes #开启密码验证
PermitRootLogin no #是否容永root登陆
PermitEmptyPasswords no #是否允许密码为空
重启ssh服务
service sshd reload
mysql安全配置
mysql库中有4张权限表,user、db、tables_priv、columns_priv,分别对应用户密码、用户对数据库的权限、对表的权限、对列的权限。
当一个用户向MySQL发起请求时,首先会从user表中验证host、user、password,然后再依次验证db、tables_priv、columns_priv,验证过程中,如果db表中对应权限为Y,则此用户对某个库的权限全为Y,将不再验证tables_priv和columns_priv。
对于MySQL中的账户权限相关的安全配置,总结如下:
针对每个网站建立一个单独的账户
为每个网站单独建立一个专属数据库
按照user->db->tables_priv->columns_pri的顺序进行细粒度的权限控制
为每个用户单独配置一个专属数据库,保证当前用户的所有操作只能发生在它自己的数据库中,防止SQL注入发生后,黑客通过注入点访问到系统表
如果有必要,改变MySQL的root用户的用户名(在user表中更改)
禁止root用户远程登录
防火墙设置
更改默认端口(默认3306),可以从一定程度上防止端口扫描工具的扫描
限制单个用户的连接数量:
[mysqld]
max_user_connections 20
网友评论