L'OUTPUT n'est pas tout à fait un mirroir de l'input, normallement pour chaque INPUT tu devrais avoir un OUTPUT avec, entre autre,le switch -m state --state ESTABLISHED(,RELATED) ajouté.
Perso, je te conseille de mettre la POLICY d' INPUT, OUTPUT et FORWARD à DROP par défaut puis:
Pour autoriser des connections entrantes tcp (internet-> vers ta machine):
iptables -A INPUT -s [allowed-client-ip] -p tcp,udp --dport [port] -j ACCEPT
iptables -A OUTPUT -d [allowed-client-ip] -p tcp,udp --sport [port] -j ACCEPT -m state --state ESTABLISHED
Pour autoriser les connections sortantes tcp (initiées par ta machine->internet):
iptables -A OUTPUT -d [destination-server-ip] -p tcp,udp --dport [port] -j ACCEPT
iptables -A INPUT -s [destination-server-ip] -p tcp,udp --sport [port] -j ACCEPT -m state --state ESTABLISHED
Dans ton cas, si tu souhaites t'autoriser toutes les connections sortantes(utile pour nmap aussi) sans trop de prendre la tête:
modprobe ip_conntrack_ftp
iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
Puis pour autoriser le ssh depuis l'exterieur rajoute les lignes de mon exemple sur les connection entrantes pour chaque ports que tu souhaites ouvrir:
iptables -A INPUT -s 0/0 -p tcp --dport 22 -j ACCEPT
# Plus nécessaire car OUTPUT est ACCEPT ..
# iptables -A OUTPUT -d 0/0-p tcp --sport 22 -j ACCEPT -m state --state ESTABLISHED
Entrée progressive dans le registre du parano:
Il est aussi intéressant de ne pas utiliser directement ACCEPT mais
de créér une table (par exemple 'TCPACCEPT') et valider quelques
flags avant d'accepter le packet, par exemple:
iptables -N TCPACCEPT
iptables -A TCPACCEPT -p tcp ! --syn -m state --state NEW -j DROP
iptables-A TCPACCEPT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A TCPACCEPT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A TCPACCEPT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A TCPACCEPT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A TCPACCEPT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A TCPACCEPT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
Le DROP devrait être aussi remplacé par une table qui écrit des logs avant
de DROPper..
# Pas un mirroir
Posté par petit_bibi . En réponse au message Demande d'avis sur une config iptables.. Évalué à 1.
Perso, je te conseille de mettre la POLICY d' INPUT, OUTPUT et FORWARD à DROP par défaut puis:
Pour autoriser des connections entrantes tcp (internet-> vers ta machine):
Pour autoriser les connections sortantes tcp (initiées par ta machine->internet):
Dans ton cas, si tu souhaites t'autoriser toutes les connections sortantes(utile pour nmap aussi) sans trop de prendre la tête:
Puis pour autoriser le ssh depuis l'exterieur rajoute les lignes de mon exemple sur les connection entrantes pour chaque ports que tu souhaites ouvrir:
Entrée progressive dans le registre du parano:
Il est aussi intéressant de ne pas utiliser directement ACCEPT mais
de créér une table (par exemple 'TCPACCEPT') et valider quelques
flags avant d'accepter le packet, par exemple:
iptables -N TCPACCEPT
iptables -A TCPACCEPT -p tcp ! --syn -m state --state NEW -j DROP
iptables-A TCPACCEPT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A TCPACCEPT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A TCPACCEPT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A TCPACCEPT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A TCPACCEPT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A TCPACCEPT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
Le DROP devrait être aussi remplacé par une table qui écrit des logs avant
de DROPper..