Ubuntu 서버에 방화벽을 설정하는 방법
게시됨: 2025년 2월 15일 오후 9시 33분 58초 UTC
이 문서에서는 ufw를 사용하여 GNU/Linux에 방화벽을 설정하는 방법에 대한 몇 가지 예를 설명합니다. ufw는 Uncomplicated FireWall의 줄임말입니다. 이름에서 알 수 있듯이, 필요 이상으로 많은 포트를 열어 두지 않도록 하는 매우 쉬운 방법입니다.
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를 발견했는데, 이는 Uncomplicated Firewall의 약자입니다. 정말 그렇습니다 :-)
내가 설치한 Ubuntu Server 14.04에는 이미 ufw가 설치되어 있었지만, 그렇지 않은 경우 저장소에서 간단히 설치하면 됩니다.
UFW는 실제로 iptables 구성을 간소화하는 도구일 뿐입니다. 내부적으로는 여전히 iptables와 Linux 커널 방화벽이 필터링을 수행하므로 ufw는 이것들보다 덜 안전하거나 더 안전하지 않습니다. 그러나 ufw는 방화벽을 올바르게 구성하는 것을 훨씬 더 쉽게 만들기 때문에 인적 오류의 위험을 줄일 수 있으며 따라서 경험이 부족한 관리자에게는 더 안전할 수 있습니다.
서버가 IPv6와 IPv4로 구성된 경우 UFW에서도 이것이 활성화되어 있는지 확인하십시오. /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 구성을 변경한 경우 다음과 같이 비활성화했다가 다시 활성화해야 적용될 수 있습니다.
sudo ufw enable
현재 구성을 보려면 다음을 입력하세요.
ufw가 활성화되어 있지 않으면 단순히 "비활성" 메시지가 표시되고, 그렇지 않으면 현재 정의된 규칙이 나열됩니다.