À propos

mini_pc_ibm_8364.jpg J'explique (rapidement) ici comment j'ai mis en place mon petit serveur perso.
Ce serveur est un Mini PC IBM 8364:
Processeur : Pentium MMX (266MHz)
Ram : 2×128 Mo
DD : 10 Go

Installation de Debian testing (Lenny)

Mon pc ne possède ni lecteur CD, ni lecteur disquette. Par ailleurs, la carte mère ne permet pas le boot à partir de l'usb. Sur le PC, j'avais déjà Xubuntu 6.06 d'installer. J'ai donc utilisé Xubuntu pour installer Debian par netinstall. D'abord, j'ai modifié le boot de Xubuntu (/boot/grub/menu.list) en ajoutant les lignes suivantes :

title	Lenny net install
kernel (hd0,0)/boot/linux  vga=791 priority=low
initrd  (hd0,0)/boot/initrd.gz  --
boot

J'ai téléchargé linux et initrd.gz ici et les placé dans le dossier /boot/. Ensuite, j'ai redémarré le pc et booté avec Lenny net install. Après, il suffit de suivre les étapes (je ne les détaille pas ici).

Configuration pour un IP statique

Pour un serveur, il est préférable de lui donner une adresse IP fixe. Sur un serveur, on n'installe généralement pas d'interface graphique. Donc, tout se passe en ligne de commande. On édite le fichier /etc/network/interfaces :

# vim /etc/network/interfaces

Commenter ou enlever les lignes qui correspondent au DHCP :

allow-hotplug eth0
iface eth0 inet dhcp

Ensuite, on ajoute les lignes suivantes:

auto eth0
iface eth0 inet static
address 192.168.1.20
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1

Ça mérite une petite explication.
auto eth0 : activation automatique de l'interface;
iface eth0 : configuration l'interface en statique;
address 192.168.1.20 : on met ici l'adresse IP fixe.

Accès à distance au serveur

Pour accéder à distance à mon serveur, j'utilise ssh.

# apt-get install openssh-server

Ainsi, on peut accéder en console :

$ ssh login@adresseIP

Pour un transfert de beaucoup de fichier, on peut utiliser le protocole SFTP qui est basé sur ssh. On peut utiliser filezilla pour cela. On peut accéder au serveur à partir d'internet en redirigeant le port 22 vers le serveur au niveau du routeur.

Pour contrer des éventuelles attaques de type force-brute, il est vivement conseillé d'installer le paquet fail2ban :

# apt-get install fail2ban

D'ailleurs, il est vivement conseillé de ne pas autoriser de s'identifier par ssh en root. Pour cela, éditer le fichier /etc/ssh/sshd_config et modifier la ligne 20 comme suite :

PermitRootLogin no

Sauvegarde avec rsync via SSH

Rsync (remote synchronization) est, comme son nom le présage, un logiciel de synchronisation de fichiers. Il est fréquemment utilisé pour la sauvegarde.

Dans cette partie, j'explique l'utilisation de rsync avec SSH. Il est tout à fait possible d'utiliser rsync avec un daemon.

Installation

Rien de plus simple pour installer ce logiciel sous notre serveur :

# apt-get install rsync

Utilisation

Pour l'utiliser, vous avez deux possibilités :

  • Soit vous lancez la sauvegarde à partir du serveur :
rsync -av SRC USER@HOST_SERVEUR_DE_SAUVEGARDE:DEST
  • Soit à partir du serveur de sauvegarde :
rsync -av USER@HOST:SRC DEST

Pour plus d'informations sur les options, regardez le man.

Authentification par clé SSH

A chaque fois qu'on lance la sauvegarde, il faut rentrer le mot de passe. Pour éviter cela, on crée une clé SSH à partir de l'ordinateur qui lance la commande rsync :

ssh-keygen -t dsa -f rsync-key

Lorsqu'il demande de rentrer un mot de passe, laisser vide. Cela va générer deux fichiers (rsync-key et rsync-key.pub). Vérifier bien que vous êtes le seul à avoir le droit de lecteur sur le fichier rsync-key. Copier le fichier rsync-key.pub dans le dossier ~/.ssh/ de l'autre machine. Pour autoriser les connexions ssh avec cette clé, il faut l'indiquer dans le fichier ~/.ssh/authorized_keys. Créer ce fichier s'il n'existe pas :

$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

Et,

$ cat ~/.ssh/rsync-key.pub >> ~/.ssh/authorized_keys

Pour ne plus avoir à taper le mot de passer, ajouter l'option –rsh='ssh -i rsync-key' à la commande de rsync.

Sécurisation

Netfilter et Iptables

Netfilter est un module de Linux qui remplit les fonctions de pare-feu, de traduction d'adresse et d'historisation du trafic réseau. Et, Iptables est l'interface permettant de configurer Netfilter.

L'objectif est de bloquer par défaut tout le trafic entrant et ensuite d'autoriser au cas par cas le trafic pour les services qu'on souhaite (web, mail…). Pour cela, il faut créer des règles.

La commande suivante permet de visualiser les règles actuelles :

# iptables -L

Par défaut, tous les trafics est autorisés.

On crée un fichier qui va contenir les nouvelles règles (iptables.rules par exemple). Voilà un exemple de règles basiques :

*filter

# Autoriser le trafic local et bloquer le trafic ne passant pas par l'interface lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT

# Autoriser le trafic entrant d'une connexion déjà établie
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Autoriser tout le trafic sortant
-A OUTPUT -j ACCEPT

# Autoriser les connexions HTTP and HTTPS
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

# Autoriser les connexions SSH
-A INPUT -p tcp --dport 22 -j ACCEPT

# Autoriser les requêtes ICMP (ping)
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# Bloquer le reste du trafic
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

Pour activer ces nouvelles règles, il suffit de faire :

# iptables-restore < iptables.rules

Pour activer ces reègles au démarrage du serveur, il suffit de créer un script (nommé par exemple iptables-script) dans /etc/init.d/ dans le format est la suivante :

#!/bin/sh
case "$1" in
  start|"") 
        # commandes lancees au démarrage
        iptables-restore < /root/iptables.rules
        ;;
  stop)   
        # à l'arret
        exit 0
        ;;
  *)
        exit 3
        ;;
esac

Puis rendre le script exécutable :

chmod +x /etc/init.d/iptables-script

Enfin, pour que le script soit lancé au démarrage, il faut le rajouter aux runlevels avec la commande update-rc.d :

update-rc.d iptables-script defaults 99
 
serveur_perso.txt · Dernière modification: 2010/04/28 05:23 par tuxgasy
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante:CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki