前言
大约一年前,我的WordPress网站被黑客攻击了。
最近服务器的数据库又一次被黑了
可气......
分析原因,可能是mysql设置的密码太简单了(123456),3306端口也权限全开,服务器基本上没有加任何安全防固措施。在网上搜了一大堆的安全加固资料,多而繁琐,考虑到开发过程中的便利性,我选择了其中两种加固措施。
Linux服务器简单的两项安全加固
1. 服务器使用ssh秘钥登录
腾讯官方社区教程:
本地Windows计算机SSH密钥登录
登录工具
使用 远程登录软件 ,采用 SSH 密钥登录 Linux 实例(本例中选择使用 PUTTY,用户也可以选择其他类型的登录软件)。
操作步骤
- 安装 Windows 远程登录软件,参考下载地址:http://www.putty.nl/download.... ,分别下载 putty.exe 及 puttygen.exe 两个文件。
- 选择私钥。打开 puttygen.exe,单击【Load】按钮,在弹窗中首先进入您存放前提条件中下载下来的私钥的路径,然后选择“All File(.)”,选择下载好的私钥(例子中为文件david,david是密钥的名称),单击【打开】。
- 密钥转换。在 key comment 栏中输入密钥名,输入加密私钥的密码,单击【Save private key】,在弹窗中选择您存放密钥的目录,然后在文件名栏输入 密钥名 +".ppk",单击【保存】按钮。
- 打开 putty.exe ,进入【Auth】配置。
- 单击【Browse】按钮,打开弹窗后进入密钥存储的路径,并选择密钥,单击【打开】,返回配置界面,进入【Session】配置。
在Session配置页中,配置服务器的IP,端口,连接类型。
IP:云服务器的公网IP。登录云服务器控制台,可在列表页及详情页中获取主机公网IP。 端口:云服务器的端口,必须填22。(请确保云主机22端口已开放,详见查看安全组及网络ACL)。
- 在【Saved Sessions】输入框中中输入会话名称(本例为 test ),再单击【Save】按钮,然后双击会话名称或者单击【Open】按钮发起登录请求。
注意:
如果登录失败,请检查您的云服务器实例是否允许22端口的入流量。端口的查看请参考安全组 ,若您的云服务器处于私有网络环境下,请同时查看相关子网的网络ACL。
2. 修改MySQL默认的监听端口,同时添加防火墙规则
如何查看mysql 默认端口号和修改端口号
1. 登录mysql
[root@VM_89_120_centos ~]# mysql -u root -p
Enter password:
2. 使用命令show global variables like 'port';查看端口号
mysql> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.00 sec)
3. 修改端口,编辑/etc/my.cnf文件,早期版本有可能是my.conf文件名,增加端口参数,并且设定端口,注意该端口未被使用,保存退出。
[root@VM_89_120_centos ~]# vi my.cnf
[mysqld]
port=xxxx
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
"my.cnf" 11L, 261C written
[root@VM_89_120_centos ~]#
4. 重新启动mysql
[root@VM_89_120_centos ~]# /etc/init.d/mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]
5.再次登录后检查端口已修改为’xxxx’.
添加防火墙规则,只允许指定IP段可以访问数据库端口
[root@VM_89_120_centos ~]# iptables -I INPUT -p tcp --dport xxxx -j DROP
[root@VM_89_120_centos ~]# iptables -I INPUT -s xxx.xxx.xxx.xxx/24 -p tcp --dport xxxx --j ACCEPT
[root@VM_89_120_centos ~]# service iptables save
[root@VM_89_120_centos ~]# service iptables restart