数据库被黑的一次教训
由于数据库密码设置太简单,而且数据库端口使用了默认的3306端口并且对外开放了,导致数据库被黑。所有的数据都被加密了变成了BLOB,表数据如下图
aa.png
一、修改数据库用户名密码及端口
1.用户名修改
mysql -uroot -p
输入密码:
mysql> use mysql;
mysql> update user set user='newname' where user='root';
mysql> flush privileges;
2.密码修改
密码设置复杂一点
mysql> update user set password=('newpasswd') where user='newname';
mysql> flush privileges;
mysql> quit;
3.端口修改
修改mysql配置文件,把默认的3306端口改成另外一个端口号
vim /etc/my.cnf
[client]
port=xxx
[mysqld]
port=xxx
4. 重启 mysql
service mysqld restart
注意:安全起见最好在防火墙中不要对外开放该端口,实在要用临时在防火墙中把端口开下完事再关闭
二、数据库定时备份
1.写一个数据库备份脚本
备份指定的某个数据库脚本 db_backup.sh
#!/bin/bash
#在使用之前,请提前创建以下各个目录
backupDir=/data/DB_BACKUP
username="newname"
password="newpasswd"
dbname="mydbname"
#定义备份文件名
bkDBSqlName="${dbname}_bk.sql"
#定义备份文件全路径文件名
bkName="${backupDir}/${bkDBSqlName}"
/usr/bin/mysqldump -u${username} -p${password} --lock-all-tables --flush-logs ${dbname} > ${bkName}
备份指定的某个数据库中指定的表脚本 table_backup.sh
#!/bin/bash
#在使用之前,请提前创建以下各个目录
backupDir=/data/DB_BACKUP
username="newname"
password="newpasswd"
dbname="mydbname"
tablename="mytablename"
#定义备份文件名
bkTableSqlName="${tablename}_bk.sql"
#定义备份文件全路径文件名
bkName="${backupDir}/${bkTableSqlName}"
/usr/bin/mysqldump -u${username} -p${password} --lock-all-tables --flush-logs ${dbname} ${tablename} > ${bkName}
2.把备份脚本加入到定时任务中
定时的颗粒度根据情况选择
每小时执行:
0 * * * * /备份脚本所在绝对路径/table_backup.sh
每天执行:
0 0 * * * /备份脚本所在绝对路径/db_backup.sh
3.备份数据的还原
mysql -uxxx -p
输入密码:
选择要还原的数据库
mysql> use xxx_db
还原备份数据
mysql> source /data/DB_BACKUP/mytablename_bk.sql
mysql> source /data/DB_BACKUP/mydbname_bk.sql
三、修改 ssh 端口
安全起见把 ssh 默认的22端口换一个端口号比如12345
1. 修改防火墙配置
vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 12345 -j ACCEPT
2. 重启防火墙
service iptables restart
3. 修改ssh配置
把Port 22行的修改为Port 12345
vi /etc/ssh/sshd_config
Port 12345
4. 重启下ssh服务
service sshd restart
注意:操作顺序不要颠倒,否则SSH远程连接不上