在Debian Etch上防止使用GreenSQL进行MySQL注入攻击
版本1.0
作者:Falko Timme
GreenSQL (或greensql-fw
)是用于过滤SQL注入攻击的MySQL数据库的防火墙。 它作为反向代理,即它需要SQL查询,检查它们,将它们传递到MySQL数据库,并从MySQL数据库返回结果。 它附带一个Web界面(称为greensql-console
),以便您可以通过Web浏览器来管理GreenSQL。 本指南介绍如何在Debian Etch服务器上安装GreenSQL及其Web界面。
我不会保证这将为您工作!
1初步说明
我已经在已经安装了MySQL和Apache的Debian Etch服务器上测试过这个。 我将使用文件root / var / www / web1 / web
的虚拟主机www.example.com
来安装GreenSQL Web界面。
2安装greensql-fw
GreenSQL项目为Debian Etch提供了二进制包, 网址为http://www.greensql.net/public/releases/Debian_Etch/ (您可以在http://www.greensql.net/public/releases/上找到其他发行版的软件包 ) 。 下载并安装最新的.deb软件包,如下所示:
cd /tmp
wget http://www.greensql.net/public/releases/Debian_Etch/i386/greensql-fw_0.9.2_i386.deb
dpkg -i greensql-fw_0.9.2_i386.deb
(这是一个i386
系统。)
您将看到以下问题:
用于存储GreenSQL配置数据库(MySQL服务器)的服务器的名称是什么?
< - localhost
什么是GreenSQL配置的数据库名称?
< - greendb
您要自动设置数据库和表吗?
< - 是的
什么是MySQL管理员的用户名?
< - 根
输入MySQL管理员密码
< - yourrootsqlpassword(将其替换为您的根MySQL密码)
确认此密码
< - yourrootsqlpassword(将其替换为您的根MySQL密码)
什么是GreenSQL数据库用户名?
< - 绿色
什么是GreenSQL用户密码?
< - greensqlpassword(将其替换为您选择的绿色MySQL用户的密码)
安装后,greensql-fw将在端口3305
上运行127.0.0.1
(默认的MySQL端口为3306
)。 您可以通过运行来检查
netstat -tap | grep greensql
server1:~# netstat -tap | grep greensql
tcp 0 0 localhost.localdom:3305 *:* LISTEN 4499/greensql-fw
server1:~#
要测试greensql-fw
是否正常工作,您可以尝试通过GreenSQL代理连接到MySQL:
mysql -h 127.0.0.1 -P 3305 -u root -p
输入您的MySQL根密码,您应该登录。现在可以使用greensql-fw
。
如果您希望Web应用程序通过greensql-fw连接到MySQL,则必须更改其MySQL设置。 例如,如果您的PHP应用程序在其配置文件(例如config.php)中包含以下行:...
[...] $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); [...] |
...把它改成
[...] $link = mysql_connect('127.0.0.1:3305', 'mysql_user', 'mysql_password'); [...] |
(重要的是连接到127.0.0.1
而不是本地主机
,因为greensql-fw
支持TCP连接,而不支持Unix套接字!)
3安装greensql-console
GreenSQL Web界面( greensql-console
)可以从http://sourceforge.net/project/showfiles.php?group_id=199511&package_id=236915下载 。 要安装在/ var / www / web1 / web中
,我们进行如下操作:
cd /var/www/web1/web
wget http://heanet.dl.sourceforge.net/sourceforge/greensql/greensql-console-0.4.2.tar.gz
tar xvfz greensql-console-0.4.2.tar.gz
这将在/ var / www / web1 / web
中创建子目录greensql-console
。 接下来我们必须调整greensql-console
配置:
cd greensql-console
vi config.php
在config.php中
,确保您填写了绿色
MySQL用户的正确密码(在$ db_pass
行中):
<? # Uncomment the following line to switch to demo version #$demo_version = 1; # greensql version $version = "0.4.0"; # MySQL Database IP address $db_host = "127.0.0.1"; #MySQL Database Port Value. $db_port = 3306; # MySQL database name used to store greensql confiuration and alerts $db_name = "greendb"; # MySQL database user and password $db_user = "green"; $db_pass = "greensqlpassword"; # If you run greensql-fw service on the same computer you can specify # location of it's log file. It will be visible as part of the console. $log_file = "/var/log/greensql.log"; # Number of lines to show when viewing log file. $num_log_lines = 200; # Generated web pages cache $cache_dir = "templates_c"; ?> |
然后使templates_c /
目录world-writable:
chmod 777 templates_c/
打开浏览器并转到http://www.example.com/greensql-console
。 用用户名admin
和密码pwd
登录:
在GreenSQL Web界面中,您现在可以看到哪些MySQL查询被阻止,并且可以使用什么分数,您可以将MySQL查询列入白名单,告诉greensql-fw
要阻止的内容以及每个数据库允许的内容,观察日志或更改管理
密码对于GreenSQL的Web界面:
如果要更改greensql-fw为某些测试分配的点,可以通过修改greensql-fw
配置文件/etc/greensql/greensql.conf来实现
。 更改文件后,必须重新启动greensql-fw
:
/etc/init.d/greensql-fw stop
/etc/init.d/greensql-fw start
( 重启
命令在我的系统上不起作用,似乎挂起来了)
您可以在/var/log/greensql.log
中找到GreenSQL日志。
4链接
- GreenSQL: http : //www.greensql.net/
- MySQL: http : //www.mysql.com/
- Debian: http : //www.debian.org/