모든 iptables 규칙을 지우는 가장 좋은 방법


83

현재이 스 니펫이 있습니다.

# flush all chains
iptables -F
iptables -t nat -F
iptables -t mangle -F
# delete all chains
iptables -X

이것을 실행 한 후에도 불 침투성 규칙이 계속 유지 될 가능성이 있습니까?

아이디어는 완전히 깨끗한 iptables 구성을 갖는 것입니다.이 구성은 새로운 규칙 세트로 쉽게 대체 할 수 있습니다 (라우트 / ifconfig의 매개 변수는 신경 쓰지 마십시오).

답변:


107

간결하게 귀하의 질문에 대답하기 위해, 아니오 : 모든 테이블을 플러시 한 후 "남은"규칙이 없습니다. 그러나 철저하게하기 위해 내장 INPUTFORWARD체인 에 대한 정책을 다음 과 같이 설정할 수도 ACCEPT있습니다.

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X

ip6tables 규칙 지우기 :

ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -t nat -F
ip6tables -t mangle -F
ip6tables -F
ip6tables -X

... 그리고 그렇게해야합니다. iptables -nvL이 (또는 매우 유사한) 출력을 생성해야 합니다.

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

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

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

9
당신은 '원시'를 잊어 버렸습니다 : iptables -t raw -F iptables -t raw -X
kK-Storm

there would not be any "leftover" rules after flushing every tableOP는 모든 테이블을 플러시하지 않습니다 . 너도 그렇지 않아. 철저히 원한다면 다음과 같습니다 . 그리고 당신은 추가 할 수 있습니다 iptables -t "$table" -Z. 이 방법으로 테이블 및 해당 체인의 목록을 하드 코딩합니다. 따라서 저장 복원 솔루션을 진지하게 고려할 것 입니다. 또는 iptables를 언로드 할 수 있습니다 .
x-yuri

23

이것은 iptables 시스템을 매우 기본 상태로 완전히 재설정합니다 :

iptables-save | awk '/^[*]/ { print $1 } 
                     /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
                     /COMMIT/ { print $0; }' | iptables-restore

모든 정책은 현재 사용중인 모든 테이블을 비울뿐만 아니라 ACCEPT로 재설정됩니다. 내장 체인 이외의 모든 체인은 더 ​​이상 존재하지 않습니다.


1
깔끔한 해킹! 저장 / 복원 형식에 대한 미묘한 변경으로 인해 중단 될 수 있기 때문에 나는 그것에 의존하지 않을 것입니다. iptables도구가 명시 적으로 제공 하는 API 인 IMO 를 고수하는 것이 가장 좋습니다 .
Steven 월요일

3
마음이 바뀌 었습니다. 데이터 형식은 널리 사용되므로 더 이상 변경되지 않을 것입니다. +1.
Steven 월요일

2
+1, 흥미로운 핵
Sam Halicke 5

이로 인해 남은 UFW 체인을 제거 할 수있었습니다.
l0b0

그것은 사소한 세부 사항이지만, 첫 번째 print $1print $0일관된 것으로 바꾸고 싶을 수도 있습니다 :)
x-yuri

2

방화벽을 비활성화해야 할 때마다 다음과 같습니다.

  • iptables-save > iptables.bak
  • service iptables stop (페도라에 있습니다)

1

iptables커널에서 모듈을 언로드 할 수 있습니다 :

modprobe -r iptable_raw iptable_mangle iptable_security iptable_nat iptable_filter

UPD 불행하게도, 사실 너무 좋아. 테이블에 규칙 또는 사용자 정의 체인이있는 한 해당 모듈의 참조 카운트는 1이며 modprobe -r실패합니다. 다음과 같이 규칙 및 사용자 정의 체인을 삭제할 수 있습니다.

echo $'*raw\nCOMMIT\n*mangle\nCOMMIT\n*security\nCOMMIT\n*nat\nCOMMIT\n*filter\nCOMMIT' | iptables-restore

또는:

iptables-save | awk '/^[*]/ { print $1 "\nCOMMIT" }' | iptables-restore

또한 이런 식으로 모듈을 언로드 할 수 있습니다 (하드 코딩 모듈 이름 없음).

lsmod | egrep ^iptable_ | awk '{print $1}' | xargs -rd\\n modprobe -r

밝은면에서 이것은 iptables-save좋은 빈 출력을 생성합니다 :)


여기가 망치 일 수 있습니다. 고마워.
Konrad Gajewski

0

하나 또는 두 개의 명령으로이를 수행 할 수 있습니다.

 $ sudo iptables-save > iptables.bak
 $ sudo iptables -F

결과:

$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 3138 packets, 5567K bytes)
pkts bytes target     prot opt in     out     source               destination         

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

Chain OUTPUT (policy ACCEPT 3602 packets, 6547K bytes)
pkts bytes target     prot opt in     out     source               destination         

5
기본 정책이 현재 DROP으로 설정되어 있으면 서버를 잠글 수있는 빠른 방법입니다. 따라서 아니요, 1 또는 2 명령 프로세스가 아닙니다. 현재 ACCEPT가 아닌 경우 먼저 ACCEPT로 설정해야합니다.
RyanH

0

최근에 내가 한 일이 모든 연결을 차단해야했습니다.

iptables-policy INPUT DROP
iptables-policy OUTPUT DROP
iptables-policy FORWARD DROP

저장에 관해서는 다음을 권장합니다

우분투 :

/etc/init.d/iptables save
/sbin/service iptables save

RedHat / CentOS :

/etc/init.d/iptables save
/sbin/iptables-save

과거에 이것을 사용했던 모든 현재 ufw 규칙을 백업하는 것 외에도

cp /lib/ufw/{user.rules,user6.rules} /<BACKUP LOCATION> 
cp /lib/ufw/{user.rules,user6.rules} ./

나는 이것이 나중에 참조 할 때 유용 할 것이라고 생각합니다. 내가 나누겠다고 생각했다.


0

구성을 iptables_backup.conf로 백업하고 모든 규칙을 정리하십시오.

iptables-save | tee iptables_backup.conf | grep -v '\-A' | iptables-restore

이전 구성을 복원하려면

iptables-restore < iptables_backup.conf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.