3 votes

Quelles règles INPUT dois-je ajouter à iptables pour que apt (apt-get, aptitude) puisse fonctionner (update, upgrade, search, install) ?

Je dois utiliser aptitude pour mettre à jour et installer des logiciels, mais cela échoue. Il est dit...

0% [Connecting to archive.ubuntu.com]

...et s'arrête. Je dois taper CTRL-C pour déménager. J'utilise Ubuntu Server 10.04 LTS (Lucid Lynx).

Cela se produit en raison de mon iptables règles. Si je rétablis iptables à ses valeurs par défaut (en supprimant les règles et en mettant les politiques sur ACCEPT), puis aptitude fonctionne comme prévu. Il n'y a plus d'erreurs.

Mais, hey, je veux utiliser mon iptables les règles... J'ai juste besoin de savoir : ce que je dois exactement garder ouvert pour faire apt travail ?

Mes règles sont assez simples. La politique de SORTIE est ACCEPT. La politique FORWARD est ACCEPT. Et je n'ai pas de règles pour OUTPUT et FORWARD. La politique d'INPUT est DROP. Donc, le problème se situe au niveau du INPUT chaîne ! J'ai 11 règles INPUT pour ouvrir des ports TCP spécifiques dont j'ai besoin pour exécuter des services comme FTP, SSH, HTTP, etc. Une règle supplémentaire pour accepter ICMP (ping), et une autre pour accepter tous les ports TCP. localhost d'entrée. Et c'est tout :

iptables -F
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 587 -j ACCEPT
iptables -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -A INPUT -p tcp --dport 1008 -j ACCEPT
iptables -A INPUT -p tcp --dport 2812 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
iptables -P INPUT DROP

J'ai essayé beaucoup de règles pour essayer de faire aptitude travail. Bien sûr, un simple iptables -P INPUT ACCEPT fait que ça marche, mais je ne veux pas tout accepter. Je veux ouvrir seulement ce qui est nécessaire pour que l'aptitude fasse son travail.

Il me semble étrange que la chaîne INPUT soit le problème... mais c'est le cas.

Un autre problème est que je n'ai pas accès aux journaux d'iptables... Je viens de découvrir qu'il y a un bug dans le noyau que j'utilise (cf. https://serverfault.com/questions/159818/iptables-logging-not-working )... donc, ne me demandez pas le contenu du journal, car je suis incapable de l'avoir.

Gracias.

6voto

Lekensteyn Points 162346

Lorsque vous envoyez une requête HTTP à l'autre serveur, vous utilisez le protocole TCP. D'abord, un paquet SYN est envoyé à l'autre serveur à partir d'un port élevé aléatoire, puis vous recevez une réponse ACK. Enfin, vous envoyez SYN/ACK au serveur et le serveur répond avec le document demandé (en plusieurs paquets). Vos règles ne permettent pas de recevoir le paquet ACK et donc la connexion ne peut pas être établie. Ajoutez une règle comme :

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Vous n'avez pas les journaux d'iptables gratuitement. Vos règles devraient ressembler à :

# if no rule matched, the input should be dropped
-P INPUT DROP

-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# etc

# the limit prevents your logs from being flooded if there are a lot packets being captured
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied" --log-level debug

Notez que j'ai omis iptables avant les commandes, je recommande d'utiliser iptables-restore (ou iptables-apply pour les tests) pour éviter de se bloquer si une règle ne s'applique pas. Le fichier à passer à la commande ressemble à ceci :

*FILTER
# your rules here, for example:
-P INPUT DROP
-P INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
COMMIT

Un saut de ligne après le COMMIT est obligatoire.

Par défaut, les entrées vont à /var/log/kern.log . Ce n'est pas bon si vous voulez faire la différence entre les messages du noyau et ceux d'iptables, alors créez un filtre pour rsyslog dans /etc/rsyslog.d/iptables.conf contenant :

:msg,contains,"iptables denied" /var/log/iptables.log
& ~

Ceci filtrera les erreurs d'iptables et les enverra à /var/log/iptables.log .

0voto

Andrew Zhilin Points 359

Dans Ubuntu 18 apt update n'a pas fonctionné jusqu'à ce que j'autorise le loopback (avec -i lo ACCEPT ). Donc, ma liste de "règles de sécurité" est la suivante

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X