SW/리눅스

Ubuntu 18.04 : UFW로 방화벽 설정하는 방법, 예제, 명령어

얇은생각 2020. 10. 23. 07:30
반응형

방화벽은 전체 시스템 보안에서 가장 중요한 요소 중 하나입니다. 기본적으로 Ubuntu에는 UFW(복제되지 않은 방화벽)라는 방화벽 구성 도구가 함께 제공됩니다. UFW는 IPTables 방화벽 규칙을 관리하기 위한 사용자 친화적인 프런트 엔드이며, 주된 목표는 IPT를 보다 쉽게 관리하거나 이름이 복잡하지 않게 하는 것입니다.

 

Ubuntu 18.04 : UFW로 방화병 설정하는 방법, 예제, 명령어

 

필수 구성 요소

시작하기 전에 sudo 권한을 가진 사용자 계정 또는 루트 사용자 계정으로 서버에 로그인했는지 확인합니다. 가장 좋은 방법은 루트 대신 sudo 사용자로 관리 명령을 실행하는 것입니다. Ubuntu 시스템에 sudo 사용자가 없는 경우 이전 포스팅에 따라 sudo 사용자를 만들 수 있습니다.

 

 

 

UFW를설치

Ubuntu 18.04에 복잡하지 않은 방화벽을 기본적으로 설치해야 하지만 시스템에 설치되어 있지 않은 경우 다음을 입력하여 패키지를 설치할 수 있습니다.

sudo apt install ufw

 

 

 

UFW 상태 확인

설치가 완료되면 다음 명령으로 UFW의 상태를 확인할 수 있습니다.

sudo ufw status verbose

 

 

UFW는 기본적으로 비활성화되어 있습니다. 이전에 UFW를 활성화한 적이 없는 경우 출력은 다음과 같습니다.

Status: inactive

 

 

UFW가 활성화되면 출력은 다음과 유사하게 보입니다.

Ubuntu 18.04 : UFW로 방화병 설정하는 방법, 예제, 명령어

 

 

 

UFW 기본 정책

기본적으로 UFW는 들어오는 모든 연결을 차단하고 모든 아웃바운드 연결을 허용합니다. 즉, 서버에서 실행 중인 모든 응용프로그램과 서비스는 외부 환경에 액세스할 수 있지만, 사용자가 포트를 특별히 열지 않으면 서버에 액세스하려는 모든 사용자가 연결할 수 없습니다.

기본 정책은 /etc/default/ufw 파일에 정의되며 sudo ufw default <policy> <chain> 명령을 사용하여 변경할 수 있습니다.

방화벽 정책은 보다 세부적이고 사용자 정의 규칙을 구축하기 위한 기반입니다. 대부분의 경우 초기 UFW 기본 정책이 좋은 시작점입니다.

 

 

 

응용프로그램 프로파일

apt 명령을 사용하여 패키지를 설치할 때 /etc/ufw/applications.d 디렉토리에 애플리케이션 프로파일을 추가합니다. 프로필은 서비스를 설명하고 UFW 설정을 포함합니다.

다음을 입력하여 서버에서 사용할 수 있는 모든 응용프로그램 프로파일을 나열할 수 있습니다.

sudo ufw app list

 

 

시스템에 설치된 패키지에 따라 출력이 다음과 유사하게 표시됩니다.

Available applications:
  Dovecot IMAP
  Dovecot POP3
  Dovecot Secure IMAP
  Dovecot Secure POP3
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH
  Postfix
  Postfix SMTPS
  Postfix Submission

 

 

특정 프로필 및 포함된 규칙에 대한 자세한 내용을 보려면 다음 명령을 사용합니다.

sudo ufw app info 'Nginx Full'

 

Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server

Ports:
  80,443/tcp

 

 

위의 출력에서 볼 수 있듯이 'Nginx Full' 프로필은 포트 80 및 443을 엽니다.

 

 

 

SSH 연결 허용

UFW 방화벽을 활성화하기 전에 수신 SSH 연결을 허용하는 규칙을 추가해야 합니다. 원격 위치에서 서버에 연결하는 경우가 거의 대부분이며 수신 SSH 연결을 명시적으로 허용하기 전에 UFW 방화벽을 사용하도록 설정하면 Ubuntu 서버에 더 이상 연결할 수 없습니다.

들어오는 SSH 연결을 허용하도록 UFW 방화벽을 구성하려면 다음 명령을 입력합니다.

sudo ufw allow ssh

# Rules updated
# Rules updated (v6)

 

 

SSH 포트를 포트 22가 아닌 사용자 지정 포트로 변경한 경우 해당 포트를 열어야 합니다.

예를 들어 SSH 데몬이 포트 4422에서 수신 대기하는 경우 다음 명령을 사용하여 해당 포트에서 연결을 허용할 수 있습니다.

sudo ufw allow 4422/tcp

 

 

 

UFW 활성화

이제 UFW 방화벽이 수신 SSH 연결을 허용하도록 구성되었으므로 다음을 입력하여 이를 활성화할 수 있습니다.

sudo ufw enable

# Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
# Firewall is active and enabled on system startup

 

 

방화벽을 사용하도록 설정하면 기존 SSH 연결이 중단될 수 있다는 경고가 표시됩니다. y를 입력하고 Enter 키를 누르십시오.

 

 

 

다른 포트에서 연결 허용

서버에서 실행되는 응용 프로그램과 특정 요구에 따라 일부 다른 포트에 대한 수신 액세스도 허용해야 합니다.

아래에서는 가장 일반적인 일부 서비스에 대한 수신 연결을 허용하는 방법에 대한 몇 가지 예를 보여드리겠습니다.

 

 

 

포트 80 - HTTP 열기

다음 명령으로 HTTP 연결을 허용할 수 있습니다.

sudo ufw allow http

 

 

 

http 대신 포트 번호 80을 사용할 수 있습니다.

sudo ufw allow 80/tcp

 

 

또는 애플리케이션 프로파일을 사용할 수 있습니다. 이 경우 'Nginx HTTP':

sudo ufw allow 'Nginx HTTP'

 

 

 

포트 443 - HTTPS 열기

다음 명령으로 HTTP 연결을 허용할 수 있습니다.

sudo ufw allow https

 

 

https 프로파일 대신 동일한 목적을 달성하려면 포트 번호 443을 사용할 수 있습니다.

sudo ufw allow 443/tcp

 

 

또는 애플리케이션 프로파일 'Nginx HTTPS'를 사용할 수 있습니다.

sudo ufw allow 'Nginx HTTPS'

 

 

 

포트 8080 열기

Tomcat 또는 포트 8080에서 수신 연결을 허용하는 다른 응용 프로그램을 실행하는 경우 다음을 수행합니다.

sudo ufw allow 8080/tcp

 

 

 

포트 범위 허용

단일 포트에 대한 액세스를 허용하는 대신 UFW를 통해 포트 범위에 대한 액세스를 허용할 수 있습니다. UFW에서 포트 범위를 허용하는 경우 tcp 또는 udp 프로토콜을 지정해야 합니다. 예를 들어 tcp 및 udp 모두에서 7100 ~ 7200 범위의 포트를 허용하려면 다음 명령을 실행합니다.

sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp

 

 

 

특정 IP 주소 허용

IP 주소가 64.63.62.61인 홈 시스템의 모든 포트에 액세스할 수 있도록 허용하려면 화이트리스트를 만들 IP 주소 다음에 를 지정합니다.

sudo ufw allow from 64.63.62.61

 

 

 

특정 포트에서 특정 IP 주소 허용

특정 포트에 대한 액세스를 허용하려면 IP 주소가 64.63.62.61인 작업 시스템에서 포트 22를 사용하여 포트 번호 다음에 나오는 포트를 사용합니다.

sudo ufw allow from 64.63.62.61 to any port 22

 

 

 

서브넷 허용

IP 주소의 서브넷에 대한 연결을 허용하는 명령은 단일 IP 주소를 사용할 때와 동일하며, 유일한 차이점은 넷마스크를 지정해야 한다는 것입니다. 예를 들어 192.168.1.1 ~ 192.168.1.254 ~ 3360(MySQL ) 범위의 IP 주소에 대한 액세스를 허용하려면 다음 명령을 사용할 수 있습니다.

sudo ufw allow from 192.168.1.0/24 to any port 3306

 

 

 

특정 네트워크 인터페이스에 대한 연결 허용

특정 포트에 대한 액세스를 허용하려면 포트 3360을 특정 네트워크 인터페이스 eth2에만 적용한다고 가정하면 네트워크 인터페이스의 이름과 허용을 지정해야 합니다.

sudo ufw allow in on eth2 to any port 3306

 

 

 

연결 거부

들어오는 모든 연결에 대한 기본 정책은 거부로 설정되어 있으며, 변경하지 않은 경우 사용자가 연결을 특별히 열지 않는 한 UFW가 들어오는 모든 연결을 차단합니다.

포트 80과 443을 열었는데 서버가 23.24.25.0/24 네트워크로부터 공격을 받고 있다고 가정해 보겠습니다. 23.24.25.0/24의 모든 연결을 거부하려면 다음 명령을 사용할 수 있습니다.

sudo ufw deny from 23.24.25.0/24

 

 

23.24.25.0/24에서 포트 80 및 443에 대한 액세스만 거부하려는 경우 다음 명령을 사용할 수 있습니다.

sudo ufw deny from 23.24.25.0/24 to any port 80
sudo ufw deny from 23.24.25.0/24 to any port 443

 

 

거부 규칙을 작성하는 것은 허용 규칙을 작성하는 것과 같으며, 허용을 거부로 바꾸기만 하면 됩니다.

 

 

 

UFW 규칙 삭제

UFW 규칙을 규칙 번호와 실제 규칙을 지정하여 삭제하는 방법에는 두 가지가 있습니다.

특히 UFW를 처음 사용하는 경우 규칙 번호별로 UFW 규칙을 삭제하는 것이 더 쉽습니다. 규칙 번호로 규칙을 삭제하려면 먼저 삭제할 규칙 번호를 찾아야 합니다. 다음 명령을 사용하여 삭제할 수 있습니다.

sudo ufw status numbered

# Status: active
# 
#      To                         Action      From
#      --                         ------      ----
# [ 1] 22/tcp                     ALLOW IN    Anywhere
# [ 2] 80/tcp                     ALLOW IN    Anywhere
# [ 3] 8080/tcp                   ALLOW IN    Anywhere

 

 

포트 8080에 연결할 수 있는 규칙인 규칙 3을 삭제하려면 다음 명령을 사용합니다.

sudo ufw delete 3

 

 

두 번째 방법은 실제 규칙을 지정하여 규칙을 삭제하는 것입니다. 예를 들어 포트 8069를 여는 규칙을 추가한 경우 다음과 같이 규칙을 삭제할 수 있습니다.

sudo ufw delete allow 8069

 

 

 

 

UFW 비활성화

어떤 이유로든 UFW를 중지하고 사용할 수 있는 모든 규칙을 비활성화하려면 다음을 수행합니다.

sudo ufw disable

 

 

나중에 UTF를 다시 활성화하고 모든 규칙을 활성화하려면 다음을 입력합니다.

sudo ufw enable

 

 

 

UFW 재설정

UFW를 재설정하면 UFW가 비활성화되며 모든 활성 규칙이 삭제됩니다. 이 기능은 모든 변경 사항을 되돌리고 새로 시작하려는 경우에 유용합니다.

UFW를 재설정하려면 다음 명령을 입력하기만 하면 됩니다.

sudo ufw reset

 

 

 

결론

Ubuntu 18.04 서버에 UFW 방화벽을 설치하고 구성하는 방법을 배웠습니다. 불필요한 연결을 모두 제한하면서 시스템의 적절한 기능에 필요한 모든 수신 연결을 허용해야 합니다.

반응형