리눅스 우분투 데비안 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 명령으로 먼저 설치 여부를 확인하는 것이 좋습니다.

Linux 서버에 SSH 공개키 등록하는 방법

UFW 설치하기

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

sudo apt-get install ufw

UFW 활성화 및 비활성화하기

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

활성화 명령

sudo ufw enable

비활성화 명령

sudo ufw disable
Ubuntu에서 FTP 서버 구성하기

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 에서 파일 및 폴더를 비밀번호로 암호화하는 방법들

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]
도커 Docker 에 큐빗토렌트 qBittorrent 다운로드 서버 만들기 - 우분투

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

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

애플리케이션 프로파일을 사용하면 포트 번호를 지정하는 대신 애플리케이션 이름으로 쉽게 포트 및 방화벽 규칙을 설정할 수 있습니다. 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
nginx service Failed to parse PID from file 오류 해결 방법

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

ufw-status-verbose
ufw status verbose

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

sudo ufw status verbose

UFW 규칙 삭제하기

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

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

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
SSH Key 개인키 공개키 생성하기

특정 규칙 삭제

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
윈도우 10 파일 및 폴더를 보이지 않게 숨기는 방법 과 다시 숨김 해제하기

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 등 과 같은 도구를 체크하는 것을 권장합니다.

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

관련 글

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

Leave a Comment