web-dev-qa-db-fra.com

Quelles règles d'entrée dois-je ajouter à iptables pour qu'apt (apt-get, aptitude) puisse fonctionner (mettre à jour, mettre à niveau, rechercher, installer)?

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

0% [Connecting to archive.ubuntu.com]

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

Cela se produit en raison de mes règles iptables . Si je rétablis iptables à ses valeurs par défaut (en supprimant les règles et en définissant les politiques sur ACCEPT), alors aptitude fonctionne comme prévu. Aucune erreur plus.

Mais, hé, je veux utiliser mes règles iptables ... J'ai juste besoin de savoir: ce que je dois rester ouvert pour faire apt fonctionne?

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 INPUT est DROP. Donc, le problème est dans la chaîne INPUT! J'ai 11 règles INPUT pour ouvrir des ports spécifiques TCP dont j'ai besoin pour exécuter des services tels que FTP, SSH, HTTP, etc. Une règle supplémentaire pour accepter ICMP (ping) et d'autres pour accepter tous entrée hôte local . 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 . Bien sûr, un simple iptables -P INPUT ACCEPT le fait fonctionner, mais je ne veux pas tout accepter. Je veux n'ouvrir que ce qui est nécessaire pour que aptitude puisse faire son travail.

Cela 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 iptables ... Je viens de découvrir un bogue dans le noyau que j’utilise (voir https://serverfault.com/questions/159818/iptables-logging- ne fonctionne pas ) ... alors, ne me demandez pas le contenu du journal, car je ne peux pas les avoir.

Je vous remercie!

3
J. Bruni

Lorsque vous envoyez une requête HTTP à l'autre serveur, vous utilisez TCP. Tout d'abord, un paquet SYN sort de l'autre port vers l'autre serveur à partir d'un port haut aléatoire, puis vous recevrez 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 n'autorisent pas la réception du paquet ACK et par conséquent, la connexion ne peut pas être établie. Ajouter une règle comme:

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

Vous ne recevez pas de journaux 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 vous recommande d'utiliser iptables-restore (ou iptables-apply pour les tests) pour éviter de vous verrouiller si une règle ne s'applique pas. Le fichier à transmettre à la commande se présente comme suit:

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

Une nouvelle ligne après la ligne COMMIT est obligatoire.

Par défaut, les entrées vont à /var/log/kern.log. Si vous souhaitez faire la différence entre les messages du noyau et ceux d'iptables, 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 iptables et les enverra à /var/log/iptables.log.

6
Lekensteyn

Dans Ubuntu 18, la mise à jour d'apt ne fonctionnait pas jusqu'à ce que j'autorise le bouclage (avec -i lo ACCEPT). Donc, ma liste de "règles sûres" est

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
0
user10635