선택한 프로세스를 제외한 모든 프로세스에 대한 인터넷 액세스를 거부하는 방법은 무엇입니까?

선택한 프로세스를 제외한 모든 프로세스에 대한 인터넷 액세스를 거부하는 방법은 무엇입니까?

때로는 56kbps라는 매우 좁은 인터넷 대역폭을 사용해야 할 때도 있습니다. 내 Ubuntu 데스크탑에는 웹에서 무언가를 지속적으로 확인하는 프로그램이 너무 많습니다. 프로그램을 하나씩 검색하고 비활성화하는 것은 정말 고통스러운 일입니다.

나는 메일 클라이언트를 제외한 모든 프로세스에 대한 인터넷 액세스를 (어떤 수단으로든) 거부할 수 있는 도구를 원합니다.

가능합니까? 그렇다면 어떻게 해야 할까요?

이를 수행하는 한 가지 방법은 다른 네트워크 장치(예: )를 열고 /dev/tap1이를 (내 일반적인 인터넷 장치)로 라우팅하도록 설정하고 /dev/wlan0모든 것을 보호하기 위해 켜고 끌 수 있는 사용자 지정 규칙을 사용하는 것입니다. iptables하지만 저는 iptables 전문가가 아니기 때문에 누군가 나에게 구체적인 지시를 내리지 않는 한 이 솔루션은 쓸모가 없습니다.

답변1

또한 이를 사용하여 iptables필수 인터페이스에서 udp/tcp 포트를 허용/제한할 수도 있습니다. 예를 들어, tcp/udp 포트 143(IMAP)의 모든 트래픽을 허용하도록 체인 filter의 테이블에 규칙을 도입해 보겠습니다 .OUTPUT

(sudo) iptables -A OUTPUT -o eth0 -p udp --destination-port 143 -j ACCEPT
(sudo) iptables -A OUTPUT -o eth0 -p tcp --destination-port 143 -j ACCEPT
(sudo) iptables -A OUTPUT -o eth0 -j DROP

내 생각에는 IMAP이 TCP를 통과한다고 생각하지만 만약을 대비해 UDP 프로토콜도 제한하고 있습니다. 이 질문에서는 귀하의 인터넷 인터페이스가 이고 eth0메일 클라이언트가 IMAP 프로토콜을 사용하여 원격 메일 서버에 연결한다고 가정합니다 . 직접 시도해 보았는데 메일 서버에만 접근이 가능했습니다.규칙의 순서가 중요하다는 점을 기억하세요. 그렇지 않으면 예상대로 작동하지 않습니다.

편집 #1:댓글로 질문하신대로. 인터넷 트래픽을 복원하려면 방금 삽입한 규칙을 삭제하면 됩니다. 다음과 같이 이 작업을 수행할 수 있습니다.

갈 길이 멀다:

(sudo) iptables -D OUTPUT -o eth0 -p udp --destination-port 143 -j ACCEPT
(sudo) iptables -D OUTPUT -o eth0 -p tcp --destination-port 143 -j ACCEPT
(sudo) iptables -D OUTPUT -o eth0 -j DROP

짧은 거리:

(sudo) iptables -nvL --line-numbers

위 명령을 실행하면 각 규칙 앞에 해당 번호가 표시되므로 전체 규칙을 다시 작성하는 대신 해당 번호를 사용하여 규칙을 삭제하는 데 도움이 됩니다. 예제 출력은 다음과 같습니다.

Chain OUTPUT (policy ACCEPT 73 packets, 8766 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     udp  --  *      eth0    0.0.0.0/0            0.0.0.0/0            udp dpt:143

그런 다음 규칙을 삭제하려면 다음 명령을 실행하십시오.

(sudo) iptables -D OUTPUT 1

아직 규칙도 정하지 않았고 상황이 어떻게 될지 잘 모르겠다면 근거리도 추천한다. iptableswith 매개변수의 출력을 기반으로 규칙을 재구성 할 수도 있습니다 -nvL.

참고: 이는non-persistent사용법은 iptables시스템을 다시 시작하면 규칙이 유지되지 않음을 의미합니다. 규칙을 원하는 경우 persistent가장 쉬운 방법은 다음 명령을 실행하는 것입니다.

(sudo) iptables-save > /etc/iptables/rules.v4

현재 규칙을 에 저장/덤프합니다 /etc/iptables/rules.v4. 그런 다음 재부팅 후 iptables는 해당 파일에서 저장된 구성을 읽습니다. IPv6이 추가 파일을 사용할 수 있습니다 rules.v6. 이는 Debian추가 패키지를 설치해야 하는 경우에 적용됩니다. 확인하시기 바랍니다이 가이드상해. 내가 찾은 우분투의 경우이 다른 가이드. 다른 시스템의 경우 인터넷을 검색할 수 있지만 원칙은 동일합니다.You dump your current rules to file and set up a script at boot time to apply those saved rules to the current iptables configuration.

답변2

여러 가상 머신에서 프로세스를 실행할 수 있습니다. 그런 다음 일부 가상 시스템에 대한 네트워크 액세스를 종료할 수 있지만 다른 가상 시스템에 대한 액세스는 종료할 수 없습니다.

관련 정보