OVH Cloud OVH Cloud

iptables

2 réponses
Avatar
esteban.lille
Bonjour

Pourriez vous me diore ce que vous pensez de ce script iptable

iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 6699 -j
DNAT --to-destination 192.168.0.9
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 6257 -j
DNAT --to-destination 192.168.0.9
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth0 -j
MASQUERADE

iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 21 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 4662 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p udp -m udp --dport 4672 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -j DROP
iptables -t filter -A INPUT -i eth0 -p udp -j DROP
iptables -t filter -A OUTPUT -j ACCEPT
iptables -t filter -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Merci de me dire si je suis protégé avec ça, j'ai un doute !(


ps, ce poste est peut être "en bouble", mais je ne vois pas trace de
l'autre...

2 réponses

Avatar
Logan
esteban.lille wrote:

Bonjour

Pourriez vous me diore ce que vous pensez de ce script iptable



Avez-vous posté la totalité du script ?

On commence generalement par interdire, puis ouvrir au cas par cas.

iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 6699 -j
DNAT --to-destination 192.168.0.9
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 6257 -j
DNAT --to-destination 192.168.0.9
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth0 -j
MASQUERADE


Vous n'as pas besoin de préciser la table, Filter étant celle par défaut.

iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


-m tcp ?? ne connait pas. Etant donné le suivi ci-dessus, il serait plus
judicieux de faire quelque chose du genre :

iptables -A INPUT -i eth0 -p tcp --syn -m state --state NEW --dport 80
-j ACCEPT

iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 21 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 4662 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p udp -m udp --dport 4672 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -j DROP
iptables -t filter -A INPUT -i eth0 -p udp -j DROP
iptables -t filter -A OUTPUT -j ACCEPT


Cette regle ne sert à rien puisque vous authorisé ci-dessus.
iptables -t filter -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


Merci de me dire si je suis protégé avec ça, j'ai un doute !(


Il faut être plus restrictif. C'est trop permissif amha


ps, ce poste est peut être "en bouble", mais je ne vois pas trace de
l'autre...


HLogan.

Avatar
Philippe Orand
Salut
Bonjour

Pourriez vous me diore ce que vous pensez de ce script iptable

iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 6699 -j
DNAT --to-destination 192.168.0.9
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 6257 -j
DNAT --to-destination 192.168.0.9
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth0 -j
MASQUERADE


Tout est ok, mais question d'esthétique: la condition 'match' dans ce cas n'est pas obligatoire..
élimines les -m udp et -p tcp.

Mais comme tu utilises un NAT.. je me doutes que tu fais routeur..
où sont donc les règles de filtrages de la chaine FORWARD ????

iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 21 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp --dport 4662 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p udp -m udp --dport 4672 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -j DROP
iptables -t filter -A INPUT -i eth0 -p udp -j DROP


oulà... pourquoi faire simple quand on peut faire compliqué :)))

primo:Personnellement je te conseillerais de de tout refuser par défaut et d'accepter aprés.

deuxio: utilises et abuses du match -m multiport plutot que toutes ces lignes

tertio, tu n'acceptes pas l'interface lo.
tu risques d'avoir de gros problèmes avec X et d'autres programmes

quarto: tu acceptes tout ICMP de n'importe qui.
Ce n'est pas la cible privilégiée de scripts kiddies, d'accord, mais ce n'est pas conseillé quand
même.

quinto: La table par défaut est 'filter' inutile de le préciser.. (esthétique encore :)))
ce qui donne pour résumé

sexto: Tu ne logues rien.. Comment savoir dans ce cas si tu es attaqué ?
un firewall sans log est un steak sans moutarde.. fade :)

# Refus de tout par défaut
iptables -P INPUT DROP

# acceptation de la connexion à tes serveurs:
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 80,21,22,443,4662 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 4672
# ATTENTION! VERIFIES QUE TES SERVEURS SOIENT BIEN A JOUR ET QU'IL
# N'AIENT PAS DE TROUS DE SECURITE

# acceptation de l'interface locale
iptables -A INPUT -i lo -j ACCEPT

# acceptation du trafic en relation avec une connexion établie
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# log de tout ce qui n'est pas passé
iptables -A INPUT -j LOG

pour mon primo: la première commande est la réponse
pour mon deuxio.. voir deuxième et troisième commande
tertio: voir quatrième
quarto: cinquième commande: tout ICMP en provenance de trouducul est interdit si il n'est pas en
relation avec une connexion établie par tes soins.. CQFD
sexto: dernière ligne

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


????????????????????????
tu acceptes tout par ta première ligne.. ta deuxième ne sert à rien :)
et ta règle par défaut de OUTPUT est 'ACCEPT'.
dépense d'énergie inutile :))

dans ton cas, je laisserais la chaine OUTPUT vide avec par défaut 'ACCEPT'.
si tu as confiance en tes utilisateurs..
Aprés tout, le but est que l'on ne puisse pas rentrer, pas que tu filtres ce qui sort..
Mais ce n'est qu'un avis personnel et il est criticable.

Amitiés Philippe