Aller au contenu

IPTABLES


Messages recommandés

bien le bonjour tout le monde !

un petit message juste pour dire que iptables c'est de la balle et que si vous êtes nouvo je me suis fait un bo firewall qui pourrai vous aidés (bon il fait 13 pages donc je vais pas le poster ici)... il gère des classes d'utilisateurs et une connexion internet. actuellement j'essai de le faire évoluer pour gérer plusieurs connexions internet et limiter les débits

et pour ceux qui s'y connaissent déjà en firewall une petite question: dans ma quête de l'utilisisation des plusieurs connexions internet, j'ai un peu du mal ... apparemment mes lignes au nivo du forward ne fonctionnent pas puisque quand je tape quelque chose comme:

for x in $SERVICES_TCP

do

iptables -A FORWARD -i eth0 -m mark --mark 1 -p tcp --dport ${x} -o eth1 -j ACCEPT

done

iptables -A FORWARD -i eth0 -m mark --mark 2 -o eth2 -j open

donc apperemment ça ne marche pas car la commande traceroute utilisé sur un ordinateur de eth0 me donne toujours la même adresse ip qu'il soit marqué 1 ou 2

donc voilà today je bosse la dessus .. en espérant pouvoir trouver une solution pour limiter les débits et vous la poster ultérieurement !

merci de vos remarques a+ !

Lien vers le commentaire
Partager sur d’autres sites

.. en espérant pouvoir trouver une solution pour limiter les débits et vous la poster ultérieurement !

Regarde du coté de QoS.

un petit message juste pour dire que iptables c'est de la balle et que si vous êtes nouvo je me suis fait un bo firewall qui pourrai vous aidés

Je ne suis plus tout a fait nouvEAU mais je jetterais bien oeil a ton bEAU firewall qui pourraiT m'aideR, enfin, j'en ai un béton avec ipconntrack et connexion @ip par @ip ( par de réseau global ) mais je jetterai bien un oeil pour voir comment tu t'y es pris pour faire 13 iptables pour un lan. A mon avis, doit y avoir des redondances...

ps: oui, iptables est très efficace, notamment du fait que c'est un firewall natif au noyau.

Lien vers le commentaire
Partager sur d’autres sites

(il s'agit d'un fichier en .sh qu'il fo rendre executable) ... pour le lancer ensuite

/opt/***/firewall.sh --start ... ou --stop ou --reload

enfin les décalages correspondent à une ou deux tabulations, ce qui rend pas trés bien sur la page du forum !

je compte sur vous pour me dire ou sont les trous et les erreurs ! j'ai toujours pas réussi à utilliser plusieurs connexions en même temps ni à réaliser une limitation de débit par utilisateur pour empêcher les squatteurs de bande passante

pour conclure ... j'en ai retirer un peu histoire de te laisser un peu de réflexion pour le compléter ... là comme ça il doit être déjà être bien mais je suis un peu parano sur la protection donc il manque des lignes par ci par là

#!/bin/sh

# Firewall dynamique de ###

# Version 4.0a

# Totalement repensé par #####(shokobo)

# en aout 2004

# sur les idées des précedents contributeurs :

# Arthur ######## (2001)

# Simon #### et Lucas #### (1999-2000)

# Fabien #### et J-N #### (2001-2002)

# Christophe ####### (2002-2003)

# Maintenu par la Strass Rezo

#

# Merci d'ajouter un commentaire avec votre nom

# à coté de chaque modif.... (shokobo)

#

#note du shokobo … j’ai supposé que eth0 = réseau internet ; eth1= adsl1 : eth2= adsl2 et eth3= Free

####################################

############ CONFIG ################

####################################

#histoire de faciliter la lecture on crée des variables « répertoire » pour ne pas répéter de trop longues phrases

#variables qu’on doit définir dans la commande --start

IPT=/sbin/iptables

config_path=/opt/****/firewall

# On recupere la liste des adresses mac des user normaux et p2p

source $config_path/include/users

# La liste des ORDI_REZAL est à maintenir à la main, ce sont les autres ordis appartenant au réso

ORDI_REZAL=" "

#interfaces :

#Il s'agit bien des interfaces de passerelle2? (sylvain)

#ben oui pk ?

# eth0 : zone interne

# les autres= zone externe. Ce sera : eth1 = FT1 sécurisé, eth2= FT2 libre, et eth3 = Free mi sécurisé

# On stock les ip des deux interfaces :

#La je capte pas a quoi ca sert : l'ip de passerelle2 on la connait et elle change pas... bon ok c'est plus propre (sylvain)

# Oui, c'est plus propre ! et j'aime quand c'est propre ! (arthur)

# Et puis surtout c'est reutilisable sans se poser de question !

ETH0_IP=`ifconfig eth0 | fgrep -i inet | cut -d : -f 2 | cut -d \ -f 1`

ETH1_IP=`ifconfig eth1 | fgrep -i inet | cut -d : -f 2 | cut -d \ -f 1`

ETH2_IP=`ifconfig eth2 | fgrep -i inet | cut -d : -f 2 | cut -d \ -f 1`

ETH3_IP=`ifconfig eth3 | fgrep -i inet | cut -d : -f 2 | cut -d \ -f 1`

#ETH4_IP=`ifconfig eth4 | fgrep -i inet | cut -d : -f 2 | cut -d \ -f 1`

####################################

case "$1" in

--reload)

#première opération possible : mise à jour des tables d’utilisateurs

#(qui est censé être automatique et très fréquente avec un cron) …

#attention ce n’est pas un redémarrage, c’est une mise à jour des tables d’utilisateurs

###########################################

######### regeneration du mangle ##########

###########################################

# On vide la chaine de marquage et on la renouvelle

######### users_mangle #############

echo -e "setting users_mangle chain : "

# on vide la chaine de marquage

echo -e "flush"

$IPT -t mangle -F users_mangle

# On la reremplie en utilisant les adresses mises à jour

# On marque à 1 les paquets des utilisateurs ayant choisis d’utiliser la connexion securisé

for x in $USERS_SECU

do

$IPT -t mangle -A users_mangle -m mac --mac-source ${x} -j MARK --set-mark 1

done

# Et on les degage de la chaine, ce sont

# les plus nombreux

$IPT -t mangle -A users_mangle -m mark --mark 1 -j RETURN

# On passe aux utilisateurs ayant choisis d’utiliser la connexion peu sécurisé

# on marque à 2 les paquets

for x in $USERS_LIBRE

do

$IPT -t mangle -A users_mangle -m mac --mac-source ${x} -j MARK --set-mark 2

done

# et on les dégage rapidement de la chaine

$IPT -t mangle -A users_mangle -m mark --mark 2 -j RETURN

# on marque les users speciaux

for x in $USERS_SPECIAUX

do

$IPT -t mangle -A users_mangle -m mac --mac-source ${x} -j MARK --set-mark 3

done

# et on les degage de la table de mangle

$IPT -t mangle -A users_mangle -m mark --mark 3 -j RETURN

# on marque les ordis du réso

for x in $ORDI_REZAL

do

$IPT -t mangle -A users_mangle -m mac --mac-source ${x} -j MARK --set-mark 4

done

# et on les degage de la table de mangle

$IPT -t mangle -A users_mangle -m mark --mark 4 -j RETURN

# on marque les users virus

for x in $USERS_VIRUS

do

$IPT -t mangle -A users_mangle -m mac --mac-source ${x} -j MARK --set-mark 5

done

# et on les degage de la table de mangle

$IPT -t mangle -A users_mangle -m mark --mark 5 -j RETURN

echo -e "done\n"

;;

--start)

#avec cette commande on lance un nouveau firewall, c'est-à-dire qu’avant il n’y a rien

#variables qu’on doit définir dans la commande --start

IPT=/sbin/iptables

config_path=/opt/****/firewall

# On recupere la liste des adresses mac des user normaux et p2p

source $config_path/include/users

# La liste des ORDI_REZAL est à maintenir à la main, ce sont les autres ordis appartenant au réso

ORDI_REZAL=" "

#interfaces :

#Il s'agit bien des interfaces de passerelle2? (sylvain)

#ben oui pk ?

# eth0 : zone interne

# les autres= zone externe. Ce sera : eth1 = FT1 sécurisé, eth2= FT2 libre, et eth3= Free mi sécurisé

# On stock les ip des deux interfaces :

#La je capte pas a quoi ca sert : l'ip de passerelle2 on la connait et elle change pas... bon ok c'est plus propre (sylvain)

# Oui, c'est plus propre ! et j'aime quand c'est propre ! (arthur)

# Et puis surtout c'est reutilisable sans se poser de question !

ETH0_IP=`ifconfig eth0 | fgrep -i inet | cut -d : -f 2 | cut -d \ -f 1`

ETH1_IP=`ifconfig eth1 | fgrep -i inet | cut -d : -f 2 | cut -d \ -f 1`

ETH2_IP=`ifconfig eth2 | fgrep -i inet | cut -d : -f 2 | cut -d \ -f 1`

ETH3_IP=`ifconfig eth3 | fgrep -i inet | cut -d : -f 2 | cut -d \ -f 1`

#ETH4_IP=`ifconfig eth4 | fgrep -i inet | cut -d : -f 2 | cut -d \ -f 1`

##################################

########## Modules ###############

##################################

# on insere les modules de net filter

/sbin/modprobe ip_tables

/sbin/modprobe ip_conntrack

/sbin/modprobe ip_conntrack_irc

/sbin/modprobe ip_nat_irc

#je commente pour voir le resultat

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_nat_ftp

#/sbin/modprobe ip_conntrack_mms

#/sbin/modprobe ip_nat_mms

##################################

########## DEFAULT ################

##################################

# Rq : avant toute chose, il est necessaire de decider dans

# quelle politique on se place

# Un choix sécuritaire est de DROPPER par defaut, pour

# ouvrir ensuite.

# C'est la strategie que l'on appliquera ici

echo -e "INPUT and FORWARD policy to DROP : "

$IPT -P INPUT DROP

$IPT -P FORWARD DROP

echo -e "done\n"

###################################

######### Chaines user ############

###################################

# Il s'agit de chaines que l'on appelera depuis les builtin

# chaines, cela permet de diminuer le nombre de regles

######### users_mangle #########

echo -e "setting users_mangle chain : "

# chaine utilisée pour le marquage en PREROUTING

# On optimise à fond

$IPT -t mangle -N users_mangle

# On marque à 1 les paquets des userssécurisés

for x in $USERS_SECU

do

$IPT -t mangle -A users_mangle -m mac --mac-source ${x} -j MARK --set-mark 1

done

# Et on les degage de la chaine, ce sont

# les plus nombreux

$IPT -t mangle -A users_mangle -m mark --mark 1 -j RETURN

# On passe aux user libre, un peu moins nombreux

# on marque à 2 les paquets

for x in $USERS_LIBRE

do

$IPT -t mangle -A users_mangle -m mac --mac-source ${x} -j MARK --set-mark 2

done

# et on les dégage rapidement de la chaine

$IPT -t mangle -A users_mangle -m mark --mark 2 -j RETURN

# on marque les users speciaux

for x in $USERS_SPECIAUX

do

$IPT -t mangle -A users_mangle -m mac --mac-source ${x} -j MARK --set-mark 3

done

# et on les dégages de la table mangle

$IPT -t mangle -A users_mangle -m mark --mark 3 -j RETURN

# On marque les ordis du réso

for x in $ORDI_REZAL

do

$IPT -t mangle -A users_mangle -m mac --mac-source ${x} -j MARK --set-mark4

done

# et on les dégages de la table mangle la

$IPT -t mangle -A users_mangle -m mark --mark 4 -j RETURN

# On marque les users virus

for x in $USERS_VIRUS

do

$IPT -t mangle -A users_mangle -m mac --mac-source ${x} -j MARK --set-mark 5

done

# pas besoin de les degager, c'est la derniere regle de la

# chaine (shokobo :ouai mais bon on fait tout pareil juste pour que ce soit bo pour les yeux)

$IPT -t mangle -A users_mangle -m mark --mark 5 -j RETURN

echo -e "done\n"

################################

######### users_nat ############

echo -e "setting users_nat chain : "

$IPT -t nat -N users_nat

# On sort les paquets marqués de la chaine PREROUTING de

# la table nat

$IPT -t nat -A users_nat -m mark --mark 1 -j ACCEPT

$IPT -t nat -A users_nat -m mark --mark 2 -j ACCEPT

$IPT -t nat -A users_nat -m mark --mark 3 -j ACCEPT

$IPT -t nat -A users_nat -m mark --mark 4 -j ACCEPT

#Bon la par defaut tout est accepte j'imagine si je met ca :

#$IPT -t nat -A users_nat -m mark --mark 4 -j ACCEPT

#donc on met ça :

$IPT -t nat -A users_nat -m mark --mark 5 -j DROP

echo -e "done\n"

###############################

######### open ###################

# chaine d'ouverture en approche statefull

echo -e "setting open chain : "

$IPT -N open

# on accepte les connections préetablies

$IPT -A open -m state --state ESTABLISHED,RELATED -j ACCEPT

# on accepte des connections nouvelles de n'importe où sauf de

# l'exterieur

$IPT -A open -m state --state NEW -i eth0 -j ACCEPT

$IPT -A open -m state --state NEW -i l0 -j ACCEPT

echo -e "done\n"

##################################

######### PREROUTING #############

##################################

echo -e "setting PREROUTING : "

#les connexions venant de l’extérieur, après filtrage, sont redigirés vers les ordis concernés

#et passe pas la connexion ETH1

# Ordre de passage des tables en prerouting :

# conntrack

# mangle

# nat

# On coupe phatbot

$IPT -t nat -A PREROUTING -d 212.199.126.226 -j REJECT --reject-with icmp-port-unreachable

#Trop de ping tue le ping(sylvain)

$IPT -t nat -A PREROUTING -s 66.234.14.70/80 -j REJECT --reject-with icmp-port-unreachable

# on effectue un marquage selon les adresses mac comme

# defini dans la chaine users_mangle

$IPT -t mangle -A PREROUTING -i eth0 -j users_mangle

# On redirige les connexions allant sur #########.com

# sur #######, qu'elles viennent de l'interieur

$IPT -t nat -A PREROUTING -d $ETH1_IP -p tcp --dport 80 -j DNAT --to 172.20.0.5

$IPT -t nat -A PREROUTING -d $ETH2_IP -p tcp --dport 80 -j DNAT --to 172.20.0.5

#$IPT -t nat -A PREROUTING -d $ETH3_IP -p tcp --dport 80 -j DNAT --to 172.20.0.5

#$IPT -t nat -A PREROUTING -d $ETH4_IP -p tcp --dport 80 -j DNAT --to 172.20.0.5

# pour rajouter une redirection depuis l'exterieur

# il NE faut PAS enlever le -d $eth1_ip, c'est idiot, je le sais je l'ai fait :mdr:

# Tles, le fou

# Irc corrigé par tles, le fou

$IPT -t nat -A PREROUTING -d $ETH1_IP -p tcp --dport 6667 -j DNAT --to 172.20.0.5

$IPT -t nat -A PREROUTING -d $ETH1_IP -p udp --dport 6667 -j DNAT --to 172.20.0.5

#Jabber sur jabber ######.com depuis l'exterieur (Tles)

$IPT -t nat -A PREROUTING -d $ETH1_IP -p tcp --dport 5222 -j DNAT --to 172.20.0.5

# Port de syncronisation de serveurs jabber entre deux serveurs (ne sert a rien)

$IPT -t nat -A PREROUTING -d $ETH1_IP -p tcp --dport 5269 -j DNAT --to 172.20.0.5

# on dégage les paquets venant de eth1 de la table nat

# on n'a plus besoin de les traiter ensuite

$IPT -t nat -A PREROUTING -i eth1 -j ACCEPT

$IPT -t nat -A PREROUTING -i eth2 -j ACCEPT

$IPT -t nat -A PREROUTING -i eth3 -j ACCEPT

#$IPT -t nat -A PREROUTING -i eth4 -j ACCEPT

$IPT -t nat -A PREROUTING -i eth0 -j users_nat

# On redirige les packets web des autres (ceux qui ne sont pas inscrits) sur ###### sur

# le port 81, où apache renvoie sur la page d'enregistrement

$IPT –t nat –A PREROUTING -i eth0 DROP

$IPT -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.20.0.3:81

#pour interdire les autres ports mais laisser passer les mails

#$IPT –t nat –A PREROUTING –i eth0 -p tcp –dport 110 ACCEPT

#$IPT –t nat –A PREROUTING –i –eth0 –j DROP

echo -e "done\n"

##################################

######### INPUT ##################

##################################

echo -e "setting INPUT : "

# conntrack

# mangle

# filter

# C'est la que l'on détermine les packets qui doivent ou

# non arriver sur vulcain

#on veut installation propre : de base on drop tout puis on construit les règles (fait au début)

#LA REGLE PAR DEFAUT EST DE LAISSER PASSER LES NOUVELLES

# CONNEXIONS QUE PAR ETH1 ... les connexions venant

#de l'extérieur ne doivent passer que par une seule connexion

# on laisse passer le trafic sur l'interface de loopback

$IPT -A INPUT -i lo -j ACCEPT

# on autorise tout ce qui vient de l'interieur du rezo

# à entrer sur passerelle2 (eventuellement à durcir....)

$IPT -A INPUT -i eth0 -j ACCEPT

# On autorise le ping (player1)

#$IPT -A INPUT -i eth1 -p icmp -j ACCEPT

# Non, on autorise juste les echo-request, c quand meme plus malin (arthur)

$IPT -A INPUT -i eth1 -p icmp --icmp-type echo-request -j ACCEPT

# à rajouter explicitement : les services que l'on veut

# laisser accessibles depuis l'exterieur

# DNS

$IPT -A INPUT -i eth1 -p tcp --dport 53 -j ACCEPT

$IPT -A INPUT -i eth1 -p udp --dport 53 -j ACCEPT

# ssh

$IPT -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT

$IPT -A INPUT -i eth1 -p tcp --dport 44 -j ACCEPT

# mail

# pop ? (110)

# smtp ? (25)

$IPT -A INPUT -i eth1 -p tcp --dport 25 -j ACCEPT

$IPT -A INPUT -i eth1 -p tcp --dport 25 -j ACCEPT

# imap ? (143)

# imap en ssl ? (993) ne mettre que ssl

$IPT -A INPUT -i eth1 -p tcp --dport 993 -j ACCEPT

# on rejette les connections tcp non désirées avec un tcp-reset

$IPT -A INPUT -p tcp -j REJECT --reject-with tcp-reset

# on rejette le reste avec un icmp-port-unreachable

$IPT -A INPUT -j REJECT --reject-with icmp-port-unreachable

echo -e "done\n"

##################################

######### OUTPUT #################

##################################

# Ordre de passage des tables en OUTPOUT

# conntrack

# mangle

# filter

# nat

# C'est la que l'on determine les packets qui doivent ou

# non partir de passerelle 2

# inutile d'ajouter quoi que ce soit si l'on n'est pas

# en politique parano....

# On considere pour le moment que l'on reste en politique

# ACCEPT sur l'OUTPUT

# on laisse passer le traffic sur l'interface de loopback

#$IPT -A OUTPUT -o lo -j ACCEPT

##################################

######### FORWARD ################

##################################

# ordre de passage des tables en input

# ordre de passage des tables en FORWARD

# mangle

# filter

# C'est là que s'effectue le filtrage des packets routés

# par passerelle2

#politique de base de tout bloquer au départ, voir au début

# on optimise le traitement, ce cas est celui de la majorité

# des paquets

$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#Bon ca pour l'instant c'est assez violent avec les pauvres qui sont dans le groupe virus

#$IPT -A FORWARD -i eth0 -m mark --mark 5 -j drop

$IPT -A FORWARD -i eth0 -m mark --mark 5 -j REJECT

# Pour les users speciaux, on laisse tout passer

$IPT -A FORWARD -i eth0 -m mark --mark 3 -o eth2 -j open

# Pour les ordis du réso, on laisse tout passer

$IPT -A FORWARD -i eth0 -m mark --mark 4 -o eth1 -j open

# pour les users sécu, on fixe ce que l'on laisse passer :

#

# Les classiques :

#

# communincations avec les autres ordinateurs :

# ftp tcp/udp 20:21; htpp tcp 80 ; domain tcp/udp 53; sftp tcp 115; https tcp/udp 443,

# ssh tcp/udp 22, rsync tcp/udp 873, identif tcp/udp 113, cvs tcp 2401 ; ntp (clock) tcp/udp 123,

# patage mac : TCP/UDP 6700,6701,6702,10698,10699,10700 ;

#mms (média server) tcp/udp 1755

#communications par mail :

#smtp tcp 25 ; pop tcp/udp 110, nntp tcp/udp 119, smtp tcp 25,465,587,995

#communication pour messagerie instantanée :

#icq tcp 5190 et 4000, irc tcp/udp 6666 et 6667, icq tcp 4000, 5190 ; yahoo mesenger tcp 5050

#AOL messenger tcp/udp 5190 ; Yahoogames tcp 11999 ;

#MSN gaming zone tcp 28800:29100 udp 28800:29100; msn tcp/udp 1963

#puis on rajoute les ports pour les jeux notemment et les webcams et tout et tout les ports

#nécessaires pour les utilisateurs libre

LIBRE_TCP="20 21 22 25 53 80 81 110 113 115 119 123 139 443 465 500 587 873 995 1280 1503 1731 1755 163 2401 4000 5001 5050 5100 5190 6112 6666 6667 6700 6701 6702 6891 6900 6901 7002 10500 10501 10502 10503 10504 10622 10623 10624 10698 10699 10700 11999 30000 30001 30002 30003 30004 30005 30006 30007 30008 30009 30010 47624"

LIBRE_UDP="20 21 22 53 110 113 119 123 139 443 873 1280 1503 1731 1755 4000 5000 5001 5002 5003 5004 5005 5006 5006 5007 5008 5009 5010 5100 5190 6073 6112 6666 6667 6700 6701 6702 6801 6901 7002 10500 10501 10502 10503 10504 10622 10623 10624 10698 10699 10700 11999 1963"

SERVICE_TCP=”20 21 22 25 53 80 81 110 113 115 119 123 443 465 587 873 995 1755 163 2401 4000 5050 5190 6666 6667 6700 6701 6702 10698 10699 10700 11999 ”

SERVICE_UDP=”20 21 22 53 110 113 119 123 443 873 1755 4000 5190 6666 6667 6700 6701 6702 6801 6901 10698 10699 10700 11999 1963”

for x in $SERVICES_TCP

do

$IPT -A FORWARD -i eth0 -m mark --mark 1 -p tcp --dport ${x} -o eth1 -j ACCEPT

done

for x in $SERVICES_UDP

do

$IPT -A FORWARD -i eth0 -m mark --mark 1 -p udp --dport ${x} -o eth1 -j ACCEPT

done

#occupons nous des ranges de ports pour les markés 1 et 2 :

#Gaming Zone

$IPT -A FORWARD -i eth0 -m mark --mark 1 -p tcp --dport 28800:29100 -o eth1 -j ACCEPT

$IPT -A FORWARD -i eth0 -m mark --mark 1 -p udp --dport 28800:28900 -o eth1 -j ACCEPT

$IPT -A FORWARD -i eth0 -m mark --mark 2 -p tcp --dport 28800:29100 -o eth3 -j ACCEPT

$IPT -A FORWARD -i eth0 -m mark --mark 2 -p udp --dport 28800:28900 -o eth3 -j ACCEPT

#Plage utilise pour les jeux online:

$IPT -A FORWARD -i eth0 -m mark --mark 2 -p tcp --dport 2300:2400 -o eth3 -j ACCEPT

$IPT -A FORWARD -i eth0 -m mark --mark 2 -p udp --dport 2300:2400 -o eth3 -j ACCEPT

#Counter Strike

$IPT -A FORWARD -i eth0 -m mark --mark 2 -p tcp –dport 27010:27070 -o eth3 -j ACCEPT

$IPT -A FORWARD -i eth0 -m mark --mark 2 -p udp –dport 27010:27070 -o eth3 -j ACCEPT

$IPT -A FORWARD -i eth0 -m mark --mark 1 -p tcp –dport 27010:27070 -o eth1 -j ACCEPT

$IPT -A FORWARD -i eth0 -m mark --mark 1 -p udp –dport 27010:27070 -o eth1 -j ACCEPT

# Enfin, Pour les users libre marqué 2, on laisse presque tt passer sauf les warez : je ve pa aller #en prison

for x in $LIBRE_TCP

do

$IPT -A FORWARD -i eth0 -m mark --mark 2 -p tcp --dport ${x} -o eth3 -j ACCEPT

done

for x in $LIBRE_UDP

do

$IPT -A FORWARD -i eth0 -m mark --mark 2 -p udp --dport ${x} -o eth3 -j ACCEPT

done

# A voir de pres :

# time 37 tcp/udp

# nameserver 42/tcp

# imap2 143 tcp/udp

# imap3 220 tcp/udp

# imaps 993 tcp/udp

# pop3s 995 tcp/udp

# whois 43 tcp

#

# On laisse passer les connections dnatées sur #########

# quelle qu'en soit l'interface source

$IPT -A FORWARD -p tcp -d 172.20.0.5 --dport 80 -j ACCEPT

# on laisse passer les connections dnatées sur #######

# ( ce sont celles de users sans acces)

$IPT -A FORWARD -i eth0 -p tcp -d 172.20.0.3 --dport 81 -j ACCEPT

## regles persos ###

# Jabber c la base (quand ca marche)

$IPT -A FORWARD -i eth1 -p tcp --dport 5222 -j ACCEPT

$IPT -A FORWARD -i eth1 -p tcp --dport 6667 -j ACCEPT

# On accepte les ping (PLayer1)

# c la guinguette !

# non, que le echo-request et reply (arthur)

#moi je trouve tout ça carrément super guinguette … j’autorise que dalle je suis un bourrin

#pur jus moi, venant de l’extérieur je veux rien … bon allez eth1 pour faire plaisir (Shokobo)

$IPT -A FORWARD -i eth0 -p icmp --icmp-type echo-request -j ACCEPT

$IPT -A FORWARD -i eth0 -p icmp --icmp-type echo-reply -j ACCEPT

$IPT -A FORWARD -i eth1 -p icmp --icmp-type echo-request -j ACCEPT

$IPT -A FORWARD -i eth1 -p icmp --icmp-type echo-reply -j ACCEPT

$IPT –A FORWARD -i eth2 -p icmp --icmp -j REJECT -reject-with icmp-port-unreachable

$IPT –A FORWARD -i eth3 -p icmp --icmp -j REJECT -reject-with icmp-port-unreachable

# on rejette les connections tcp non désirées avec un tcp-reset

$IPT -A FORWARD -p tcp -j REJECT --reject-with tcp-reset

# on rejete le reste avec un icmp-port-unreachable

$IPT -A FORWARD -j REJECT --reject-with icmp-port-unreachable

##################################

######### POSTROUTING ############

##################################

# ordre de passage des tables en POSTROUTING

# conntrack

# mangle

# nat

# SNAT de toutes les connections venant de l'interieur et

# allant sur www.kin-aix.com sur pepper

$IPT -t nat -A POSTROUTING -p tcp -d 172.20.0.5 -s 172.20.0.0/30 --dport 80 -j SNAT --to 172.20.0.1

# allant sur irc.######.com sur ####### (nouveau serveur irc)

$IPT -t nat -A POSTROUTING -p tcp -d 172.20.0.5 -s 172.20.0.0/30 --dport 6667 -j SNAT --to 172.20.0.1

$IPT -t nat -A POSTROUTING -p udp -d 172.20.0.5 -s 172.20.0.0/30 --dport 6667 -j SNAT --to 172.20.0.1

# jabber

$IPT -t nat -A POSTROUTING -p tcp -d 172.20.0.5 -s 172.20.0.0/30 --dport 5222 -j SNAT --to 172.20.0.1

# SNAT de la redirection de ceux qui n'ont pas acces au net

# sur ######

$IPT -t nat -A POSTROUTING -p tcp -d 172.20.0.3 -s 172.20.0.0/30 --dport 81 -j SNAT --to 172.20.0.1

# On fait passer tout le monde pour magma dans la

# zone exterieur

$IPT -t nat -A POSTROUTING -o eth1 -j SNAT --to $ETH1_IP

$IPT -t nat -A POSTROUTING -o eth2 -j SNAT --to $ETH2_IP

$IPT -t nat -A POSTROUTING -o eth3 -j SNAT --to $ETH3_IP

$IPT -t nat -A POSTROUTING -o eth4 -j SNAT --to $ETH4_IP

################################

########## QOS #################

################################

# Les paquets sont marqués, y a plus qu'à coder !!!!

# Ce qui est effectué la est seulement du shapping de la bande

# sortante, il ne s'agit pas de QOS, ca c'est encore à bosser...

DOWNLINK=2048

UPLINK=512

DEV="eth2"

# On attache un qdisc à eth2

#tc qdisc add dev $DEV root handle 1: htb default 10

# On crée la classe racine

#tc class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINLK}kbps ceil ${UPLINK}kbps

# On crée une classe qui prend 60% du traffic

#tc class add dev $DEV parent 1:1 classid 1:10 htb rate [6*${UPLINK}/10]kbps ceil ${UPLINK}kbps

# On crée une classe qui prend 40% du traffic

#tc class add dev $DEV parent 1:1 classid 1:11 htb rate [4*${UPLINK}/10]kbps ceil ${UPLINK}kbps

# On balance les users p2p sur la classe 11

#tc filter add dev $DEV protocol ip parent 1:0 prio 1 handle 3 fw flowid 1:11

#A L’ETUDE REGARDEZ PAS C’EST PAS BO DU TOUT !!!!! (Shokobo)

#pour limiter l’upload aux utilisateurs totalement libre à 50%

#for x in $USER_SPECIAUX

#do

#On crée la classe racine

#tc class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINLK}kbps ceil ${UPLINK}kbps

# chaque utilisateur ne peut pas utiliser plus de 50% de l’upload

#tc class add dev $DEV parent 1:1 classid 1:10 htb rate [5*${UPLINK}/10]kbps ceil ${UPLINK}kbps

#tc filter add dev $DEV protocol ip parent 1:0 prio 1 handle 3 fw flowid 1:11

#done

# pas besoin de mettre un filtre sur les autres,

# la politique par défaut

# s'en charge

#################################

######### Routage ###############

#################################

# on active le routage des packets

echo "1" > /proc/sys/net/ipv4/ip_forward

#################################

;;

--stop)

#On coupe le forwarding

echo 0 > /proc/sys/net/ipv4/ip_forward

echo -e "Flush de toutes les chaines"

# on flush les chaines de toutes

# les tables

$IPT -F

$IPT -P INPUT ACCEPT

$IPT -t nat -F

$IPT -t mangle -F

# on vire aussi les chaines utilisateur

$IPT -F open

$IPT -X open

$IPT -t nat -F users_nat

$IPT -t nat -X users_nat

$IPT -t mangle -F users_mangle

$IPT -t mangle -X users_mangle

;;

*) echo "firewall --reload | --start | --stop "

exit 1

;;

esac

Rahhhh mal au doigt à la fin quoi ! :-)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...