문맥:
브라우저나 다른 응용 프로그램을 사용하기로 결정하지 않는 한 내 컴퓨터로의 모든 인바운드/아웃바운드 트래픽을 차단하는 셸 스크립트를 원합니다. 이 경우 해당 응용 프로그램을 호출하면 해당 응용 프로그램만 실행됩니다.
나는 똑똑한 사람들이 만든 이전 스크립트를 연구하고(소스는 마지막에 링크됨) 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에게 감사드립니다.