Sécuriser son serveur dédié avec Iptables, fail2ban et Rkhunter

parefeu serveur

Dans ce tutoriel vidéo, nous allons voir comment sécuriser son serveur dédié (sommaire des tutos ici) en configurant 3 logiciels incontournables :

  • Iptables : c’est le Firewall des systèmes Linux, il est difficile à manier la première fois mais on peut faire des réglages très fin. Dans ce tutoriel je vous propose une série de règles classiques pour un serveur web.
  • Fail2ban : c’est un système qui ban automatiquement tous les utilisateurs qui essayent de se connecter plusieurs fois de suites sans succès sur notre serveur. Ça permet d’éviter les attaques de type brute force.
  • Rkhunter : c’est un logiciel qui nous prévient dés que des fichiers sensibles sont modifiés. Autrement dit, un bon détecteur de Backdoor et Rootkit.

Et en bonus, je vous donnerais une astuces pour être prévenue par email dés que quelqu’un se connecte en SSH sur votre serveur. À la fin du tutoriel vous aurez un serveur Web déjà bien sécurisé, mais pas assez à mon goût, d’où la seconde vidéo qui sécurise un peu plus les scripts php avec 2 modules pour apache.

Mise en place du Firewall : Iptables

Sans doute la partie la plus importe du tutoriel, la mise en place du Firewall. Normalement il est installé par défaut mais si vous avez des problèmes avec les règles, ça vient sans doute du noyau modifié d’OVH, mais je l’ai déjà expliqué dans la première vidéo.

Fonctionnement de Iptables

Je pense qu’un mini tutoriel sur Iptables, avec les arguments les plus utilisés et ces principes de bases ne fera pas de mal. Je vais faire ça sous forme de liste pour que cela soit plus simple, le but n’étant pas d’être exhaustif.

Si vous faites un iptables -L, vous verez les règles qui définissent votre firewall. En regardant le résultat de plus près, on aperçoit 3 types de chaînes :

  • INPUT : correspond aux règles sur le traffic entrant du serveur
  • OUTPUT : correspond aux règles pour le traffic sortant du serveur
  • FORWARD : les règles permettant de faire des redirections

On constate également que l’on a la politique du firewall sur « ACCEPT » pour toutes les chaînes et ce n’est pas très bon au niveau de la sécurité. Notre démarche va être de tout bloquer (DROP) pour ensuite débloquer petit à petit les ports pour les services que l’on utilise.

Voici une liste des arguments que l’on utilisent fréquemment :

  • -t : préciser sur quel table on travaille, par défaut c’est filter qui contient le input, output et forward
  • -A : ajoute une règles en fin de chaîne
  • -p : précise le protocole de la règle (généralement tcp, udp ou icmp pour le ping)
  • –dport : précise le port de destination
  • -j : précise la politique à appliquer (accept ou drop la plupart du temps)
  • -F : efface toutes les règles (F = Flush)
  • -X : efface la chaîne

Configuration des règles

Pour mettre en place un Firewall sur Linux, la plupart du temps on crée un fichier bash avec toutes les commandes iptables que l’on souhaite mettre. Dans mon cas, je remets Iptables à 0, puis je bloque tout, puis je débloque petit à petit les services que j’utilise. Par conséquent, l’ordre est important ! Voici le fichier utilisé pendant la vidéo, n’oubliez pas de modifier le numéro de port pour ssh ou sinon vous serez bloqué (un reboot hardware fera l’affaire pour vous débloquer).

#!/bin/sh
### BEGIN INIT INFO
# Provides:          Firewall maison
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:
# Default-Stop:
# X-Interactive:     false
# Short-Description: Firewall maison
### END INIT INFO

# Mise à 0
iptables -t filter -F
iptables -t filter -X
echo "Mise à 0"

# On bloque tout
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
echo "Interdiction"

# Ne pas casser les connexions établies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Autorise le loopback (127.0.0.1)
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo "Loopback"

# ICMP (le ping)
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
echo "Ping ok"

# SSH IN/OUT
iptables -t filter -A INPUT -p tcp --dport 1337 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 1337 -j ACCEPT
echo "SSH ok"

# DNS In/Out
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
echo "dns ok"

# NTP Out
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
echo "ntp ok"

# HTTP + HTTPS Out
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT

# HTTP + HTTPS In
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT
echo "http ok"

# FTP Out
iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 20 -j ACCEPT

# FTP In
# imodprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH
iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "ftp ok"

# Mail SMTP:25
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT

# Mail POP3:110
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT

# Mail IMAP:143
iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT

# Mail POP3S:995
iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT
echo "mail ok"

# Monit
iptables -t filter -A INPUT -p tcp --dport 4598 -j ACCEPT

# Webmin
iptables -t filter -A INPUT -p tcp --dport 10000 -j ACCEPT
echo "monitoring ok"

La partie supérieure (le gros bloque de commentaire, à l’exception du shebang qui est obligatoire) est optionnelle mais ça permet d’éviter des warnings dans les fichiers de logs. Au niveau de la difficulté, une fois qu’on à compris une ligne le reste vient tout seul. N’oubliez pas de donner les droits d’exécutions à ce fichier (chmod +x firewall) et de la placer dans le répertoire /etc/init.d/ et de l’activer au démarrage du serveur avec update-rc.d firewall defaults (mais assurez vous bien que le fichier fonctionne correctement avant !!)

J’en profite au passage pour vous donner mon script qui permet de bien remettre à 0 iptables en cas de soucis :

#!/bin/sh
echo "Flushing iptables rules..."
sleep 1
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

C’est tout du côté du Firewall. Si un jour vous installez des services supplémentaires et que ça ne fonctionne pas, n’oubliez pas de regarder du côté du Firewall, on a tendance à l’oublier lorsque la configuration est finie.

Ban automatique des kikoolol avec fail2ban

La plupart du temps, lorsqu’on essaye de pirater votre serveur, les pirates utilisent la méthode du brute force. C’est-à-dire qu’ils testent tous les mots de passe possible, en partant du plus probable (comme les mots du dictionnaire) au plus improbable (les suites de caractères aléatoires). Avec la puissance de calcul des ordinateurs actuels, ça fonctionne pas trop mal si votre mot de passe est simple. Heureusement on peut facilement le contrer en installant un système qui ban automatiquement les gens qui essayent de se connecter à mainte reprise sans y parvenir.

Configuration simple de fail2ban

Pour commencer, vous devez installer fail2ban avec la ligne de commande apt-get install fail2ban. Ensuite il est recommandé de laisser le fichier de configuration intacte et d’en faire une copie pour le modifier, donc cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.local et puis vi etc/fail2ban/jail.conf.local.

Pour activer un filtre, vous devez placer le champ enabled à true et éventuellement changer le maxretry (nombre de tentative avant le ban) , le bantime (temps de ban) et le port (surtout pour ssh).

Je vous recommande d’activer les filtres suivants : [ssh], [ssh-dos], [apache], [apache-multiport], [apache-noscript], [apache-overflows], [proftpd], [postfix], [couriersmtp] et [courierauth]. Ces filtres sont activés par défaut, vous n’avez rien d’autre à faire à par changer le enabled = false à true.

Ajouter des filtres personnalisés

Les filtres par défaut sont très bien, mais voici quelques filtres personnalisés que vous pouvez retrouver sur internet. Vous n’êtes pas obligé de les activer, c’est du bonus.

Le filtre « apache-404″ permet de bannir les utilisateurs qui font trop d’erreurs 404. Généralement ce sont ceux qui recherchent des pages d’administration à l’arrache en modifiant l’url. En revanche, faites très attention ! Si il manque un élement sur votre site, comme par exemple une image, ça va générer une erreur 404 et ça risque de bannir vos visiteurs.

Le filtre « apache-admin » permet de protéger votre espace d’administration si vous en avez un. Dans mon cas non mais je préfère vous le donner quand même.

Et le dernier, « apache-w00tw00t » permet de bannir un scanner de faille « w00tw00t » fréquemment utilisé, on en retrouve la trace dans les logs.

À ajouter dans le fichier /etc/fail2ban/jail.conf.local :

[apache-404]
enabled = true
port = http
filter = apache-404
logpath = /var/log/apache*/error*.log
maxretry = 10

[apache-admin]
enabled = true
port = http
filter = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

[apache-w00tw00t]
enabled = true
filter = apache-w00tw00t
action = iptables[name=Apache-w00tw00t,port=80,protocol=tcp]
logpath = /var/log/apache2/access*.log
maxretry = 1

Maintenant vous devez créer 3 fichiers, qui sont des filtres à base d’expression régulière (Regex), dans /etc/fail2ban/filter.d/ :

(Apparement dans la vidéo, j’ai oublié les « .conf » à la fin des fichiers, pensez y donc)

# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client []] File does not exist: .*
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client []] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching.
# Values: TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
failregex = [[]client []] File does not exist: .*admin|PMA|mysql

#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
root@ks367082:/etc/fail2ban/filter.d# cat apache-w00tw00t.conf
[Definition]

failregex = ^ -.*"GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:\).*".*

ignoreregex =

Ensuite, vous pouvez faire un restart de fail2ban avec /etc/init.d/fail2ban restart et c’est terminé.

Détecteur de backdoor

Le dernier logiciel à installer est un détecteur de Backdoor. Pour l’installer, faites un apt-get install rkhunter et vérifier dans son fichier de configuration /etc/default/rkhunter que report_email est sur root et cron_daily_run à yes.

Vous recevrez des emails en cas si des fichiers sensibles sont modifiées. Attention toutefois, car il peut générer des faux positifs.

Recevoir un email lors d’une connexion ssh

Cette fois-ci c’est plus une astuce qu’un logiciel. Si vous souhaitez recevoir un email dés que quelqu’un se connecte sur un compte d’un utilisateurs système, vous pouvez modifier son fichier ~user/.bashrc et ajouter la ligne suivante : echo ‘Acces SheLL Root’ `who` `date` | mail -s `hostname` Shell Root email@domaine.tld

À chaque connexion, ce bout de code sera exécuté et vous serez avertie. Plutôt pratique si vous êtes parano et souhaitez détecter des intrusions facilement.

En conclusion, avec ces quelques principes de bases vous devriez avoir un serveur sécurisé. N’oubliez pas qu’aucun serveur n’est infaillible et gardez toujours un système à jour pour limiter les risques. Dans la prochaine vidéo, nous verrons comment augmenter la sécurité d’apache et dans une autre vidéo comment mettre en place un système de backup.

Si vous voulez en apprendre plus sur Iptables, je vous recommande ce tutoriel sur le site du zéro.

Si vous avez aimé l’article, n’hésitez pas à le diffuser sur Facebook/Twitter via les boutons ci-dessous. Je vous invite également sur la page facebook du blog (merci d’avance).

(Image à la une : No entry sign)

94 commentaires ont été ajoutés, ajoutez le vôtre.

Vous pouvez laisser un commentaire, cependant je ne peux pas vous garantir qu'il sera modéré rapidement ou qu'il aura une réponse, faute de temps pour m'occuper du site.

  1. prestarocket

    Hello,

    merci pour ton super tuto.
    que faire si on a une connexion ssh non autorisée (detectee grace a ton systeme d alerte email) ?

    • Madrzejewski Alexis

      Bonjour prestarocket,

      Normalement des systèmes comme fail2ban empêche ce genre de chose, sinon le plus simple est de récupérer l’IP et la bannir du serveur avec iptables pendant longtemps ou définitivement.

  2. Klyk777

    Pour faire fonctionner le ftp avec iptables j’ai du activer certain modules,
    voici ce que j’ai ajouté à mon fichier firewall

    # * Modules *
    modprobe ip_tables
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_conntrack_irc
    modprobe ipt_limit
    modprobe ipt_state
    modprobe ipt_multiport
    modprobe iptable_filter
    modprobe iptable_mangle
    modprobe iptable_nat

    echo « Chargement des modules ……………………. [Ok] »
    Depuis ça fonctionne aussi

  3. Sora

    Bonjour,
    Sur mon dédié, j’ai teamspeak3, avec le tuto j’ai monté un firewall et depuis impossible de connecter teamspeak? pourriez vous m’aider?
    J’ai mis :
    # Teamspeak:9987
    iptables -t filter -A INPUT -p udp –dport 9987 -j ACCEPT
    iptables -t filter -A OUTPUT -p udp –dport 9987 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 10011 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 30033 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 10011 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 30033 -j ACCEPT

    Sachant que les ports TS sont :

    port 9987 (udp) : port par defaut de connexion au serveur voix.
    port 10011 (tcp) : connexion ServerQuery
    port 30033 (tcp) : pour le transfert de fichier

    Est ce que c’est bon?

    Merci.

    • Madrzejewski Alexis

      Bonjour Sora,

      Cela me semble incomplet mais comme Teamspeak est un logiciel extrément utilisés, le plus simple est de rechercher des configurations déjà faites et testés. Après quelques recherches j’ai trouvés ça :

      # UDP Teamspeak Voice Port
      iptables -A INPUT -p udp -m udp –dport 9987 -j ACCEPT
      # TCP Teamspeak File Transfer
      iptables -A INPUT -p tcp -m tcp –dport 30033 -j ACCEPT
      # TCP Query Port
      iptables -A INPUT -p tcp -m tcp –dport 10011 -j ACCEPT

      Généralement j’ajoute ça avant aussi :

      iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
      iptables -A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

  4. marco

    très bon tutoriels je les suis 1 par 1

    juste un complément après quelques jours

    j’ai pas mal d’entrée j’en laisse que 3 sur l’ensemble des lignes
    sshd:
    Authentication Failures:
    unknown (115.85.194.82): 249 Time(s)
    unknown (223.4.89.116): 30 Time(s)
    root (223.4.3.42): 24 Time(s)
    Invalid Users:
    Unknown Account: 285 Time(s)

    j’ai donc cherché une méthode plus violent de bannissement

    j’ai donc mis en place ceci en plus
    http://doc.ubuntu-fr.org/denyhosts

    depuis :
    logwatch jours 1
    ——————— Denyhosts Begin ————————

    new denied hosts:
    184.106.213.105
    115.85.194.82
    82.146.42.175
    160.80.34.123

    ———————- Denyhosts End ————————-
    ——————— pam_unix Begin ————————

    sshd:
    Authentication Failures:
    unknown (115.85.194.82): 116 Time(s)
    unknown (223.4.89.116): 15 Time(s)

    logwatch jours 2
    sshd:
    Plus rien a signaler ))

  5. infojmb

    Gros bug…

    Mon apt-get et mon ftp ne fonctionne plus.. C’est définitivement le iptables qui ne fait pas son travail comme il le devrait… une journée de galère…

    Si je réinitialise le firewall, 1 seul connection m’est possible en ftp. Le apt-get ne fonctionne toujours pas.

    *CRYING*

    • infojmb

      J’ai trouvé la solution, j’ai tout simplement remplacé les lignes 12 à 18 par le echo « Flushing iptables rules… » D’Alexis

  6. infojmb

    Merci Alexis.

    Moi personnellement j’ai du reconstruire 3 fois mon iptables pour cause diverses et finalement, je n’ai mis que le nécessaire avec le moins de comment possible et un petit echo pour m’y retrouver.. xD

    Est-ce qu’on peut mettre des if dans un #!/bin/sh ? ou des conditions?

    J’ai aussi trouvé une site web de wiki très sympa.
    http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

    Le voici

    #!/bin/sh
    ### BEGIN INIT INFO
    # Provides: firewall
    # Required-Start: $remote_fs $syslog
    # Required-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Démarre les règles iptables
    # Description: Charge la configuration du pare-feu iptables
    ### END INIT INFO

    ### Reeinitilisation
    echo « Configuration du firewall. »
    echo « Nettoyage des filtres. »
    iptables -t filter -F
    iptables -t filter -X

    iptables -t filter -P INPUT DROP
    iptables -t filter -P FORWARD DROP
    iptables -t filter -P OUTPUT DROP

    iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
    iptables -t filter -A INPUT -i lo -j ACCEPT

    iptables -t filter -A OUTPUT -o lo -j ACCEPT
    echo « Nettoyage…Done. »

    ### DEBUT DES ENTREES
    iptables -t filter -A INPUT -p icmp -j ACCEPT
    iptables -t filter -A OUTPUT -p icmp -j ACCEPT
    echo « Ping…Done. »

    iptables -t filter -A INPUT -p tcp –dport 1827 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 1827 -j ACCEPT
    echo « SSH…Done. »

    iptables -t filter -A OUTPUT -p tcp –dport 80 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 443 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 80 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 443 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 8443 -j ACCEPT
    echo « HTTP/HTTPS…Done. »

    iptables -t filter -A OUTPUT -p tcp –dport 20 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 21 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 20 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 21 -j ACCEPT
    iptables -t filter -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
    echo « FTP…Done. »

    echo « Loading complete. »

  7. inox3

    Si jamais sa peut servir à ceux qui ont et le bug du FTP, je l’ai eu, et je l’ai résolue en modifiant un petit peut les règles :

    # FTP In
    iptables -t filter -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 21 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 20 -j ACCEPT
    # FTP Out
    iptables -t filter -A OUTPUT -p tcp –dport 21 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 20 -j ACCEPT

    En gros pour faire simple j’ai inversé les règles entrantes et sortantes et autoriser les connexions déjà établies en premier.

    Voila sa à marcher pour moi 😉 Bonne chance à vous 🙂

    • inox3

      Et au faite, il déchire ton blog Alexis ! Continue car c’est super, bon courage pour la suite 😉

  8. hallowman

    j’ai un probleme avec iptable
    quand je lance la commande update-rc.d firewall defaults

    j’ai ce message d’erreur :

    update-rc.d: using dependency based boot sequencing
    insserv: warning: current start runlevel(s) (empty) of script `firewall’ overwrites defaults (2 3 4 5).

    que dois je faire ?

  9. dztoar

    Salut,
    Merci pour tes conseils qui sont bien utiles, mais j’ai une question j’ai fais un echo (dans mon .bshrc) comme tu cites à la fin de ton tuto pour recevoir un mail à chaque connexion, mais je reçois le mail dans /var/mail/utilisateur et non sur ma boite mail ? Comment faire pour modifier cela ?
    Encore une fois merci des tes tutos et Joyeux Noël 😀
    Cordialement.

    • Madrzejewski Alexis

      Bonjour dztoar,

      Il faut installer un serveur de mail sur le serveur dédié pour au moins pouvoir envoyer des emails. Après, c’est possible que se soit une erreur dans la ligne que j’ai donnée car les utilisateurs ne devraient rien recevoir du tout … il faut vérifier les « quotes », vous s’il en manque pas une quelques part.

  10. hallowman

    voici le code pour le firewall
    j’ai eut du mal mais tout fonctionne comme ca
    pensez à modifier le range dans la ligne passiveport du fichier conf de proftpd en mettant 1024 1024 (par exemple )

    le fichier firewall :
    #!/bin/sh
    ### BEGIN INIT INFO
    # Provides: firewall
    # Required-Start: $remote_fs $syslog
    # Required-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Démarre les règles iptables
    # Description: Charge la configuration du pare-feu iptables
    ### END INIT INFO
    # Mise à 0
    iptables -t filter -F
    iptables -t filter -X
    echo « Mise à 0 »
    # On bloque tout
    iptables -t filter -P INPUT DROP
    iptables -t filter -P FORWARD DROP
    iptables -t filter -P OUTPUT DROP
    echo « Interdiction »
    # Ne pas casser les connexions établies
    iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
    # Autorise le loopback (127.0.0.1)
    iptables -t filter -A INPUT -i lo -j ACCEPT
    iptables -t filter -A OUTPUT -o lo -j ACCEPT
    echo « Loopback »
    # ICMP (le ping)
    iptables -t filter -A INPUT -p icmp -j ACCEPT
    iptables -t filter -A OUTPUT -p icmp -j ACCEPT
    echo « Ping ok »
    # SSH IN/OUT
    iptables -t filter -A INPUT -p tcp –dport 22 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 22 -j ACCEPT
    echo « SSH ok »
    # DNS In/Out
    iptables -t filter -A OUTPUT -p tcp –dport 53 -j ACCEPT
    iptables -t filter -A OUTPUT -p udp –dport 53 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 53 -j ACCEPT
    iptables -t filter -A INPUT -p udp –dport 53 -j ACCEPT
    echo « dns ok »
    # NTP Out
    iptables -t filter -A OUTPUT -p udp –dport 123 -j ACCEPT
    echo « ntp ok »
    # HTTP + HTTPS Out
    iptables -t filter -A OUTPUT -p tcp –dport 80 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 443 -j ACCEPT
    # HTTP + HTTPS In
    iptables -t filter -A INPUT -p tcp –dport 80 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 443 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 8443 -j ACCEPT
    echo « http ok »
    # FTP Out
    iptables -t filter -A OUTPUT -p tcp –dport 21 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 20 -j ACCEPT
    # FTP In
    # imodprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH
    iptables -t filter -A INPUT -p tcp –dport 20 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 21 -j ACCEPT
    iptables -t filter -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
    iptables -t filter -A INPUT -p tcp –dport 1024 -j ACCEPT
    iptables -t filter -A INPUT -p tcp –sport 1024 -j ACCEPT
    echo « ftp ok »
    # Mail SMTP:25
    iptables -t filter -A INPUT -p tcp –dport 25 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 25 -j ACCEPT
    # Mail POP3:110
    iptables -t filter -A INPUT -p tcp –dport 110 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 110 -j ACCEPT
    # Mail IMAP:143
    iptables -t filter -A INPUT -p tcp –dport 143 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 143 -j ACCEPT
    # Mail POP3S:995
    iptables -t filter -A INPUT -p tcp –dport 995 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp –dport 995 -j ACCEPT
    echo « mail ok »
    # Monit
    iptables -t filter -A INPUT -p tcp –dport 4598 -j ACCEPT
    # Webmin
    iptables -t filter -A INPUT -p tcp –dport 10000 -j ACCEPT
    echo « monitoring ok »