Linux에 UFW 방화벽 설정하는 방법

방화벽이 없으면 네트워크 트래픽에 규칙이나 제한이 없으므로 여러 가지 부정적인 결과가 발생할 수 있습니다. Linux 시스템에는 기본 방화벽 구성 도구인 Uncomplicated Firewall (UFW)가 함께 제공됩니다. 하지만 UFW 방화벽을 어떻게 설정해야 할까요? 편안하게 앉아서 이 튜토리얼을 따라해보세요!

이 튜토리얼에서는 UFW를 구성하고 Linux 시스템에 방화벽을 설정하여 네트워크를 보호하고 악의적인 행위를 방지하는 방법을 배우게 될 것입니다.

준비되셨나요? 시작하려면 계속 읽어보세요!

사전 준비 사항

이 튜토리얼은 실습을 위한 것입니다. 따라하려면 다음 사항이 준비되어 있어야 합니다:

  • Ubuntu 머신 – 이 튜토리얼은 Ubuntu 20.04 LTS를 사용하지만 다른 Linux 배포판도 사용할 수 있습니다.
  • 루트 사용 권한이 있는 머신입니다.

UFW 설치 및 IPv6 연결 활성화하기

UFW는 Ubuntu 시스템에 함께 제공되지만 기본적으로 설치되어 있지 않습니다. 먼저 apt 패키지 관리자를 사용하여 UFW를 설치하고 IPv6 연결을 허용하도록 구성하세요.

1. 터미널을 열고 아래 명령어인 apt update을 실행하여 로컬 패키지 인덱스를 업데이트합니다. 이 명령은 업데이트 중에 사용자 개입을 최소화하기 위해 모든 프롬프트(-y)를 받아들입니다.

sudo apt update -y
Updating the System Package

2. 다음으로, 아래 명령어를 실행하여 시스템에 UFW(install uwf)를 설치합니다. 설치 중에 모든 프롬프트(-y)를 받아들입니다.

sudo apt install ufw -y
Installing UFW on Ubuntu

3. 좋아하는 텍스트 편집기로 UFW 구성 파일(/etc/default/ufw)을 엽니다. UFW는 IPv6를 지원하지만 방화벽이 IPv6 연결을 수락하도록 구성되어 있는지 확인해야 합니다.

IPv4만 사용하면 여전히 IPv6 공격에 취약합니다.

4. IPV6 변수로 스크롤을 내리고 아래와 같이 값을 yes로 설정한 다음 변경 사항을 저장하고 편집기를 종료합니다.

Enabling IPV6 in the UFW Configuration File

5. 마지막으로 아래 명령어를 실행하여 UFW를 비활성화하고 다시 활성화합니다. 이 명령은 변경 사항이 적용되도록 UFW 서비스를 재시작합니다.

명령이 완료되면 방화벽은 이제 IPv4와 IPv6 방화벽 규칙 세트를 작성할 수 있습니다.

sudo ufw disable && sudo ufw enable

방화벽 규칙에 대한 기본 정책 설정

UFW를 시작하는 경우, 규칙이 정의되지 않은 체인에 대한 기본 정책을 설정하는 것이 좋습니다.

UFW를 설정하여 모든 들어오는 연결을 거부하고 모든 나가는 연결을 허용합니다. 이렇게 하면 외부에서 기기에 연결하려는 모든 사용자가 거부되지만 여전히 웹 사이트나 서버에 자유롭게 연결할 수 있습니다.

아래의 ufw 명령어를 실행하여 기본적으로 모든 들어오는 연결을 차단하십시오.

sudo ufw default deny incoming
Denying Incoming Network Traffics

이제 다음 명령어를 실행하여 기본적으로 모든 나가는 연결을 허용하십시오.

sudo ufw default allow outgoing
Allowing Outgoing Network Traffics

UFW 방화벽에서 SSH 연결 허용하기

UFW 방화벽에 기본 정책을 설정하여 모든 들어오는 트래픽을 차단했습니다. “허용-거부” 규칙은 일반 사용자에게 좋은 설정입니다. 그러나 서버를 실행중이라면 어떻게 해야할까요? 특정 트래픽을 허용해야합니다. UFW 방화벽에서 SSH 연결을 허용하면 특정 트래픽을 허용할 수 있습니다.

포트 22에서 들어오는 SSH 연결을 허용하는 SSH 서버를 설정할 것입니다. 다른 포트가 아닌 포트 22를 사용하는 이유는 Unix 계열 시스템에서 SSH 데몬이 기본적으로 포트 22에서 수신 대기하기 때문에 기본 SSH 포트를 사용하는 것이 편리합니다.

1. 아래 명령어를 실행하여 시스템에 OpenSSH 서버를 설치하고(install openssh-server) OpenSSH 서버를 시작하세요(start ssh).

sudo apt install openssh-server -y
sudo systemctl start ssh

2. 이제 아래 명령어를 실행하여 들어오는 SSH 연결을 허용하세요. UFW가 SSH 포트를 알고 있기 때문에 포트 22를 지정하지 않아도 됩니다.

sudo ufw allow ssh
Allowing SSH connection

/etc/services 파일은 시스템에서 사용 가능한 모든 서비스 목록을 포함하고 있습니다. 텍스트 편집기에서 파일을 열고, ssh로 스크롤 다운하여 포트 번호 (22)가 서비스 설명의 일부로 표시되는지 확인하십시오.

Previewing the /etc/services file

그러나 SSH를 허용하기 위해 포트 번호 (22)를 지정하는 것이 좋을 수도 있습니다. 그렇다면 대신 다음 명령을 실행하십시오.

sudo ufw allow 22

3. 이제 UFW를 활성화하기 위해 아래 명령을 실행하십시오.

sudo ufw enable

확인 메시지에 Y를 입력하고 Enter를 눌러 명령을 계속 실행하십시오. UFW는 이제 시스템에서 패킷을 필터링하기 시작합니다.

Enabling UFW

4. 마지막으로, UFW 방화벽의 상태를 확인하려면 아래 명령 중 하나를 실행하십시오.

## 인터페이스 및 패킷의 현재 진행 상황과 같은 자세한 정보를 표시
## 각 규칙에 번호와 해당 허용 또는 거부 상태를 표시
sudo ufw status verbose
## 번호 모드는 여기저기에서 규칙 집합을 삭제하려고 할 때 유용합니다
## 번호 모드는 여기저기에서 규칙 집합을 삭제하려고 할 때 유용합니다
sudo ufw status numbered

  • Status: active – 현재 방화벽이 실행 중임을 나타냅니다.
  • Logging: on (low) – UFW가 방화벽을 통과하는 모든 패킷을 기록하고 있음을 나타냅니다.
  • 기본 설정: 차단 (수신), 허용 (발신), 비활성화 (라우팅) – 기본 정책은 모든 수신 연결을 차단하고 모든 발신 연결을 허용하는 것을 나타냅니다.
  • 새 프로필: 건너뛰기 – 방화벽은 현재 기본 규칙 세트를 사용하고 있음을 나타냅니다.
Checking verbose UFW firewall status

만약 numbered 옵션을 사용하여 명령을 실행하면 아래 출력을 볼 수 있습니다. 번호가 매겨진 규칙 목록과 해당 허용 또는 차단 상태를 볼 수 있습니다.

Viewing the UW Firewall status in a numbered list

HTTP와 HTTPS 연결 허용하기

이 시점에서 UFW 방화벽에서 SSH 연결만 허용했지만, 이는 서버의 기능을 제한합니다. HTTP 또는 HTTPS와 같은 다른 유형의 연결을 허용하고 UFW 방화벽에 더 많은 규칙을 추가하세요.

아래 명령 중 하나를 실행하여 수신 HTTP 연결을 허용합니다.

## HTTP 연결은 포트 80을 사용합니다 (안전하지 않음)
sudo ufw allow 80
sudo ufw allow http
Allowing HTTP connections

이제 아래 명령 중 하나를 실행하여 수신 HTTPS 연결을 허용합니다.

sudo ufw allow https
## HTTPS 연결은 포트 443을 사용합니다 (안전함)
sudo ufw allow 443
Allowing incoming HTTPS connections.

특정 포트 범위 및 IP 주소에서의 연결 허용

일부 응용 프로그램은 서비스를 제공하기 위해 여러 포트를 사용하며, 여는 포트 범위가 있거나 특정 IP 주소에서의 연결을 허용해야 할 수도 있습니다. 이 경우, UFW 방화벽에 더 많은 규칙을 추가하세요.

아래 명령을 실행하여 5001에서 5009 포트로의 들어오는 연결을 허용하십시오. 규칙이 적용되는 포트 범위 뒤에 프로토콜(tcp 또는 udp)을 항상 지정해야합니다. 모든 포트가 두 프로토콜 모두에 의해 사용되지 않기 때문입니다.

예를 들어, 일반적으로 사용되는 TCP 포트는 80(HTTP) 및 443(HTTPS)입니다. 그러나 일반적인 UDP 포트에는 53(DNS) 및 67/68(DHCP)이 포함됩니다.

sudo ufw allow 5001:5010/tcp
sudo ufw allow 5001:5010/udp
Allowing traffic on 5001:5010 port range

특정 IP 주소에서 SSH 연결을 허용하려면 대신 아래 명령을 실행하십시오. 이 명령은 192.168.1.2 IP 주소에서만 SSH 연결(포트 22)을 허용합니다.

sudo ufw allow from 192.168.1.2 to any port 22
Allowing SSH Connections from Specific IP Address

특정 네트워크 인터페이스에서 트래픽 허용하기

UFW는 eth0가 첫 번째 이더넷 인터페이스이고 wlan0가 첫 번째 Wi-Fi 인터페이스와 같이 특정 네트워크 인터페이스에서만 트래픽을 허용할 수 있습니다.

아래 명령 중 하나를 실행하여 eth0wlan0 인터페이스에서만 HTTP 연결을 허용하십시오.

## eth0 인터페이스에서만 HTTP 연결 허용
sudo ufw allow in on eth0 to any port 80
## wlan0 인터페이스에서만 HTTP 연결 허용
sudo ufw allow in on wlan0 to any port 80
Allowing traffic on a specific interface

UFW 방화벽 규칙 삭제

어쩌면 일부 UFW 방화벽 규칙은 더 이상 필요하지 않을 수 있습니다. 그 경우에는 UFW에서 일부 규칙을 제거하고 싶을 수 있습니다. 그러나 먼저 삭제할 규칙의 번호 또는 이름을 알아야합니다.

1. UFW에 추가 된 규칙의 번호 목록을 얻으려면 아래 명령을 실행하십시오.

sudo ufw status numbered

아래와 같은 출력에서 규칙의 번호 또는 이름을 참고하십시오.

Previewing all the rules

2. 다음으로 아래 명령을 실행하여 5001:5010/tcp 포트 범위인 규칙 번호 4삭제하십시오.

sudo ufw delete 4
Deleting a Rule by Rule Number

3. 실제 이름과 허용 상태로 규칙을 삭제하려면 아래 명령을 실행하십시오. 이 예제에서는 다음 명령을 실행하여 http 규칙을 삭제합니다.

sudo ufw delete allow http
Deleting a Rule by Rule Name (http)

4. 다음으로 아래 명령을 실행하여 허용 상태와 함께 포트 번호 (443)로 규칙을 삭제하십시오.

sudo ufw delete allow 443
Deleting a Rule by Port Number (443)

5. 마지막으로, 모든 규칙을 나열하기 위해 1단계에서와 같이 다음 명령을 다시 실행하십시오.

sudo ufw status numbered

아래와 같이, 5001:5010/tcp 포트 범위, http443 포트에 대한 규칙이 삭제되었습니다.

Checking the firewall rules

UFW 방화벽 재설정

큰 규칙 세트를 구성 한 후와 같이 UFW를 기본 설정으로 재설정해야하는 경우가 있을 수 있습니다. 업데이트로 인해 구성이 변경되어 UFW를 다시 구성하고 처음부터 다시 시작해야 할 수도 있습니다.

아래의 ufw reset 명령을 실행하여 모든 방화벽 규칙을 기본 설정으로 재설정하십시오. 이 명령은 UFW를 비활성화하고 현재 방화벽 규칙을 모두 삭제합니다.

sudo ufw reset

계속하려면 ‘Y’를 입력하고 엔터 키를 누르세요.

Resetting UFW

리셋이 완료되면 UFW가 완전히 비활성화되고, 기본 정책도 사라집니다.

다음 명령을 실행하여 UFW를 다시 활성화하고 방화벽 규칙을 처음부터 구성하세요.

sudo ufw enable

UFW를 더 이상 사용하지 않으려면 다시 활성화할 필요가 없습니다. 아래 명령을 실행하여 UFW가 비활성화되었는지 확인하세요.

sudo ufw disable
Disabling UFW firewall

결론

이 튜토리얼을 통해 UFW를 사용할 때 방화벽 설정이 너무 어렵지 않다는 것을 알게 되었습니다. 이제 Ubuntu에서 UFW를 사용하여 자체 규칙을 설정하고 구현하는 방법에 대해 잘 이해하고 있어야 합니다.

이제 새로운 지식을 바탕으로 리눅스 머신에서 UFW와 도커 보안에 대해 더 배워보세요.

Source:
https://adamtheautomator.com/ufw-firewall/