存档在 2015年6月

如何解决发现服务器启用了TRACE Method

2015年6月9日

当使用360网站安全在线工具(http://webscan.360.cn)对网站扫描时:

服务器配置信息泄露风险 共检测713项 正在检测... 发现服务器启用了TRACE Method

WASC Threat Classification

描述:

  1. 目标WEB服务器启用了TRACE Method。TRACE_Method是HTTP(超文本传输)协议定义的一种协议调试方法,该方法会使服务器原样返回任意客户端请求的任何内容。
  2. 由于该方法会原样返回客户端提交的任意数据,因此可以用来进行跨站脚本(简称XSS)攻击,这种攻击方式又称为跨站跟踪攻击(简称XST)。

危害:

  1. 恶意攻击者可以通过TRACE Method返回的信息了解到网站前端的一些信息,如缓存服务器等,从而为下一步的攻击提供便利。
  2. 恶意攻击者可以通过TRACE Method进行XSS攻击。
  3. 即使网站对关键页面启用了HttpOnly头标记和禁止脚本读取cookie信息,那么通过TRACE Method恶意攻击者还是可以绕过这个限制读取到cookie信息。

解决方案:

1)2.0.55以上版本的Apache服务器,可以在httpd.conf的尾部添加:

TraceEnable off

2)如果你使用的是Apache:

– 确认rewrite模块激活(httpd.conf,下面一行前面没有#):

LoadModule rewrite_module modules/mod_rewrite.so

– 在各虚拟主机的配置文件里添加如下语句:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]

注:可以在httpd.conf里搜索VirtualHost确定虚拟主机的配置文件。

怎样关闭mysql远程连接

2015年6月9日

当使用360网站安全在线工具(http://webscan.360.cn)对网站扫描时:

网站数据库泄露风险 共检测290项 正在检测... Mysql可远程连接

可以在mysql自带的系统数据库‘mysql’里查找一个叫做user的表。user表里就有一个字段叫做localhost。如果这里还有别的字段,并且 user 为 remote 或者 一个用户名为% 就说明还有用户在用远程连接。把这样的用户删掉,只保留LOCALHOST就好了。

操作过程:

1. 登录 Mysql-Server 连接本地 mysql

mysql -h localhost -u root -p
Enter password:
mysql>

2、修改 Mysql-Server 用户配置

mysql> USE mysql;
Database changed
mysql> SELECT User, Password, Host FROM user;
+------+----------+-----------+
| User | Password | Host      |
+------+----------+-----------+
| root |          | localhost |
| root |          | %         |
+------+----------+-----------+
2 row in set (0.00 sec)

3、删除第二条记录

mysql>Delete FROM user Where Host="%";

4、验证删除是否成功

mysql> SELECT User, Password, Host FROM user;
+------+----------+-----------+
| User | Password | Host      |
+------+----------+-----------+
| root |          | localhost |
+------+----------+-----------+
1 row in set (0.00 sec)

只剩下一条记录表示删除成功。

如果需要开启mysql远程连接:

首先登录:

mysql -u root -h localhost -p
use mysql #打开mysql数据库
#将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip
update user set host='%' where user='root' and host='localhost';
flush privileges; #刷新权限表,使配置生效

然后我们就能远程连接我们的mysql了。

3、如果您想关闭远程连接,恢复mysql的默认设置(只能本地连接),您可以通过以下步骤操作:

mysql -u root -h localhost -p
use mysql #打开mysql数据库
#将host设置为localhost表示只能本地连接mysql
update user set host='localhost' where user='root';
flush privileges; #刷新权限表,使配置生效

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

参考

一. 改表法

不允许帐号从远程登陆,只能在localhost。登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,将”localhost”改成”%”。

mysql -u root -pvmwaremysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

二. 授权法

比如想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;

如果你想允许用户myuser从ip为192.168.0.6的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.0.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;

如果你想允许用户myuser从ip为192.168.0.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.0.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;

三. 进入MySQL服务器

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION //赋予任何主机访问数据的权限
mysql>FLUSH PRIVILEGES //修改生效
mysql>EXIT //退出MySQL服务器

下面就可以在其它任何的主机上以root身份登录MySQL了。

当mysql禁止远程连接时数据库远程管理的解决方法:

备份MYSQL数据库经常会遇到数据库版本问题,数据库内容编码格式问题,数据库远程连接被限制问题,诸多问题,所以数据库备份起来也特别麻烦。

由于PHP和MYSQL经常在一台服务器上面,为了安全经常是禁止远程访问数据库的,这样备份数据库通常得传备份工具到网站空间上面连接。这样麻烦还要受数据库版本编码格式影响,而Navicat的HTTP通道连接解决了这一难题。

Navicat使用HTTP通道连接备份数据库方法:首先打开Navicat点新建连接,然后在常规选项卡里面依次输入:连接名,主机名,商品,用户名,密码。然后点HTTP选项卡,勾选使用HTTP通道,接下来把Navicat根目录下面的ntunnel_mysql.php文件复制到要备份的网站根目录。通道地址就写:网址/ntunnel_mysql.php,点连接测试,确定即可。