Précédent   Forum des professionnels en informatique > Systèmes > Linux > Sécurité
Sécurité Vos questions sur la sécurité sous Linux/Unix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 06/01/2010, 17h17   #1
Membre régulier
 
Inscription : mars 2009
Messages : 90
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 90
Points : 79
Points : 79
Par défaut Filtrage iptables (netfilter) qui ne fonctionne pas (?!)

Bonjour à tous,

Je sèche complètement sur le problème suivant...

Sur mon serveur privé, je voudrais interdire des IP (de spammeurs) par des règles Iptables.

Mais en essayant déjà avec l'IP de test aa.bbb.ccc.dd, je constate que rien ne marche, alors que la règle se retrouve bien dans les iptables après visualisation de celles-ci !!!

J'ai tout essayé, enfin je crois :
iptables -A INPUT -i eth1 -s aa.bbb.ccc.dd -j DROP
ainsi que :
iptables -A INPUT -s aa.bbb.0.0/16 -j DROP ou : iptables -A INPUT -i eth1 -s aa.bbb.0.0/16 -j DROP
(pour interdire carrément toutes les IPs de la plage aa.bbb.0.0 à aa.bbb.255.255)
Rien à faire : l'IP aa.bbb.ccc.dd arrive toujours à accéder à mon site, nous envoyer des mails, faire du FTP... !

Est-ce que ces règles sont mal écrites ? Je suppose qu'une fois rentrée (en SSH), l'application de la règle est immédiate ?
Dans le cas contraire, qu'est ce qui peut clocher ?

MERCI DE VOTRE AIDE !
Paul-75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2010, 18h54   #2
Membre régulier
 
Homme Boris Pigeot
Administrateur systèmes et réseaux
Inscription : juillet 2008
Messages : 72
Détails du profil
Informations personnelles :
Nom : Homme Boris Pigeot
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2008
Messages : 72
Points : 94
Points : 94
Ca devrait fonctionner.
A savoir que si tu as une règle (qui normalement y est) dit "ne pas casser les connexions établies" :
Code :
1
2
3
 
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
tu devras "fermer" la connexion pour que ta règle s'applique. Donc si par exemple tu souhaites bloquer une attaque sur apache :
Code :
1
2
3
4
5
 
iptables -A INPUT -s 113.22.48.20 -j DROP
/etc/init.d/apache2 stop
sleep 1
/etc/init.d/apache2 start
A savoir aussi, les règles de blocage doivent être écrites après les règles "d'acceptation" (ou l'inverse petit trou de mémoire).

Tu peux regarder pour utiliser fail2ban dans ton cas qui permet déjà de regarder les IPs de tentative d'utilisation de ton serveur de mail pour tester un open relay.
Meskalyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2010, 19h12   #3
Membre régulier
 
Inscription : mars 2009
Messages : 90
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 90
Points : 79
Points : 79
Tout d'abord merci beaucoup pour ton aide Meskalyn.

Cependant, je suis débutant et je ne suis pas sur de bien comprendre...

Voici mon iptables-save, aussitot après un redémarrage du serveur (donc effacement des anciennes iptables et nouvelles iptables créées par défaut) et l'ajout de la règle perso : -A INPUT -s aa.bbb.ccc.dd -j DROP
(juste avant : -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT)

Est-ce que cette règle se met (automatiquement...) à la bonne place ?

ENCORE MERCI !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# Generated by iptables-save v1.3.8 on Wed Jan  6 19:06:39 2010
*mangle
:PREROUTING ACCEPT [222022:174104224]
:INPUT ACCEPT [222022:174104224]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [237945:251465799]
:POSTROUTING ACCEPT [237288:251439262]
COMMIT
# Completed on Wed Jan  6 19:06:39 2010
# Generated by iptables-save v1.3.8 on Wed Jan  6 19:06:39 2010
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j REJECT --reject-with tcp-reset 
-A INPUT -m state --state INVALID -j DROP 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 49152:65534 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 8443 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 8880 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 465 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 995 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 106 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 9008 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 9080 -j ACCEPT 
-A INPUT -p udp -m udp --dport 137 -j ACCEPT 
-A INPUT -p udp -m udp --dport 138 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 139 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 445 -j ACCEPT 
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT 
-A INPUT -p udp -m udp --dport 53 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8/0 -j DROP 
-A INPUT -j ACCEPT 
-A INPUT -s aa.bbb.ccc.dd -j DROP 
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j REJECT --reject-with tcp-reset 
-A FORWARD -m state --state INVALID -j DROP 
-A FORWARD -i lo -o lo -j ACCEPT 
-A FORWARD -j DROP 
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j REJECT --reject-with tcp-reset 
-A OUTPUT -m state --state INVALID -j DROP 
-A OUTPUT -o lo -j ACCEPT 
-A OUTPUT -j ACCEPT 
COMMIT
# Completed on Wed Jan  6 19:06:39 2010
# Generated by iptables-save v1.3.8 on Wed Jan  6 19:06:39 2010
*nat
:PREROUTING ACCEPT [3319:180747]
:POSTROUTING ACCEPT [2418:153344]
:OUTPUT ACCEPT [2369:151384]
COMMIT
# Completed on Wed Jan  6 19:06:39 2010
Paul-75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2010, 19h38   #4
Membre régulier
 
Homme Boris Pigeot
Administrateur systèmes et réseaux
Inscription : juillet 2008
Messages : 72
Détails du profil
Informations personnelles :
Nom : Homme Boris Pigeot
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2008
Messages : 72
Points : 94
Points : 94
Hum c'est assez "complexe" (beaucoup de règles), et je n'ai pas l'habitude d'autant de règles différentes. M'étant battu pas mal de temps avec certaines règles ça me rappelle des bons souvenirs.
Puis-je avoir l'output d'un (un peu plus l'habitude de ce format).

La technique que je te conseillerais serait de virer complètement toutes tes règles iptables et de tester celle que tu veux, seule, qui normalement devrait fonctionner sans aucun soucis.

Code :
1
2
-A INPUT -j ACCEPT 
-A INPUT -s aa.bbb.ccc.dd -j DROP
Sauf si j'ai mal lu, tu n'as pas de règles qui te disent de "bloquer avant" donc je ne comprends pas pourquoi tu veux les accepter. C'est peut-être cette règle qui "fou la merde".

Je ne suis pas un expert dans ce type de règles donc tous mes messages et conseils sont à effectuer de manière "fait gaffe"


Voici un des scripts que j'utilise personnellement pour fermer/laisser ouvert un peu ce que je veux dans mysql et autres
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
#!/bin/bash
# Variables serveurs
LUCY=91.121.XX.XX
MARIE=91.121.XX.XX
# Vider les tables actuelles
iptables -t filter -F
iptables -t filter -X
echo - Vidage : [OK]
sleep 1
iptables -N BLACKLIST-IN
iptables -I INPUT -j BLACKLIST-IN
iptables -A BLACKLIST-IN -s 35.0.0.0/8 -m comment --comment "Hack Attemps" -j DROP
## Toute ma liste ici
echo - Banlist : [OK]
# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
echo - Ne pas casser les connexions etablies : [OK]
# MySQL
iptables -t filter -A INPUT -p tcp --source 127.0.0.1 --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --source $LUCY --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --source $AUDREY --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --source $MARIE --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 3306 -j DROP
echo - MySQL : [OK]
## etc..
En fait je créé un nouveau filtre "blacklist" ce qui me permet de le désactiver ou non.
Par défaut je ne bloque ni autorise pas les choses que je connais. Par exemple, je n'autorise pas le SSH qui est autorisé par défaut, une règle en moins. (D'ailleurs en passant si ton port SSH est changé par exemple en 222, tu peux mettre un bon gros REJECT sur le port 22 qui fait croire que ton port SSH est fermé )
Meskalyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 20h42.


 
 
 
 
Partenaires

Hébergement Web