우분투 실전 명령어 | 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