Problème étrange avec iptables -HELP NEEDED

Problème étrange avec iptables -HELP NEEDED - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 25-07-2002 à 11:34:29    

J'avais déjà posté pour un problème sur iptables. Je refais un post pour partir sur des bases neuves.
 
Problèmes constatés:
- lorsque je fais un send/receive depuis mon client mail de ma station vers les serveurs pop et smtp de mon serveur, cela fonctionne mais cela prends près d'une minute. Donc quelques fois il y a un échec en raison du time out. Je ne vois pas d'où viens le problème. Je sais seulement que cela vient de la chaine INPUT car lorsque je mets la politique ACCEPT par défaut sur cette chaine, tout fonctionne normalement (send/receive en moins d'une seconde). Je constate le même effet pervers lorsque j'accède aux ressources samba. Au moment de l'authentification, cela prend beaucoup de temps.
- le DHCP fonctionne alors que les ports ne sont pas ouverts...pourquoi?
 
Voici le script:
 
 

Code :
  1. #!/bin/sh
  2. #
  3. #
  4. ###########################################################################
  5. #
  6. # Local Area Network configuration.
  7. #
  8. LAN_IP0="192.168.100.254"
  9. LAN_IP1="192.168.101.254"
  10. LAN_IP2="192.168.102.254"
  11. LAN_IP3="192.168.103.254"
  12. LAN_IP_RANGE="192.168.0.0/16"
  13. LAN_BCAST_ADRESS0="192.168.100.255"
  14. LAN_BCAST_ADRESS1="192.168.101.255"
  15. LAN_BCAST_ADRESS2="192.168.102.255"
  16. LAN_BCAST_ADRESS3="192.168.103.255"
  17. LAN_IFACE0="eth0"
  18. LAN_IFACE1="eth1"
  19. LAN_IFACE2="eth2"
  20. LAN_IFACE3="eth3"
  21. LO_IFACE="lo"
  22. LO_IP="127.0.0.1"
  23. ##################################################
  24. #########################
  25. #
  26. # Internet Configuration.
  27. #
  28. echo -e "Internet Configuration ..\n"
  29. INET_IP=`ifconfig 'ppp0' | grep 'inet adr' | awk '{print $2}' | sed -e 's/adr\://'`
  30. INET_IFACE="ppp0"
  31. echo "External interface: $INET_IP"
  32. echo "1st Internal interface: $LAN_IP0"
  33. echo "2sd Internal interface: $LAN_IP1"
  34. echo "3th Internal interface: $LAN_IP2"
  35. echo "4th Internal interface: $LAN_IP3"
  36. ###########################################################################
  37. #
  38. # IPTables Configuration.
  39. #
  40. IPTABLES="/sbin/iptables"
  41. ##################################################
  42. #########################
  43. #
  44. # 2. Module loading.
  45. #
  46. echo "Module Loading .."
  47. #/sbin/depmod -q
  48. /sbin/modprobe ip_conntrack
  49. /sbin/modprobe ip_tables
  50. /sbin/modprobe iptable_filter
  51. /sbin/modprobe iptable_mangle
  52. /sbin/modprobe iptable_nat
  53. /sbin/modprobe ipt_LOG
  54. /sbin/modprobe ip_nat_ftp
  55. #/sbin/modprobe -a -k -s -v ip_nat_h323
  56. /sbin/modprobe ipt_REJECT
  57. /sbin/modprobe ipt_MASQUERADE
  58. #/sbin/modprobe ipt_owner
  59. /sbin/modprobe ip_conntrack_ftp
  60. /sbin/modprobe ip_conntrack_irc
  61. echo "Done loading modules"
  62. ###########################################################################
  63. #
  64. # 3. /proc set up.
  65. #
  66. echo "enabling forwarding .."
  67. echo "1" > /proc/sys/net/ipv4/ip_forward
  68. #
  69. # Dynamic IP users:
  70. #
  71. echo "enabling DynamicAddr .."
  72. echo "1" > /proc/sys/net/ipv4/ip_dynaddr
  73. ##################################################
  74. #########################
  75. # INPUT, FORWARD and OUTPUT chains.
  76. #
  77. echo "Set  policies."
  78. $IPTABLES -F
  79. $IPTABLES -X
  80. $IPTABLES -P INPUT DROP
  81. $IPTABLES -P OUTPUT DROP
  82. $IPTABLES -P FORWARD DROP
  83. $IPTABLES -t nat -F
  84. $IPTABLES -t nat -X
  85. #############################################################################
  86. # Create separate chains
  87. #############################################################################
  88. $IPTABLES -N icmp_packets
  89. $IPTABLES -N tcp_packets
  90. $IPTABLES -N udp_packets
  91. $IPTABLES -N icmp_lan0
  92. $IPTABLES -N tcp_lan0
  93. $IPTABLES -N udp_lan0
  94. $IPTABLES -N out_lan
  95. $IPTABLES -N out_inet
  96. $IPTABLES -N tcp_inet_lan
  97. $IPTABLES -N tcp_lan_inet
  98. $IPTABLES -N spoofing
  99. ####
  100. # Spoofing rules
  101. ####
  102. $IPTABLES -A spoofing -i $INET_IFACE -s 192.168.0.0/16 -j DROP
  103. $IPTABLES -A spoofing -i $LAN_IFACE3 ! -s 192.168.103.0/24 -j DROP
  104. $IPTABLES -A spoofing -s 10.0.0.0/8 -j DROP
  105. $IPTABLES -A spoofing -s 172.16.0.0/24 -j DROP
  106. ####
  107. # icmp_packets rules
  108. ####
  109. #$IPTABLES -A icmp_packets -p ICMP --icmp-type 8 -j ACCEPT
  110. #$IPTABLES -A icmp_packets -p ICMP --icmp-type 11 -j ACCEPT
  111. $IPTABLES -A icmp_packets -p ICMP -j ACCEPT
  112. ####
  113. # tcp_packets rules
  114. ####
  115. $IPTABLES -A tcp_packets -p TCP --sport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT  #http
  116. #$IPTABLES -A tcp_packets -p TCP --sport 21 -m state --state ESTABLISHED,RELATED -j ACCEPT  #ftp
  117. $IPTABLES -A tcp_packets -p TCP --sport 25 -m state --state ESTABLISHED,RELATED -j ACCEPT  #smtp
  118. $IPTABLES -A tcp_packets -p TCP --sport 110 -m state --state ESTABLISHED,RELATED -j ACCEPT  #pop
  119. ####
  120. # udp_packets rules
  121. ####
  122. #$IPTABLES -A udp_packets -p udp --sport 21 -m state --state ESTABLISHED,RELATED -j ACCEPT  #ftp
  123. $IPTABLES -A udp_packets -p UDP --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT  #dns
  124. ####
  125. # icmp_lan0
  126. ####
  127. $IPTABLES -A icmp_lan0 -p ICMP -j ACCEPT
  128. ####
  129. # udp_lan0
  130. ####
  131. $IPTABLES -A udp_lan0 -p UDP --dport 53 -j ACCEPT  #dns
  132. $IPTABLES -A udp_lan0 -p udp --dport 137 -j ACCEPT  #samba
  133. $IPTABLES -A udp_lan0 -p udp --dport 138 -j ACCEPT  #samba
  134. ####
  135. # tcp_lan0
  136. ####
  137. $IPTABLES -A tcp_lan0 -p TCP --dport 139 -j ACCEPT  #samba
  138. $IPTABLES -A tcp_lan0 -p TCP --dport 110 -j ACCEPT  #pop
  139. $IPTABLES -A tcp_lan0 -p TCP --dport 25 -j ACCEPT  #smtp
  140. ############################################################################
  141. # INPUT chain
  142. #
  143. # Bad TCP packets we don't want.
  144. ############################################################################
  145. echo "Enabling INPUT INTERNET chain"
  146. $IPTABLES -A INPUT -p tcp -j spoofing
  147. ####
  148. # Rules for incoming packets from the internet.
  149. ####
  150. $IPTABLES -A INPUT -i $INET_IFACE -p tcp ! --syn -m state --state NEW -j DROP
  151. $IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
  152. $IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
  153. $IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
  154. ####
  155. # Rules for local networks
  156. ####
  157. echo "Enabling INPUT ETH0 chain"
  158. #$IPTABLES -A INPUT -p all -i $LAN_IFACE0 -d $LAN_BCAST_ADRESS0 -j ACCEPT
  159. $IPTABLES -A INPUT -p udp -i $LAN_IFACE0 -j udp_lan0
  160. $IPTABLES -A INPUT -p icmp -i $LAN_IFACE0 -j icmp_lan0
  161. $IPTABLES -A INPUT -p tcp -i $LAN_IFACE0 -j tcp_lan0
  162. echo "Enabling INPUT Loopback chain"
  163. $IPTABLES -A INPUT -p ALL -i $LO_IFACE -j ACCEPT
  164. ####
  165. # output rules
  166. ####
  167. #sortie inet
  168. $IPTABLES -A out_inet -p udp --dport  53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT   #dns
  169. $IPTABLES -A out_inet -p TCP --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT  #http
  170. #sortie lan
  171. $IPTABLES -A out_lan -p udp --sport 53 -j ACCEPT
  172. $IPTABLES -A out_lan -p tcp --sport 110 -j ACCEPT
  173. #############################################################################
  174. # OUTPUT chain
  175. #############################################################################
  176. echo "Enabling OUTPUT chain"
  177. $IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
  178. $IPTABLES -A OUTPUT -o $LAN_IFACE0 -j out_lan
  179. $IPTABLES -A OUTPUT -o ppp0 -j out_inet
  180. #############################################################################
  181. # POSTROUTING chain
  182. #############################################################################
  183. echo "Enabling NAT"
  184. $IPTABLES -t nat -A POSTROUTING -s $LO_IP --o $INET_IFACE -j MASQUERADE
  185. $IPTABLES -t nat -A POSTROUTING -s 192.168.100.0/24 --o $INET_IFACE -j MASQUERADE
  186. $IPTABLES -t nat -A POSTROUTING -s 192.168.102.0/24 --o $INET_IFACE -j MASQUERADE
  187. ####
  188. # forwarded rules
  189. ####
  190. #lan vers inet
  191. $IPTABLES -A tcp_lan_inet -p TCP --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  192. $IPTABLES -A tcp_lan_inet -p TCP --dport 21 -j ACCEPT  #ftp
  193. #inet vers lan
  194. $IPTABLES -A tcp_inet_lan -p tcp ! --syn -m state --state NEW -j DROP
  195. $IPTABLES -A tcp_inet_lan -p TCP --sport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
  196. ####
  197. # Accept the packets we actually want to forward
  198. ####
  199. $IPTABLES -A FORWARD -j spoofing
  200. echo "Enabling FORWARD ETH0 chain"
  201. $IPTABLES -A FORWARD -p TCP -i $INET_IFACE -o $LAN_IFACE0 -j tcp_inet_lan
  202. $IPTABLES -A FORWARD -p ICMP -i $LAN_IFACE0 -o $INET_IFACE -j icmp_packets
  203. $IPTABLES -A FORWARD -p TCP -i $LAN_IFACE0 -o $INET_IFACE -j tcp_lan_inet
  204. echo "Enabling FORWARD ETH2 chain"
  205. $IPTABLES -A FORWARD -p TCP -i $INET_IFACE -o $LAN_IFACE2 -j tcp_inet_lan
  206. $IPTABLES -A FORWARD -p ICMP -i $LAN_IFACE2 -o $INET_IFACE -j DROP
  207. $IPTABLES -A FORWARD -p TCP -i $LAN_IFACE2 -o $INET_IFACE -j tcp_lan_inet


 
 
EDIT:
j'ai retiré: $IPTABLES -A OUTPUT -p ALL -j ACCEPT que j'avais mis pour faire des tests.


Message édité par bobor le 25-07-2002 à 13:01:08
Reply

Marsh Posté le 25-07-2002 à 11:34:29   

Reply

Marsh Posté le 25-07-2002 à 11:41:55    

Je peux te mettre mon script si tu veux. Chez moi j'ai un serveur Samba aussi, le meme que le serveur Web et FTp. Si ca peut t'aider. TOut marche nickel en tout cas.


---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 25-07-2002 à 11:48:35    

Dis je vois pas de regles concernant les nouvelles connexions aux ports 25 et 110 ? C'est normal ?


---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 25-07-2002 à 11:53:15    

Et pour tes paquets Samba je vois ps de regles sur OUTPUT seulement sur INPUT c'est normal aussi ?


---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 25-07-2002 à 12:53:05    

Effectivement, je ne vois pas non plus de règle de sortie pour le samba. Etrange, d'autant plus qe ça marche comme ça.  :heink:  
 
Pour le mail j'accepte en sortie le port 110 (pop). Faut-il rajouter le 25? Je test.
 
Sinon, oui je veux bien zieuter ton script, en particulier pour samba.
 
Donc peut-être ai-je oublié des règles, mais alors c'est comme le dhcp, c'est accepté sans ouvrir les ports...C'est une vraie passoire ce firewall!!!  :pt1cable:

Reply

Marsh Posté le 25-07-2002 à 13:07:18    

Bon j'ai testé en rajoutant un -sport 25 sur la chaine OUTPUT du LAN. Aucun changement. C'était d'ailleurs prévisible puisque le problème vient certainement de la chaine INPUT. Si je la mets sur ACCEPT, tout se déroule normalement.
 
C'est sûrement une broutille, mais je suis incapable de la voir car cela fait 2 jours que je relis ce script toutes les 10 minutes. J'ai donc besoin de votre recul pour trouver la gaffe.

Reply

Marsh Posté le 25-07-2002 à 13:13:33    

bobor a écrit a écrit :

Bon j'ai testé en rajoutant un -sport 25 sur la chaine OUTPUT du LAN. Aucun changement. C'était d'ailleurs prévisible puisque le problème vient certainement de la chaine INPUT. Si je la mets sur ACCEPT, tout se déroule normalement.
 
C'est sûrement une broutille, mais je suis incapable de la voir car cela fait 2 jours que je relis ce script toutes les 10 minutes. J'ai donc besoin de votre recul pour trouver la gaffe.




 
Voila mon script. Je n'ai rien fait de particulier pour Samba car il est sur le serveur et non pas sur le Firewll qui est une machine a part et qui ne fait que Firewall/Routeur mais si ca peut t'aider.
 


#!/bin/sh
 
echo "*************************************"
echo "*    Demarrage/Arret du Firewall    *"
echo "*************************************"
echo ""
echo ""
echo "Setting up Iptables rules ..."
 
 
case  "$1" in
  start)
 
        echo "Start Iptables rules ..."
 
        # Chemin vers Iptables
 
        IPT="/sbin/iptables"
 
        # Definition des interfaces
 
        echo "Define interfaces ..."
 
        DMZ_IFACE="eth0"
        DMZ_ADDR="192.68.0.254"
        BAD_IFACE="ppp0"
        BAD_ADDR="62.xxx.xxx.xxx"
        SRV_ADDR="192.168.0.1"
        LO_IFACE="lo"
        LO_ADDR="127.0.0.1"
        LOCAL_NET="192.168.0.0/24"
        LOCAL_BCAST="192.168.0.255"
 
        # Vidage des chaines
 
        echo "Flush tables ..."
 
        $IPT -P INPUT ACCEPT
        $IPT -P FORWARD ACCEPT
        $IPT -P OUTPUT ACCEPT
        $IPT -t nat -P PREROUTING ACCEPT
        $IPT -t nat -P POSTROUTING ACCEPT
        $IPT -t nat -P OUTPUT ACCEPT
        $IPT -t mangle -P PREROUTING ACCEPT
        $IPT -t mangle -P OUTPUT ACCEPT
 
        echo "Flush all rules and chains ..."
 
        $IPT -F
        $IPT -X
        $IPT -t nat -F
        $IPT -t nat -X
        $IPT -t mangle -F
        $IPT -t mangle -X
 
        # Affectation des regles par defaut (DROP)
 
        echo "Set Policies ..."
 
        $IPT -P INPUT DROP
        $IPT -P OUTPUT DROP
        $IPT -P FORWARD DROP
 
        # Creation de chaines personnelles
        # Une chaine par direction
        # bad = ppp0 pour l acces internet
        # dmz = eth0 pour l acces au reseau local
 
        echo "Create non-default chains ..."
 
        $IPT -X bad-dmz
        $IPT -N bad-dmz
        $IPT -X dmz-bad
        $IPT -N dmz-bad
        $IPT -X icmp-acc
        $IPT -N icmp-acc
        $IPT -X log-and-drop
        $IPT -N log-and-drop
 
        # Chaine speciale pour logguer les paquets
 
        echo "Create log chains ..."
 
        $IPT -A log-and-drop -m limit --limit 5/m -j LOG --log-prefix "IPT DROP : "
        $IPT -A log-and-drop -j DROP
 
        # Definition des regles
 
        echo "Define rules ..."
 
        # Elimination des paquets de demande de connection n ayant pas le flag SYN active
 
        echo "Define protection rules ..."
 
        $IPT -A FORWARD -p tcp ! --syn -m state --state NEW -j log-and-drop
        $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j log-and-drop
 
        # Elimination des paquets avec aucun ou tous les flags TCP actives
        # (Protection contre les tests de port furtif)
 
        $IPT -A FORWARD -p tcp --tcp-flag ALL ALL -j log-and-drop
        $IPT -A FORWARD -p tcp --tcp-flag ALL NONE -j log-and-drop
        $IPT -A INPUT -p tcp --tcp-flag ALL ALL -j log-and-drop
        $IPT -A INPUT -p tcp --tcp-flag ALL NONE -j log-and-drop
 
        # Protection syn-flood
 
        $IPT -A FORWARD -p tcp --syn -m limit --limit 5/m -j ACCEPT
        $IPT -A INPUT -p tcp --syn -m limit --limit 5/m -j ACCEPT
 
        # Activation du masquerading
 
        echo "Define MASQUERADE rules ..."
 
        $IPT -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
 
        # Redirection des connexions destinees au serveurs HTTP et FTP
 
        echo "Define PREROUTING rules ..."
 
        $IPT -t nat -A PREROUTING -p tcp --dport 80 -i $BAD_IFACE -j DNAT --to $SRV_ADDR:80
        $IPT -t nat -A PREROUTING -p tcp --dport 20 -i $BAD_IFACE -j DNAT --to $SRV_ADDR:20
        $IPT -t nat -A PREROUTING -p tcp --dport 21 -i $BAD_IFACE -j DNAT --to $SRV_ADDR:21
 
        # Blocage des paquets avec classes d adresses reservees ainsi que le multicast
 
        echo "Define FORWARD rules ..."
 
        $IPT -A FORWARD -i $BAD_IFACE -s 224.0.0.0/4 -j log-and-drop
        $IPT -A FORWARD -i $BAD_IFACE -s 192.168.0.0/16 -j log-and-drop
        $IPT -A FORWARD -i $BAD_IFACE -s 10.0.0.0/8 -j log-and-drop
        $IPT -A FORWARD -i $DMZ_IFACE ! -s 192.168.0.0/24 -j log-and-drop
 
        # On accepte les connexions deja etablies on log et drop les invalides
        # ainsi que les nouvelles connections qui ne sont pas destinees au serveur
 
        echo "Define STATE rules ..."
 
        $IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
        $IPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
        $IPT -A FORWARD -m state --state INVALID -j log-and-drop
        $IPT -A INPUT -m state --state INVALID -j log-and-drop
        $IPT -A INPUT -p tcp -j log-and-drop
 
        # Transmission a la chaine correspondant au sens d arrivee des paquets
 
        $IPT -A FORWARD -s $DMZ_ADDR -i $DMZ_IFACE -o $BAD_IFACE -j dmz-bad
        $IPT -A FORWARD -s $BAD_ADDR -i $BAD_IFACE -o $DMZ_IFACE -j bad-dmz
 
        # On accepte tout ce qui vient du reseau local
 
        $IPT -A FORWARD -s $LOCAL_NET -i $DMZ_IFACE -o $BAD_IFACE -j ACCEPT
 
        # On log et drop le reste
 
        $IPT -A FORWARD -j log-and-drop
 
        # On log et accepte les requetes ICMP
 
        echo "Define ICMP rules ..."
 
        $IPT -A icmp-acc -p icmp --icmp-type echo-request -m limit --limit 5/m -j LOG --log-prefix
IPT ICMP : "
        $IPT -A icmp-acc -p icmp --icmp-type destination-unreachable -j ACCEPT
        $IPT -A icmp-acc -p icmp --icmp-type source-quench -j ACCEPT
        $IPT -A icmp-acc -p icmp --icmp-type time-exceeded -j ACCEPT
        $IPT -A icmp-acc -p icmp --icmp-type echo-request -m limit --limit 5/m -j ACCEPT
        $IPT -A icmp-acc -p icmp --icmp-type echo-reply -m limit --limit 5/m -j ACCEPT
 
        # On drop et log le reste
 
        $IPT -A icmp-acc -j log-and-drop
 
        # Chaine Exterieur --> Interieur
        # On accepte les services mail, DNS, HTTP(S), SSH et FTP
 
        echo "Define OUT --> IN rules ..."
 
        $IPT -A bad-dmz -p tcp --dport smtp -j ACCEPT
        $IPT -A bad-dmz -p tcp --dport domain -j ACCEPT
        $IPT -A bad-dmz -p udp --dport domain -j ACCEPT
        $IPT -A bad-dmz -p tcp --dport www -j ACCEPT
        $IPT -A bad-dmz -p tcp --dport https -j ACCEPT
        $IPT -A bad-dmz -p tcp --dport 20:21 -j ACCEPT
        $IPT -A bad-dmz -p tcp --dport ssh -j ACCEPT
        $IPT -A bad-dmz -p icmp -j icmp-acc
        $IPT -A bad-dmz -j log-and-drop
 
        # Chaine Interieur --> Exterieur
        # On accepte les services mail, DNS, HTTP(S), SSH et FTP
 
        echo "Define IN --> OUT rules ..."
 
        $IPT -A dmz-bad -p tcp --dport smtp -j ACCEPT
        $IPT -A dmz-bad -p tcp --sport smtp -j ACCEPT
        $IPT -A dmz-bad -p tcp --dport 53 -j ACCEPT
        $IPT -A dmz-bad -p udp --dport 53 -j ACCEPT
        $IPT -A dmz-bad -p tcp --dport www -j ACCEPT
        $IPT -A dmz-bad -p tcp --dport https -j ACCEPT
        $IPT -A dmz-bad -p tcp --dport 20 -j ACCEPT
        $IPT -A dmz-bad -p tcp --dport 21 -j ACCEPT
        $IPT -A dmz-bad -p icmp -j icmp-acc
        $IPT -A dmz-bad -j log-and-drop
 
        # Chaine pour la passerelle elle meme
 
        $IPT -N bad-if
        $IPT -N dmz-if
 
        # Chaine INPUT
 
        echo "Define INPUT rules ..."
 
        $IPT -A INPUT -i $BAD_IFACE -j bad-if
        $IPT -A INPUT -i $DMZ_IFACE -j dmz-if
        $IPT -A INPUT -p ALL -i $LO_IFACE -j ACCEPT
 
        # Chaine OUTPUT
 
        echo "Define OUTPUT rules ..."
 
        $IPT -A OUTPUT -m state -p icmp --state INVALID -j log-and-drop
        $IPT -A OUTPUT -o $BAD_IFACE -j bad-if
        $IPT -A OUTPUT -o $DMZ_IFACE -j dmz-if
        $IPT -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT
 
        # Interface externe (Internet)
        # On accepte que les pings et SSH
 
        echo "Define OUT interface rules ..."
 
        $IPT -A bad-if -p icmp -j icmp-acc
        $IPT -A bad-if -p tcp --dport ssh -j ACCEPT
        $IPT -A bad-if -p tcp --sport ssh -j ACCEPT
        $IPT -A bad-if -j log-and-drop
 
        # Interface interne (Reseau local)
 
        echo "Define IN interface rules ..."
 
        $IPT -A dmz-if -p icmp -j icmp-acc
        $IPT -A dmz-if -p ALL -j ACCEPT
 
        # Activation du forwarding de la passerelle
 
        echo "Forwarding activation ..."
 
        echo 1 > /proc/sys/net/ipv4/ip_forward
 
        echo "Start Iptables rules OK ..."
        ;;
 
  stop)
        echo "Stop Iptables rules ..."
 
        echo "Delete tables rules ..."
 
        $IPT -F
        $IPT -X
        $IPT -t mangle -F
        $IPT -t mangle -X
        $IPT -t nat -F
        $IPT -t nat -X
        $IPT -F INPUT
        $IPT -F OUTPUT
        $IPT -F FORWARD
 
        # On ferme toutes les connections
 
        echo "Close connexions ..."
 
        $IPT -P INPUT DROP
        $IPT -P OUTPUT DROP
        $IPT -P FORWARD DROP
 
        # Suppression des variables
 
        echo "Delete variables ..."
 
        DMZ_IFACE=""
        DMZ_ADDR=""
        BAD_IFACE=""
        BAD_ADDR=""
        LO_IFACE=""
        LO_ADDR=""
        LOCAL_NET=""
        LOCAL_BCAST=""
 
        echo "Stop Iptables rules OK ..."
        ;;
 
 
  *)
        # Pour tous les autres cas
        # on rappelle la syntaxe du script et on quitte
 
        echo -n "Usage : $(basename $0) start|stop (start for restart) ..."
        exit 1
esac
 
#
#--- end of file


Message édité par Gaellick le 25-07-2002 à 13:14:08

---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 25-07-2002 à 14:28:54    

je te remercie beaucoup. Cependant qq chose m'étonne. Tu laisses l'accès à ton DNS depuis l'extérieur? Alors que tu fais du DNAT?
 
Par ailleurs comment récupères-tu tes mails car je ne vois pas ouverts les ports pop3.
 
Ou alors c'est requête sur port 25 et retour sur 110?

Reply

Marsh Posté le 25-07-2002 à 15:04:59    

J'ai pas de serveur DNS. Mais apparemment le serveur FTP a besooin de se connecter a mon seerveur DNS distant (celui de mon FAI ) pour la resolution de nom. Et il faut bien que ma passerelle puisse se connecter au serveur DNS de mon FAI.
 
Je n'ai pas de soft pour les mails sur mon serveur. J'ai une machine avec Windows 2000 et une autre connection cable sur  laquelle je fais tout le reste. Le serveur ne fait que serveur et le Firewall que Firewall (et routeur aussi ;) ). Mais ca vas pas durer, je ne vais garder que la connection ADSL, le cable s'arrete dans deux mois. Je serais donc oblige de configurer l'acces pop3 a ce moment la.
 
Parcontre dans ton cas, je pense que tu n'as meme pas besoin de t'en occuper puisque c'est le forwarding qui va faire transiter les infos. Quand tu voudras retirer tes mails c'est la machine derriere le firewall qui va initier la connection, il suffit donc que dans ta chaine forward tu autorises les connections avec pour source l'adresse IP de ta machine (ou l'adressage du reseau genre 192.168.0.0/24 pour que ca fonctionne avec n'importe quelle machine dans cette tranche d'adresse), comme interface (-i) la carte reseau par laquelle entre la demande de connection et l'interface parlaquelle ca sort, sans rien de plus ni port ni rien. Normalement tout ce qui vient du reseau local et qui va vers l'exterieur est sur. Apres la connection sera geree par la regle ESTABLISHED,RELATED. En gros ca donne :
 
iptables -A FORWARD -s $LAN_IP -i $LAN_IFACEX -o $NET_IFACE -j ACCEPT
 
 
En ne precisant ni les ports ni le protocole tout sera honore (:jap:) et sera ensuite relaye par ESTABLISHED,RELATED.
Regarde bien dans tes regles, tu ne traites jamais tes ports 25 et 110 dans la chaine FORWARD, hors vu que tu utilises le Forwarding, c'est par cette chaine la que tes demandes de connection a ton serveur de mail passent. Les chaine INPUT et OUTPUT ne concernent que la machine elle meme.
 
Ca ca marche si tu as une machine derriere un Firewalll. Je t'avouerai que je viens de relire ta configuration et je ne comprends pas tres bien. Tu peux faire un schema ?


Message édité par Gaellick le 25-07-2002 à 15:07:15

---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 25-07-2002 à 15:55:08    

Tout d'abord, c'est le serveur qui se connecte au FAI, et pas le LAN. Le LAN se connecte ensuite au serveur (postfix/fetchmail) donc c'est dans la chaine INPUT/OUTPUT et non FORWARD.
Mon intention première étant de faire un firewall classique sur les ports. J'avoue ne pas connaitre la fiabilité/vulnérabilité de ne se fier qu'au ESTABLISHED,RELATED. D'autant plus que cela demande pas mal de ressources à la machine. Donc si toute la sécurité est fondée dessus, j'avoue être un peu douteux. (mais mon expérience en la matière est...vraiment minime  :D ).
 
Deuxièmement, j'ai refait entièrement mon script pour faire qq chose de plus logique. Je me suis donc fortement inspiré du tien. Par contre, peux tu m'expliquer les règles de type:
 

Code :
  1. # Elimination des paquets avec aucun ou tous les flags TCP actives
  2. # (Protection contre les tests de port furtif)
  3. $IPTABLES -A FORWARD -p tcp --tcp-flag ALL ALL -j DROP
  4. $IPTABLES -A FORWARD -p tcp --tcp-flag ALL NONE -j DROP
  5. $IPTABLES -A INPUT -p tcp --tcp-flag ALL ALL -j DROP
  6. $IPTABLES -A INPUT -p tcp --tcp-flag ALL NONE -j DROP

 
 
J'ai essayé de les appliquer, mais cela bloque mon accès au net.
 
Et pour finir qu'est-ce que le syn flood???
 
Bon je fignole le tout et je posterai une version intermédiaire sur le forum.
 
PS: dans le premier post j'expliquais les objectifs à atteindre sur les 4 sous-réseaux. Et cela ne peux passer que par le filtrage de ports. D'où ma quête de règles qui fonctionnent sur les ports.

Reply

Marsh Posté le 25-07-2002 à 15:55:08   

Reply

Marsh Posté le 25-07-2002 à 16:04:26    

Bon autant pour moi, cela ne bloque pas internet. J'avais oublié un sens sur le forward. Mais tu peux quand même m'expliquer  [:bigsmilev]

Reply

Marsh Posté le 25-07-2002 à 17:54:25    

Bon je touche au but. Ce qui plantait tout était le protocole auth. J'ai trouvé l'astuce en observant le traffic réseau sous etherape.
 
Je vous livre donc mon script qui commence à être assez abouti. Cependant pas moyen de faire du ftp. Là faudrait qu'on m'indique la voie à suivre. J'ai tout ouvert sur les ports 20 et 21 et rien. Le seul moyen est d'accepter en forward toutes les entrées et sorties.  
 
 

Code :
  1. ###########################################################################
  2. #
  3. # 3. /proc set up.
  4. #
  5. echo "enabling forwarding .."
  6. echo "1" > /proc/sys/net/ipv4/ip_forward
  7. #
  8. # Dynamic IP users:
  9. #
  10. echo "enabling DynamicAddr .."
  11. echo "1" > /proc/sys/net/ipv4/ip_dynaddr
  12. ##################################################
  13. $IPTABLES -P INPUT ACCEPT
  14. $IPTABLES -P FORWARD ACCEPT
  15. $IPTABLES -P OUTPUT ACCEPT
  16. $IPTABLES -t nat -P PREROUTING ACCEPT
  17. $IPTABLES -t nat -P POSTROUTING ACCEPT
  18. $IPTABLES -t nat -P OUTPUT ACCEPT
  19. $IPTABLES -t mangle -P PREROUTING ACCEPT
  20. $IPTABLES -t mangle -P OUTPUT ACCEPT
  21. echo "Flush all rules and chains ..."
  22. $IPTABLES -F
  23. $IPTABLES -X
  24. $IPTABLES -t nat -F
  25. $IPTABLES -t nat -X
  26. $IPTABLES -t mangle -F
  27. $IPTABLES -t mangle -X
  28. echo "Set  policies."
  29. $IPTABLES -P INPUT DROP
  30. $IPTABLES -P OUTPUT DROP
  31. $IPTABLES -P FORWARD DROP
  32. #############################################################################
  33. # Create separate chains
  34. #############################################################################
  35. echo "Create separate chains"
  36. $IPTABLES -N inet_svr
  37. $IPTABLES -N lan_svr
  38. $IPTABLES -N svr_lan
  39. $IPTABLES -N svr_inet
  40. $IPTABLES -N inet_lan
  41. $IPTABLES -N lan_inet
  42. $IPTABLES -N spoofing
  43. ####
  44. # Spoofing rules
  45. ####
  46. $IPTABLES -A spoofing -s 224.0.0.0/4 -j DROP
  47. $IPTABLES -A spoofing -i $INET_IFACE -s 192.168.0.0/16 -j DROP
  48. $IPTABLES -A spoofing -i $LAN_IFACE3 ! -s 192.168.103.0/24 -j DROP
  49. $IPTABLES -A spoofing -s 10.0.0.0/8 -j DROP
  50. $IPTABLES -A spoofing -s 172.16.0.0/24 -j DROP
  51. ####
  52. # INET_SVR
  53. ####
  54. $IPTABLES -A inet_svr -p TCP --sport http -m state --state ESTABLISHED,RELATED -j ACCEPT
  55. $IPTABLES -A inet_svr -p TCP --dport 20:21 -j ACCEPT  #ftp
  56. $IPTABLES -A inet_svr -p TCP --sport smtp -m state --state ESTABLISHED,RELATED -j ACCEPT
  57. $IPTABLES -A inet_svr -p TCP --sport pop3 -m state --state ESTABLISHED,RELATED -j ACCEPT
  58. $IPTABLES -A inet_svr -p UDP --sport domain -m state --state ESTABLISHED,RELATED -j ACCEPT 
  59. $IPTABLES -A inet_svr -p ICMP -j ACCEPT
  60. ####
  61. #SVR_INET
  62. ####
  63. $IPTABLES -A svr_inet -p udp --dport  domain -j ACCEPT
  64. $IPTABLES -A svr_inet -p TCP --dport http -j ACCEPT
  65. $IPTABLES -A svr_inet -p TCP --dport 20:21 -j ACCEPT
  66. $IPTABLES -A svr_inet -p TCP --dport smtp -j ACCEPT
  67. $IPTABLES -A svr_inet -p TCP --dport pop3 -j ACCEPT
  68. ####
  69. # LAN_SVR
  70. ####
  71. $IPTABLES -A lan_svr -p ICMP -j ACCEPT
  72. $IPTABLES -A lan_svr -p UDP --dport domain -j ACCEPT
  73. $IPTABLES -A lan_svr -p udp --dport netbios-ns -j ACCEPT  #samba
  74. $IPTABLES -A lan_svr -p udp --dport 138 -j ACCEPT  #samba
  75. $IPTABLES -A lan_svr -p TCP --dport netbios-ssn -j ACCEPT  #samba
  76. $IPTABLES -A lan_svr -p TCP --dport pop3 -j ACCEPT 
  77. $IPTABLES -A lan_svr -p TCP --dport smtp -j ACCEPT 
  78. $IPTABLES -A lan_svr -p TCP --dport bootps -j ACCEPT  #dhcp
  79. $IPTABLES -A lan_svr -p UDP --dport bootps -j ACCEPT  #dhcp
  80. $IPTABLES -A lan_svr -p tcp --dport auth -j ACCEPT
  81. $IPTABLES -A lan_svr -p tcp --sport auth -j ACCEPT
  82. ####
  83. #SVR_LAN
  84. ####
  85. $IPTABLES -A svr_lan -p ICMP -j ACCEPT
  86. $IPTABLES -A svr_lan -p udp --sport 138 -j ACCEPT  #samba
  87. $IPTABLES -A svr_lan -p udp --sport netbios-ns -j ACCEPT  #samba
  88. $IPTABLES -A svr_lan -p TCP --sport netbios-ssn -j ACCEPT  #samba
  89. $IPTABLES -A svr_lan -p TCP --sport bootps -j ACCEPT  #dhcp
  90. $IPTABLES -A svr_lan -p UDP --sport bootps -j ACCEPT  #dhcp
  91. $IPTABLES -A svr_lan -p udp --sport domain -j ACCEPT
  92. $IPTABLES -A svr_lan -p tcp --sport pop3 -j ACCEPT
  93. $IPTABLES -A svr_lan -p tcp --sport smtp -j ACCEPT
  94. $IPTABLES -A svr_lan -p tcp --dport auth -j ACCEPT
  95. $IPTABLES -A svr_lan -p tcp --sport auth -j ACCEPT
  96. ####
  97. #LAN_INET
  98. ####
  99. $IPTABLES -A lan_inet -p TCP --dport http -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  100. $IPTABLES -A lan_inet -p TCP --dport 20:21 -j ACCEPT  #ftp
  101. $IPTABLES -A lan_inet -p TCP --sport 20:21 -j ACCEPT  #ftp
  102. $IPTABLES -A lan_inet -p ICMP -j ACCEPT
  103. ####
  104. #INET_LAN
  105. ####
  106. $IPTABLES -A inet_lan -p TCP --sport http -m state --state ESTABLISHED,RELATED -j ACCEPT
  107. $IPTABLES -A inet_lan -p TCP --sport 20:21 -j ACCEPT  #ftp
  108. $IPTABLES -A inet_lan -p TCP --dport 20:21 -j ACCEPT  #ftp
  109. $IPTABLES -A inet_lan -p ICMP -j ACCEPT
  110. ############################################################################
  111. # PROTECTIONS
  112. ############################################################################
  113. echo "Define protection rules ..."
  114. # Elimination des paquets de demande de connection n ayant pas le flag SYN active
  115. $IPTABLES -A FORWARD -i $INET_IFACE -p tcp ! --syn -m state --state NEW -j DROP
  116. $IPTABLES -A INPUT -i $INET_IFACE -p tcp ! --syn -m state --state NEW -j DROP
  117. # Elimination des paquets avec aucun ou tous les flags TCP actives
  118. # (Protection contre les tests de port furtif)
  119. $IPTABLES -A FORWARD -p tcp --tcp-flag ALL ALL -j DROP
  120. $IPTABLES -A FORWARD -p tcp --tcp-flag ALL NONE -j DROP
  121. $IPTABLES -A INPUT -p tcp --tcp-flag ALL ALL -j DROP
  122. $IPTABLES -A INPUT -p tcp --tcp-flag ALL NONE -j DROP
  123. # Protection syn-flood
  124. $IPTABLES -A FORWARD -p tcp --syn -m limit --limit 5/m -j ACCEPT
  125. $IPTABLES -A INPUT -p tcp --syn -m limit --limit 5/m -j ACCEPT
  126. $IPTABLES -A INPUT -j spoofing
  127. $IPTABLES -A FORWARD -j spoofing
  128. $IPTABLES -A FORWARD -m state --state INVALID -j DROP
  129. $IPTABLES -A INPUT -m state --state INVALID -j DROP
  130. #############################################################################
  131. # POSTROUTING chain
  132. #############################################################################
  133. echo "Enabling NAT"
  134. $IPTABLES -t nat -A POSTROUTING -s $LO_IP --o $INET_IFACE -j MASQUERADE
  135. $IPTABLES -t nat -A POSTROUTING -s 192.168.100.0/24 --o $INET_IFACE -j MASQUERADE
  136. $IPTABLES -t nat -A POSTROUTING -s 192.168.102.0/24 --o $INET_IFACE -j MASQUERADE
  137. ############################################################################
  138. # INPUT chain
  139. ############################################################################
  140. echo "Enabling INPUT INTERNET chain"
  141. $IPTABLES -A INPUT -i $INET_IFACE -j inet_svr
  142. echo "Enabling INPUT ETH0 chain"
  143. $IPTABLES -A INPUT -i $LAN_IFACE0 -j lan_svr
  144. echo "Enabling INPUT Loopback chain"
  145. $IPTABLES -A INPUT -p ALL -i $LO_IFACE -j ACCEPT
  146. #############################################################################
  147. # OUTPUT chain
  148. #############################################################################
  149. echo "Enabling OUTPUT chain"
  150. $IPTABLES -A OUTPUT -o $LAN_IFACE0 -j svr_lan
  151. $IPTABLES -A OUTPUT -o ppp0 -j svr_inet
  152. $IPTABLES -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT
  153. #############################################################################
  154. # FORWARD chain
  155. #############################################################################
  156. $IPTABLES -A FORWARD -j spoofing
  157. echo "Enabling FORWARD ETH0 chain"
  158. $IPTABLES -A FORWARD -i $INET_IFACE -o $LAN_IFACE0 -j inet_lan
  159. $IPTABLES -A FORWARD -i $LAN_IFACE0 -o $INET_IFACE -j lan_inet
  160. echo "Enabling FORWARD ETH2 chain"
  161. $IPTABLES -A FORWARD -i $INET_IFACE -o $LAN_IFACE2 -j inet_lan
  162. $IPTABLES -A FORWARD -i $LAN_IFACE2 -o $INET_IFACE -j lan_inet

Reply

Marsh Posté le 25-07-2002 à 19:23:23    

bobor a écrit a écrit :

Tout d'abord, c'est le serveur qui se connecte au FAI, et pas le LAN. Le LAN se connecte ensuite au serveur (postfix/fetchmail) donc c'est dans la chaine INPUT/OUTPUT et non FORWARD.
Mon intention première étant de faire un firewall classique sur les ports. J'avoue ne pas connaitre la fiabilité/vulnérabilité de ne se fier qu'au ESTABLISHED,RELATED. D'autant plus que cela demande pas mal de ressources à la machine. Donc si toute la sécurité est fondée dessus, j'avoue être un peu douteux. (mais mon expérience en la matière est...vraiment minime  :D ).
 
Deuxièmement, j'ai refait entièrement mon script pour faire qq chose de plus logique. Je me suis donc fortement inspiré du tien. Par contre, peux tu m'expliquer les règles de type:
 

Code :
  1. # Elimination des paquets avec aucun ou tous les flags TCP actives
  2. # (Protection contre les tests de port furtif)
  3. $IPTABLES -A FORWARD -p tcp --tcp-flag ALL ALL -j DROP
  4. $IPTABLES -A FORWARD -p tcp --tcp-flag ALL NONE -j DROP
  5. $IPTABLES -A INPUT -p tcp --tcp-flag ALL ALL -j DROP
  6. $IPTABLES -A INPUT -p tcp --tcp-flag ALL NONE -j DROP

 
 
J'ai essayé de les appliquer, mais cela bloque mon accès au net.
 
Et pour finir qu'est-ce que le syn flood???
 
Bon je fignole le tout et je posterai une version intermédiaire sur le forum.
 
PS: dans le premier post j'expliquais les objectifs à atteindre sur les 4 sous-réseaux. Et cela ne peux passer que par le filtrage de ports. D'où ma quête de règles qui fonctionnent sur les ports.




 
Desole j'me suis endomi devant le PC :D.
 
Pour les premieres regles, j'ai trouve ca dans le hors serie numero 9 de Linux Mag, apparement si tous les flags ou aucun flag n'est active c'est pas normal et c'est tres certainement du a un scan de port.
 
Pour le syn-flood, j'ai trouve ca dans le how-to netfilter.
 
PS : J'ai toujours rien compris a la configuration de ton reseau ??? T'as 4 interfaces reseau sur le meme PC ou quoi ?


Message édité par Gaellick le 25-07-2002 à 20:32:23

---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 25-07-2002 à 20:44:33    

oui 4 interfaces:
- eth0 de confiance: accès extérieur et aux ressources internes
- eth1 de confiance: accès aux ressources internes et rien à l'extérieur
- eth2: accès extérieur et accès limité aux ressources internes
- eth3 non sûr (WIFI): accès à certaines ressources internes
 
D'où la nécessité de faire un filtrage sur les ports. Maintenant, DNS, smtp, pop, http, ...marchent sauf le ftp. Là je vois pas, surtout que je ne maîtrise pas trop l'astuce avec le mode passif, les modules contrack...Donc là HELP.


---------------
Gitan des temps modernes
Reply

Marsh Posté le 25-07-2002 à 21:01:44    

Iptables est dans le noyau ou en modules ?


---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 25-07-2002 à 21:26:33    

en modules


---------------
Gitan des temps modernes
Reply

Marsh Posté le 25-07-2002 à 22:19:50    

Faut que tu lod le module pour le FTP alors je crois. Y'en a deux ip_nat_ftp et ip_conntrack_ftp je sais pas lequelk c'est, moi j'ai tout mis dans le noyau, il conseillait ca dans Linux Mag pour etre sur dans le cas ou un module se moad mal et te cree un trou de securite. En plus t'as pas a te faire chier avec les modules du coup.


---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 25-07-2002 à 22:53:56    

ils sont bien chargés cf script. Mais le ftp il veut pas marcher...


---------------
Gitan des temps modernes
Reply

Marsh Posté le 25-07-2002 à 23:47:54    

Je vois pas ou tu charges les modules dans ton script ?
 
Parcontre juste un detail. Dans Linux Mag, ils conseillaient de n'activer la passerelle (le forwarding) qu'une fois toutes les regles etablies.


Message édité par Gaellick le 25-07-2002 à 23:49:31

---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 25-07-2002 à 23:50:09    

j'ai coupé dans ma copie corrigée, mais tu peux les voir à l'ouverture du post sur le premier script


---------------
Gitan des temps modernes
Reply

Marsh Posté le 25-07-2002 à 23:52:58    

Ha ouais OK. Je vais essayer de regarder pourquoi ton FTP marche pas.  
 
Parcontre tu loggues rien, ca va pas etre facile de touver ce qui va pas ;)


---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 25-07-2002 à 23:55:22    

le ftp se logue en anonymous, passe en PASV puis plus rien. Donc c'est les réponses qui ne doivent pas venir je pense :pt1cable:  
 
En tout cas merci pour ton investissement! :jap:


---------------
Gitan des temps modernes
Reply

Marsh Posté le 26-07-2002 à 00:00:29    

je crois que demain, le sujet du jour sera SQUID. [:sstarshoot]  Je pensais trouver plus facilement de l'info dessus mais c'est pas évident...


---------------
Gitan des temps modernes
Reply

Marsh Posté le 26-07-2002 à 00:40:45    

bobor a écrit a écrit :

le ftp se logue en anonymous, passe en PASV puis plus rien. Donc c'est les réponses qui ne doivent pas venir je pense :pt1cable:  
 
En tout cas merci pour ton investissement! :jap:  




 
Y'a pas de quoi Zzozo a fait la meme chose pour moi hier jusqu'a 4 heures du amtin, parceque j'arrivais pas non plus a acceder a mon FTP. A 4 heures je me suis apercu que j'avais mis 198.168.0.1 dans la chaine PREROUTING pour le DNAT des ports FTP a la place de 192.168.0.1. On a passe la nuit a chercher pourquoi ca marchait pas alors que c'etait juste une faute dans l'IP, sinon les regles marchaient nickel :sarcastic:.
 
A mon tour maintenant de te filer un coup de main, en plus c'est tout frais :D


---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 26-07-2002 à 00:44:30    

bobor a écrit a écrit :

oui 4 interfaces:
- eth0 de confiance: accès extérieur et aux ressources internes
- eth1 de confiance: accès aux ressources internes et rien à l'extérieur
- eth2: accès extérieur et accès limité aux ressources internes
- eth3 non sûr (WIFI): accès à certaines ressources internes
 
D'où la nécessité de faire un filtrage sur les ports. Maintenant, DNS, smtp, pop, http, ...marchent sauf le ftp. Là je vois pas, surtout que je ne maîtrise pas trop l'astuce avec le mode passif, les modules contrack...Donc là HELP.




 
Tu peux essayer de PREROUTER les connections qui arrivent sur l'interface externe (-s $INET_IP -i $INET_IFACE -p tcp -dport 20:21) sur les ports 20 et 21 de l'interface sur laquelle ton serveur FTP ecoute, comme ca tu n'auras pas de problemes pour le passif ou l'actif normalement c'est le forwarding qui va s'en osccuper (dixit Zzozo hier ;) )
 
Par exemple si ton serveur FTP attend les connections sur eth1 ca donne
 
$IPTABLES -A PREROUTING -s $INET_IP -i $INET_IFACE -p tcp -dport 20 -j DNAT --to $LAN_IP1:20
$IPTABLES -A PREROUTING -s $INET_IP -i $INET_IFACE -p tcp -dport 21 -j DNAT --to $LAN_IP1:21
 
Essaies ca


Message édité par Gaellick le 26-07-2002 à 00:50:34

---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 26-07-2002 à 01:08:39    

Gaellick a écrit a écrit :

 
 
Tu peux essayer de PREROUTER les connections qui arrivent sur l'interface externe (-s $INET_IP -i $INET_IFACE -p tcp -dport 20:21) sur les ports 20 et 21 de l'interface sur laquelle ton serveur FTP ecoute, comme ca tu n'auras pas de problemes pour le passif ou l'actif normalement c'est le forwarding qui va s'en osccuper (dixit Zzozo hier ;) )
 
Par exemple si ton serveur FTP attend les connections sur eth1 ca donne
 
$IPTABLES -A PREROUTING -s $INET_IP -i $INET_IFACE -p tcp -dport 20 -j DNAT --to $LAN_IP1:20
$IPTABLES -A PREROUTING -s $INET_IP -i $INET_IFACE -p tcp -dport 21 -j DNAT --to $LAN_IP1:21
 
Essaies ca




Le forwarding ET SURTOUT les règles ESTABLISHED, RELATED ... très très importantes ces règles pour tous ces protocoles qui renégocient leurs ports de travail à un moment donné ... d'ailleurs vaut mieux les mettre en première .. juste après l'antispoofing et autres joyeusetés du même genre ...
Comme ca les paquets de ces connexions là sont traitées rapidement (forwardés rapidement notament) car ils n'ont pas bpp de règles à matcher ...
Ca simplifie bcp le travail avec les fw ...


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 26-07-2002 à 01:49:32    

Tu vois tes conseils me permettent d'aider les autres maintenant ;)
 
D'alleurs tu peux m'expiquer ce qu'est le spoofing et le syn-flood ?


Message édité par Gaellick le 26-07-2002 à 01:50:36

---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 26-07-2002 à 01:51:05    

Gaellick a écrit a écrit :

Tu vois tes conseils me permettent d'aider les autres maintenant ;)




Ben cé le but du jeu ... ;) :D
Si chaque personne que j'aide en aide une, au moins, à son tour ... y'aura plus que des cracks sous linux ...
[:tgrx]


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 26-07-2002 à 01:52:35    

C'est clair.
 
Bon bah moi :sleep: pas encore ete me coucher depuis qu'on s'est quitte hier :D


---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 26-07-2002 à 01:55:47    

Gaellick a écrit a écrit :

C'est clair.
 
Bon bah moi :sleep: pas encore ete me coucher depuis qu'on s'est quitte hier :D




Heink ???  :ouch:  :ouch:  
Mé té fou ... cé important le sommeil ... [:ddr555]


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 26-07-2002 à 01:59:29    

Yaisse j'y cours la :D


---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 26-07-2002 à 07:33:40    

Gaellick a écrit a écrit :

Tu vois tes conseils me permettent d'aider les autres maintenant ;)
 
D'alleurs tu peux m'expiquer ce qu'est le spoofing et le syn-flood ?




Rapidement alors ... :
- l'IP spoofing ca consite à fabriquer des paquets IP avec une fausse adresse source (un adresse différente de celle de l'expéditeur en tout cas...) ... Ca peut être utilisé dans pas mal de techniques, c'est surtout un "outil" au service d'autres types d'attaques, comme le SYN flooding par exemple ...
- le SYN Flooding, c'est une attaque du type DoS (Denial of Service, qui vise à interdire l'accès à un service voire une machine entière via un le réseau et le protocole TCP/IP ...).
Ca tire parti d'une caractéristique de TCP/IP ainsi que de son implémentation existante dans les différents OS existants ...
En gros, un OS ne peut avoir à un moment donné qu'un nombre de connections "semi-ouvertes" (cé limité par les ressources de la machine cible mais surtout par le paramétrage de l'implémentation de TCP/IP dans l'OS). Le SYN Flooding consiste à saturer la machine cible en connections "semi-ouvertes" afin qu'elle ne puisse plus accepter d'autre connexions ... et donc interdire le fonctionnement des services normaux tels que les serveurs Web, ftp, etc ... qu'héberge la machine cible. La plupart (je dis bien la plupart ... :D) des OS ont maintenant une implémentation de TCP/IP corrigée pour éviter le SYN flooding (notamment Linux  :hap: mais je me rappelle plus à partir de quel noyau cé, 2.0.30 je crois ... cé l'option TCP SYN COOKIES pour ceux qui compilent leurs noyaux ;) ) ... et généralement les firewalls sont configurés pour dropper les paquets utilisés dans le SYN flooding (enfin les paquets les plus "grossiers", on peut pas tous hélas ... :( ) ....


Message édité par Zzozo le 26-07-2002 à 08:44:56

---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 26-07-2002 à 10:17:49    

bojour à tous mais j'avais également fait une nuit blanche la nuit précédente donc me revoilà.
 
Alors pour le ftp, actuellement, je ne me suis pas occupé de la partie serveur interne donc du DNAT. Je cherche seulement à accéder aux serveurs externes. Tu peux voir dans le script quelles sont les régles mises en places. Mais cela ne marche pas.
 
merci de vos réponses!


---------------
Gitan des temps modernes
Reply

Marsh Posté le 26-07-2002 à 10:24:22    

bobor a écrit a écrit :

bojour à tous mais j'avais également fait une nuit blanche la nuit précédente donc me revoilà.
 
Alors pour le ftp, actuellement, je ne me suis pas occupé de la partie serveur interne donc du DNAT. Je cherche seulement à accéder aux serveurs externes. Tu peux voir dans le script quelles sont les régles mises en places. Mais cela ne marche pas.
 
merci de vos réponses!




Changes ca :
  #lan vers inet
   
  $IPTABLES -A tcp_lan_inet -p TCP --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  $IPTABLES -A tcp_lan_inet -p TCP --dport 21 -j ACCEPT  #ftp
par ca  :
  #lan vers inet
 
  $IPTABLES -A tcp_lan_inet -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT  
  $IPTABLES -A tcp_lan_inet -p TCP -m multiport --dport 80,21 -m state --state NEW -j ACCEPT #Ftp,Http


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 26-07-2002 à 10:55:18    

j'ai essayé mais cela ne marche pas. Ma station est bien configuré en mode passif.


---------------
Gitan des temps modernes
Reply

Marsh Posté le 26-07-2002 à 10:56:47    

bobor a écrit a écrit :

j'ai essayé mais cela ne marche pas. Ma station est bien configuré en mode passif.




T'as des logs du fw ?
 
EDIT : Quels sont les modules que tu charges avant l'activation des règles via iptables ?


Message édité par Zzozo le 26-07-2002 à 11:18:18

---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 26-07-2002 à 11:17:20    

A quoi elle sert cette règle ? :
$IPTABLES -t nat -A POSTROUTING -s $LO_IP --o $INET_IFACE -j MASQUERADE


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 26-07-2002 à 11:26:01    

bah c'est pour NATé le serveur lorsqu'il est utilisé comme station. C'est pas bon? En tout cas ça marche  :D  
 
J'ai rien trouvé dans les logs kernel. Où je peux trouver les logs spécifiques iptables, sachant que je n'ai pas de règles dans mon script? (Mandrake)


---------------
Gitan des temps modernes
Reply

Marsh Posté le 26-07-2002 à 11:27:07    

je charge pratiquement tous les modules cf script début du post. An particulier ip_nat_ftp et contrack_ftp


---------------
Gitan des temps modernes
Reply

Marsh Posté le 26-07-2002 à 11:53:47    

bobor a écrit a écrit :

bah c'est pour NATé le serveur lorsqu'il est utilisé comme station. C'est pas bon? En tout cas ça marche  :D  
 
J'ai rien trouvé dans les logs kernel. Où je peux trouver les logs spécifiques iptables, sachant que je n'ai pas de règles dans mon script? (Mandrake)




Ben rajoutes ca pour logger, sinon ca va etre emmerdant pour savoir ce qui va pas :
 
- à la fin des chaines INPUT :
iptables -A INPUT -j CatchAll
 
- à la fin des chaines OUTPUT :
$IPTABLES -A OUTPUT -j CatchAll
 
- à la fin des chaines FORWARD :
$IPTABLES -A FORWARD -j CatchAll
 
- Au moment de la création des chaines personalisée, rajoute ca:
$IPTABLES -N CatchAll
 
- Et juste après la création des chaines personnalisées :
$IPTABLES -A CatchAll -j LOG  --log-level info --log-prefix "FW DROP "  -m limit --limit 40/minute
$IPTABLES -A CatchAll  -j DROP


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed