Le Forum Non Officiel de la DEDIBOX
Vous n'êtes pas identifié.
Salut !
J'me disais qu'il pourrait être interessant que l'on poste nos scripts de firewall, histoire que les gens puissent piocher dedans...
Comment "l'installer" ? J'en parle ici !
Voici le mien:
#!/bin/bash /etc/init.d/fail2ban stop echo Setting firewall rules... # # config de base # # Vider les tables actuelles iptables -t filter -F iptables -t filter -X echo - Vidage : [OK] # Autoriser SSH iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT echo - Autoriser SSH : [OK] # Ne pas casser les connexions etablies iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT echo - Ne pas casser les connexions établies : [OK] # Interdire toute connexion entrante iptables -t filter -P INPUT DROP iptables -t filter -P FORWARD DROP echo - Interdire toute connexion entrante : [OK] # Interdire toute connexion sortante iptables -t filter -P OUTPUT DROP echo - Interdire toute connexion sortante : [OK] # Autoriser les requetes DNS, FTP, HTTP, NTP (pour les mises a jour) iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT echo - Autoriser les requetes DNS, FTP, HTTP, NTP : [OK] # Autoriser loopback iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A OUTPUT -o lo -j ACCEPT echo - Autoriser loopback : [OK] # Autoriser ping iptables -t filter -A INPUT -p icmp -j ACCEPT iptables -t filter -A OUTPUT -p icmp -j ACCEPT echo - Autoriser ping : [OK] # Gestion des connexions entrantes autorisées # # iptables -t filter -A INPUT -p <tcp|udp> --dport <port> -j ACCEPT # HTTP 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 - Autoriser serveur Apache : [OK] # Flash Media Server 2 iptables -t filter -A INPUT -p tcp --dport 1935 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 1111 -j ACCEPT echo - Autoriser serveur Flash Media Server 2 : [OK] # FTP modprobe ip_conntrack_ftp 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 - Autoriser serveur FTP : [OK] # Mail iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT echo - Autoriser serveur Mail : [OK] # Steamcast iptables -t filter -A INPUT -p tcp --dport 8000 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 8001 -j ACCEPT echo - Autoriser serveur ShoutCast autonome : [OK] # Syn-Flood iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT echo - Limiter le Syn-Flood : [OK] # Spoofing iptables -N SPOOFED iptables -A SPOOFED -s 127.0.0.0/8 -j DROP iptables -A SPOOFED -s 169.254.0.0/12 -j DROP iptables -A SPOOFED -s 172.16.0.0/12 -j DROP iptables -A SPOOFED -s 192.168.0.0/16 -j DROP iptables -A SPOOFED -s 10.0.0.0/8 -j DROP echo - Bloquer le Spoofing : [OK] /etc/init.d/fail2ban start echo Firewall mis a jour avec succes !
Vous remarquerez que j'ai inclue le redemarrage de fail2ban dedans...
Voili
Hors ligne
salut
Ce firewall ne place que dans un seul fichier?
Pour l'arrêter c toujours /etc/init.d/fichier stop ou start?
merci
Hors ligne
et oui mais s'il plante, je vais quoi pour l'arrêter
? Je l'ai modifier merci de me dire si c'est bon :
<code>#!/bin/bash
#
# config de base
#
# Vider les tables actuelles
iptables -t filter -F
iptables -t filter -X
echo - Vidage : [OK]
# Autoriser SSH
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
echo - Autoriser SSH : [OK]
# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
echo - Ne pas casser les connexions établies : [OK]
# Interdire toute connexion entrante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
echo - Interdire toute connexion entrante : [OK]
# Interdire toute connexion sortante
iptables -t filter -P OUTPUT DROP
echo - Interdire toute connexion sortante : [OK]
# Autoriser les requetes DNS, FTP, HTTP, NTP (pour les mises a jour)
iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
echo - Autoriser les requetes DNS, FTP, HTTP, NTP : [OK]
# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo - Autoriser loopback : [OK]
# Autoriser ping
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
echo - Autoriser ping : [OK]
# Gestion des connexions entrantes autorisées
#
# iptables -t filter -A INPUT -p <tcp|udp> --dport <port> -j ACCEPT
# HTTP
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 - Autoriser serveur Apache : [OK]
# FTP
modprobe ip_conntrack_ftp
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 - Autoriser serveur FTP : [OK]
# Mail
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
echo - Autoriser serveur Mail : [OK]
# Syn-Flood
iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT
echo - Limiter le Syn-Flood : [OK]
# Spoofing
iptables -N SPOOFED
iptables -A SPOOFED -s 127.0.0.0/8 -j DROP
iptables -A SPOOFED -s 169.254.0.0/12 -j DROP
iptables -A SPOOFED -s 172.16.0.0/12 -j DROP
iptables -A SPOOFED -s 192.168.0.0/16 -j DROP
iptables -A SPOOFED -s 10.0.0.0/8 -j DROP
echo - Bloquer le Spoofing : [OK]</code>
merci
Hors ligne
pourquoi tu me parle d'apache?
Je te demande seulement si le script que j'ai marqué plus haut est bon et si je peux le placer dans /etc/init.d/firewall, et faire un chmod777 dessus?
merci
Hors ligne
fabrice11901 a écrit:
pourquoi tu me parle d'apache?
Il répond à ta question :
et oui mais s'il plante, je vais quoi pour l'arrêter
Hors ligne
ha ok !
donc une fois lancer, on peut plus arrêter ce firewall donc...
Hors ligne
bon j'ai mi ce firewall, et j'ai le même problème qu'avec mon ancien firewall, dès qu'il est activé, il n'y a que certains sites qui fonctionnent et pas d'autre. Si je déactive le firewall tout fonctionne
Hors ligne
Petite question, j'ai bien autorisé le service de surveillance du ping en autorisant icmp sur l'IP de dedibox. Par contre comment faut-il faire pour la surveillance http ? Ca devrait être 80, mais il est déjà autorisé.
Voilà ma règle pour le ping :
Si le protocole est ICMP et la source est 88.191.254.20
Et j'ai essayé pour http :
Si le protocole est TCP et la source est 88.191.254.20 et le port destination est 80
Mais il est affiché hors service sur la console, ça ne doit donc pas être ça ?
EDIT
Hum, c'est bon, en fait il fallait attendre quelque minutes pour qu'il passe au vert... ce serait bien de pouvoir supprimer ses messages ^^
Dernière modification par Saiyan (2006-10-12 11:08:54)
Hors ligne
Soit tu as un service http qui tourne, et auquel cas, tu as besoin que tout le monde puisse voir ton site, DONC tu ne limites pas l'accès a http juste a une IP
Soit tu n'as pas de service http qui tourne, auquel cas tu te fous de le monitorer...
Faire tourner http juste pour le plaisir de vérifier s'il tourne, c'est un risque de sécurité supplémentaire...
Hors ligne
Exact... j'ai une règle en double puisque j'autorise déjà http... hum, merci ^^ Un jour, je le jure, mon script iptables sera bon ![]()
Hors ligne
en tout cas moi j'ai le même pb. Après constation, les firewall fonctionne mal après un redémarrage de la box (testé sur deux dedibox)
Hors ligne
Bon j'ai un probleme avec iptables qui me gave ![]()
Je reprend ta config d'iptables mais par contre je veux avoir le port 3306 (mysql) ouvert. J'ais modif aussi une partie pour teamspeak qu'il fonctionne bien.
Faut il faire une regle spéciale pour MySQL. D'un autre serveur quand je fais un nmap je trouve que j'ais bien par exemple teamspeak ouvert mais pas le 3306 alors qu'il est sensé etre ouvert.
#!/bin/bash /etc/init.d/fail2ban stop echo Setting firewall rules... # # config de base # # Vider les tables actuelles iptables -t filter -F iptables -t filter -X echo - Vidage : [OK] # Autoriser SSH iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT echo - Autoriser SSH : [OK] # Ne pas casser les connexions etablies iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT echo - Ne pas casser les connexions établies : [OK] # Interdire toute connexion entrante iptables -t filter -P INPUT DROP iptables -t filter -P FORWARD DROP echo - Interdire toute connexion entrante : [OK] # Interdire toute connexion sortante iptables -t filter -P OUTPUT DROP echo - Interdire toute connexion sortante : [OK] # Autoriser les requetes DNS, FTP, HTTP, NTP (pour les mises a jour) iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT echo - Autoriser les requetes DNS, FTP, HTTP, NTP : [OK] # Autoriser loopback iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A OUTPUT -o lo -j ACCEPT echo - Autoriser loopback : [OK] # Autoriser ping iptables -t filter -A INPUT -p icmp -j ACCEPT iptables -t filter -A OUTPUT -p icmp -j ACCEPT echo - Autoriser ping : [OK] # Gestion des connexions entrantes autorisées # # # iptables -t filter -A INPUT -p <tcp|udp> --dport <port> -j ACCEPT # HTTP 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 - Autoriser serveur Apache : [OK] # MySQL iptables -t filter -A INPUT -p tcp --dport 3306 -j ACCEPT iptables -t filter -A INPUT -p udp --dport 3306 -j ACCEPT echo - Autoriser serveur MySQL : [OK] # FTP modprobe ip_conntrack_ftp 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 - Autoriser serveur FTP : [OK] # Mail iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT echo - Autoriser serveur Mail : [OK] # Teamspeak iptables -A INPUT -p tcp --dport 14534 -j ACCEPT iptables -A INPUT -p tcp --dport 51234 -j ACCEPT iptables -A INPUT -p udp --dport 8767:8800 -j ACCEPT echo - Autoriser serveur Teamspeak : [OK] # Syn-Flood iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT echo - Limiter le Syn-Flood : [OK] # Spoofing iptables -N SPOOFED iptables -A SPOOFED -s 127.0.0.0/8 -j DROP iptables -A SPOOFED -s 169.254.0.0/12 -j DROP iptables -A SPOOFED -s 172.16.0.0/12 -j DROP iptables -A SPOOFED -s 192.168.0.0/16 -j DROP iptables -A SPOOFED -s 10.0.0.0/8 -j DROP echo - Bloquer le Spoofing : [OK] /etc/init.d/fail2ban start echo Firewall mis a jour avec succes !
Dernière modification par artiflo (2006-10-16 12:38:56)
Hors ligne
a mais faut ouvrir le port 3306? peut-être pour que ça mes sites ne marchent pas tous avec le firewall actif?
Hors ligne
fabrice11901 a écrit:
a mais faut ouvrir le port 3306? peut-être pour que ça mes sites ne marchent pas tous avec le firewall actif?
je veux que le port 3306 soit ouvert parce que je veux que ma BDD MySQL soit accessible de l'exterieur. Autre que par localhost ![]()
Par contre c'est marant mais pour que le script fonctionne c'est le reboot du serveur obligatoire. Il y a pas une autre solution.
Hors ligne
à donc si on travaille avec localhost, pas besoin d'ouvrir le port 3306 donc.
Sinon pour toi, essaye mon firewall sujet : [iptables] un petit tuto mon firewall à fonctionné 1 mois j'ai redémarrer la dedibox depuis impossible dès que j'active un firewall, tous les sites ne sont pas accessibles sur mon serveur !
Hors ligne
artiflo a écrit:
Par contre c'est marant mais pour que le script fonctionne c'est le reboot du serveur obligatoire. Il y a pas une autre solution.
Faut juste lancer iptables...
Si ton fichier s'apelle /etc/init.d/firewall, tu lances /etc/init.d/firewall
.
Sinon, pour ton histoire de MySQL, c'est pas secure, mais bon...
Enlèves ta règle iptables -t filter -A INPUT -p udp --dport 3306 -j ACCEPT (mysql = connexion à une base = tcp et non udp) et essaye en rajoutant iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
Hors ligne
Flying Jack a écrit:
artiflo a écrit:
Par contre c'est marant mais pour que le script fonctionne c'est le reboot du serveur obligatoire. Il y a pas une autre solution.
Faut juste lancer iptables...
Si ton fichier s'apelle /etc/init.d/firewall, tu lances /etc/init.d/firewall
.
Sinon, pour ton histoire de MySQL, c'est pas secure, mais bon...
Enlèves ta règle iptables -t filter -A INPUT -p udp --dport 3306 -j ACCEPT (mysql = connexion à une base = tcp et non udp) et essaye en rajoutant iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
Nmap me dit que non (
PORT STATE SERVICE 3306/tcp closed mysql
#MySQL
iptables -t filter -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
echo - Autoriser serveur MySQL : [OK]
Truc de fous juste dessous je lui dit :
# Teamspeak
iptables -A INPUT -p tcp --dport 14534 -j ACCEPT
iptables -A INPUT -p tcp --dport 51234 -j ACCEPT
iptables -A INPUT -p udp --dport 8767:8800 -j ACCEPT
echo - Autoriser serveur Teamspeak : [OK]
et pour par exemple le 14534 nmap me dit qu'il est bien ouvert...
Je fais mes nmap a partir d'un autre serveur.
Hors ligne
Tu as fait ca ?
Flying Jack a écrit:
Enlèves ta règle iptables -t filter -A INPUT -p udp --dport 3306 -j ACCEPT (mysql = connexion à une base = tcp et non udp) et essaye en rajoutant iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
Hors ligne
je viens de faire le test sur un autre serveur (perso celui la) meme résultat avec nmap le port 3306 est fermé alors que le 14534 ou le 51234 sont ouvert.
Le firewall est bien actif car les autre port sont marqué en filtrered alors pour le 3306 lui il est pas en filtrered mais en closed. Comme si il avait une regle rien que pour lui qui lui dit d'etre closed.
Hors ligne
Flying Jack a écrit:
Tu as fait ca ?
Flying Jack a écrit:
Enlèves ta règle iptables -t filter -A INPUT -p udp --dport 3306 -j ACCEPT (mysql = connexion à une base = tcp et non udp) et essaye en rajoutant iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
oui les seule regles qui concerne MySQL sont affiché ici :
#MySQL
iptables -t filter -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
echo - Autoriser serveur MySQL : [OK]
Tout le reste est comme dans ton exemple.
Je me demande si il n'y a pas un prog qui reécris le firewall, car je trouve trés étrange que le 3306 soit en closed et pas au pire en filtrered comme les autres. Je précise que ce que je veux c'est qu'il soit open hein ![]()
Merci pour votre aide ![]()
Hors ligne
Est ce que ton script met bien a jour iptables quand on le relance ?
J'ai rajouter un port au hasard (18000) juste pour tester (iptables -A INPUT -p tcp --dport 18000 -j ACCEPT), juste avant de relancer ton script j'ai testé avec un nmap il apparaissait filtrered.
J'ai relancer ton script et il apparait closed à présent.
J'en conclus que quand on fait une modification dans le script cela closed le port spécifié. Tu aurais une idée ?
Hors ligne
juste une petite question, ce ne serait pas un problème de configuration mysql ?
Tu as quoi comme valeur pour bind-address dans my.cnf ?
Dernière modification par jojo280 (2006-10-16 15:46:05)
Hors ligne