Ubuntu 서버에 방화벽을 설정하는 방법
게시됨: 2025년 2월 15일 오후 9시 33분 58초 UTC
마지막으로 업데이트되었습니다: 2026년 1월 12일 오전 8시 37분 11초 UTC
이 글에서는 ufw(Uncomplicated FireWall의 줄임말)를 사용하여 GNU/Linux에서 방화벽을 설정하는 방법과 몇 가지 예제를 설명합니다. 이름처럼 ufw는 정말 간단하게 필요한 포트만 열어두도록 설정할 수 있는 방법입니다.
How to Set Up a Firewall on Ubuntu Server
이 글의 정보는 Ubuntu Server 14.04 x64를 기준으로 작성되었습니다. 다른 버전에서는 유효하지 않을 수 있습니다. (업데이트: Ubuntu Server 24.04에서도 이 글의 정보가 기본적으로 여전히 유효하고 작동하는 것을 확인했습니다. 다만, 지난 10년 동안 ufw는 일반적인 서버 애플리케이션에 대한 프로필을 제공하는 등 다소 "똑똑해졌습니다"(예: 포트 80과 443을 개별적으로 활성화하는 대신 "Nginx 전체"를 활성화할 수 있음). 따라서 새 규칙을 적용하기 위해 전체 방화벽을 비활성화/활성화할 필요가 없어졌습니다.)
처음 GNU/Linux(Ubuntu) 서버를 다룰 때는 방화벽을 설정하려면 iptables 설정을 위한 복잡한 구성 파일을 수동으로 만들고 관리해야 했습니다. 하지만 최근에 ufw라는 도구를 알게 되었는데, 이름처럼 정말 간단합니다 :-)
제 Ubuntu Server 14.04 설치에는 이미 ufw가 설치되어 있었지만, 설치되어 있지 않다면 저장소에서 설치하면 됩니다.
UFW는 실제로 iptables 설정을 간소화하는 도구일 뿐입니다. 내부적으로는 여전히 iptables와 Linux 커널 방화벽이 필터링을 수행하므로 UFW가 이들보다 보안성이 떨어지거나 더 높다고 할 수는 없습니다. 하지만 UFW를 사용하면 방화벽을 올바르게 설정하는 것이 훨씬 쉬워지므로, 경험이 부족한 관리자에게는 인적 오류의 위험을 줄여주고 더 안전하게 느껴질 수 있습니다.
서버가 IPv4와 IPv6를 모두 사용하도록 구성되어 있는 경우, UFW에서도 IPv6가 활성화되어 있는지 확인하십시오. /etc/default/ufw 파일을 편집하고 IPv6=yes라고 표시된 줄을 찾으십시오. 제 설치 환경에서는 이미 있었지만, 없거나 no라고 표시되어 있다면 편집해야 합니다.
그런 다음 명령 프롬프트를 사용하여 열고자 하는 포트를 활성화하십시오. SSH를 통해 서버에 연결되어 있는 경우 SSH도 허용해야 합니다. 그렇지 않으면 연결이 끊기거나 서버에 접속할 수 없게 될 수 있습니다. 서버에 물리적으로 접근할 수 있는지 여부에 따라 이는 상당히 불편할 수 있습니다.
예를 들어, 표준 포트 22에서 SSH를 사용하고 암호화되지 않은 연결(포트 80의 HTTP)과 암호화된 연결(포트 443의 HTTPS)을 모두 지원하는 웹 서버를 구성하는 경우, ufw를 구성하기 위해 다음 명령을 실행합니다.
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
규칙이 더 필요하면 위와 같이 추가하면 됩니다.
고정 IP 주소를 가지고 있고 특정 위치에서만 SSH로 접속해야 하는 경우, 다음과 같이 SSH 연결을 단일 출발지 주소로 제한할 수도 있습니다.
물론, 본인의 IP 주소를 입력하세요.
완료되면 다음 명령어를 입력하여 ufw를 활성화하십시오.
이제 완료되었습니다! 방화벽이 실행 중이며 서버를 재부팅하면 자동으로 시작됩니다 :-)
ufw 설정을 변경한 경우, 변경 사항을 적용하려면 다음과 같이 ufw를 비활성화했다가 다시 활성화해야 할 수 있습니다.
sudo ufw enable
현재 구성을 확인하려면 다음을 입력하십시오.
ufw가 활성화되어 있지 않으면 "비활성" 메시지만 표시되고, 활성화되어 있으면 현재 정의된 규칙 목록이 표시됩니다.
