Je parle beaucoup sur ingnu du fait que Google c’est le mal, qu’il faut utiliser des alternatives libres, et que le Cloud, c’est de la merde. Pour être tout à fait cohérent, il me fallait proposer des articles traitant concrètement de la mise en place de ces alternatives, et c’est pour cela que j’ai créé la rubrique “Créer son propre cloud”, dont cet article constitue le premier maillon pour vous aider à construire votre serveur grâce aux Logiciels Libres.
Il y a quatre prérogatives : n’utiliser que des Logiciels Libres, assurer la confidentialité de vos données, assurer la sécurité de votre serveur, s’affranchir de tout service géré par une entreprise.
Nous considérerons que vous disposez déjà d’un système GNU/Linux, de préférence fraîchement installé, brut de décoffrage. Je me baserai sur un système Debian GNU/Linux (que je maîtrise bien mieux que les autres), il faudra alors adapter certaines de mes notes à votre cas précis (notamment en ce qui concerne les commandes d’installation de paquets).
La toute première étape après l’installation du système d’exploitation est d’imposer une politique de sécurité stricte. Nous commençons donc par créer un script permettant la mise en place d’un pare-feu et qui s’exécutera à chaque démarrage de la machine.
mkdir /scripts
cd /scripts
Le répertoire /scripts que nous venons de créer contiendra un certains nombre de fichiers, que nous créerons au fil des articles. Dans un premier temps, nous ne créons que le script du firewall :
nano firewall
#!/bin/sh
IPT=/sbin/iptables
IF_EXT=eth0
IP_SSH=xxx.xxx.xxx.xxx
${IPT} -t mangle -F
${IPT} -t nat -F
${IPT} -F
${IPT} -t mangle -X
${IPT} -t nat -X
${IPT} -X
${IPT} -Z
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
${IPT} -P INPUT DROP
${IPT} -P OUTPUT ACCEPT
${IPT} -P FORWARD ACCEPT
${IPT} -A FORWARD -i lo -o lo -j ACCEPT
${IPT} -A INPUT -i lo -j ACCEPT
${IPT} -A OUTPUT -o lo -j ACCEPT
${IPT} -A INPUT -p tcp ! --syn -m state --state NEW,INVALID -j REJECT
${IPT} -N SPOOFED
${IPT} -N SERVICES
${IPT} -A SPOOFED -s 127.0.0.0/8 -j DROP
${IPT} -A SPOOFED -s 169.254.0.0/12 -j DROP
${IPT} -A SPOOFED -s 172.16.0.0/12 -j DROP
${IPT} -A SPOOFED -s 192.168.0.0/16 -j DROP
${IPT} -A SPOOFED -s 10.0.0.0/8 -j DROP
${IPT} -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
${IPT} -A SERVICES -p tcp --dport 22 -s ${IP_SSH} -j ACCEPT
##### Configuration personnalisée #####
##### Fin : Configuration personnalisée #####
${IPT} -A OUTPUT -j ACCEPT
${IPT} -A INPUT -m state --state ESTABLISH,RELATED -j ACCEPT
${IPT} -A INPUT -j SPOOFED
${IPT} -A INPUT -i ${IF_EXT} -j SERVICES
#################################
# Anti spam #
#################################
FILE="/tmp/drop.lasso"
URL="http://www.spamhaus.org/drop/drop.lasso"
[ -f $FILE ] && /bin/rm -f $FILE || :
cd /tmp
wget $URL
blocks=$(cat $FILE | egrep -v '^;' | awk '{ print $1}')
${IPT} -N droplist
for ipblock in $blocks
do
${IPT} -A droplist -s $ipblock -j LOG --log-prefix "DROP List Block"
${IPT} -A droplist -s $ipblock -j DROP
done
${IPT} -I INPUT -j droplist
${IPT} -I OUTPUT -j droplist
${IPT} -I FORWARD -j droplist
/bin/rm -f $FILE
Dans un premier temps, on défini quelques variables. La plus importante est IP_SSH, c’est votre adresse IP, l’adresse depuis laquelle vous allez vous connecter au serveur via ssh.
Notice : Il est vital de s’assurer que cette variable est correctement renseignée, sans cela, vous serez incapable d’accéder au serveur une fois le script exécuté !
Ensuite, on purge les règles (pour pouvoir exécuter plusieurs fois le fichier sans que cela ne les alourdisse), on met en place une politique par défaut (rien ne doit pouvoir rentrer sans autorisation), on créé les chaînes SPOOFED et SERVICES qui vont nous permettre de séparer le trafic et de sécuriser les accès, on met en place des règles personnalisées (pour le moment, aucune), et on installe un blocage du SPAM en bonus.
Théoriquement, ce script est tout à fait utilisable tel quel. Au fil des articles, on ajoutera des directives spécifiques au niveau du commentaire “Configuration personnalisée”. On se servira de la chaîne SERVICES pour y affecter les services hébergés par notre machine.
Important : Le “bonus block” relatif au spam va nous permettre, directement au niveau d’iptables, de dropper purement et simplement toute tentative de connexion depuis les adresses fournies par spamhaus.
Dans le cas extrême où vous vous retrouviez bloqué, incapable de vous connecter en ssh à votre serveur, essayez de voir si votre hébergeur vous offre la possibilité de passer par un KVM virtuel. Cela vous permettra de reprendre la main sur votre serveur le temps de configurer correctement le pare-feu. Et dans le cas où le KVM est indisponible, voyez si votre hébergeur vous propose de démarrer un système de secours. Pour information, les deux possibilités vous sont offertes chez online.
Il ne reste plus qu’à enregistrer, chmoder, exécuter, et patienter jusqu’au prochain article :
chmod +x firewall
./firewall
Richard Dern
Échanger autour de ce texte
Si vous souhaitez réagir publiquement, un fil dédié vous attend.
Ouvrir le fil de discussion