Outils personnels
Vous êtes ici : Accueil GNU / Linux Debian Installer le parefeu de base de données GreenSQL sur Debian
Actions sur le document
  • Send this page to somebody
  • Print this page
  • Add Bookmarklet

Installer le parefeu de base de données GreenSQL sur Debian

Par Pierre-Yves Landuré - Dernière modification 05/11/2010 12:42

GreenSQL est un outil de prévention des injections SQL fonctionnement sur le principe de serveur mandataire. Il se glisse entre votre serveur MySQL et vos application pour protéger vos base de données des utilisateurs malveillants.

Remarque : Ce guide nécessite le script mysql-tools disponible dans le guide Installer et configurer MySQL sur Debian.

Note personnelle

Si GreenSQL est un outil très puissant pour limiter les attaques sur votre serveur, c'est avant tout car il est très limitatif. J'ai cessé de l'utiliser car il demande énormément de temps pour créer les règles de liste blanche application par application.

Installation

Renseignez la version que vous souhaitez installer :

VERSION="1.3.0"

Téléchargez le paquet adapté à votre architecture :

ARCH="$(command dpkg --print-architecture)"
OS="Debian_5.0"
if [ -z "$(command apt-cache search libevent1)" ]; then
  # For Debian Squeeze (and Ubuntu).
  OS="xUbuntu_10.04"
fi
command wget "http://www.greensql.net/download/get?os=${OS}&platform=${ARCH}&filename=greensql-fw_${VERSION}_${ARCH}.deb" \
    --output-document="/tmp/greensql-fw.deb"

Installez les dépendances de GreenSQL :

if [ -z "$(command apt-cache search libevent1)" ]; then
  # For Debian Squeeze (and Ubuntu).
  command apt-get install libevent-1.4-2
else
  command apt-get install libevent1
fi

Créez un utilisateur système greensql (l'utilisateur créé par le paquet Debian n'est pas système) :

command adduser --system --shell /bin/sh --home /var/lib/greensql greensql

Installez GreenSQL :

DEBIAN_FRONTEND='noninteractive' command dpkg -i "/tmp/greensql-fw.deb"

Créez la base de données pour votre installation GreenSQL (le mot de passe demandé est celui de votre utilisateur "root" MySQL) :

MYSQL_PARAMS=$(command mysql-tools create-db GREENSQL)

Récupérez les paramètres de la nouvelle base de données :

MYSQL_HOST="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_HOST" \
    | cut --delimiter="=" --fields="2-")"
MYSQL_DB="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_DB" \
    | cut --delimiter="=" --fields="2-")"
MYSQL_USER="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_USER" \
    | cut --delimiter="=" --fields="2-")"
MYSQL_PASSWORD="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_PASSWORD" \
    | cut --delimiter="=" --fields="2-")"
echo "${MYSQL_PARAMS}"

Initialisez la base de données de GreenSQL :

command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \
     --host="${MYSQL_HOST}" "${MYSQL_DB}" < "/usr/share/doc/greensql-fw/greensql-mysql-db.txt"

Mettez à jour le fichier de configuration de GreenSQL :

command sed -i \
    -e "s/.*dbhost.*/dbhost=${MYSQL_HOST}/" \
    -e "s/.*dbname.*/dbname=${MYSQL_DB}/" \
    -e "s/.*dbuser.*/dbuser=${MYSQL_USER}/" \
    -e "s/.*dbpass.*/dbpass=${MYSQL_PASSWORD}/" \
  "/etc/greensql/greensql.conf"

Redémarrez votre serveur GreenSQL :

/etc/init.d/greensql-fw restart

GreenSQL est maintenant installé et écoute sur le port 3305.

Pour aller plus loin

Désactiver le proxy PostgreSQL

Si vous ne souhaitez pas utiliser GreenSQL pour PostgreSQL, désactivez la configuration concernée de GreenSQL :

MYSQL_HOST="$(command grep -e "^dbhost" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_DB="$(command grep -e "^dbname" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_USER="$(command grep -e "^dbuser" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_PASSWORD="$(command grep -e "^dbpass" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_PORT="$(command grep -e "^dbport" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
if [ -z "${MYSQL_PORT}" ]; then
  MYSQL_PORT="3306"
fi
command mysql --host="${MYSQL_HOST}" --port="${MYSQL_PORT}" \
   --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" "${MYSQL_DB}" \
   --execute="DELETE FROM proxy WHERE dbtype='pgsql';"
/etc/init.d/greensql-fw restart

Installer GreenSQL sur le port par défaut de MySQL

Si vous souhaitez que GreenSQL écoute sur le port par défaut de MySQL, ceci afin de systématiser simplement son utilisation, échangez le port d'écoute de MySQL avec celui de GreenSQL :

command sed -i -e '/\[mysqld\]/,/^\(port[\t ]*=\).*$/{s/^\(port[\t ]*=\).*/\1 3305/}' \
    "/etc/mysql/my.cnf"
MYSQL_HOST="$(command grep -e "^dbhost" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_DB="$(command grep -e "^dbname" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_USER="$(command grep -e "^dbuser" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_PASSWORD="$(command grep -e "^dbpass" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_PORT="$(command grep -e "^dbport" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
if [ -z "${MYSQL_PORT}" ]; then
  MYSQL_PORT="3306"
fi
command mysql --host="${MYSQL_HOST}" --port="${MYSQL_PORT}" \
   --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" "${MYSQL_DB}" \
   --execute="UPDATE proxy SET frontend_port=3306, backend_port=3305 WHERE dbtype='mysql';"
command sed -i -e 's/.*dbport.*/dbport=3305/' "/etc/greensql/greensql.conf"
/etc/init.d/greensql-fw stop
/etc/init.d/mysql restart
/etc/init.d/greensql-fw start

Rendre accessible MySQL protégé par GreenSQL pour le réseau local

Par défaut, votre serveur MySQL n'est accessible que pour la machine sur laquelle il est installé. Si vous souhaitez étendre son utilisation à d'autre machine, faites en sorte que GreenSQL écoute sur toute les interfaces réseau, et plus seulement localhost :

MYSQL_HOST="$(command grep -e "^dbhost" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_DB="$(command grep -e "^dbname" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_USER="$(command grep -e "^dbuser" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_PASSWORD="$(command grep -e "^dbpass" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_PORT="$(command grep -e "^dbport" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
if [ -z "${MYSQL_PORT}" ]; then
  MYSQL_PORT="3306"
fi
command mysql --host="${MYSQL_HOST}" --port="${MYSQL_PORT}" \
   --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" "${MYSQL_DB}" \
   --execute="UPDATE proxy SET frontend_ip='0.0.0.0' WHERE dbtype='mysql';"
/etc/init.d/greensql-fw restart

Activer l'interface Web d'administration de GreenSQL

Installez un serveur HTTP sur votre serveur si il n'y en a pas déjà un présent. Sinon, installez LigHTTPd en suivant mon guide Installer Lighttpd et PHP 5 sur Debian.

Copiez les sources de l'interface Web de GreenSQL :

command cp -r "/usr/share/greensql-fw" "/opt/greensql-fw"

Créez un dossier de cache pour l'interface d'administration :

command mkdir --parent "/var/cache/greensql-fw"
command chown -R www-data:www-data "/var/cache/greensql-fw"

Configurez l'interface d'administration pour quelle se connecte à la base de données de configuration de GreenSQL :

MYSQL_DB="$(command grep -e "^dbname" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_USER="$(command grep -e "^dbuser" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
MYSQL_PASSWORD="$(command grep -e "^dbpass" /etc/greensql/greensql.conf \
    | cut --delimiter="=" --fields="2-")"
command sed -i \
    -e "s/^\$db_name.*/\$db_name = \"${MYSQL_DB}\";/" \
    -e "s/^\$db_user.*/\$db_user = \"${MYSQL_USER}\";/" \
    -e "s/^\$db_pass.*/\$db_pass = \"${MYSQL_PASSWORD}\";/" \
    -e 's|^$cache_dir.*|$cache_dir = "/var/cache/greensql-fw";|' \
  "/opt/greensql-fw/config.php"

Il vous reste à configurer votre serveur HTTP pour afficher cette interface d'administration. Si vous utilisez Lighttpd, vous pouvez utiliser le code suivant :

if [ -d /etc/lighttpd/conf-available ]; then
  command echo '# Alias for greensql-fw directory
alias.url += ( 
  "/greensql-fw" => "/opt/greensql-fw/",
)' > /etc/lighttpd/conf-available/50-greensql-fw.conf
  command lighty-enable-mod greensql-fw
  /etc/init.d/lighttpd force-reload
fi

Votre interface d'administration GreenSQL est alors accessible à l'adresse fournie par la commande (résultat à adapter à votre configuration) :

echo "http://${HOSTNAME}/greensql-fw"

Les identifiants pour vous y connecter sont :

  • Nom d'utilisateur : admin
  • Mot de passe : pwd

Veillez à changer de mot de passe dès votre première connexion.

Remerciements

BlogBang
Navigation
 

Réalisé avec Plone

Ce site respecte les normes suivantes :

Wikio