2 votes

Comment configurer iptables pour utiliser apt-get dans un serveur ?

Je commence à utiliser iptables (débutant) pour protéger un serveur linux (spécifiquement Debian 5.0). Avant de configurer les paramètres d'iptables, je peux utiliser apt-get sans problème. Mais après avoir configuré les iptables, l'apt-get ne fonctionne plus. Par exemple, j'utilise ce script dans iptables :

#!/bin/sh
IPT=/sbin/iptables

## FLUSH
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 22 -j ACCEPT

$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 80 -j ACCEPT
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 443 -j ACCEPT

# Allow FTP connections @ port 21
$IPT -A INPUT  -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

# Allow Active FTP Connections
$IPT -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT 

# Allow Passive FTP Connections
$IPT -A INPUT -p tcp --sport 1024: --dport 1024:  -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 1024: --dport 1024:  -m state --state ESTABLISHED,RELATED -j ACCEPT 

#DNS
$IPT -A OUTPUT -p udp --dport 53 --sport 1024:65535 -j ACCEPT

$IPT -A INPUT -p tcp --dport 1:1024
$IPT -A INPUT -p udp --dport 1:1024

$IPT -A INPUT -p tcp --dport 3306 -j DROP
$IPT -A INPUT -p tcp --dport 10000 -j DROP
$IPT -A INPUT -p udp --dport 10000 -j DROP

alors quand je lance apt-get j'obtiens :

core:~# apt-get update
0% [Connecting to ftp.us.debian.org] [Connecting to security.debian.org] [Conne

et il cale. Quelles sont les règles que je dois configurer pour que cela fonctionne.

Gracias

Addendum :

Après quelques tentatives, je découvre que le problème se situe dans la politique INPUT, et non dans celle de OUTPUT, si je modifie le $IPT -P OUTPUT en $IPT -P OUTPUT ACCEPT le problème reste. Mais si je modifie le $IPT -P INPUT en $IPT -P INPUT ACCEPT alors cela commence à fonctionner.

8voto

Jan Hudec Points 101

Vous devez autoriser le premier paquet à ouvrir une connexion HTTP OUT, puis autoriser les réponses en retour.

Essayez :

$IPT -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
$IPT -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

5voto

Alex Points 51

Pour résoudre ce problème, vous devez ajouter les règles suivantes dans votre TPI :

# Apt-Get without problem
$IPT -A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

3voto

Reyad Attiyat Points 39

Peut-être Apt est incapable de résoudre les noms d'hôtes avec le DNS. Essayez d'ajouter cette ligne dans la section DNS de votre jeu de règles :

$IPT -A INPUT -p udp --sport 53 --dport 1024:65535 -j ACCEPT

2voto

sancro Points 51

Deux ports sont nécessaires pour qu'une installation Debian par défaut puisse recevoir des mises à jour :

  • HTTP (port tcp 80)
  • DNS (port udp 53)

Solution avec l'état -m :

$IPT -A OUTPUT -p tcp --dport 80 --sport 32768:61000 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p tcp --sport 80 --dport 32768:61000 -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p udp --dport 53 --sport 32768:61000 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p udp --sport 53 --dport 32768:61000 -m state --state ESTABLISHED -j ACCEPT

ou avec -m conntrack :

$IPT -A OUTPUT -p tcp --dport 80 --sport 32768:61000 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p tcp --sport 80 --dport 32768:61000 -m conntrack --ctstate ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p udp --dport 53 --sport 32768:61000 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p udp --sport 53 --dport 32768:61000 -m conntrack --ctstate ESTABLISHED -j ACCEPT

1voto

Matthieu Riegler Points 20160

Apt utilise généralement le bon vieux port 80, mais vous devriez vérifier le fichier apt.conf pour voir quel est le port utilisé, car il peut en utiliser plusieurs. Vérifiez également /etc/apt/sources.list.

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