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


12

와 같은 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이 업데이트를 다운로드 할 수 있도록하려면 무엇을 추가해야합니까? 감사

답변:


17

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 상태가되기 때문입니다.)


답변 감사합니다. 작동했지만 이러한 OUTPUT 포트를 여는 데 보안 문제가있을 수 있다고 생각하십니까? 감사합니다
anthony01

1
거의 모든 SOHO 스타일 박스를 포함한 대부분의 방화벽은 무제한 아웃 바운드 연결을 허용합니다. 사람들은 일반적으로 나가는 트래픽을 제한 할 필요가 없습니다. 그러나 요구 사항에 따라 다릅니다. 기존 설정으로 인해 해당 워크 스테이션의 사용자가 인터넷을 탐색 할 수 없습니다. 이것이 당신이해야 할 일이라면,이 iptables 기반 솔루션은 웹 브라우징이 허용되기 때문에 사용할 수 없습니다.
Celada

그리고 웹 브라우징을 차단하려는 의도라면 어쨌든 잘못된 도구입니다. 직원 웹 브라우징을 방지하기 위해 NetFilter / IPTables를 사용하여 모든 아웃 바운드 연결을 차단하는 것은 바주카를 사용하여 호두를 여는 것과 같습니다. 권한이없는 사용자의 작업 관련 브라우징을 허용하면서 부적절한 사용을 기록하는 투명한 웹 프록시가 필요합니다.
Magellan

몇 시간 동안 검색 한 결과,이 답변을 통해 로컬 서버의 문제를 해결할 수있었습니다. 내가 무엇을하든 포트 53을 통한 DNS 연결을 명시 적으로 허용 할 때까지 모든 나가는 트래픽이 차단되었습니다. 패키지 관리자가 호스트를 확인할 수 없다고 불평했기 때문에 의미가 있습니다.
양파
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.