Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[iptables] FTP passif (résolu)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
jmf
n00b
n00b


Joined: 28 Sep 2003
Posts: 65

PostPosted: Sun Dec 19, 2004 8:02 am    Post subject: [iptables] FTP passif (résolu) Reply with quote

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
View user's profile Send private message
marvin rouge
Veteran
Veteran


Joined: 01 Aug 2004
Posts: 1422
Location: Villa Lumierrante, Zonelibre

PostPosted: Sun Dec 19, 2004 8:44 am    Post subject: Reply with quote

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
View user's profile Send private message
jmf
n00b
n00b


Joined: 28 Sep 2003
Posts: 65

PostPosted: Sun Dec 19, 2004 10:47 am    Post subject: Reply with quote

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
View user's profile Send private message
marvin rouge
Veteran
Veteran


Joined: 01 Aug 2004
Posts: 1422
Location: Villa Lumierrante, Zonelibre

PostPosted: Sun Dec 19, 2004 11:08 am    Post subject: Reply with quote

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
View user's profile Send private message
jmf
n00b
n00b


Joined: 28 Sep 2003
Posts: 65

PostPosted: Sun Dec 19, 2004 11:28 am    Post subject: Reply with quote

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
View user's profile Send private message
marvin rouge
Veteran
Veteran


Joined: 01 Aug 2004
Posts: 1422
Location: Villa Lumierrante, Zonelibre

PostPosted: Sun Dec 19, 2004 11:50 am    Post subject: Reply with quote

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 :wink:
Back to top
View user's profile Send private message
jmf
n00b
n00b


Joined: 28 Sep 2003
Posts: 65

PostPosted: Sun Dec 19, 2004 2:02 pm    Post subject: Reply with quote

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
View user's profile Send private message
Leander256
l33t
l33t


Joined: 05 Jul 2003
Posts: 910
Location: Singapour

PostPosted: Sun Dec 19, 2004 11:27 pm    Post subject: Reply with quote

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
View user's profile Send private message
jmf
n00b
n00b


Joined: 28 Sep 2003
Posts: 65

PostPosted: Mon Dec 20, 2004 7:10 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
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