리눅스 우분투 데비안 UFW 방화벽 기본 설정 알아보기

UFWUncomplicated Firewall는 Ubuntu 및 기타 Debian 계열 Linux 배포판에서 사용할 수 있는 netfilter 기반 방화벽 시스템의 간단한 구성 및 관리 도구입니다. ufw는 사용하기 쉽고 구성이 간단하며, 명령줄 인터페이스CLI(Command Line Interface)를 통해 방화벽 정책을 직관적으로 관리할 수 있습니다.

Linux 시스템에는 기본적으로 네트워크 트래픽을 관리하는 iptables 라는 방화벽 프로그램이 있는데 ufw는 이 iptables를 기반으로 작동하는 것입니다. iptables는 매우 강력하고 훌륭한 방화벽 도구이지만, 명령어 구문이 복잡하고 작업이 복잡한 설정 파일을 편집해야하는 등 초보 사용자는 어렵게 느껴질 수 있고 혼자서 서버를 관리한다면 다양한 옵션을 모두 사용하지 않아도 되고 이를 다 사용하는 것또한 쉽지 않을 수 있습니다.

UFW는 iptables에 대한 이해가 없는 초보 사용자도 부담없이 활용할 수 있으며, 기본적으로 초기 설정에서 적용되므로 시스템 부팅 후에도 설정이 유지되기에 여러모로 편리하게 사용할 수 있습니다. 우분투Ubuntu와 같은 데비안Debian 계열 리눅스 환경에서 특정 포트의 액세스를 차단하거나, 특정 IP 주소의 액세스만 허용하는 등의 보안 설정이 필요한 사용자를 위해 기본적인 UFW 사용법을 정리합니다.

아래 설명은 comeinsidebox.com 에서 테스트 및 검증 후 작성 된 내용이지만 이것이 본문의 내용의 정확성이나 신뢰성에 대해 보증을 하는 것은 아니니 단순 하게 참고용으로 확인바랍니다.

튜토리얼 환경: Debian 11(Bullseye)

UFW 설치 및 활성화하기

우분투에서는 UFW가 기본적으로 설치되어 있습니다. 다만, 상황에 따라서는 설치되어 있지 않은 경우도 있을 수 있으니 UFW를 사용하려면 sudo ufw version 명령으로 먼저 설치 여부를 확인하는 것이 좋습니다.

Proxmox 이미지 다운로드 및 부팅 디스크 USB 만드는 방법

UFW 설치하기

설치되어 있지 않다면 apt , dpkg 또는 apt-get 과 같은 패키지 관리 도구를 이용해 UFW를 설치합니다.

sudo apt-get install ufw

UFW 활성화 및 비활성화하기

설치 후 다음 명령으로 UFW를 활성화하거나 비활성화할 수 있습니다. UFW는 OS만 설치한 경우 기본적으로 비활성화 상태로 제공되기 때문에 UFW를 사용하려면 먼저 활성화해야 합니다. 일반적으로 활성화 후에 규칙을 정의할 수 있으며, 활성화하지 않은 상태에서도 규칙을 정의하는 것은 가능합니다. 이 럴 때에는 설정한 규칙이 적용되지 않습니다. 그래서 사용하려면 최종적으로 활성화해야 합니다.

활성화 명령

sudo ufw enable

비활성화 명령

sudo ufw disable
맥 OS X 스팟라이트 검색 시 특정 파일 및 폴더를 제외 하는 방법

UFW 규칙 추가하기

UFW에서는 다양한 방식으로 규칙을 추가할 수 있으며 대표적으로 사용되는 명령어 형식은 다음과 같습니다.

UFW 규칙 추가 명령어 및 형식

sudo ufw [allow/deny] [from source IP] [to destination IP] [port number/protocol]
  • allow 또는 deny를 사용하여 규칙을 추가할지 결정합니다.
  • [from source IP]는 액세스를 허용하거나 거부할 IP 주소를 지정합니다. 이 부분을 생략하면 모든 IP 주소에서의 액세스를 허용하거나 거부하는 것 입니다.
  • [to destination IP]는 대상 IP 주소를 지정합니다. 이 부분도 생략하면 모든 IP 주소에서의 액세스를 허용하거나 거부하게 되는 것 입니다.
  • [port number/protocol]는 액세스를 허용하거나 거부할 포트 및 프로토콜을 지정합니다. 이 부분도 생략하면 모든 포트와 프로토콜에 대한 액세스를 허용하거나 거부하는 것 입니다.
윈도우 11에서 Windows의 PC 보호 해제 및 우회 설치 방법

IP 주소를 기준으로 규칙 추가하기

ip로-추가
ip로 추가

아래 형식으로 명령하면 [IP address] 주소에서의 접속을 허용하는 것입니다. 예를 들어 위 그림과 같이 sudo ufw allow from 123.123.123.123과 같이 명령하면 123.123.123.123 아이피로의 접속을 허용합니다.

sudo ufw allow from [IP address]
ip로-차단
ip로 차단

다음 형식으로 명령하면 [IP address]주소에서의 접속을 차단하는 것입니다. 예를 들어 위 그림과 같이 sudo ufw deny from 123.123.123.123과 같이 명령하면 123.123.123.123 아이피로의 접속을 차단합니다.

sudo ufw deny from [IP address]

포트를 기준으로 규칙 추가하기

포트와-프로토콜로-허용
포트와 프로토콜로 허용

다음 형식으로 사용하면 특정 프로토콜의 포트로 접속을 허용하는 것입니다. 예를 들어 위 그림과 같이 sudo ufw allow 22/tcp 와 같이 명령하면 TCP 포트 22(SSH 포트)로 들어오는 모든 연결을 허용합니다.

sudo ufw allow [port number]/[protocol]
포트-프로토콜로-차단
포트 프로토콜로 차단

다음 형식으로 사용하면 특정 프로토콜의 포트로 접속을 차단하는 것입니다. 하지만 허용한 규칙 이외의 규칙은 모두 차단하는 것이 일반적이기 때문에 의미는 없습니다.

sudo ufw deny [port number]/[protocol]
구글 지메일 '보안 수준이 낮은 앱의 액세스' 사용 설정

애플리케이션 프로파일로 규칙 추가하기

앱-패키지-이름으로-허용
앱 패키지 이름으로 허용

애플리케이션 프로파일을 사용하면 포트 번호를 지정하는 대신 애플리케이션 이름으로 쉽게 포트 및 방화벽 규칙을 설정할 수 있습니다. sudo ufw allow nginx full 또는 sudo ufw allow OpenSSH와 같은 명령어를 사용하여 OpenSSH 애플리케이션에 대한 포트 및 방화벽 규칙을 허용할 수 있습니다.

sudo ufw allow [app name]
앱-리스트-확인
앱 리스트 확인

시스템에서 사용 가능한 애플리케이션 프로파일의 목록을 하고 싶다면 다음 명령을 사용합니다. 애플리케이션 프로파일은 /etc/ufw/applications.d/ 디렉토리에 저장되어 있습니다.

sudo ufw app list
disallow
disallow

다만 sudo ufw disallow Nginx HTTPS 이런 방식의 명령은 위 결과와 같이 허용되지 않아 이미 허용한 앱 프로파일을 이 차단하고 싶다면 sudo ufw deny를 사용해야 합니다. 삭제 명령은 아래 UFW 규칙 삭제하기 설명을 참고합니다.

sudo ufw deny [app name]

UFW 상태 확인하기

ufw-status
ufw status

UFW의 상태를 확인하려면 sudo ufw status 명령어를 사용합니다. 이 명령어를 실행하면 현재 활성화된 규칙 및 UFW의 상태가 표시됩니다.

sudo ufw status
ufw-status-numbered
ufw status numbered

다음 명령으로 규칙의 룰 번호를 확인할 수 있으며 룰번호를 기준으로 규칙을 삭제 할 수 있습니다.

sudo ufw status numbered
TrustedInstaller 고급 권한 실행을 위한 PowerRun 파워런 설치 및 사용 방법

현재 활성화된 규칙 확인하기

ufw-status-verbose
ufw status verbose

sudo ufw status verbose 명령어를 사용하면 현재 활성화된 UFW 규칙을 자세히 볼 수 있습니다. 이 명령어를 실행하면 규칙 번호, 규칙 유형, 출발지/목적지, 포트 번호 등의 정보를 볼 수 있습니다.

sudo ufw status verbose

UFW 규칙 삭제하기

UFW를 사용하여 추가한 규칙은 필요 없을 때 삭제할 수 있습니다. 규칙을 삭제하면 방화벽에서 해당 규칙을 사용하지 않게 됩니다.

SSH Key 개인키 공개키 생성하기

UFW 규칙 삭제 명령어 및 형식

UFW 규칙 삭제는 delete 명령어를 사용합니다. 다음은 delete 명령어의 형식입니다.

sudo ufw delete [rule]

룰 번호로 삭제하기

delete
delete

특정 규칙을 삭제하려면 delete 명령어 뒤에 삭제할 규칙의 룰 번호를 지정합니다. 앞서 확인 한 Openssh의 룰 번호는 1로 할당되어 있어 sudo ufw delete 1로 실행하면 위와 같이 Proceed with operation (y|n)? 확인 후 동의 시 삭제됩니다.

sudo ufw delete [rule number]
문법-오류
문법 오류

앱 이름으로는 UFW 규칙을 삭제할 수 없습니다. 예를 들어, OpenSSH 앱의 규칙을 삭제하기 위해 sudo ufw delete OpenSSH 라고 명령하면 문법 오류를 반환합니다.

규칙을 삭제하기 전에 한 번 더 확인하는 것을 확인 했는데 -y옵션으로 질문없이 바로 규칙을 삭제할 수 있습니다.

sudo ufw delete [app name] -y
TrustedInstaller 고급 권한 실행을 위한 PowerRun 파워런 설치 및 사용 방법

특정 규칙 삭제

delete-로-규칙-삭제
delete 로 규칙 삭제

특정 아이피 주소에서의 접근 차단 규칙을 삭제하고 싶다면 sudo ufw delete deny from 123.123.123.123와 같이 명령합니다.

sudo ufw delete deny from [ip adress]

모든 규칙 삭제하기

모든 규칙을 삭제하려면 reset 명령어를 사용합니다. 다음 명령어를 사용하여 모든 규칙을 삭제할 수 있습니다.

ufw-reset
ufw reset

다음 명령어는 모든 규칙을 삭제하고 모든 트래픽이 허용됩니다. 정상적으로 사용하기 위해서는 다시 필요한 규칙을 추가해야 합니다.

sudo ufw reset
윈도우 11 에서 파일 및 폴더를 비밀번호로 암호화하는 방법들

UFW 로그 기록 로깅 설정하기

UFW는 로그 기능을 제공하며 로그 기능을 사용하면 방화벽에서 차단된 트래픽에 대한 로그를 확인할 수 있습니다. 로그 기능을 사용하려면 /etc/rsyslog.d/20-ufw.conf 파일을 수정하여 로그를 저장할 위치와 로그 레벨을 설정해야 합니다.

rsyslog
rsyslog

/etc/rsyslog.d/20-ufw.conf 파일을 각자 사용하는 에디터를 이용해 열어줍니다. vi 에디터를 사용하는 경우 다음과 같이 명령합니다.

sudo vi /etc/rsyslog.d/20-ufw.conf
Log-kernel-generated-UFW-log-messages-to-file
Log kernel generated UFW log messages to file

아래 구문을 파일에 추가하면 [UFW 문자열이 포함된 커널 생성 UFW 로그 메시지를 /var/log/ufw.log 파일에 로깅하도록 지정합니다. 이 파일은 일반적으로 UFW를 설치하면 자동으로 생성됩니다. 따라서 UFW를 설치했거나, 이미 설치된 시스템을 사용 중이라면 해당 파일이 존재할 것입니다.

# Log kernel generated UFW log messages to file
:msg,contains,"[UFW " /var/log/ufw.log
rsyslog-restart
rsyslog restart

아래 명령어를 실행하여 rsyslog 서비스를 재시작합니다.

sudo service rsyslog restart

이제 UFW는 차단된 트래픽에 대한 로그를 /var/log/ufw.log 파일에 저장합니다. 로그 레벨을 조정하여 로깅의 세부 수준을 제어할 수 있습니다. sudo ufw logging on 명령어를 사용하여 UFW 로그 기능을 켤 수 있습니다.

마치며

이번 포스트에서는 우분투와 같은 데비안 계열에서 UFW 방화벽을 사용하는 기본적인 방법과 설정 사항에 대해 알아보았습니다. ufw는 iptables를 기반으로 작동하지만, 간단한 명령어 구문을 사용하여 방화벽 규칙을 쉽게 구성할 수 있습니다. 또한 ufw는 초기 설정에서 적용되므로 시스템 부팅 후에도 설정이 유지됩니다. 이러한 장점으로 인해 ufw는 상대적으로 더 쉽게 사용하고 유지보수할 수 있습니다.

개인적으로는 ufw로 기본적인 방화벽을 구성하고 아쉬운 부분이 있다면 그때 iptables 또는 firewalld, nftables 등 과 같은 도구를 체크하는 것을 권장합니다.

Proxmox 이미지 다운로드 및 부팅 디스크 USB 만드는 방법

관련 글

댓글로 남기기 어려운 내용은 Contact Form 에서 개별적으로 문의 할 수 있습니다. 해당 글과 연관 된 내용은 Copy를 이용해 현재 페이지의 주소를 복사 후 문의 폼에 입력시 보다 정확한 답을 얻을 수 있습니다.

Leave a Comment