SW/리눅스

Debian 9 : UFW로 방화벽으로 설정하는 방법, 예제, 명령어

얇은생각 2021. 2. 12. 07:30
반응형

Debian에는 기본 시스템의 일부로 iptables가 설치된 방화벽을 관리하는 도구를 제공하는 여러 패키지가 포함되어 있습니다. 초보자는 iptables 도구를 사용하여 방화벽을 적절하게 구성하고 관리하는 방법을 배우는 것이 복잡할 수 있지만 UFW는 이를 단순화합니다.

UFW(Uncomplexed Firewall)는 iptables 방화벽 규칙을 관리하기 위한 사용자에게 친숙한 프런트엔드이며, 주요 목표는 iptables 관리를 더 쉽게 하거나 이름이 복잡하지 않게 하는 것입니다.

Debian 9에서 UFW로 방화벽을 설정하는 방법을 보여드리겠습니다.

 

 

 

필수 조건

이 튜토리얼을 진행하기 전에 사용자가 sudo 권한으로 로그인한 사용자를 확인하십시오.

 

 

 

UFW 설치

Debian 9에는 UFW가 기본적으로 설치되어 있지 않습니다. 다음을 입력하여 ufw 패키지를 설치할 수 있습니다.

sudo apt install ufw

 

 

 

UFW 상태 확인

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

sudo ufw status verbose

# Status: inactive

 

 

 UFW는 기본적으로 비활성화되어 있습니다. 서버 잠금을 방지하기 위해 방화벽이 자동으로 활성화되지 않습니다. 

UFW가 활성화된 경우 출력은 다음과 유사하게 표시됩니다.

Debian 9 : UFW로 방화벽으로 설정하는 방법, 예제, 명령어

 

 

 

UFW 기본 정책

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

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

방화벽 정책은 보다 상세하고 사용자 정의 규칙을 만드는 기초입니다. 대부분의 경우 초기 UFW 기본 정책은 좋은 시작점입니다.

 

 

 

애플리케이션 프로필

적합한 패키지로 패키지를 설치할 때 해당 서비스를 설명하고 UFW 설정을 포함하는 /etc/ufw/applications.d 디렉토리에 애플리케이션 프로파일을 추가합니다. 

시스템 유형에서 사용 가능한 모든 응용 프로그램 프로필을 나열하려면 다음을 수행합니다.

sudo ufw app list

 

 

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

Available applications:
  DNS
  IMAP
  IMAPS
  OpenSSH
  POP3
  POP3S
  Postfix
  Postfix SMTPS
  Postfix Submission
  ...

 

 

특정 프로파일 및 포함된 규칙에 대한 자세한 내용을 보려면 다음 명령을 사용하십시오.

sudo ufw app info OpenSSH

# Profile: OpenSSH
# Title: Secure shell server, an rshd replacement
# Description: OpenSSH is a free implementation of the Secure Shell protocol.
# 
# Port:
#   22/tcp

 

 

위의 출력에서 OpenSSH 프로필이 포트 22를 열었다는 것을 알 수 있습니다.

 

 

 

SSH 연결 허용

UFW 방화벽을 먼저 활성화하기 전에 수신 SSH 연결을 허용해야 합니다. 

원격 위치에서 서버에 연결하는 경우 거의 항상 해당되며 수신 SSH 연결을 명시적으로 허용하기 전에 UFW 방화벽을 사용하도록 설정하면 더 이상 Debian 서버에 연결할 수 없습니다.

수신 SSH 연결을 허용하도록 UFW 방화벽을 구성하려면 다음 명령을 실행합니다.

sudo ufw allow OpenSSH

# Rules updated
# Rules updated (v6)

 

 

SSH 서버가 기본 포트 22가 아닌 다른 포트에서 수신 대기 중인 경우 해당 포트를 열어야 합니다.

예를 들어 ssh 서버가 포트 8822를 수신하면 다음 명령을 사용하여 해당 포트에 대한 연결을 허용할 수 있습니다.

sudo ufw allow 8822/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

 

 

 

포트 443 열기 - HTTPS

다음 명령을 사용하여 HTTPS 연결을 허용할 수 있습니다.

sudo ufw allow https

 

 

https 대신 동일한 작업을 수행하려면 포트 번호 443을 사용할 수 있습니다.

sudo ufw allow 443/tcp

 

 

 

포트 8080 열기

포트 8080에서 수신되는 Tomcat 또는 기타 응용 프로그램을 실행하는 경우 다음을 사용하여 수신 연결을 허용할 수 있습니다.

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 주소에서 모든 포트에 대한 액세스를 허용하려면 ufw allow from 명령을 사용한 다음 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

 

 

 

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

특정 포트에 대한 액세스를 허용하려면 특정 네트워크 인터페이스 eth2의 포트 3360과 같은 경우 allow in on 명령을 사용한 다음 인터페이스 이름을 사용합니다.

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

 

반응형