Par mushroom.
Ce script est un petit pare-feu de base pour les machines solitaires connectées directement à internet (ou passant entièrement par le modem pour le réseau local). Il est idéal pour les débutants qui ne savent pas en écrire eux-mêmes et veulent quelque chose d'efficace sans être trop restrictif.
Liquette autorise toute les connexions sortantes depuis votre machine mais seulement les connexions entrantes initialisées par vous, ce qui est le niveau minimal du pare-feu.
Tout ce que vous avez à faire est de définir la variable I
(comme Interface) selon l'interface que vous utilisez pour vouz connecter. Si vous ne savez pas laquelle c'est, c'est très simple : faites un netstat -i
déconnecté puis la même chose connecté, la ligne qui apparaît la seconde fois mais pas la première est celle de votre interface.
Le plus simple est de le copier dans votre /etc/rc.d/
en tant que rc.firewall
, mais vous pouvez également l'y placer en le nommant rc.liquette
, puis créer un lien symbolique rc.firewall
pointant sur lui. Ensuite, quelque soit votre choix rendez-le exécutable mais lisible uniquement par le super-utilisateur:
chown root:root <script> chmod 700 <script>
Vous pouvez aussi le télécharger directement, en utilisant ce lien.
#!/bin/sh # # LIQUETTE - "petit firewall pour ne pas être à poil" # (pare-feu basique pour iptables sur monoposte). # # c. 2007-08-31 # r. 2007-08-31 0 # Copyright (c) 2007 mushroom. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # Interface (ppp0, ppp1, eth0, eth1, ... selon ce que vous avez). I="eth0" fwdown () { # Détruit l ensemble des règles, ouvrant toutes les tables. iptables -t filter -F iptables -t filter -X iptables -t filter -P INPUT ACCEPT iptables -t filter -P OUTPUT ACCEPT iptables -t filter -P FORWARD ACCEPT iptables -t nat -F iptables -t nat -X iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t mangle -F iptables -t mangle -X iptables -t mangle -P PREROUTING ACCEPT iptables -t mangle -P INPUT ACCEPT iptables -t mangle -P OUTPUT ACCEPT iptables -t mangle -P POSTROUTING ACCEPT iptables -t mangle -P FORWARD ACCEPT } fwup () { # Met en place le pare-feu. # D abord on charge les modules nécessaires modprobe ip_conntrack modprobe ip_conntrack_ftp # Par défaut, on est hyper-restrictif : rien ne va nulle-part. iptables -t filter -P INPUT DROP iptables -t filter -P OUTPUT DROP iptables -t filter -P FORWARD DROP # On autorise tout (entrée/sortie) sur le réseau virtuel interne "loopback". iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT iptables -t filter -A INPUT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT # Sur notre interface, on autorise en entrée les connexions établies depuis # notre machine (seulement le port 53 pour l udp, nécessaire au dns... sauf si vous tenez # à naviguer uniquement via adresses IP)... iptables -A INPUT -i $I -d 0.0.0.0/0 -p tcp -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -i $I -d 0.0.0.0/0 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -i $I -p icmp -m state --state ESTABLISHED -j ACCEPT # ... et les entrées en relatif sur le port 20, afin de pouvoir utiliser le ftp. iptables -A INPUT -i $I -p tcp --sport 20 -m state --state RELATED -j ACCEPT # En sortie, on autorise tout ce qui est protocole tcp, et encore le 53/udp pour le dns. iptables -A OUTPUT -o $I -s 0.0.0.0/0 -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o $I -s 0.0.0.0/0 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT } case $1 in "start") echo "Setting rules of firewall..." fwdown && fwup && echo "Firewall is up !" ;; "stop") fwdown && echo "Firewall is down." ;; *) echo "Usage: $0 <start|stop>" 1>&2 exit 1 esac # FDF
Thèmes : #administration #mushroom #scripts
Sauf indication contraire, ce document est placé sous licence CC-BY-SA 3.0.