SW/리눅스

Linux : Debian 10 : UFW로 방화벽 설정 방법, 예제, 명령어

얇은생각 2022. 8. 20. 07:30
반응형

방화벽이 적절하게 구성된 것은 전체 시스템 보안의 가장 중요한 측면 중 하나입니다.

UFW(복제되지 않은 방화벽)는 iptables 방화벽 규칙을 관리하기 위한 사용자에게 친숙한 프런트엔드입니다. iptables의 주요 목표는 iptables를 보다 쉽게 또는 이름처럼 복잡하지 않게 관리하는 것입니다.

이 글은 Debian 10에서 UFW로 방화벽을 설정하는 방법을 설명합니다.

 

 

필수 구성 요소

루트 또는 sudo 권한이 있는 사용자만 시스템 방화벽을 관리할 수 있습니다.

 

 

 

UFW를 설치

다음 명령을 입력하여 ufw 패키지를 설치합니다.

sudo apt update
sudo apt install ufw

 

 

 

UFW 상태를 확인

서버 잠금을 방지하기 위해 방화벽이 자동으로 활성화되지 않습니다. 다음을 입력하여 UFW의 상태를 확인할 수 있습니다.

sudo ufw status verbose

# Status: inactive

 

 

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

Linux : Debian 10 : UFW로 방화벽 설정 방법, 예제, 명령어

 

 

 

UFW 기본 정책

기본적으로 UFW는 들어오는 연결을 모두 차단하고 모든 아웃바운드 연결을 허용합니다. 이것은 사용자가 포트를 특별히 열지 않는 한 서버에 액세스하려는 모든 사용자가 연결할 수 없음을 의미합니다. 서버에서 실행 중인 애플리케이션과 서비스는 외부 환경에 액세스할 수 있습니다.

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

방화벽 정책은 보다 상세한 사용자 정의 규칙을 구축하기 위한 기반입니다. 일반적으로 초기 UFW Default Policies가 좋은 출발점입니다.

 

 

 

응용 프로그램 프로필

대부분의 애플리케이션은 서비스를 설명하고 UFW 설정을 포함하는 애플리케이션 프로필과 함께 제공됩니다. 프로파일은 패키지 설치 중에 /etc/ufw/applications.d 디렉토리에 자동으로 생성됩니다.

시스템 유형에서 사용할 수 있는 모든 애플리케이션 프로파일을 나열하려면 다음을 수행합니다.

sudo ufw utf --help

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

 

 

특정 프로파일 및 포함된 규칙에 대한 자세한 내용을 보려면 app info 명령과 프로파일 이름을 차례로 사용하십시오. 예를 들어 OpenSSH 프로필에 대한 정보를 얻으려면 다음을 사용합니다.

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

 

 

출력에는 프로파일 이름, 제목, 설명 및 방화벽 규칙이 포함됩니다.

 

 

 

SSH 연결을 허용

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

원격지에서 서버에 연결하는 경우 수신 SSH 연결을 명시적으로 허용하기 전에 UFW 방화벽을 활성화하면 더 이상 Debian 서버에 연결할 수 없습니다.

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

sudo ufw allow OpenSSH

# Rules updated
# Rules updated (v6)

 

 

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

예를 들어 ssh 서버가 포트 7722에서 수신 대기할 경우 다음을 실행할 수 있습니다.

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

 

 

포트 번호 443을 사용할 수도 있습니다.

sudo ufw allow 443/tcp

 

 

 

포트 8080 열기

8080 포트에서 수신 대기하는 Tomcat 또는 기타 응용 프로그램을 실행하는 경우 다음을 사용하여 포트를 엽니다.

sudo ufw allow 8080/tcp

 

 

 

포트 범위 열기

UFW를 사용하면 포트 범위로의 접근을 허용할 수도 있습니다. 범위를 열 때 포트 프로토콜을 지정해야 합니다.

예를 들어, 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

 

 

 

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

포트 3360을 특정 네트워크 인터페이스 eth2에만 액세스할 수 있도록 허용하려면 allow in(허용)과 네트워크 인터페이스 이름을 사용합니다.

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

 

 

 

Debian 10 기계에 UFW 방화벽을 설치하고 구성하는 방법을 배웠습니다. 불필요한 연결은 모두 제한하면서 시스템이 올바르게 작동하는 데 필요한 모든 수신 연결은 허용해야 합니다.

반응형