Bonjour, voici un script pour paramétrer votre firewall avec filtre Indésirable, il vaut ce qu'il vaut a vous de l'améliorer et de l'adapter.

Je l'ai testé sur une machine debian,(7 et 8) marche trés bien.
Je logue pas les "indésirables",je les drop direct (mais rien ne vous empêche de le faire).
Donc vous pouvez l'utiliser pour configurer votre firewall.
pour cela vous ouvrez une session root sur votre serveur puis vous tapez:
nano /home/VotreUtilisateur/RuleFire
==> et vous collez le code qui est un peu plus bas
"VotreUtilisateur" c'est le nom d'user sur le serveur
un copier coller
Pour coller dans nano : "clic droit de la souris "

Pour sauver les modifs : Touches : Ctrl + o , Enter, Ctrl + x

après un petit:
chmod +x /home/VotreUtilisateur/RuleFire
puis on l’exécute:
/home/VotreUtilisateur/RuleFire
surtout vous fermez pas votre session ssh, faut vérifier que tout tourne bien
un petit :
iptables -L -v -n
Vous avez vos règle firewall de lister, avec :
les entrées en premier : Input : ce qui est accepté et rejeté
les routées : Forward
Les sorties
Les log
Et les règle crées par des logiciels tiers (ex: Fail2ban etc..)

essayé d'ouvrir une deuxième connections ssh, si vous arrivez a vous logguer c'est tout bon
vous pouvez fermer vos sessions.


***************dessous ce qui est a coller dans le fichier "RuleFire" ATTENTION VOUS AUREZ DES MODIFS A FAIRE
### BEGIN INIT INFO
# Provides:          firewall rules
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

#!/bin/sh
 
# On vire tout
iptables -t filter -F
iptables -L
iptables -Z 

# Vider les règles personnelles
iptables -t filter -X
echo - Vidage : [OK]

# Interdire toute connexion entrante et sortante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

echo - Interdire toutes connexions : [OK]

#Filtres  Anti Ha**** et Autres Lourds
iptables -t filter -I INPUT -p all -s 61.174.51.0/24,61.64.128.0/17,116.10.191.0/24,122.120.0.0/13,168.95.0.0/16 -j DROP
iptables -t filter -I INPUT -p all -s 5.23.42.12/30,90.80.100.192/28,195.5.217.72/29,194.79.189.240/29 -j DROP
iptables -t filter -I INPUT -p all -s 82.138.70.128/26,82.138.74.0/25,91.189.104.0/21,193.107.240.0/22,195.191.244.0/23,193.105.197.0/24 -j DROP
iptables -t filter -A INPUT -p tcp --dport 80 -m string --to 70 --algo bm --string 'GET /w00tw00t.at.ISC.SANS.' -j DROP 

echo - Blocage indésirable : [OK]

# On garde les connexions etablies
iptables -t filter  -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter  -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

echo - Connexion actuelle : [OK]

# Autoriser le loopback (reseau local)
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo - LOOPBACK : [OK]
 
# ICMP (ping)
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
echo - ICMP : [OK] 
 
# DNS (bind)
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
 
iptables -t filter -A OUTPUT -p tcp --dport 953 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 953 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 953 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 953 -j ACCEPT
echo - BIND : [OK]

# APACHE NGINX Le WEB : HTTP + HTTPS
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
echo - web : [OK]
 
# Mail SMTP:25 - Pour acces gmail ajouter 587
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT
echo - SMTP : [OK]

# NTP Horloge synchro
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
echo - NTP : [OK]

# SSH numeros de Port a changer en rapport avec : : /etc/ssh/sshd_config  REMPLACER les XXXX
iptables -t filter -A INPUT -p tcp --dport XXXX -m recent --rcheck --seconds 60 --hitcount 2 --name SSH -j LOG --log-prefix "SSH REJECT"
iptables -t filter -A INPUT -p tcp --dport XXXX -m recent --update --seconds 60 --hitcount 2 --name SSH -j DROP
iptables -t filter -A INPUT -p tcp --dport XXXX -m state --state NEW -m recent  --set --name SSH -j ACCEPT
echo - Autoriser SSH : [OK]

# Rtorrent a vous de mettre les bons ports surtout pour le port d'annonce tracker
iptables -t filter -A INPUT -p tcp --dport 6890:6999 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 6890:6999 -j ACCEPT
iptables -t filter -A INPUT -m udp -p udp --dport 6881:6999 -j ACCEPT
iptables -t filter -A OUTPUT -m udp -p udp --dport 6881:6999 -j ACCEPT

# un exemple avec le port 6400 -- decommenter pour utiliser
# iptables -t filter -A INPUT -p tcp --dport 6400 -j ACCEPT
# iptables -t filter -A OUTPUT -p tcp --sport 6400 -j ACCEPT
# iptables -t filter -A INPUT -p udp --dport 6400 -j ACCEPT
# iptables -t filter -A OUTPUT -p udp --dport 6400 -j ACCEPT

#Decommenter ci-dessous les services que vous utilisez
# Remplacer les XXXX
#iptables -t filter -A INPUT -p tcp --dport XXXX -j ACCEPT
#iptables -t filter -A OUTPUT -p tcp --sport XXXX -j ACCEPT
#iptables -t filter -A INPUT -p udp --dport XXXX -j ACCEPT
#iptables -t filter -A OUTPUT -p udp --dport XXXX -j ACCEPT

# Remplacer les XXXX
#iptables -t filter -A INPUT -p tcp --dport XXXX -j ACCEPT
#iptables -t filter -A OUTPUT -p tcp --sport XXXX -j ACCEPT
#iptables -t filter -A INPUT -p udp --dport XXXX -j ACCEPT
#iptables -t filter -A OUTPUT -p udp --dport XXXX -j ACCEPT

iptables -t filter -A OUTPUT -p tcp -m tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
echo - RTORRENT : [OK]

#Decommenter ci-dessous les services que vous utilisez

# FTP (BACKUP)
# iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
# iptables -t filter -A OUTPUT -p tcp --dport 21 -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
 
# WEBMIN
# iptables -t filter -A INPUT -p tcp --dport 10000 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -t filter -A OUTPUT -p tcp --dport 10000 -m state --state ESTABLISHED -j ACCEPT
#******************************fin du script

Pour activer le script IPtable des le démarrage :
Vous pouvez l'ajouter au démarrage :
cp /home/VotreUtilisateur/RuleFire /etc/init.d/RuleFire
chmod +x /etc/init.d/RuleFire
update-rc.d RuleFire defaults
Pour l'enlever du démarrage :
update-rc.d -f RuleFire remove
Bonjour thephenix83

Il me semblerai que quelques information manque
thephenix83 wrote:Bonjour, voici un script pour paramétrer votre firewall avec filtre Hadopi, Indésirable, il vaut ce qu'il vaut a vous de l'améliorer et de l'adapter.

Je l'ai testé sur une machine debian,(7 et 8) marche trés bien.
Je logue pas les "indésirables",je les drop direct (mais rien ne vous empêche de le faire).
Donc vous pouvez l'utiliser pour configurer votre firewall.
pour cela vous ouvrez une session root sur votre serveur puis vous tapez:
nano /home/VotreUtilisateur/RuleFire
"VotreUtilisateur" c'est le nom d'user sur le serveur
un copier coller
Pour coller dans nano : "clic droit de la souris "

Pour sauver les modif : Touches : Ctrl + o , Enter, Ctrl + x
billred wrote:Bonjour thephenix83

Il me semblerai que quelques information manque
thephenix83 wrote:Bonjour, voici un script pour paramétrer votre firewall avec filtre Hadopi, Indésirable, il vaut ce qu'il vaut a vous de l'améliorer et de l'adapter.

Je l'ai testé sur une machine debian,(7 et 8) marche trés bien.
Je logue pas les "indésirables",je les drop direct (mais rien ne vous empêche de le faire).
Donc vous pouvez l'utiliser pour configurer votre firewall.
pour cela vous ouvrez une session root sur votre serveur puis vous tapez:
nano /home/VotreUtilisateur/RuleFire
"VotreUtilisateur" c'est le nom d'user sur le serveur
un copier coller
Pour coller dans nano : "clic droit de la souris "

Pour sauver les modif : Touches : Ctrl + o , Enter, Ctrl + x
Tu etais trop pressar j'étais entrain de le rédiger
Hahaha la je ne peut nier.
Je suis assez friand de ce types de script.
Mille excuse d'avoir était aussi pressé.
un an plus tard
Merci pour le tuto.
Par contre attention à ceux qui le suivent, j'ai du déplacer la ligne :

#!/bin/sh

Tout au début du fichier. Sinon le script ne se lançait pas au démarrage... Je ne sais pas si cela est normal mais maintenant cela fonctionne sans problème.
En effet, c'est à mettre en début de script. Bon par contre... je préfère mes règles 😛
3 ans plus tard

Salut @thephenix83 et merci pour cette piste de règles.

J'ai fait pas mal de tests, et je pense que malheureusement, ton approche est mauvaise pour ruTorrent.

Il y a une grosse subtilité à comprendre dans le comportement de ruTorrent : la plage de ports que tu définis dans ton .rtorrent.cc avec network.port_range.set n'est pas la plage de ports pour se connecter aux peers. C'est la plage de ports que tu définis pour upload uniquement (INPUT dans IPTables), c'est à dire pour que les peers aillent chercher un truc chez toi.

Pour télécharger, ruTorrent n'écoute pas du tout cette règle. Il ouvre tous les ports qu'il a besoin d'ouvrir, justement pour matcher la plage des ports d'upload des autres, impossible à prévoir puisqu'il y a une grosse diversité de clients et de plages chez les autres. Tu peux le vérifier quand tu télécharges. Désactives tes règles IPTabes et regarde la liste de tes peers auquels tu te connectes pour télécharger, tu verras que leurs ports pour dialoguer avec toi sont très divers et ne matchent pas du tout ta propre plage.

Donc en gros, en spécifiant ta plage autorisée pour OUTPUT dans IPTables, tu restreints tes connections possibles seulement à ceux qui ont un port d'upload en commun avec toi, c'est à dire à très, très peu de monde. Tu dois avoir d'énormes problèmes de téléchargement.

La seule solution que je vois pour construire des règles de pare-feu et utiliser ruTorrent en même temps, c'est d'autoriser tout en OUTPUT.
Par rapport à ta config, ça donne

# Interdire toute connexion entrante et sortante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
# On ne DROP pas l'OUTPUT!

# On utilise les mêmes règles, mais on enlève tout ce qui concerne OUTPUT puisqu'on va tout autoriser

# Autoriser tout l'OUTPUT à la fin
iptables -t filter -A OUTPUT -j ACCEPT

Normalement ce n'est pas un problème, puisque tu es censé avoir confiance en tes connexions sortantes.
Au pire si tu ne fais pas confiance à un programme en particulier installé sur ta machine, tu DROP spécifiquement son port en OUTPUT juste après avoir tout accepté. L'approche inverse quoi, une blacklist au lieu d'une whitelist pour les OUTPUT.

++

Répondre…