Ubuntu 24.04에서 UFW 방화벽이 활성화되지 않는 문제를 해결하는 방법

안녕하세요. 일본서버, 미국서버 호스팅 전문 지구 IDC 기술팀입니다.

오늘은 Ubuntu 24.04에서 UFW 방화벽이 활성화되지 않는 문제를 해결하는 방법을 알아보겠습니다. sudo ufw enable 실행 시 ERROR: problem running ufw-init가 표시되거나, 재부팅 후 UFW가 비활성 상태가 되거나, ufw.service가 정상적으로 시작되지 않는다면 UFW 설정 파일과 Netfilter 규칙, 패키지 상태를 순서대로 확인해야 합니다.

Ubuntu 24.04의 UFW는 Netfilter 방화벽을 관리하는 프런트엔드이며 기본적으로 비활성 상태입니다. 단순히 서비스를 반복 재시작하기보다 UFW 자체 상태, systemd 로그, ufw-init 오류, /etc/ufw의 rules 파일 문법, iptables 백엔드와 다른 방화벽 관리 도구의 영향을 차례대로 확인하는 것이 안전합니다.

적용 환경

문서 적용 기준
항목 내용
운영체제 Ubuntu 24.04 LTS
UFW 패키지 ufw 0.36.2 계열
서비스명 ufw.service
주요 설정 /etc/default/ufw, /etc/ufw/ufw.conf, /etc/ufw/*.rules

UFW가 활성화되지 않을 때 확인할 순서

  1. ufw status와 systemctl status ufw.service로 실제 상태를 확인합니다.
  2. UFW와 iptables 패키지가 정상 설치되어 있는지 확인합니다.
  3. journalctl과 ufw --dry-run으로 오류 위치를 좁힙니다.
  4. before.rules, after.rules, IPv6 rules 파일의 문법을 검사합니다.
  5. iptables 백엔드와 다른 방화벽 관리 도구가 함께 동작하고 있는지 확인합니다.
  6. 컨테이너형 VPS라면 Netfilter 기능이 제한되어 있지 않은지 확인합니다.
  7. 설정을 복구한 뒤 SSH 허용 규칙을 먼저 추가하고 UFW를 활성화합니다.

현재 UFW 상태 확인

가장 먼저 UFW 명령과 systemd 서비스의 상태를 함께 확인합니다.

sudo ufw status verbose
systemctl status ufw.service --no-pager
systemctl is-enabled ufw.service

ufw status가 Status: inactive라고 표시되는 것 자체는 오류가 아닙니다. Ubuntu에서 UFW는 기본적으로 비활성 상태로 설치됩니다.

systemd의 ufw.service는 일반적인 데몬처럼 계속 실행되는 프로세스가 아니라 부팅 과정에서 방화벽 규칙을 적용하는 역할을 합니다. 따라서 실제 방화벽 활성 여부는 ufw status를 기준으로 함께 판단해야 합니다.

활성화를 시도했을 때 나오는 오류를 그대로 확인합니다.

sudo ufw --dry-run enable
sudo ufw enable

--dry-run은 실제 규칙을 변경하지 않고 UFW가 수행할 작업을 확인할 때 유용합니다. 다만 커널과 실제 규칙 적용 단계에서만 나타나는 오류는 실제 ufw enable에서만 확인될 수 있습니다.

UFW 패키지와 서비스 파일 확인

UFW와 iptables 패키지가 정상적으로 설치되어 있는지 확인합니다.

dpkg -l ufw iptables
apt-cache policy ufw iptables

패키지 상태가 비정상적이거나 파일 누락이 의심되면 설치 파일의 무결성을 확인합니다.

dpkg -V ufw
systemctl cat ufw.service
command -v ufw
command -v iptables
command -v iptables-restore

Ubuntu 24.04의 공식 ufw 패키지는 ufw.service, /lib/ufw/ufw-init, /etc/default/ufw와 UFW 설정 파일을 제공합니다.

명령 자체가 없거나 패키지가 깨진 경우에는 뒤의 패키지 복구 절차를 진행합니다.

ufw-init 오류와 systemd 로그 확인

ERROR: problem running ufw-init는 최종 오류 요약일 뿐이므로 그 위에 표시된 iptables-restore, ip6tables-restore, 파일 경로와 줄 번호를 확인해야 합니다.

sudo journalctl -u ufw.service -b --no-pager
sudo systemctl status ufw.service --no-pager

UFW 초기화 스크립트를 직접 실행하여 오류 위치를 더 명확하게 확인할 수도 있습니다.

sudo /lib/ufw/ufw-init status
sudo /lib/ufw/ufw-init start

UFW rules 파일 문법 검사

UFW는 기본 규칙과 사용자 규칙을 여러 파일에서 읽습니다. 특히 관리자가 직접 수정한 before.rules, after.rules, IPv6 rules 파일에 문법 오류가 있으면 UFW 전체 활성화가 실패할 수 있습니다.

먼저 변경 이력이 있을 가능성이 높은 파일을 확인합니다.

sudo ls -l /etc/ufw/
sudo grep -nEv '^[[:space:]]*(#|$)' /etc/ufw/before.rules | head -n 80
sudo grep -nEv '^[[:space:]]*(#|$)' /etc/ufw/after.rules | head -n 80

Ubuntu 24.04의 iptables-restore와 ip6tables-restore는 --test 옵션을 제공하므로 실제 규칙을 커널에 적용하지 않고 파일 문법을 검사할 수 있습니다.

sudo iptables-restore --test < /etc/ufw/before.rules
sudo iptables-restore --test < /etc/ufw/after.rules

sudo ip6tables-restore --test < /etc/ufw/before6.rules
sudo ip6tables-restore --test < /etc/ufw/after6.rules

아무 오류 없이 종료되면 해당 파일의 기본 문법은 정상입니다. 오류가 표시되면 메시지의 줄 번호와 테이블 구성을 확인합니다.

UFW의 rules 파일은 iptables-restore 문법을 사용하며 각 테이블 블록은 *filter, *nat, *raw와 같이 시작하고 해당 블록마다 COMMIT이 필요합니다.

iptables 백엔드와 다른 방화벽 관리 도구 확인

Ubuntu 24.04의 iptables 패키지는 nftables 기반 호환 계층을 사용할 수 있습니다. 먼저 현재 명령이 어떤 백엔드를 사용하는지 확인합니다.

iptables --version
ip6tables --version
sudo update-alternatives --display iptables
sudo update-alternatives --display ip6tables

일반적인 Ubuntu 24.04 환경에서는 배포판이 제공하는 기본 alternatives 구성을 그대로 사용하는 것이 좋습니다. 과거 문제 해결을 위해 iptables-legacy와 iptables-nft를 수동 전환했다면 IPv4와 IPv6 도구가 서로 다른 계열로 설정되어 있지 않은지 확인하십시오.

다른 방화벽 관리 서비스도 함께 확인합니다.

systemctl is-active nftables.service 2>/dev/null
systemctl is-active firewalld.service 2>/dev/null
systemctl is-active netfilter-persistent.service 2>/dev/null

dpkg -l | grep -E 'ufw|nftables|firewalld|iptables-persistent|netfilter-persistent'

여러 방화벽 도구가 설치되어 있다는 사실만으로 UFW가 반드시 실패하는 것은 아니지만, 서로 같은 Netfilter ruleset을 관리하면 규칙이 덮어써지거나 예상과 다른 상태가 될 수 있습니다. 서버에서는 주 방화벽 관리 도구를 하나로 정하고 다른 도구의 역할을 명확히 하는 것이 좋습니다.

현재 커널의 실제 nftables 규칙을 확인하려면 다음 명령을 사용합니다.

sudo nft list ruleset

Docker, Kubernetes, VPN 소프트웨어도 자체 방화벽 체인을 생성할 수 있으므로 해당 서버에서는 규칙을 임의로 초기화하지 마십시오.

VPS·컨테이너 환경의 Netfilter 제한 확인

일부 컨테이너 기반 VPS에서는 게스트가 필요한 Netfilter 기능이나 커널 모듈을 직접 사용할 수 없어 UFW 초기화가 실패할 수 있습니다. 먼저 가상화 환경을 확인합니다.

systemd-detect-virt
uname -r

Netfilter 관련 기능을 확인합니다.

sudo iptables -L -n
sudo ip6tables -L -n
sudo nft list tables

Operation not permitted, 특정 Netfilter 테이블·모듈을 사용할 수 없다는 오류 또는 커널 기능 제한이 반복된다면 게스트 내부 설정만으로 해결하기 어려울 수 있습니다.

UFW 패키지와 기본 설정 복구

UFW 패키지 파일이 손상되었거나 기본 스크립트가 누락된 경우 패키지를 다시 설치할 수 있습니다. 먼저 현재 설정을 백업합니다.

sudo cp -a /etc/ufw /root/ufw-backup
sudo cp -a /etc/default/ufw /root/ufw-default.backup

패키지 목록을 갱신하고 UFW와 iptables를 다시 설치합니다.

sudo apt update
sudo apt install --reinstall ufw iptables

재설치 후 패키지 상태와 기본 명령을 확인합니다.

dpkg -V ufw
ufw --version
iptables --version

사용자 규칙까지 초기화해야 하는 경우

사용자 규칙 자체가 꼬였고 백업을 확보했다면 ufw reset으로 UFW의 사용자 규칙을 초기화할 수 있습니다.

sudo ufw status numbered
sudo ufw reset

SSH 규칙을 확인하고 UFW 활성화

원격 서버에서는 UFW를 활성화하기 전에 현재 SSH가 수신 중인 포트를 확인합니다.

sudo ss -lntp | grep sshd

기본 SSH 포트 22번을 사용한다면 먼저 SSH 서비스를 허용합니다.

sudo ufw allow OpenSSH
sudo ufw status numbered

SSH 포트를 2222번처럼 변경했다면 실제 포트를 직접 허용합니다.

sudo ufw allow 2222/tcp

그 다음 UFW를 활성화합니다.

sudo ufw enable

공식 UFW 매뉴얼에 따르면 ufw enable은 방화벽을 로드하고 부팅 시 활성화되도록 설정합니다. 정상 적용 여부를 확인합니다.

sudo ufw status verbose
systemctl is-enabled ufw.service
sudo ufw show raw

현재 SSH 세션을 종료하기 전에 새 터미널에서 서버에 다시 접속해 원격 접속이 유지되는지 확인합니다.

자주 발생하는 오류와 해결 방법

UFW 활성화 오류 진단표
증상 가능한 원인 확인 방법 해결 방향
ERROR: problem running ufw-init rules 파일 문법, iptables 오류, 커널 기능 제한 journalctl, ufw-init start, iptables-restore --test 실제 하위 오류와 파일 줄 번호를 먼저 수정
iptables-restore: line ... failed before.rules 또는 after.rules 사용자 정의 문법 오류 iptables-restore --test와 해당 줄 확인 테이블 블록, 체인, COMMIT, 잘못된 옵션 수정
IPv4는 되지만 IPv6 단계에서 실패 before6.rules·after6.rules 오류 또는 IPv6 Netfilter 문제 ip6tables-restore --test, /etc/default/ufw 확인 IPv6 설정과 rules 파일을 환경에 맞게 복구
Operation not permitted 컨테이너 VPS의 Netfilter 권한 제한 systemd-detect-virt, 직접 iptables -L 테스트 호스트 정책 확인 또는 지원되는 가상화 방식 사용
UFW를 켰는데 규칙이 예상과 다름 nftables, Docker, netfilter-persistent 등 다른 도구의 규칙 공존 nft list ruleset, 서비스·패키지 확인 주 방화벽 관리 도구를 정하고 규칙 소유권을 구분
활성화 직후 SSH 접속 불가 실제 SSH 포트를 허용하지 않음 콘솔에서 ss -lntp, ufw status numbered 확인 콘솔에서 UFW 비활성화 후 실제 SSH 포트를 먼저 허용

원상복구 방법

UFW 활성화 후 네트워크 문제가 발생했고 콘솔 접근이 가능한 경우 먼저 방화벽을 비활성화할 수 있습니다.

sudo ufw disable
sudo ufw status verbose

이 문서에서 백업한 UFW 설정으로 복원하려면 현재 디렉터리를 별도로 보존한 뒤 백업을 되돌립니다.

sudo mv /etc/ufw /etc/ufw.failed
sudo cp -a /root/ufw-backup /etc/ufw
sudo cp -a /root/ufw-default.backup /etc/default/ufw

복원 후 rules 파일을 다시 검사한 다음 UFW를 적용합니다.

sudo iptables-restore --test < /etc/ufw/before.rules
sudo ip6tables-restore --test < /etc/ufw/before6.rules
sudo ufw reload

관련 지구 IDC 기술자료

공식 참고자료

기관 문서 확인 내용 조회일
Canonical Ubuntu Server documentation — Firewall UFW 기본 비활성 상태, 활성화·비활성화와 규칙 관리
Ubuntu Manpages ufw(8) — Ubuntu 24.04 enable, disable, reload, --dry-run, 상태 확인 명령
Ubuntu Packages ufw package — noble Ubuntu 24.04의 공식 UFW 패키지와 버전
Ubuntu Manpages iptables-restore(8) — Ubuntu 24.04 --test를 이용한 rules 파일 문법 검사
Canonical Ubuntu release cycle Ubuntu 24.04 LTS 표준 보안 유지보수 기간

자주 묻는 질문

systemctl status ufw가 active인데 ufw status는 inactive일 수 있나요?

UFW의 systemd unit은 일반적인 상주 데몬과 동작 방식이 다르므로 systemd 표시만으로 방화벽 활성 여부를 판단하지 않는 것이 좋습니다. 실제 UFW 활성 상태와 적용 규칙은 sudo ufw status verbose로 확인하십시오.

ERROR: problem running ufw-init가 나오면 UFW를 재설치하면 되나요?

항상 그렇지는 않습니다. 사용자 정의 before.rules의 문법 오류나 Netfilter 기능 제한이 원인이라면 패키지를 재설치해도 같은 문제가 반복될 수 있습니다. 먼저 오류 메시지와 iptables-restore --test 결과를 확인하십시오.

Ubuntu 24.04에서는 iptables 대신 nftables만 사용해야 하나요?

Ubuntu의 iptables 패키지는 nftables 기반 호환 백엔드를 제공할 수 있으며 UFW는 이를 통해 Netfilter 규칙을 관리합니다. 특별한 이유가 없다면 배포판의 기본 iptables alternatives 구성을 수동으로 바꾸지 않는 것이 좋습니다.

UFW를 활성화하면 재부팅 후에도 유지되나요?

네. 공식 ufw 매뉴얼에서 ufw enable은 방화벽을 로드하는 동시에 부팅 시 활성화되도록 설정한다고 설명합니다. 활성화 후 systemctl is-enabled ufw.service와 ufw status를 함께 확인할 수 있습니다.

UFW가 안 켜질 때 nft flush ruleset을 실행해도 되나요?

운영 서버에서는 권장하지 않습니다. Docker, Kubernetes, VPN 또는 다른 방화벽 관리 도구가 만든 규칙까지 모두 삭제할 수 있습니다. 먼저 오류가 발생한 UFW rules 파일과 관리 도구를 식별한 뒤 필요한 부분만 수정하십시오.

마무리

오늘은 Ubuntu 24.04에서 UFW 방화벽이 활성화되지 않을 때 UFW 상태와 systemd 로그를 확인하고, ufw-init 오류, rules 파일 문법, iptables 백엔드, 다른 방화벽 도구와 가상화 환경의 Netfilter 제한을 점검하는 방법을 설명드렸습니다.

원격 서버에서는 UFW 복구 자체보다 SSH 접속을 잃지 않는 것이 중요합니다. 실제 SSH 포트를 먼저 허용하고 현재 세션을 유지한 상태에서 방화벽을 활성화한 뒤, 별도의 터미널에서 새 SSH 접속이 정상인지 반드시 확인하시기 바랍니다.

지구 IDC는 일본서버와 미국서버를 포함한 다양한 서버 호스팅 환경에서 안정적인 운영에 도움이 되는 기술정보를 지속적으로 제공하겠습니다.

  • 0 사용자에게 유용한 정보 제공
이 답변이 도움이 되었나요?
« Back