시작할 때 이러한 iptables 규칙이 실행되도록 설정하는 방법


20

일반적으로 로그인 할 때마다 iptables 규칙을 실행합니다. 터미널에서 나는 타입;

sudo sh firewall.sh

언니의 컴퓨터를 설정하면서, 그녀에게 기본적인 방화벽 보호 기능을 제공하고 싶습니다. 그녀는 표준 계정 인 관리자로 로그인하지 않습니다. 암호를 입력하지 않고 로그인 할 때마다 방화벽 스크립트를 실행하려면 어떻게해야합니까?

내가 여동생의 컴퓨터에 쓴 스크립트는 다음과 같습니다.

#!/bin/sh

modprobe ip_conntrack
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -I OUTPUT -p tcp --dport 80 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p udp --dport 53 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 443 --sport 32768:61000 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -I OUTPUT -p icmp -j DROP

iptables -I INPUT -p icmp -j DROP
iptables -I INPUT -p udp -j DROP
iptables -I INPUT -p tcp -m tcp --syn -j DROP
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

필자는 홈 폴더에 firewall.sh로 배치하고 실행 가능하도록 설정했습니다 (파일을 마우스 오른쪽 단추로 클릭하고 권한 탭에서 "프로그램을 파일로 프로그램으로 실행"옵션을 확인).

루트로 터미널에서이 스크립트를 실행하면 정상적으로 작동합니다.

입력 후;

sudo sh firewall.sh

터미널에 입력했습니다

sudo iptables -L -v

그리고 나는 얻는다

Chain INPUT (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
    0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcpflags: FIN,SYN,RST,ACK/SYN
    0     0 DROP       udp  --  any    any     anywhere             anywhere            
    0     0 DROP       icmp --  any    any     anywhere             anywhere            

Chain FORWARD (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       icmp --  any    any     anywhere             anywhere            
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spts:32768:61000 dpt:https
    0     0 ACCEPT     udp  --  any    any     anywhere             anywhere             udp spts:32768:61000 dpt:domain
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spts:32768:61000 dpt:http
    0     0 ACCEPT     all  --  any    lo      anywhere             anywhere

로그인 할 때이 스크립트를 자동으로 실행 시키거나 자매 컴퓨터에이 규칙을 영구적으로 저장하려면 어떻게해야합니까? rc.local 메소드와 iptables-save에 대한 첫 시도가 성공적이지 않았으므로 자세한 코드를 제공해 주시겠습니까? 재부팅 할 때마다 모든 INPUT, OUTPUT 및 FORWARD 체인이 ACCEPT로 재설정되며 입력시 정책이 나열되지 않습니다sudo iptables -L -v


거의 2 년 후 중요한 의견 : ip6tablesIPv6가 처리 ip6tables하고 있지 않기 때문에 하루에 v6 연결을 얻는 경우 규칙 이 있는지 확인하십시오 iptables.
토마스 워드

답변:


38

iptables-persistent부팅 스크립트를 망칠 필요없이 패키지 를 사용하고 싶을 수도 있습니다 . 먼저 스크립트를 실행하여 방화벽 규칙을 설정하십시오. 둘째,를 실행 sudo apt-get install iptables-persistent하고 프롬프트를 따릅니다. 현재 규칙을 저장하라는 메시지가 표시되면 두 프롬프트에서 모두 "예"를 누르십시오. 이제 재부팅시 iptables 규칙이 복원됩니다.


참고 : 이후에 규칙을 변경하면 변경 후에 다음 명령을 수행해야합니다.

IPv4 iptables 규칙을 저장하려면 다음을 수행하십시오. sudo su -c 'iptables-save > /etc/iptables/rules.v4'

IPv6 ip6tables 규칙을 저장하려면 다음을 수행하십시오. sudo su -c 'ip6tables-save > /etc/iptables/rules.v6'


고맙습니다. 규칙을 임시로 변경하려면 터미널에서 스크립트를 실행할 수 있습니다.
Mikelane

또는 iptables 시스템을 직접 조작 할 수 있습니다. 그러나 임시 규칙을 지속적으로 사용하려는 경우 답변에 명시한 명령을 수행하지 않으면 새 규칙이 저장되지 않습니다.
토마스 워드

sudo dpkg-reconfigure iptables-persistent규칙을 변경 한 후에 실행하는 것은 좋지 않습니다 .
souravc

@souravc 그에 응답하는 질문은 "왜 필요한가? 아이디어는 당신이하지 않았을 그냥 다시 작성할 수 있습니다 (또는 덮어 쓰기합니다 (이다 rules.v4또는 rules.v6수동으로 파일 그래서 그들은이 다음 부팅시 인덱스, 또는 실행할 경우 즉시 얻을 iptables-restore < /etc/iptables/rules.v4또는ip6tables-restore < /etc/iptables/rules.v6
토마스 구

2

방화벽 규칙이 있다고 가정하면 다음과 같습니다.

/etc/iptables.up.rules

아마도 가장 확실한 대답은 iptables라는 파일을 만드는 것입니다.

/etc/network/if-pre-up.d

내용으로 :

#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

그것을 사용하여 실행 가능하게하십시오.

sudo chmod +x /etc/network/if-pre-up.d/iptables

이렇게하면 네트워크 인터페이스가 활성화되기 전에 규칙이로드됩니다.


감사합니다. 어디서나 로그를 던지나요? 이것은 작동하지 않으며 호스트가 부팅 될 때 사용 된 dns 서버에 리졸버가 아직 시작되지 않았기 때문에 이것이 의심됩니다.
Dimitri Kopriwa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.