iptables 스크립트는 필수 애플리케이션을 제외한 모든 인터넷 액세스를 차단합니다.

iptables 스크립트는 필수 애플리케이션을 제외한 모든 인터넷 액세스를 차단합니다.

문맥:

브라우저나 다른 응용 프로그램을 사용하기로 결정하지 않는 한 내 컴퓨터로의 모든 인바운드/아웃바운드 트래픽을 차단하는 셸 스크립트를 원합니다. 이 경우 해당 응용 프로그램을 호출하면 해당 응용 프로그램만 실행됩니다.

나는 똑똑한 사람들이 만든 이전 스크립트를 연구하고(소스는 마지막에 링크됨) iptables 사용법을 직접 배우는 데 시간을 투자했습니다(아직도 작업 중).

완료된 작업의 결과는 다음과 같습니다.

결과:

쉘 스크립트를 실행하기 전에 다음과 같은 스크립트가 있습니다.인터넷빌드되었습니다:

sudo groupadd internet

쉘 스크립트:

#!/bin/sh
#only allow apps run from "internet" group to run

# clear previous rules
sudo iptables -F

# accept packets for internet group
sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT
sudo iptables -A OUTPUT -p udp -m owner --gid-owner internet -j ACCEPT

# also allow local connections
sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
sudo iptables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT

# reject packets for other users
sudo iptables -A OUTPUT -j REJECT

# same process for IPv6:
sudo ip6tables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT
sudo ip6tables -A OUTPUT -p udp -m owner --gid-owner internet -j ACCEPT
sudo ip6tables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
sudo ip6tables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT
sudo ip6tables -A OUTPUT -j REJECT

현재 작업 중인 셸의 또 다른 부분은 다음과 같습니다. 하지만 이에 대해 100% 확신할 수는 없습니다.

#DROPS ALL INPUT and FORWARD
sudo iptables -A INPUT -j DROP
sudo iptables -A FORWARD -j DROP

#ONLY ACCEPTS INPUT THAT WAS INITIATED BY SOME OUTPUT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#SAME REPEATED FOR IPv6
sudo ip6tables -A INPUT -j DROP
sudo ip6tables -A FORWARD -j DROP
sudo ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

위의 전체 스크립트를 실행한 후 다음 명령은 internet그룹에 속한 터미널을 열므로 터미널에서 열린 모든 응용 프로그램(예: Firefox)은 인터넷에 액세스할 수 있지만 다른 모든 입력/출력은 차단됩니다.

sudo -g internet -s

질문:

이전 논리가 타당합니까? 현재 저는 네트워크 모니터링 소프트웨어(nethogs)를 설치하고, 모든 코드 라인을 테스트하고, 결과가 예상대로인지 확인하는 등 모든 기능을 테스트하는 작업을 진행 중입니다.하지만동시에 이틀 전부터 iptables를 배우기 시작했기 때문에 원래 코드의 소스는 숙련된 코더가 수행했지만 이를 조합하여 원하는 결과를 생성하는 능력에 대해 100% 확신할 수 없습니다.감사해요시간을 내어 이 글을 읽고 토론에 참여해주신 모든 분들께! ! !

원천:

https://plus.google.com/+TobyKurien/posts/YZhZJCZmGgm https://serverfault.com/questions/429400/iptables-rule-to-allow-all-outbound-locally-originating-traffic

추신: iptables의 많은 기본 개념을 이해하는 데 도움을 주고 소스 코드에 대한 몇 가지 질문에 답변해 준 @dirkt에게 감사드립니다.

관련 정보