View previous topic :: View next topic |
Author |
Message |
jmf n00b
Joined: 28 Sep 2003 Posts: 65
|
Posted: Sun Dec 19, 2004 8:02 am Post subject: [iptables] FTP passif (résolu) |
|
|
Quelqu'un peut il me dire quelles règles pour autoriser le FTP passif (le serveur envoie un port aléatoire sur lequel le client doit se connecter ) c'est pour emerge qui fait du passif . Le FTP actif fonctionne bien avec :
iptables -A OUTPUT -o ppp0 -m state --state NEW,ESTABLISHED -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -i ppp0 -m state --state ESTABLISHED -p tcp --sport 21 -j ACCEPT
iptables -A OUTPUT -o ppp0 -m state --state NEW,ESTABLISHED -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -i ppp0 -m state --state NEW,ESTABLISHED -p tcp --sport 20 -j ACCEPT
Merci pour votre aide
Last edited by jmf on Sun Dec 19, 2004 11:22 am; edited 1 time in total |
|
Back to top |
|
|
marvin rouge Veteran
Joined: 01 Aug 2004 Posts: 1422 Location: Villa Lumierrante, Zonelibre
|
Posted: Sun Dec 19, 2004 8:44 am Post subject: |
|
|
le ftp et iptables, c'est pas ce qu'il y a de plus simple ....
Il faut que tu utilises le modules ip_conntrack_ftp (il faut que tu l'aies configuré dans ton kernel, section netfilter). Ce module va te servir à "tracker" la connection, grâce à la cible (Target) RELATED. Il va falloir te lire un peu de doc
De la doc, des FAQ, et des Howto : http://www.netfilter.org/documentation/index.html#documentation-faq
A la fin de ce tutorial, un exemple : http://www.sns.ias.edu/~jns/security/iptables/iptables_conntrack.html
Voir aussi la section "Netfilter et Iptables" et la section "FTP" de ce site : http://christian.caleca.free.fr/
Sinon il y a un HOWTO (que je trouve complexe) sur iptables dans la section "Documentation, tips and tricks" de ce forum. Ce HOWTO est en 2 parties, le ftp est dans le 2eme partie.
+ |
|
Back to top |
|
|
jmf n00b
Joined: 28 Sep 2003 Posts: 65
|
Posted: Sun Dec 19, 2004 10:47 am Post subject: |
|
|
Merci marvin rouge pour ta réponse riche en infos , je vais regarder ça , mais vous comment avez-vous fait pour 'emerge' avec un firewall basé sur les règles d'iptables . |
|
Back to top |
|
|
marvin rouge Veteran
Joined: 01 Aug 2004 Posts: 1422 Location: Villa Lumierrante, Zonelibre
|
Posted: Sun Dec 19, 2004 11:08 am Post subject: |
|
|
actuellement, mes règles iptable sont assez laxistes : j'ai 1 machine qui est connectée de manière temporaire sur internet, sans auxun serveur, derrière un routeur, donc je pars du principe que les risques sont minimes. Et puis c'est surtout que je n'ai pas eu le temps de me paufiner un bon script iptables.
Le principe est le suivant:
- tout ce qui sort est autorisé
- tout ce qui rentre avec les cibles ESTABLISHED ou RELATED est autorisé
- le reste est supprimé
- quelques ajouts : mon routeur m'envoie pleins de paquets deffectueux sur le port 162, je ne veux pas remplir mes logs avec ca, donc poubelle !
- je logge les scans
Bref, mon script actuel minimaliste (je répète, aucun serveur): Code: | cat /etc/init.d/firewall
#!/sbin/runscript
IPTABLES=/sbin/iptables
IPTABLESSAVE=/sbin/iptables-save
IPTABLESRESTORE=/sbin/iptables-restore
FIREWALL=/etc/firewall.rules
#interface
IINTERFACE=eth0
opts="${opts} showstatus panic save restore showoptions rules"
depend() {
need net
}
rules() {
stop
ebegin "Setting internal rules"
########################################################################
einfo "Setting default rule to drop"
$IPTABLES -P FORWARD DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
#default rule
einfo "Creating states chain"
$IPTABLES -N allowed-connection
$IPTABLES -F allowed-connection
$IPTABLES -A allowed-connection -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed-connection -i $IINTERFACE -m limit -j LOG --log-prefix "Bad packet from ${IINTERFACE}:"
$IPTABLES -A allowed-connection -j DROP
#drop du port 162
einfo "Drop port 162"
$IPTABLES -N snmp
$IPTABLES -F snmp
$IPTABLES -A snmp -p udp --dport 162 -j DROP
#ICMP traffic
einfo "Creating icmp chain"
$IPTABLES -N icmp_allowed
$IPTABLES -F icmp_allowed
$IPTABLES -A icmp_allowed -m state --state NEW -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A icmp_allowed -m state --state NEW -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPTABLES -A icmp_allowed -p icmp -j LOG --log-prefix "Bad ICMP traffic:"
$IPTABLES -A icmp_allowed -p icmp -j DROP
########################################################################
#Catch portscanners
einfo "Creating portscan detection chain"
$IPTABLES -N check-flags
$IPTABLES -F check-flags
$IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit 5/minute -j LOG --log-level alert --log-prefix "NMAP-XMAS:"
$IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS:"
$IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS-PSH:"
$IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "NULL_SCAN:"
$IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/RST:"
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/FIN:"
$IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
########################################################################
# Apply and add invalid states to the chains
einfo "Applying chains to INPUT"
$IPTABLES -A INPUT -m state --state INVALID -j DROP
$IPTABLES -A INPUT -j snmp
$IPTABLES -A INPUT -j icmp_allowed
$IPTABLES -A INPUT -j check-flags
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -j allowed-connection
einfo "Applying chains to FORWARD"
$IPTABLES -A FORWARD -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -o lo -j ACCEPT
$IPTABLES -A FORWARD -j allowed-connection
einfo "Applying chains to OUTPUT"
$IPTABLES -A OUTPUT -m state --state INVALID -j DROP
$IPTABLES -A OUTPUT -o lo -j ACCEPT
eend $?
}
start() {
ebegin "Starting firewall"
if [ -e "${FIREWALL}" ]; then
restore
else
einfo "${FIREWALL} does not exists. Using default rules."
rules
fi
eend $?
}
stop() {
ebegin "Stopping firewall"
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
eend $?
}
showstatus() {
ebegin "Status"
$IPTABLES -L -n -v --line-numbers
einfo "NAT status"
$IPTABLES -L -n -v --line-numbers -t nat
eend $?
}
panic() {
ebegin "Setting panic rules"
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -F
$IPTABLES -P FORWARD DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
eend $?
}
save() {
ebegin "Saving Firewall rules"
$IPTABLESSAVE > $FIREWALL
eend $?
}
restore() {
ebegin "Restoring Firewall rules"
$IPTABLESRESTORE < $FIREWALL
eend $?
}
restart() {
svc_stop; svc_start
}
showoptions() {
echo "Usage: $0 {start|save|restore|panic|stop|restart|showstatus}"
echo "start) will restore setting if exists else force rules"
echo "stop) delete all rules and set all to accept"
echo "rules) force settings of new rules"
echo "save) will store settings in ${FIREWALL}"
echo "restore) will restore settings from ${FIREWALL}"
echo "showstatus) Shows the status"
}
|
C'est un script que j'ai récupéré/modifié à partir de la doc gentoo ( ici )
Ce que j'ai fait ensuite: Code: | /etc/init.d/firewall start
/etc/init.d/iptables save ##script gentoo -> je sauve les règles
/etc/init.d/firewall stop
/etc/init.d/iptables start
rc-update add iptables default |
Comme ça mon firewall est démarré au boot.
Evidemment, dès que j'ai le temps, il faudra que je l'améliore (ftp, ssh, http ...)
C'est surement pas très sécurisé, mais pour mon utilisation actuelle ca fonctionne.
+ |
|
Back to top |
|
|
jmf n00b
Joined: 28 Sep 2003 Posts: 65
|
Posted: Sun Dec 19, 2004 11:28 am Post subject: |
|
|
j'ai trouvé suite à tes liens , merci . j'ai juste rajouté ces 2 règles
#FTP passif
iptables -A INPUT -i ppp0 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
Vraiment super cette communauté gentoo . |
|
Back to top |
|
|
marvin rouge Veteran
Joined: 01 Aug 2004 Posts: 1422 Location: Villa Lumierrante, Zonelibre
|
Posted: Sun Dec 19, 2004 11:50 am Post subject: |
|
|
jmf wrote: | #FTP passif
iptables -A INPUT -i ppp0 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT |
Je vais surement pinailler, mais dans ces règles, est-ce que tu as besoin de --dport et --sport ? Puisque de toutes manières, ces connexions sont soit ESTABLISHED, soit RELATED. Si un guru iptables passe par là, je serait pas contre un éclaircissement.
jmf wrote: | Vraiment super cette communauté gentoo . | Ouaip. J'en ai bien profité moi aussi, alors je partage ma modeste expérience |
|
Back to top |
|
|
jmf n00b
Joined: 28 Sep 2003 Posts: 65
|
Posted: Sun Dec 19, 2004 2:02 pm Post subject: |
|
|
je connais pas trop mais pour le FTP passif le port envoyé par le serveur et sur lequel le client se connecte est supérieur à 1024 , donc le --dport 1024: a son importance .
je n'ai fait que suivre la doc sur ton lien sur le FTP passif : http://www.sns.ias.edu/~jns/security/iptables/iptables_conntrack.html enfin maintenant ça marche . |
|
Back to top |
|
|
Leander256 l33t
Joined: 05 Jul 2003 Posts: 910 Location: Singapour
|
Posted: Sun Dec 19, 2004 11:27 pm Post subject: |
|
|
marvin rouge wrote: | jmf wrote: | #FTP passif
iptables -A INPUT -i ppp0 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT |
Je vais surement pinailler, mais dans ces règles, est-ce que tu as besoin de --dport et --sport ? Puisque de toutes manières, ces connexions sont soit ESTABLISHED, soit RELATED. Si un guru iptables passe par là, je serait pas contre un éclaircissement. |
Je ne prétends pas être un guru iptables, mais je commence à me débrouiller avec, et effectivement préciser les ports source et destination dans ce cas précis est superflu. A moins que tu ne veuilles interdire le trafic sur les ports en-dessous de 1024 (à condition que la politique par défaut soit DROP et qu'il n'y ait pas d'autre ACCEPT concernant ces ports plus bas), mais à ce moment-là autant écrire une règle le stipulant (car plus tu vas rajouter des règles plus ton script va être compliqué pour rien). |
|
Back to top |
|
|
jmf n00b
Joined: 28 Sep 2003 Posts: 65
|
Posted: Mon Dec 20, 2004 7:10 pm Post subject: |
|
|
En effet par défaut je drope tout et j'ouvre les flux sortants (ports < 1024) quand le besoin se présente mais je ne sais pas si ce choix est bon. Je me suis inspiré d'un script récupéré sur le Net . |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|