Archives pour décembre, 2010

Réseau : firewall sur mesure pour installation Proxmox / OpenVZ

Malgré quelques solutions existantes ici et , j’ai opté pour un pare-feu spécifique afin de protéger mes serveurs virtuels sous Proxmox / OpenVZ. J’ai donc utilisé FirewallBuilder pour le générer.  Une template réutilisable est disponible au téléchargement en fin d’article.

Les serveurs virtuels (VPS) sont placés sur le réseau privé 192.168.0.0/24, où du NAT est appliqué pour la redirection de ports dans le cas où une seule IP publique est disponible. Ainsi, le bridge vmbr0 est utilisé pour l’accès public – vous y ajouterez vos IP publiques supplémentaires – et le bridge vmbr1 pour les communications entre les VPS et l’hôte.

De base, les flux sortants DNS / SMTP sont seulement autorisés pour l’hôte réel. Les VPS doivent donc utiliser le serveur DNS & SMTP de l’hôte réel. Par sécurité, j’ai mappé l’accès à l’interface Proxmox sur le port 4443 (le HTTPS standard étant alors récupéré par le VPS web). Une blacklist est configurée, que vous pouvez manipuler en éditant le fichier /etc/firewall-bad_hosts (règle n°0) afin de bloquer d’éventuels attaquants. N’oubliez pas de créer ce fichier !

Liste des interfaces réseaux :

  • eth0 : utilisée par vmbr0.
  • vmbr0 : bridge sur eth0, utilisé pour les IP publiques.
  • vmbr1 : bridge sans port, utilisé pour le réseau dédié aux VPS.
  • venet0 : interface réseau présente dans chaque VPS.

Listes des hôtes :

  • proxmox.my.domain (192.168.0.254) : IP privée de l’hôte réel, permettant aux VPS d’utiliser les services communs DNS et SMTP proposés par l’hôte réel.
  • vps-www.my.domain (192.168.0.1) : serveur virtuel dédiée aux sites Web.
  • vps-sql.my.domain (192.168.0.2) : serveur virtuel dédié au serveur SQL.

Listes des redirections de ports :

  • 80/TCP => vps-www.my.domain – 80/TCP
  • 443/TCP => vps-www.my.domain – 443/TCP
  • 2222/TCP => vps-www.my.domain – 22/TCP (accès SSH)
  • 4443/TCP => hôte réel 443/TCP (interface de gestion Proxmox)

Pour finir, une fois effectuées les adaptations à votre configuration réseau, je vous conseille de modifier la règle n°4 pour restreindre l’accès SSH + interface Proxmox à vos IP de connexion Internet. Une fois effectuée, vous pourrez d’ailleurs ajouter le flux VNC pour l’administration Proxmox.

Configuration réseau :

# cat /etc/network/interfaces
# network interface settings
auto lo
iface lo inet loopback

iface eth0 inet manual

iface eth1 inet manual

auto vmbr0
iface vmbr0 inet static
 address  80.80.80.80
 netmask  255.0.0.0
 gateway  80.80.80.1
 broadcast  80.255.255.254
 bridge_ports eth0
 bridge_stp off
 bridge_fd 0
 network 80.0.0.0

auto vmbr1
iface vmbr1 inet static
 address  192.168.0.254
 netmask  255.255.255.0
 bridge_ports none
 bridge_stp off
 bridge_fd 0

Template firewall pour Proxmox / OpenVZ : [Téléchargement introuvable]

ez Find : script de démarrage Solr pour Debian

Pour pouvoir lancer l’instance Solr d’eZ Find (extension eZ Publish) au démarrage de votre serveur Debian, voici le script /etc/init.d/solr à mettre en place :

### BEGIN INIT INFO
# Provides:          solr
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the solr server
# Description:       starts solr using start-stop-daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=solr
DESC=Solr

USER=solr
GROUP=solr
SOLR_HOME=/usr/local/solr
PARAMETERS="-jar start.jar"
DAEMON=/usr/bin/java
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

test -x $DAEMON || exit 0

set -e

. /lib/lsb/init-functions

d_start() {
 start-stop-daemon --start --pidfile $PIDFILE --chuid $USER:$GROUP --chdir $SOLR_HOME --background --make-pidfile --exec $DAEMON -- $PARAMETERS
}

d_stop() {
 start-stop-daemon --stop --quiet --pidfile $PIDFILE --name java
 rm -f $PIDFILE
}

d_status() {
 if [ -f "$PIDFILE" ] && ps `cat $PIDFILE` >/dev/null 2>&1; then
 return 0
 else
 return 1
 fi
}

case "$1" in
 start)
 echo -n "Starting $DESC: "
 if d_status; then
 echo "$NAME is already running."
 exit 1
 fi
 d_start
 sleep 1
 if d_status; then
 echo "OK"
 else
 echo "KO"
 exit 1
 fi
 ;;
 stop)
 echo -n "Stopping $DESC: "
 if d_status; then
 d_stop
 sleep 1
 if d_status; then
 echo "$NAME is still running"
 exit 1
 else
 echo "OK"
 fi
 else
 echo " KO"
 fi
 ;;
status)
 if d_status; then
 echo "$NAME is running (PID: `cat $PIDFILE`)"
 else
 echo "$NAME is not running"
 fi
 ;;
 restart|force-reload)
 echo -n "Restarting $DESC"
 d_stop
 sleep 1
 d_start
 echo "."
 ;;
 *)
 echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
 exit 1
 ;;
esac

exit 0

L’installation du serveur Jetty + Solr est effectuée dans /usr/local/src et l’utilisateur solr est utilisé pour exécuter le serveur. Reste à activer la prise en charge du script :

# update-rc.d solr defaults
Haut de page