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

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

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

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

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



답변

간결하게 귀하의 질문에 대답하기 위해, 아니오 : 모든 테이블을 플러시 한 후 “남은”규칙이 없습니다. 그러나 철저하게하기 위해 내장 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


답변

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

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

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


답변

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

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

답변

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좋은 빈 출력을 생성합니다 🙂


답변

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

 $ 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


답변

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

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} ./

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


답변

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

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

이전 구성을 복원하려면

iptables-restore < iptables_backup.conf