DEDIBOX-NEWS.COM

Le Forum Non Officiel de la DEDIBOX

Vous n'êtes pas identifié.

#1 2006-06-13 18:47:57

samixite
Petit scarabé
Lieu: Marseille
Date d'inscription: 2006-05-04
Messages: 61

Filtrage par IP

Hello Hello,

Toutes les personnes qui auront besoin de se connecter à mon serveur ont une IP fixe
Alors ma question est quelle la manip pour n'autoriser qu'une liste d'IP définie et bloquer le reste ?
Pensez vous que ce soit viable en terme de sécurité ?

Merci


May U live 2 see the Dawn

Hors ligne

 

#2 2006-06-13 20:27:04

KeKeSeB
Petit scarabé
Lieu: Lausanne - Suisse
Date d'inscription: 2006-06-04
Messages: 65
Site web

Re: Filtrage par IP

Hello,

Il y a quoi comme services sur ta box ? Au niveau de la sécurité, a mon avis c'est pas mal.

Hors ligne

 

#3 2006-06-13 20:31:15

samixite
Petit scarabé
Lieu: Marseille
Date d'inscription: 2006-05-04
Messages: 61

Re: Filtrage par IP

Salut

Serveur FTP serveur web  et bases mysql en accès distant pour l'instant

J'aimerais filtrer par IP ensuite l'accès à tel ou tel service se fera par identification

Merci pour votre aide


May U live 2 see the Dawn

Hors ligne

 

#4 2006-06-13 20:45:32

KeKeSeB
Petit scarabé
Lieu: Lausanne - Suisse
Date d'inscription: 2006-06-04
Messages: 65
Site web

Re: Filtrage par IP

Voilà un petit tuto sur IPtables qui te permettra de faire ca: http://lea-linux.org/cached/index/Resea … ables.html

Hors ligne

 

#5 2006-06-13 20:51:22

samixite
Petit scarabé
Lieu: Marseille
Date d'inscription: 2006-05-04
Messages: 61

Re: Filtrage par IP

Merci KeKeSeb mais je connais déjà ce tuto
Mais je n'y ai pas trouvé la ligne de commande autorisant tout pour une/des IP et rejetant toutes les autres...


May U live 2 see the Dawn

Hors ligne

 

#6 2006-06-13 21:05:17

danielha
Membre
Date d'inscription: 2006-05-31
Messages: 18

Re: Filtrage par IP

samixite,

tu dois pouvoir utiliser une commande comme celle-là pour chaque adresse à autoriser :
/sbin/iptables -A SERVICES -p tcp -s 88.88.88.88 --dport 6970:6999 -j ACCEPT

En utilisant bien sur la bonne IP et la bonne plage de ports smile

Daniel

Hors ligne

 

#7 2006-06-13 21:07:20

samixite
Petit scarabé
Lieu: Marseille
Date d'inscription: 2006-05-04
Messages: 61

Re: Filtrage par IP

danielha a écrit:

samixite,

tu dois pouvoir utiliser une commande comme celle-là pour chaque adresse à autoriser :
/sbin/iptables -A SERVICES -p tcp -s 88.88.88.88 --dport 6970:6999 -j ACCEPT

En utilisant bien sur la bonne IP et la bonne plage de ports smile

Daniel

Merci Daniel
Par contre pour bloquer tout le reste (en tcp ) ?tongue
Est on obligé de spécifier une plage de ports si je ne veux rien fermer ?

Dernière modification par samixite (2006-06-13 21:10:18)


May U live 2 see the Dawn

Hors ligne

 

#8 2006-06-13 21:44:37

danielha
Membre
Date d'inscription: 2006-05-31
Messages: 18

Re: Filtrage par IP

Samixite,

Je ne suis pas un pro sur iptables. J'ai récupéré un script qui a été posté sur le site (par Flav) et je l'ai mis à ma sauce. En fait, tu prends le problème à l'envers .. Le but d'un firewall est d'ouvrir uniquement ce qui est nécessaire pour ceux à qui c'est nécessaire. En fonction des services que tu as besoin de fournir pour les différents utilisateurs, ouvre les ports correspondants et uniquement ceux-ci !

Voici "mon" script. Il ouvre le port 999 pour le SSH (donc port non standard qui demande de reconfigurer SSH depuis l'interface webmin), webmin, FTP en actif et passif, HTTP & HTTPS ainsi que les ports TCP/UDP nécessaires pour du streaming. Quand j'utilise un outil tel que nmap pour vérifier les ports ouverts sur la machine que je configure en ce moment, il n'y a rien d'autre qui soit ouvert que les ports indiqués dans le script. Tu devrait pouvoir le modifier sans trop de soucis pour ouvrir les portes nécessaires à tes utilisateurs.

Code:

#!/bin/sh
################################################
#                                              #
#  Script de Firewall de base #
#                                              #
#  Flav #
#                                              #
###############################################

#############
# Variables #
#############
    IPTABLES=/sbin/iptables
    IF_EXT=eth0
    IP_SSH=xx.xx.xx.xx

###################
# Vide les tables #
###################
   ${IPTABLES} -t mangle -F
   ${IPTABLES} -t nat -F
   ${IPTABLES} -F
   ${IPTABLES} -t mangle -X
   ${IPTABLES} -t nat -X
   ${IPTABLES} -X
   ${IPTABLES} -Z

#####################
# Regles par defaut #
#####################
  ## ignore_echo_broadcasts, TCP Syncookies, ip_forward
   echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

  ## Strat�giepar defaut
   ${IPTABLES} -P INPUT DROP
   ${IPTABLES} -P OUTPUT DROP
   ${IPTABLES} -P FORWARD DROP

  ## Loopback accepte
   ${IPTABLES} -A FORWARD -i lo -o lo -j ACCEPT
   ${IPTABLES} -A INPUT -i lo -j ACCEPT
   ${IPTABLES} -A OUTPUT -o lo -j ACCEPT

  ## REJECT les fausses connex pretendues s'initialiser et sans syn
   ${IPTABLES} -A INPUT -p tcp ! --syn -m state --state NEW,INVALID -j REJECT

####################
# Regles speciales #
####################
### Creation des chaines
    ${IPTABLES} -N SPOOFED
    ${IPTABLES} -N SERVICES
    ${IPTABLES} -N udp_packets

### Interdit les paquets spoof�
    ${IPTABLES} -A SPOOFED -s 127.0.0.0/8 -j DROP
    ${IPTABLES} -A SPOOFED -s 169.254.0.0/12 -j DROP
    ${IPTABLES} -A SPOOFED -s 172.16.0.0/12 -j DROP
    ${IPTABLES} -A SPOOFED -s 192.168.0.0/16 -j DROP
    ${IPTABLES} -A SPOOFED -s 10.0.0.0/8 -j DROP

### INPUT autoris�
    ### ICMP
        ## Ping (*)
        ${IPTABLES} -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

    ### TCP
        ## SSH
        ## pour restreindre SSH �une IP, utiliser : -s ${IP_SSH} pour autoriser SSH �toute adresse IP,
        ## utiliser : -s 0/0
        ## Port 999 pour acc� SSH
        ${IPTABLES} -A SERVICES -p tcp -s 0/0 --dport 999 -j ACCEPT

        ## HTTP
        ${IPTABLES} -A SERVICES -p tcp -s 0/0 --dport 80 -j ACCEPT

        ## HTTPS
        ${IPTABLES} -A SERVICES -p tcp -s 0/0 --dport 443 -j ACCEPT

        ## FTP Server (Control)
        ${IPTABLES} -A SERVICES -p tcp -s 0/0 --dport 21 -j ACCEPT

        ## FTP Client - Non Passive
        ${IPTABLES} -A SERVICES -p tcp -s 0/0 --dport 20 -j ACCEPT

        ## Darwin Streaming Server
        ${IPTABLES} -A SERVICES -p tcp -s 0/0 --dport 1220 -j ACCEPT

        ## FTP Client - Passive
        ${IPTABLES} -A SERVICES -p tcp -s 0/0 --dport 62000:64000 -j ACCEPT

        ## HTTP - Webmin
        ${IPTABLES} -A SERVICES -p tcp -s 0/0 --dport 10000 -j ACCEPT

        ## RTSP Ports
        ${IPTABLES} -A SERVICES -p tcp -s 0/0 --dport 554 -j ACCEPT
        ${IPTABLES} -A SERVICES -p tcp -s 0/0 --dport 7070 -j ACCEPT
        ${IPTABLES} -A SERVICES -p tcp -s 0/0 --dport 6970:6999 -j ACCEPT
        ${IPTABLES} -A SERVICES -p TCP -s 0/0 --dport 8000:8001 -j ACCEPT

   ### UDP
        ## RTSP Protocol
        ${IPTABLES} -A udp_packets -p udp -s 0/0 --dport 554 -j ACCEPT
        ${IPTABLES} -A udp_packets -p udp -s 0/0 --dport 7070 -j ACCEPT
        ${IPTABLES} -A udp_packets -p udp -s 0/0 --dport 6970:6999 -j ACCEPT
        ${IPTABLES} -A udp_packets -p udp -s 0/0 --dport 800:8001 -j ACCEPT

#################################
# Ports ouverts sur le firewall #
#################################
    ${IPTABLES} -A OUTPUT -j ACCEPT
    ${IPTABLES} -A INPUT -m state --state ESTABLISH,RELATED -j ACCEPT
    ${IPTABLES} -A INPUT -j SPOOFED
    ${IPTABLES} -A INPUT -i ${IF_EXT} -j SERVICES
    ${IPTABLES} -A INPUT -i ${IF_EXT} -j udp_packets

Daniel

Dernière modification par danielha (2006-06-13 21:46:14)

Hors ligne

 

#9 2006-06-13 23:25:02

Gaetan
Maitre Jeidi
Date d'inscription: 2006-05-04
Messages: 418

Re: Filtrage par IP

Si c'est du Web, tu peux aussi faire un filtrage par .htaccess


http://gaetan-allart.com/ubar.png

Hors ligne

 

#10 2006-06-13 23:38:52

samixite
Petit scarabé
Lieu: Marseille
Date d'inscription: 2006-05-04
Messages: 61

Re: Filtrage par IP

Merci à tous

Il n'y a donc aucun moyen d'autoriser tout pour des IP déterminées et rejeter toutes les autres ?
Ben zut alors !! sad
Mon appli dispose déjà d'un accès par login + pass, si je passe par htaccess il va falloir s'enregistrer 2 fois ?
Et puis il n'y a pas que du web...
Que pensez vous de ça :

# begin code

IPT=/sbin/iptables

$IPT -A INPUT -i eth0 --source XXX.XXX.XXX.XXX -j ACCEPT
# transaction avec les autres serveurs
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -j REJECT
$IPT -A FORWARD -i eth0 -j REJECT

# end code

XXX.XXX.XXX.XXX est à remplacer par l'IP autorisée

Ca m'a l'air bon pour autoriser mais pour le blocage de tous les autres ??

Thanx

Dernière modification par samixite (2006-06-13 23:46:31)


May U live 2 see the Dawn

Hors ligne

 

#11 2006-06-13 23:47:44

KeKeSeB
Petit scarabé
Lieu: Lausanne - Suisse
Date d'inscription: 2006-06-04
Messages: 65
Site web

Re: Filtrage par IP

Sisi avec un truc comme ca :

Code:

iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 --protocol tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s XXX.XXX.XXX.XXX -j ACCEPT

En répetant la dernière ligne pour chaque IP. Je garanti pas que ca marche, il faudrait tester. Attention, si tu mets que la première ligne, ca va couper la connexion SSH. Il faut faire un script et l'executer d'un coup.

Pour tout remettre à 0 :

Code:

iptables -P INPUT ACCEPT
iptables -F

Voili voilou...

Dernière modification par KeKeSeB (2006-06-13 23:48:50)

Hors ligne

 

#12 2006-06-13 23:58:27

Calimero
Maitre Jeidi
Lieu: 94 | 67
Date d'inscription: 2006-05-05
Messages: 2729

Re: Filtrage par IP

Attention, script de goret inside ! Lire la man d'iptables pour affiner (doit y avoir moyen de factoriser et/ou renforcer certaines règles, surtout sur l'autorisation du trafic local):

Code:

#!/bin/bash

IP_DEDIBOX=a.b.c.d

iptables -F
iptables -X

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Le routage linux semble faire que ces deux lignes sont inutiles
#iptables -A INPUT --source $IP_DEDIBOX --destination $IP_DEDIBOX -j ACCEPT
#iptables -A OUTPUT --source 192.168.10.20 --destination $IP_DEDIBOX -j ACCEPT

iptables -A INPUT --source e.f.g.h -j ACCEPT
iptables -A OUTPUT --destination e.f.g.h -j ACCEPT

iptables -A INPUT --source i.j.k.l -j ACCEPT
iptables -A OUTPUT --destination i.j.k.l -j ACCEPT

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

Bref, voila l'idée de base, mais à affiner/valider/tester.


Autre solution pour de l'accès distant: du VPN. OpenVPN se laisse vraiment bien installer ca tourne sous les Unix, Windows, MacOSX... donc tu peux avoir toutes sortes de clients. Ca évite de laisser trainer en clair des mots de passe mysql, etc...


Edit: mise en commentaire de règles apparemment inutiles

Dernière modification par Calimero (2006-06-14 00:05:50)

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson