Iptables, limitation d'accès via IP

Questions relatives à la sécurité de votre système : firewall, SELinux, etc...
Avatar de l’utilisateur
Loup-des-Neiges
Messages : 78
Inscription : 20 octobre 2009, 23:29
Localisation : Cannes (06)
Contact :

Iptables, limitation d'accès via IP

Message par Loup-des-Neiges » 21 octobre 2009, 13:09

Salut.

Sur mon firewall, j'ai une ligne :

Code : Tout sélectionner

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -s 123.456.7.8 -j ACCEPT
qui normalement n'autorise que mon ip (123.456.7.8) a avoir accès a la machine X via SSH.

Sur une tour Fedora, la ligne fonctionne mais pas sur CentOS ou j'ai toujours des tentatives d'intrusion
via SSH. Il y a une option iptables ou une correction sur ma ligne a faire ?
Serveur(s) : [home/serveur-1/serveur-2].loup-des-neiges.com
CentOS : 6 CR
Utilisateur des dépôts : RHEL, REMI

Avatar de l’utilisateur
Marcet
Messages : 408
Inscription : 20 octobre 2009, 00:38
Localisation : Ile de France
Contact :

Re: Iptables, limitation d'accès via IP

Message par Marcet » 21 octobre 2009, 13:30

Je ne pense pas que la syntaxe soit différente sur CentOS.

Le conseil que je peux te donner pour ne plus avoir à te soucier des attaques sur le port 22, c'est de changer le numéro de port.
J'avais des tas de tentatives d'intrusions pas le port 22 sur mon serveur Zimbra. Et depuis que j'ai changé le numéro du port, c'est beaucoup plus clame ;-)

Avatar de l’utilisateur
Heldwin
Messages : 440
Inscription : 20 octobre 2009, 10:11
Localisation : Unknown

Re: Iptables, limitation d'accès via IP

Message par Heldwin » 21 octobre 2009, 13:47

Hello

C'est normal, car il ne faut pas ajouter cette règle de cette façon, car il y a le groupe de règles RH-Firewall-1-INPUT qui est prise avant (et celle que tu rajoutes est prise en tout dernier et sert donc à que dalle ;)).

Il faut modifier la règle pour le port 22 dans ce groupe.
(moi je la modifie directement dans /etc/sysconfig/iptables, car c'est plus rapide ^^)

Une autre manière est de n'autoriser que ton IP pour le service sshd dans /etc/hosts.allow, ainsi que définir les autres accès autorisés, et bloquer tout le reste dans /etc/hosts.deny avec un ALL: ALL (ou même faire ça en plus des règles iptables, c'est encore mieux).


EDIT:

Sinon, si tu ne veux pas modifier le fichier /etc/sysconfig/iptables directement, tu peux faire ainsi:

1) iptables -L , aller au groupe RH-Firewall-1-INPUT, et compter le nombre de ligne jusqu'à la règle ssh (en commençant à 1 pour la plus proche de RH-Firewall-1-INPUT). C'est la 10 ème ligne par exemple.

2) iptables -R RH-Firewall-1-INPUT 10 -m state --state NEW -m tcp -p tcp -s 123.456.7.8 --dport 22 -j ACCEPT

Puis, si ça fonctionne comme tu le souhaites:
3) service iptables save


EDIT2:

Si tu n'as pas de RH-Firewall-1-INPUT (qui devrait être là, si tu n'as pas reconfiguré toi-même les règles iptables), il faudrait poster le résultat de: iptables -L, pour y voir un peu plus clair.

Avatar de l’utilisateur
Marcet
Messages : 408
Inscription : 20 octobre 2009, 00:38
Localisation : Ile de France
Contact :

Re: Iptables, limitation d'accès via IP

Message par Marcet » 21 octobre 2009, 16:39

Heldwin a écrit :Une autre manière est de n'autoriser que ton IP pour le service sshd dans /etc/hosts.allow, ainsi que définir les autres accès autorisés, et bloquer tout le reste dans /etc/hosts.deny avec un ALL: ALL
Je crois que c'est ce qui est recommandé. Mon hébergeur fais comme ça.

Avatar de l’utilisateur
Loup-des-Neiges
Messages : 78
Inscription : 20 octobre 2009, 23:29
Localisation : Cannes (06)
Contact :

Re: Iptables, limitation d'accès via IP

Message par Loup-des-Neiges » 21 octobre 2009, 18:57

Merci pour vos réponse, je corrige !
Donc le mieux c'est en plus de faire des règles dans "hosts.****" ?

/etc/hosts.allow

Code : Tout sélectionner

sshd: 123.456.7.8
/etc/hosts.deny

Code : Tout sélectionner

sshd: ALL
C'est juste ?
Serveur(s) : [home/serveur-1/serveur-2].loup-des-neiges.com
CentOS : 6 CR
Utilisateur des dépôts : RHEL, REMI

bailchanis
Messages : 4
Inscription : 20 octobre 2009, 17:04

Re: Iptables, limitation d'accès via IP

Message par bailchanis » 22 octobre 2009, 00:09

A noter que pour proteger une connexion ssh, il existe un tcpwrapper bien pratique pour automatiser les règles dans /etc/hosts.deny : denyhosts.

son fonctionnement est relativement simple : au bout d'un nombre de tentatives ratées de connections depuis une même IP cette dernière est ajoutée dans le hosts.deny en lui interdisant soit l'acces ssh soit tous les services.

Ce qui est particulièrement interessant dans le bousin c'est qu'il offre une mise en commun des IP suspectes : les IP bloquées sont envoyées à un serveur suivant des règles configurables, et récupérées suivant d'autres règles tout aussi paramétrables. Ce qui veut dire que le hots.deny va s'enrichir en fonction de se qui s'est passé non seulement sur la machine sur lequel il est actif mais également grace aux reports envoyés par les autres utilisateurs du wrapper ;)

Je l'utilise depuis quelques années maintenant et comme je ne purge jamais la liste, il est rare que j'ai des IP à rajouter maintenant.

Tout est paramétrable : les services bloqués, les fréquences de synchro des listes d'IP a bannir et quelques règles avancées du type ajouter une IP vue lors des n-dernieres synchros, envoyer au bout des p-dernières synchro etc... on peut également choisir de purger la liste a intervalle régulier ou jamais, etc. ...

Un seul "inconvéniant", comme il lit tout l'historique des connexions ssh dispos dans les logs il est possible de s' "enfermer dehors" si on a été trop maladroit ou distrait dans le passé en tapant mal ses mots de passe :p

Avatar de l’utilisateur
Marcet
Messages : 408
Inscription : 20 octobre 2009, 00:38
Localisation : Ile de France
Contact :

Re: Iptables, limitation d'accès via IP

Message par Marcet » 22 octobre 2009, 00:29

C'est un peu comme fail2ban.

bailchanis
Messages : 4
Inscription : 20 octobre 2009, 17:04

Re: Iptables, limitation d'accès via IP

Message par bailchanis » 22 octobre 2009, 11:08

Oui un peu (enfin c'est un tcpwrapper quoi ;) ).
ceci dit, il ne me semble pas que fail2ban permette de partager la liste des bannis avec tous les utilisateurs du paquet (un rsync du hosts.deny sur un pot de miel peut etre envisagé mais denyhosts partage avec bien plus de machines ;) ) par contre F2B est un peu plus large que la surveillance ssh.

A l'époque j'avais choisi denyhosts plutot parce que le configurer est un jeu d'enfant ce qui n'est pas le cas de F2B si j'en crois les retours qu'on m'a fait. Depuis je l'ai conservé pour cette histoire de partage des listes d'IP bannies (et puis aussi parce que je n'ai pas vraiment besoin de sécuriser d'autres services) :D

Avatar de l’utilisateur
Loup-des-Neiges
Messages : 78
Inscription : 20 octobre 2009, 23:29
Localisation : Cannes (06)
Contact :

Re: Iptables, limitation d'accès via IP

Message par Loup-des-Neiges » 23 octobre 2009, 22:26

Merci pour les précisions :)
Vous avez une petite doc sur la mise en place de tcpwrapper ?
Il n'y a pas grand chose sur google/doc fedo|cent/howtoforge ><
Serveur(s) : [home/serveur-1/serveur-2].loup-des-neiges.com
CentOS : 6 CR
Utilisateur des dépôts : RHEL, REMI

Avatar de l’utilisateur
Heldwin
Messages : 440
Inscription : 20 octobre 2009, 10:11
Localisation : Unknown

Re: Iptables, limitation d'accès via IP

Message par Heldwin » 24 octobre 2009, 17:10

bailchanis a écrit :A noter que pour proteger une connexion ssh, il existe un tcpwrapper bien pratique pour automatiser les règles dans /etc/hosts.deny : denyhosts.
Oui, si les IP sont dynamiques, ça peut servir. Si les IP sont fixes, le mieux est de tout bloquer avec ALL: ALL (ou sshd: ALL, mais pourquoi ne protéger que sshd ?).

Verrouillé