apt-get이 프로그램을 다운로드하도록 허용하는 올바른 iptables 규칙은 무엇입니까? 오류 메시지가

와 같은 sudo apt-get install firefox것을 입력하면 모든 것이 나에게 묻을 때까지 작동합니다.

After this operation, 77 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y

그런 다음 오류 메시지가 표시됩니다. Failed to fetch: <URL>

내 iptables 규칙은 다음과 같습니다.

-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

apt-get이 업데이트를 다운로드 할 수 있도록하려면 무엇을 추가해야합니까? 감사



답변

apt-get은 거의 항상 HTTP를 통해 다운로드하지만 FTP를 사용할 수도 있으므로 짧은 대답은 아마도 아웃 바운드 HTTP 연결과 DNS를 허용하는 것입니다.

이제 구성에서 나가는 모든 네트워크 트래픽을 허용하지 않습니다 ( 체인 ESTABLISHED에있는 규칙 OUTPUT은 세션이 설정되지 않기 때문에 적용되지 않습니다). 여전히 다른 모든 것을 허용하지 않고 apt-get 업데이트 허용해야 합니까? iptables실제로 URL을 해석하지 않고 선택적으로 HTTP 전송을 허용하지 않으므로 해당 작업에 대한 잘못된 도구 일 것입니다. 이 작업에 HTTP 프록시 서버를 사용하려고합니다.

apt-get 다운로드를 허용하는보다 간단한 설정을 사용할 수 있지만, 이로 인해 다른 모든 나가는 DNS 및 HTTP 연결도 허용되며, 이는 원하지 않는 것일 수 있습니다.

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

APT 소스에 80이 아닌 포트의 HTTPS 또는 FTP 소스 또는 HTTP 소스가 포함 된 경우 해당 포트도 추가해야합니다.

다음으로 반품 트래픽을 허용해야합니다. 설정된 단일 연결을 허용하는이 단일 규칙으로이를 수행 할 수 있습니다.

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

(연결 추적을 사용할 때는 모든 허용 된 연결 만 허용하는 것이 안전합니다. 그렇지 않으면 허용 된 연결 만 ESTABLISHED 상태가되기 때문입니다.)


답변