iptables bizarre

iptables bizarre - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 16-12-2010 à 11:41:30    

Bonjour à tous,
 
je suis en train de mettre en place iptables sur mon serveur et j'ai quelque chose de louche.
Je vous fait un résumé de ma configuration iptables :
 

Code :
  1. #chargement des modules nécessaire pour suivre les connexions ftp :
  2. /sbin/modprobe ip_conntrack
  3. /sbin/modprobe ip_conntrack_ftp
  4. # jete tout le trafic entrant :
  5. /sbin/iptables -P INPUT DROP
  6. # jete tout le trafic sortant :
  7. /sbin/iptables -P OUTPUT DROP
  8. # jete tout le trafic forward :
  9. /sbin/iptables -P FORWARD DROP
  10. # accepte le trafic en entrée sur les connexions déjà ouvertes :
  11. /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  12. # accepte le trafic en sortie sur les connexions déjà ouvertes :
  13. /sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  14. # accepte le trafic sur la boucle locale :
  15. /sbin/iptables -A INPUT -i lo -j ACCEPT
  16. /sbin/iptables -A OUTPUT -o lo -j ACCEPT
  17. # accepte les connexion Web :
  18. /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT


Je vous épargne les autres services qui sont autorisé.
 
Une fois en place le serveur accepte bien les connexions au port 80. Seulement dans les logs j'obtient des lignes du genre :
 

Code :
  1. Dec 16 09:46:51 kernel: [67269.389967] IN= OUT=eth0 SRC=ip_serveur DST=ip_client LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=24700 DF PROTO=TCP SPT=80 DPT=49411 WINDOW=57 RES=0x00 ACK FIN URGP=0
  2. Dec 16 09:46:51 kernel: [67269.390007] IN= OUT=lo SRC=ip_serveur DST=ip_serveur LEN=68 TOS=0x00 PREC=0xC0 TTL=64 ID=11141 PROTO=ICMP TYPE=3 CODE=3 [SRC=ip_serveur DST=ip_client LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=24700 DF PROTO=TCP SPT=80 DPT=49411 WINDOW=57 RES=0x00 ACK FIN URGP=0 ]


Je ne comprends pas pourquoi certain segments TCP sur le port 80 sont bloqués puisque j'autorise les connexions RELATED en sortie.
 
J'ai ajoute cette règle pour tester :

Code :
  1. /sbin/iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT


 
et là je n'ai plus d'erreur dans les logs. Mais je n'ai pas trop envie de garder cette règle qui me semble inutile.
 
Est-ce que vous avez une explication ?
 
Merci d'avance
 
Matthieu

Reply

Marsh Posté le 16-12-2010 à 11:41:30   

Reply

Marsh Posté le 16-12-2010 à 11:59:43    

Pour un serveur HTTP, le RELATED ne va pas servir.
Sinon on ne voit pas tes règles -j LOG, et donc on ne peut pas t'aider. Et ce n'est pas parce que c'est dans les LOG que c'est droppé :spamafote]


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 16-12-2010 à 12:11:04    

Ah oui c'est vrai j'ai oublié les logs :
 

Code :
  1. /sbin/iptables -A OUTPUT -j LOG
  2. /sbin/iptables -A OUTPUT -j REJECT
  3. /sbin/iptables -A INPUT -j LOG
  4. /sbin/iptables -A INPUT -j REJECT
  5. /sbin/iptables -A FORWARD -j LOG
  6. /sbin/iptables -A FORWARD -j REJECT


 
OK pour le RELATED.

Reply

Marsh Posté le 16-12-2010 à 12:12:29    

bien, maintenant est ce que tu peux nous dire où sont -elles placées par rapport au reste ? idéalement, mets toutes tes règles...


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 16-12-2010 à 12:42:21    

Voilà l'ordre des règles :
 

Code :
  1. #chargement des modules nécessaire pour suivre les connexions ftp :
  2. /sbin/modprobe ip_conntrack
  3. /sbin/modprobe ip_conntrack_ftp
  4. # jete tout le trafic entrant :
  5. /sbin/iptables -P INPUT DROP
  6. # jete tout le trafic sortant :
  7. /sbin/iptables -P OUTPUT DROP
  8. # jete tout le trafic forward :
  9. /sbin/iptables -P FORWARD DROP
  10. # accepte le trafic en entrée sur les connexions déjà ouvertes :
  11. /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  12. # accepte le trafic en sortie sur les connexions déjà ouvertes :
  13. /sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  14. # accepte le trafic sur la boucle locale :
  15. /sbin/iptables -A INPUT -i lo -j ACCEPT
  16. /sbin/iptables -A OUTPUT -o lo -j ACCEPT
  17. # accepte la résolution de nom par le serveur :
  18. /sbin/iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
  19. # accepte les connexion Web :
  20. /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  21. # accepte le renouvellement de bail DHCP :
  22. /sbin/iptables -A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT
  23. # accepte les réponses au ping (depuis l'extérieur) :
  24. /sbin/iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  25. # accepte les pings (ping fait depuis le serveur) :
  26. /sbin/iptables -A INPUT -p icmp -j ACCEPT
  27. # Drop any traffic from IANA-reserved IPs.
  28. #------------------------------------------------------------------------------
  29. /sbin/iptables -A INPUT -s 0.0.0.0/7 -j DROP
  30. /sbin/iptables -A INPUT -s 2.0.0.0/8 -j DROP
  31. /sbin/iptables -A INPUT -s 5.0.0.0/8 -j DROP
  32. /sbin/iptables -A INPUT -s 7.0.0.0/8 -j DROP
  33. /sbin/iptables -A INPUT -s 10.0.0.0/8 -j DROP
  34. /sbin/iptables -A INPUT -s 23.0.0.0/8 -j DROP
  35. /sbin/iptables -A INPUT -s 27.0.0.0/8 -j DROP
  36. /sbin/iptables -A INPUT -s 31.0.0.0/8 -j DROP
  37. /sbin/iptables -A INPUT -s 36.0.0.0/7 -j DROP
  38. /sbin/iptables -A INPUT -s 39.0.0.0/8 -j DROP
  39. /sbin/iptables -A INPUT -s 42.0.0.0/8 -j DROP
  40. /sbin/iptables -A INPUT -s 49.0.0.0/8 -j DROP
  41. /sbin/iptables -A INPUT -s 50.0.0.0/8 -j DROP
  42. /sbin/iptables -A INPUT -s 77.0.0.0/8 -j DROP
  43. /sbin/iptables -A INPUT -s 78.0.0.0/7 -j DROP
  44. /sbin/iptables -A INPUT -s 92.0.0.0/6 -j DROP
  45. /sbin/iptables -A INPUT -s 96.0.0.0/4 -j DROP
  46. /sbin/iptables -A INPUT -s 112.0.0.0/5 -j DROP
  47. /sbin/iptables -A INPUT -s 120.0.0.0/8 -j DROP
  48. /sbin/iptables -A INPUT -s 169.254.0.0/16 -j DROP
  49. /sbin/iptables -A INPUT -s 172.16.0.0/12 -j DROP
  50. /sbin/iptables -A INPUT -s 173.0.0.0/8 -j DROP
  51. /sbin/iptables -A INPUT -s 174.0.0.0/7 -j DROP
  52. /sbin/iptables -A INPUT -s 176.0.0.0/5 -j DROP
  53. /sbin/iptables -A INPUT -s 184.0.0.0/6 -j DROP
  54. /sbin/iptables -A INPUT -s 192.0.2.0/24 -j DROP
  55. /sbin/iptables -A INPUT -s 197.0.0.0/8 -j DROP
  56. /sbin/iptables -A INPUT -s 198.18.0.0/15 -j DROP
  57. /sbin/iptables -A INPUT -s 223.0.0.0/8 -j DROP
  58. /sbin/iptables -A INPUT -s 224.0.0.0/3 -j DROP
  59. # Disable IP forwarding.
  60. # On => Off = (reset)
  61. echo 1 > /proc/sys/net/ipv4/ip_forward
  62. echo 0 > /proc/sys/net/ipv4/ip_forward
  63. # Enable IP spoofing protection
  64. for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $i; done
  65. # Protect against SYN flood attacks
  66. echo 1 > /proc/sys/net/ipv4/tcp_syncookies
  67. # Ignore all incoming ICMP echo requests
  68. echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  69. # Ignore ICMP echo requests to broadcast
  70. echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  71. # Log packets with impossible addresses.
  72. for i in /proc/sys/net/ipv4/conf/*/log_martians; do echo 1 > $i; done
  73. # Don't log invalid responses to broadcast
  74. echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
  75. # Don't accept or send ICMP redirects.
  76. for i in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 > $i; done
  77. for i in /proc/sys/net/ipv4/conf/*/send_redirects; do echo 0 > $i; done
  78. # Don't accept source routed packets.
  79. for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo 0 > $i; done
  80. # Disable proxy_arp.
  81. for i in /proc/sys/net/ipv4/conf/*/proxy_arp; do echo 0 > $i; done
  82. # Enable secure redirects, i.e. only accept ICMP redirects for gateways
  83. # Helps against MITM attacks.
  84. for i in /proc/sys/net/ipv4/conf/*/secure_redirects; do echo 1 > $i; done
  85. # Disable bootp_relay
  86. for i in /proc/sys/net/ipv4/conf/*/bootp_relay; do echo 0 > $i; done
  87. /sbin/iptables -A OUTPUT -j LOG
  88. /sbin/iptables -A OUTPUT -j REJECT
  89. /sbin/iptables -A INPUT -j LOG
  90. /sbin/iptables -A INPUT -j REJECT
  91. /sbin/iptables -A FORWARD -j LOG
  92. /sbin/iptables -A FORWARD -j REJECT


 
Merci d'avance du coup de pouce !

Reply

Marsh Posté le 16-12-2010 à 12:51:35    

t'as un truc qui écoute sur le port 80 ? Les deux paquets de tes logs correspond à :
Le premier :
  un paquet TCP fermant la connexion TCP sur le port 80 (TCP ack/fin)
 
Le second :
  un message ICMP indiquant que le port 80 n'est pas accessible
 


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 16-12-2010 à 12:56:38    

oui bien sur j'ai un serveur web en écoute sur le port 80. Je peux y accéder mais j'ai quand même ce genre de ligne dans mes logs.

Reply

Marsh Posté le 16-12-2010 à 13:09:26    

tu peux faire un iptables -L -v -n et poster le résultat ici ?
éventuellement passe par pastebin


Message édité par o'gure le 16-12-2010 à 13:09:39

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 16-12-2010 à 14:21:39    

Voilà ma sortie de iptables -L -v -n (note : j'ai modifié l'ip de deux serveurs qui apparaissent pour des raisons de sécurité... j'ai ai marre de me faire attaquer par n'importe qui) :
 
http://pastebin.com/0q38QYbN
 
Merci !
 
Matthieu

Reply

Sujets relatifs:

Leave a Replay

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