Aller au contenu

Firewall - Base de Données


Messages recommandés

Bonjour, encore un nouveau problème,

J'ai transféré sur le serveur Debian, la base de données postgresql avec

interface php que j'ai développé sur une mandrake...Sur la mandrake ça marchait sans problème, mais là j'ai des ptits soucis. C les

même scripts php et le même firewall. Je précise "le firewall" car il

semblerait que celui-ci m'empêche de me connecter à ma base de données depuis un PC de mon réseau local.

Si je désactive mon firewall , ça marche nickel si je le réactive, je peux me connecter une première fois à cette base de données (pour l'authentification des

utilisateurs dont les logins et mots de passes sont stockées dans une

table) et ensuite toutes requêtes sur ma bdd échoue, me disant:

"Warning:pg_connect():Unable to connect to Postgresql server:could not

connect to server:Connection Timed out. Is the server running on host

172.17.100.1 and accepting connections no port 5432 ? "

et pourtant j'ai ajouté à mon firewall les règles:

$DAEMON -A INPUT -i eth0 -s $LAN -j ACCEPT

$DAEMON -A OUTPUT -o eth0 $LAN -j ACCEPT

C bizarre parce que normalement il devrait laisser passer mon paquet.

Surtout que comme je l'ai dit plus haut, j'arrive à m'y connecter la

première fois...

Sinon si vous avez une idée (comme souvent), ça m'interesse...

Ciao, merci d'avance..

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Sandeman,

j'ai fait ce que tu m'as dit de faire et cela fonctionne à merveille, mais la solution ne me plait guère, surtout le

IPTABLES -P OUTPUT ACCEPT

Ce que je ne comprends pas c qu'avec mes règles:

iptables -A INPUT -i eth0 -s 172.17.100.0/24 -j ACCEPT

iptables -A OUTPUT -o eth0 -d 172.17.100.0/24 -j ACCEPT

je croyais que j'autorisais tout les paquets venant et allant vers mon réseau local....non ?

++

Lien vers le commentaire
Partager sur d’autres sites

iptables -A INPUT -i eth0 -s 172.17.100.0/24 -j ACCEPT

Ce qui rentre sur eth0 et qui provient d'une @ip du lan c'est ok

iptables -A OUTPUT -o eth0 -d 172.17.100.0/24 -j ACCEPT

Ce qui sort sur eth0 a destination d'une @ip du lan c'est ok.

Moi je les aTurais modifier en :

iptables -A INPUT -i eth0 -s 172.17.100.0/24 -d 172.17.100.0/24 -j ACCEPT

iptables -A OUTPUT -o eth0 -d 172.17.100.0/24 -s 172.17.100.0/24 -j ACCEPT

Lien vers le commentaire
Partager sur d’autres sites

iptables -A INPUT -i eth0 -s 172.17.100.0/24 -d 172.17.100.0/24 -j ACCEPT

iptables -A OUTPUT -o eth0 -d 172.17.100.0/24 -s 172.17.100.0/24 -j ACCEPT

=

je croyais que j'autorisais tout les paquets venant et allant vers mon réseau local....non ?

pas très secure notre ami Remy la dessus :-P

les règles telles que je les écrites :

autorise à sortir tous les paquets qui PROVIENNENT de ton serveur. Qui normalement n'émet que des choses intelligentes et sécurisées :transpi:

autorise à rentrer seulement les adresses du LAN à destination du port ouvert par postgresql. Ce qui est le moins insecurisé que tu puisse faire, sauf à spécifier explicitement les adresses IP sources ...

Lien vers le commentaire
Partager sur d’autres sites

Ouais, mais ce que je ne comprends pas c pourquoi je suis obligé de mettre

iptables -P OUTPUT ACCEPT

pour que ça marche, si je ne mets pas cette règle, ça ne fonctionne pas.

Forcément mon firewall commençait par

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

et pour que mon problème se résolve j'ai du appliqué ce que sandeman m'a conseillé.

iptables -P OUTPUT ACCEPT m'embêtes un peu. C pas tant vers mon lan mais plutôt vers le net..

Qu'en pensez-vous ?

Merci

Lien vers le commentaire
Partager sur d’autres sites

bon bah fais là moins souple :

(mais un iptables -P OUTPUT DROP est pour moi un excès de paranoïa si le serveur n'est pas en direct sur Internet).

iptables -P OUTPUT DROP

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

voire peut-être

iptables -A OUTPUT -p tcp --source-port 5432 -j ACCEPT

Lien vers le commentaire
Partager sur d’autres sites

et pour que mon problème se résolve j'ai du appliqué ce que sandeman m'a conseillé.

iptables -P OUTPUT ACCEPT m'embêtes un peu. C pas tant vers mon lan mais plutôt vers le net..

Qu'en pensez-vous ?

Ben on s'en fout un peu que ton serveur envoie des requètes...

à priori, comme le disait sandeman, il ne le fait pas, il ne fait que répondre...

Donc à priori y'a pas de pb...

Lien vers le commentaire
Partager sur d’autres sites

pas très secure notre ami Remy la dessus :-P

les règles telles que je les écrites :

autorise à sortir tous les paquets qui PROVIENNENT de ton serveur. Qui normalement n'émet que des choses intelligentes et sécurisées

autorise à rentrer seulement les adresses du LAN à destination du port ouvert par postgresql. Ce qui est le moins insecurisé que tu puisse faire, sauf à spécifier explicitement les adresses IP sources ...

tu dis ca pour parce que j'ai laisse tous les ports ??

( je t'avouerai que je n'avais pas vu votre histoire de port avec postgre... Sur un lan prive, moi je laisse tout, mais je specifie les adresses ip de mon lan dans iptables, comme ca, je n'ai pas de soucis... Et en general, je ne forward que les ports 80 et 443.

Lien vers le commentaire
Partager sur d’autres sites

D'accord d'accord...

Mon serveur fait aussi office de routeur internet, de serveur intranet, de serveur samba.

Initialement, j'avais crée une règle pour chaque port que je souhaitais accessible depuis mon lan http,ftp,samba...etc.

Le souci c que samba ne se contentait pas des ports 135 à 139 mais aussi des ports en 3XXX...et à chaque fois ce n'était pas le même ....

Du coup j'ai remplacé mes règles par

iptables -A INPUT -s $LAN -j ACCEPT

iptables -A OUTPUT -s $LAN -j ACCEPT

sinon la règle

iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

est déjà dans mon firewall....

En forward, je n'autorise que les ports http, https et ftp.

Comme mon serveur est en direct sur internet, j'avais mis

iptables -P OUTPUT DROP

Qui normalement n'émet que des choses intelligentes et sécurisées

Oui normalement, bon j'ai lu le secure debian, donc ça devrait aller mais bon quand même....

Ce que je ne comprends pas et si quelqu'un pouvait me l'expliquer ce serait bien cool.

Pourquoi les règles

iptables -A INPUT -s $LAN -d $LAN -j ACCEPT

iptables -A OUTPUT -d $LAN -s $LAN -j ACCEPT

ne peuvent remplacer

iptables -P OUTPUT ACCEPT

Parce que normalement avec ces deux règles là, devraient tout autoriser en entrée et en sortie vers mon LAN, c ça que j'ai un peu de mal à comprendre ...

Je me suis dit que c parce qu'elles étaient placé après iptables -P DROP, mais même en les mettant avant, ça ne fonctionne pas. J'ai encore du loupé quelque chose.

Lien vers le commentaire
Partager sur d’autres sites

En fait c si je mets

-i eth0

-o eth0

dans

iptables -A INPUT -i eth0 -s $LAN -j ACCEPT

iptables -A OUTPUT -o eth0 -d $LAN - j ACCEPT

car si je mets

iptables -A INPUT -s $LAN -j ACCEPT

iptables -A OUTPUT -d $LAN -j ACCEPT

ça marche nickel...

quelle est la différence entre les deux ?

Pourquoi ça marche avec l'un et pas avec l'autre ?

C pour moi comprendre.

Merci A+

Lien vers le commentaire
Partager sur d’autres sites

Oui je suis d'accord mais pourquoi quand je précise l'interface, ça ne marche pas. Pourtant eth0 est bien l'interface sur lequel est relié le réseau local. Donc normalement ça devrait marcher....

Faut rappeler que ça marche à la première connexion à la base de données. Pour preuve, depuis mon interface php, la première page est une page de login, et celle-ci vérifie que le login et le mot de passe contenu dans une des tables de ma base sont correctes. Ca veut dire qu'il arrive à s'y connecter une première fois mais c après ou ca foire....

Lien vers le commentaire
Partager sur d’autres sites

ben c'est meme sur ca doit marcher avec ppp0.... En fait :

:chinois: tu autorise tout ton lan a sortir, tu le forward, tu le nat...

:chinois: c'est bien zouli mais le serveur lui meme ???

--> Il faut donc autoriser le serveur a sortir par ppp0 avec son adresse ip publique.... et ausis a recevoir du traffic, et la il fautdra preciser sur chaque port !

Lien vers le commentaire
Partager sur d’autres sites

Voici ma config:

________________

INTERNET <---->eth1|SERVEUR/FIREWALL|eth0 <-----> LAN

J'autorise mon serveur à sortir vers le net pour les ports 80,443,21,110,25.

C'est à dire que je récupère son IP publique et je n'autorise les sorties vers ces ports que pour cette addr publique.

Vers le LAN, j'autorise tout accès

iptables -A OUTPUT -o eth0 -d $LAN -j ACCEPT

Et toi tu dis que je dois autoriser mon IP publique en sortie vers mon LAN ?

C ça ? Normalement non ?

L'IP de mon serveur Web depuis mon LAN, c celle de eth0, ou celle de eth1 s'il doit être accessible depuis le net. Non ?

Ce qui sort de l'interface ne sort pas forcément avec l'IP de l'interface.

Oui je suis d'accord, mais c valable pour la règle FORWARD, non ?

Pour la règle OUTPUT, normalement ça sort avec mon l'IP local de mon serveur, en l'occurence celle de eth0, non ?

Lien vers le commentaire
Partager sur d’autres sites

Mon serveur dispose de la connexion. Il n'est autorisé à sortir que pour des ports bien définis.

Par exemple,

iptables -A OUTPUT -s $IP_PUB --dport 80 -j ACCEPT

Quand mon serveur sort vers mon LAN, il utilise l'IP local (celle de eth0).

J'ai fait un test avec ethereal et toute la commu entre un pc de mon réseau local et mon serveur se fait entre l'IP local de mon serveur et l'IP du PC...

Et comme ça passe par eth0, les règles avec "-i eth0" et "-o eth0" devraient fonctionner aussi, c sur ce point que je bute et que je ne comprends pas...

Vous allez certainement me trouver lourd...

Lien vers le commentaire
Partager sur d’autres sites

[RIRE]

Ouais je me suis peut-etre un peu embrouyé dans mes explications...

Je reprends.

Voici ma config

INTERNET<---->eth1<->SERVEUR/FIREWALL<->eth0<---->LAN

Mon serveur fait routeur.

Donc j'ai autorisé en forward différents ports de destination 80,110,25, etc.

Par exemple,

iptables -A FORWARD -p tcp --dport 80 -s $LAN -j ACCEPT (1)

Mon serveur fait serveur intranet,samba,dhcp,postgresql pour mon LAN

Donc j'ai autorisé en entrée et en sortie tout ce qui va et vient de mon LAN (donc de mon eth0)

iptables -A INPUT (-i eth0) -s $LAN -j ACCEPT (2)

iptables -A OUTPUT (-i eth0) -s $LAN -j ACCEPT (3)

En sortie et en entrée vers Internet, j'autorise différents ports de destination 80,21,25,110, pour notamment mettre à jour mes packages, ou pour envoyer des mails.

Par exemple,

iptables -A OUTPUT -p tcp --dport 80 -s $IP_PUB -j ACCEPT (4)

Ce que je ne comprends pas bien c pourquoi je suis obligé d'enlever "-i eth0" et "-o eth0" aux règles (2) et (3) pour que ça marche....

Merci de m'expliquer....

:-)

Lien vers le commentaire
Partager sur d’autres sites

tout simplement parce que ca ne doit pas passer par eth0.

bon deja, tu as un pb, tu as deux fois -i, c'est normal ou c'est une faute de frappe ???

Ensuite, ben ce qui est sur c'est que ca passe par ailleurs que eth0, et lorsque tu ne specifie pas la regle, il considere que peu importe l'interface par laquelle ca arrive, lorsque le traffic c'est ca ( src, dest ) il laisse passer.

port 21 :nonnon: ce sont des protocoles pourri qu'il y a derriere, a mois que tu ne lances d'autres services dessus...

De plus, c'est inutile de mettre ca sur le serveur si tu laisse les droits au lan de le faire...i.e.: ton serveur n'a pas besoin d'avoir acces a smtp...juste tes clients.

Lien vers le commentaire
Partager sur d’autres sites

Ok merci

oui c t une faute de frappe pour les deux i..

Sinon c sûr que je passe par eth0...

Pour preuve j'arrivais à accéder au serveur web.

Et au serveur postgresql je réussissais à y accéder une fois et après ce n'était plus possible.

Depuis que j'ai enlevé "-i eth0" et "-o eth0", ça marche tout le temps....

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...