우분투 실전 명령어 | iptables-nft 규칙 점검과 백업

언제 쓰는가

서버에 방화벽 정책은 있는데 누가 어떤 체인에 룰을 넣었는지 한눈에 안 보일 때가 많습니다. 특히 Ubuntu 22.04 이후에는 iptables 명령을 쓰더라도 내부적으로 nftables 백엔드를 타는 경우가 있어, 실제 적용 상태를 같이 확인해야 합니다. 이럴 때 현재 규칙을 안전하게 덤프하고, 카운터까지 포함해 트래픽이 실제로 맞는 체인을 타는지 점검할 때 이 조합이 유용합니다.

바로 쓰는 명령어

# 1) iptables 기준 현재 룰과 카운터 확인
sudo iptables -L -n -v --line-numbers

# 2) 저장/백업 가능한 전체 규칙 덤프
sudo iptables-save | tee ~/iptables-backup-$(date +%F-%H%M).rules

# 3) nftables 백엔드 실제 ruleset 확인
sudo nft list ruleset
# IPv6까지 함께 점검
sudo ip6tables -L -n -v --line-numbers

# 특정 체인만 집중 확인 (예: INPUT)
sudo iptables -S INPUT

핵심 옵션/패턴

  • iptables -L -n -v --line-numbers
    • -L: 체인 단위로 보기 좋게 출력
    • -n: DNS 역조회 생략, 지연 없이 즉시 확인
    • -v: 패킷/바이트 카운터 표시
    • --line-numbers: 삭제/삽입할 때 라인 번호 기준으로 작업 가능
  • iptables-save
    • 복구 가능한 텍스트 포맷으로 전체 규칙을 출력
    • 변경 전 백업 파일 남길 때 기본 선택
  • nft list ruleset
    • nftables 기준으로 커널에 실제 로드된 룰셋 확인
    • iptables-nft 환경에서 최종 상태 확인용으로 필수

명령 출력 예시

$ sudo iptables -L -n -v --line-numbers
Chain INPUT (policy DROP 12 packets, 720 bytes)
num   pkts bytes target     prot opt in  out source      destination
1      120  7200 ACCEPT     tcp  --  *   *   0.0.0.0/0   0.0.0.0/0   tcp dpt:22
2       44  2640 ACCEPT     tcp  --  *   *   10.0.0.0/8  0.0.0.0/0   tcp dpt:443
3        8   480 DROP       all  --  *   *   203.0.113.0/24 0.0.0.0/0
$ sudo nft list ruleset
table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        tcp dport 22 counter packets 120 bytes 7200 accept
        tcp dport 443 ip saddr 10.0.0.0/8 counter packets 44 bytes 2640 accept
    }
}

자주 하는 실수

  • iptables 결과만 보고 끝내는 실수
    • Ubuntu에서 iptables-nft를 쓰는 환경이면 nft list ruleset까지 봐야 실제 적용 상태를 정확히 확인할 수 있습니다.
  • -n 옵션 없이 조회해서 점검 시간이 길어지는 실수
    • DNS 역조회 때문에 출력이 느려지면 장애 대응 속도가 떨어집니다.
  • 백업 없이 룰 삭제부터 하는 실수
    • 원격 서버에서 SSH 허용 룰을 실수로 지우면 바로 접속이 끊길 수 있습니다.

검증 방법

# 현재 기본 정책과 주요 허용 포트 재확인
sudo iptables -S

# SSH/서비스 포트가 실제 열려 있는지 다른 터미널에서 확인
nc -zv 127.0.0.1 22
nc -zv 127.0.0.1 443

# 카운터 증가 여부로 룰 매칭 확인
sudo iptables -L INPUT -n -v --line-numbers

점검 후에는 정책이 의도대로 DROP/ACCEPT 되는지 실제 접속 테스트까지 같이 확인하면 안전합니다.

운영 팁

  • 변경 직전에는 iptables-save 백업 파일을 타임스탬프로 남겨 두면 롤백이 쉽습니다.
  • 운영 중에는 카운터가 전혀 증가하지 않는 룰을 주기적으로 정리하면 정책 가독성이 좋아집니다.
  • UFW를 같이 쓰는 서버라면 수동 iptables 수정 대신 UFW 정책으로 일관성 있게 관리하는 편이 충돌을 줄입니다.

출처

Ubuntu Manpages
Netfilter Project Documentation
Debian Wiki