
Cuando escribo algo como sudo apt-get install firefox
, todo funciona hasta que me pregunta:
After this operation, 77 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Luego se muestran mensajes de error:Failed to fetch: <URL>
Mis reglas de iptables son las siguientes:
-P INPUT DROP
-P OUTPUT DROP
-P FORWARD DROP
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
¿Qué debo agregar para permitir que apt-get descargue actualizaciones? Gracias
Respuesta1
apt-get casi siempre realiza descargas a través de HTTP, pero también puede usar FTP, por lo que la respuesta corta probablemente sea permitir conexiones HTTP salientes... y también DNS, por supuesto.
La configuración que tiene ahora no permite todo el tráfico de red saliente (la ESTABLISHED
regla que tiene en la OUTPUT
cadena no es efectiva ya que nunca se establecerán sesiones). ¿Necesitas permitirSOLO¿apt-get actualizaciones y al mismo tiempo no permite todo lo demás? iptables
Probablemente sea la herramienta incorrecta para ese trabajo, ya que en realidad no interpretará las URL ni permitirá transferencias HTTP de forma selectiva. Querrá utilizar un servidor proxy HTTP para este trabajo.
Puede utilizar una configuración más sencilla que permitirá descargas de apt-get, pero tenga en cuenta que esto también permite todas las demás conexiones DNS y HTTP salientes, que pueden no ser las que desea.
iptables -F OUTPUT # remove your existing OUTPUT rule which becomes redundant
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
Si sus fuentes APT incluyen fuentes HTTPS o FTP o fuentes HTTP en puertos distintos al 80, deberá agregar esos puertos también.
A continuación, tendrás que permitir el tráfico de regreso. Puedes hacerlo con esta única regla que permite cualquier conexión establecida:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
(Es seguro permitir todas las conexiones entrantes establecidas cuando se utiliza el seguimiento de conexiones, porque solo las conexiones que usted haya permitido de otro modo llegarán al estado ESTABLECIDO).
Respuesta2
El archivo apt transporta a través de protocolos http, por lo que debe configurar su computadora para que acepte los datos del servidor del puerto 80 y 8080. Luego, las reglas de iptables deben ser
iptables -A INPUT -p tcp --sport 80 -m conntrack --state NEW -j ACCEPT
iptables -A INPUT -p tcp --sport 8080 -m conntrack --state NEW -j ACCEPT