Bonjour tout le monde
Je me suis conçu un petit parefeu fonctionnant avec Iptables.
Je fonctionne avec une sarge et une connection bas débit
(bon je sais, un parefeu sur une connection bas débit... mais au moins je serai paré pour quand j'aurai l'adsl...)
ça semble marcher correctement sauf que :
Je ne peux pas faire de transfert de fichier via ftp avec gFTP par exemple pour installer un site...
Je ne peux pas ouvrir la page d'administration de mon compte chez mon fournisseur d'accès en l'occurance club-internet. Ces pages fonctionnent avec ssl apparemment
J'ai par exemple bien essayé d'ajouter des lignes concernant ssl, mais comme ça ne correspond à aucun port listé dans le /etc/services, iptables me raconte que les lignes en questions sont erronées...
Donc ma question, c'est de savoir quoi faire pour ouvrir les connections sécurisées sur les pages de fournisseurs d'accès et les transferts ftp.
Voilà
Je vous mets là le parefeu en question... des fois que ça inspirerait quelqu'un
c'est conçu à partir de plusieurs parefeu proposés sur les site de trustonme et de lea linux et quelques autres documentations glanées sur le net.
Merci de toute suggestion
bonne continuation
Paul
#!/bin/sh
#fonction de chargement des modules
chargemd(){
/sbin/modprobe iptable_nat
/sbin/modprobe iptable_filter
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc
echo "[les modules sont charges]"
}
#fonction de vidage des règles
vidage(){
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -F
echo "[toutes les regles sont effacees]"
}
#fonction de mise à zéro de iptable
zero(){
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
echo "[iptable permet tout partout]"
}
#fonction de mise en place du masquerading
nat(){
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
echo "[Le masquerading est en place]"
}
#surveillance minimale de ce que le parefeu interdit
jrnl(){
iptables -N LOG_DROP
iptables -A LOG_DROP #--log-prefix IPT ça n\'est pas reconnu
iptables -A LOG_DROP -j DROP
}
#régles par défaut sur la machine locale
deflo(){
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
echo "[iptable permet tout sur la machine locale]"
}
#règles par défaut sur le réseau local
defet(){
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -A FORWARD -o etho -j ACCEPT
echo "[iptable bloque l'exterieur et permet les mouvements interieurs au reseau]"
}
#regles suplementaires : ce que l'on permet
regles(){
iptables -A OUTPUT -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m state --state NEW -m limit --limit 10/min -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT
iptables -A FORWARD -o etho -i ppp0 -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport www -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport www -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 20 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 21 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p udp --dport 20 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --sport 21 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p udp --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p udp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --sport tftp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p udp --dport tftp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport pop3 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport pop3 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport pop3s -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport pop3s -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport smtp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport smtp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport irc -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport irc -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport domain -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport domain -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --sport domain -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p udp --dport domain -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#pas de spoofing
if [ -e /proc/sys/net/ipv4/conf/all/ip_filter ];
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo > 1 $filtre
done
fi
echo "[pas de spoofing]"
#pas de synflood
if [ -e /proc/sys/net/ipv4/tcp_syncookies ];
then
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
fi
echo "[pas de synflood]"
}
#status : apperçu des regles en cours
status(){
iptables -L
iptables -t nat -L
}
jrnls(){
iptables -A FORWARD -j LOG_DROP
iptables -A INPUT -j LOG_DROP
iptables -A OUTPUT -j LOG_DROP
}
#programme du parefeu en lui-même
start(){
chargemd
vidage
zero
nat
jrnl
deflo
defet
regles
echo "[le parefeu demarre]"
}
#arret du parefeu avec conservation du masquerading
stop(){
vidage
zero
nat
echo "[le parefeu s'arrete et le masquerading reste]"
}
#redémarrage du marefeu
restart(){
stop
sleep 2
jrnl
deflo
defet
regles
echo "[le parefeu redemarre]"
}
case "$1" in
'start')
start
;;
'stop')
stop
;;
'restart')
restart
;;
'status')
status
;;
*) echo "[usage : { start | stop | restart | status }]"
esac
#EOF