웹사이트 검색

UFW 설치 및 구성 방법 - Debian/Ubuntu의 복잡하지 않은 방화벽


컴퓨터가 서로 연결되면서 서비스가 빠르게 성장하고 있습니다. 이메일, 소셜 미디어, 온라인 상점, 채팅, 웹 회의까지의 서비스는 다음과 같습니다. 사용자가 사용합니다. 그러나 다른 측면에서는 이러한 연결이 양면 칼과도 같습니다. 바이러스, 멀웨어, 트로이 앱과 같은 컴퓨터에 악성 메시지를 보내는 것도 그 중 하나입니다.

가장 큰 컴퓨터 네트워크인 인터넷은 항상 좋은 사람들로 가득 차 있는 것은 아닙니다. 우리의 컴퓨터/서버가 안전한지 확인하려면 이를 보호해야 합니다.

컴퓨터/서버에 필수 구성 요소 중 하나는 방화벽입니다. Wikipedia의 정의는 다음과 같습니다.

컴퓨팅에서 방화벽은 데이터 패킷을 분석하고 적용된 규칙 세트에 따라 허용 여부를 결정하여 들어오고 나가는 네트워크 트래픽을 제어하는 소프트웨어 또는 하드웨어 기반 네트워크 보안 시스템입니다.

Iptables는 서버에서 널리 사용되는 방화벽 중 하나입니다. 일련의 규칙에 따라 서버에서 들어오고 나가는 트래픽을 관리하는 데 사용되는 프로그램입니다. 일반적으로 신뢰할 수 있는 연결만 서버에 들어갈 수 있습니다. 하지만 IPTables는 콘솔 모드에서 실행되고 있어 복잡합니다. iptables 규칙 및 명령에 익숙한 사용자는 iptables 방화벽 사용 방법을 설명하는 다음 문서를 읽을 수 있습니다.

  1. 기본 IPTables(Linux 방화벽) 가이드

Debian/Ubuntu에 UFW 방화벽 설치

IPTables 설정 방법의 복잡성을 줄이기 위해 많은 사항을 다루어야 합니다. Ubuntu Linux를 실행하는 경우 ufw가 기본 방화벽 도구로 표시됩니다. ufw 방화벽에 대해 살펴보겠습니다.

ufw 란 무엇입니까?

ufw(복잡하지 않은 방화벽)은 가장 널리 사용되는 iptables 방화벽의 프런트엔드이며 호스트 기반 방화벽에 매우 적합합니다. ufw는 netfilter 관리를 위한 프레임워크를 제공할 뿐만 아니라 방화벽 제어를 위한 명령줄 인터페이스도 제공합니다. 방화벽 개념에 익숙하지 않은 Linux 초보자를 위해 사용자 친화적이고 사용하기 쉬운 인터페이스를 제공합니다.

반면에 동일한 복잡한 명령은 관리자가 명령줄 인터페이스를 사용하여 복잡한 규칙을 설정하는 데 도움이 됩니다. ufwDebian, UbuntuLinux Mint와 같은 다른 배포판의 업스트림입니다.

기본 사용법 ufw

먼저, 다음 명령어를 사용하여 ufw가 설치되어 있는지 확인하세요.

sudo dpkg --get-selections | grep ufw

ufw 		install

설치되어 있지 않은 경우 아래와 같이 apt 명령을 사용하여 설치할 수 있습니다.

sudo apt-get install ufw

사용하기 전에 ufw가 실행 중인지 확인해야 합니다. 이를 확인하려면 다음 명령을 사용하십시오.

sudo ufw status

상태: 비활성인 경우 활성 상태가 아니거나 사용 중지되었음을 의미합니다.

새로운 소식! 모든 Linux 관리자에게 없어서는 안될 eBook!

696페이지 eBook 무료 다운로드

ufw 활성화/비활성화

활성화하려면 터미널에 다음 명령을 입력하기만 하면 됩니다.

sudo ufw enable

Firewall is active and enabled on system startup

비활성화하려면 입력하면 됩니다.

sudo ufw disable

현재 ufw 규칙 나열

방화벽이 활성화되면 규칙을 추가할 수 있습니다. 기본 규칙이 무엇인지 보려면 다음을 입력하면 됩니다.

sudo ufw status verbose
샘플 출력
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
$

ufw 규칙을 추가하는 방법

보시다시피 기본적으로 모든 들어오는 연결이 거부됩니다. 컴퓨터를 원격으로 사용하려면 적절한 포트를 허용해야 합니다. 예를 들어 ssh 연결을 허용하려고 합니다. 이를 허용하는 명령은 다음과 같습니다.

접근 허용
sudo ufw allow ssh

[sudo] password for pungki :
Rule added
Rule added (v6)
$

상태를 다시 확인해보면 다음과 같이 출력되는 것을 볼 수 있습니다.

sudo ufw status

To 		Action 			From
-- 		----------- 		------
22 		ALLOW 			Anywhere
22 		ALLOW 			Anywhere (v6)

규칙이 많고 즉석에서 모든 규칙에 숫자를 추가하려면 번호가 매겨진 매개변수를 사용하세요.

sudo ufw status numbered

To 		Action 			From
------ 		----------- 		------
[1] 22 		ALLOW 			Anywhere
[2] 22 		ALLOW 			Anywhere (v6)

첫 번째 규칙은 Anywhere에서 포트 22로 들어오는 연결이 tcp 또는 udp 패킷 모두 허용됨을 나타냅니다. tcp 패킷만 허용하려면 어떻게 해야 합니까? 그런 다음 포트 번호 뒤에 tcp 매개변수를 추가할 수 있습니다. 다음은 샘플 출력의 예입니다.

sudo ufw allow ssh/tcp

To 		Action 			From
------ 		----------- 		------
22/tcp 		ALLOW 			Anywhere
22/tcp 		ALLOW 			Anywhere (v6)
접근을 거부하다

거부 규칙에도 동일한 트릭이 적용됩니다. ftp 거부 규칙을 원한다고 가정해 보겠습니다. 따라서 입력만 하면 됩니다.

sudo ufw deny ftp

To 		Action 			From
------ 		----------- 		------
21/tcp 		DENY 			Anywhere
21/tcp 		DENY 			Anywhere (v6)

특정 포트 추가

때때로 어떤 표준도 따르지 않는 사용자 정의 포트가 있습니다. 우리 컴퓨터의 ssh 포트22에서 2290으로 변경한다고 가정해 보겠습니다. 그런 다음 포트 2290을 허용하려면 다음과 같이 추가하면 됩니다.

sudo ufw allow

To 		Action 			From
-- 		----------- 		------
2290 		ALLOW 			Anywhere
2290 		ALLOW 			Anywhere (v6)

규칙에 포트 범위를 추가하는 것도 가능합니다. tcp 프로토콜을 사용하여 22902300에서 포트를 열려면 명령은 다음과 같습니다.

sudo ufw allow 2290:2300/tcp

To 			Action 			From
------ 			----------- 		------
2290:2300/tcp 		ALLOW 			Anywhere
2290:2300/tcp 		ALLOW			Anywhere (v6)

udp를 사용하려면 다음 명령을 사용하세요.

sudo ufw allow 2290:2300/udp

To 			Action 			From
------ 			----------- 		------
2290:2300/udp 		ALLOW 			Anywhere
2290:2300/udp 		ALLOW			Anywhere (v6)

'tcp' 또는 'udp'를 명시적으로 입력해야 하며, 그렇지 않으면 아래와 유사한 오류 메시지가 표시됩니다.

ERROR: Must specify ‘tcp’ or ‘udp’ with multiple ports

특정 IP 추가

이전에는 서비스 또는 포트를 기반으로 규칙을 추가했습니다. Ufw를 사용하면 IP 주소를 기반으로 규칙을 추가할 수도 있습니다. 샘플 명령은 다음과 같습니다.

sudo ufw allow from 192.168.0.104

서브넷 마스크를 사용하여 범위를 넓힐 수도 있습니다.

sudo ufw allow form 192.168.0.0/24

To 		Action 			From
-- 		----------- 		------
Anywhere	ALLOW 			192.168.0.104
Anywhere	ALLOW 			192.168.0.0/24

보시다시피 from 매개변수는 연결 소스만 제한합니다. To 열로 표시되는 대상은 어디든지입니다. 'To' 매개변수를 사용하여 목적지를 관리할 수도 있습니다. 포트 22(ssh)에 대한 액세스를 허용하는 샘플을 살펴보겠습니다.

sudo ufw allow to any port 22

위 명령을 사용하면 어디에서나 모든 프로토콜에서 포트 22에 대한 액세스를 허용할 수 있습니다.

매개변수 결합

보다 구체적인 규칙을 위해 IP 주소, 프로토콜포트를 결합할 수도 있습니다. IP 192.168.0.104, 프로토콜 tcp 및 포트 22에서만 연결을 제한하는 규칙을 생성한다고 가정해 보겠습니다. 그러면 명령은 아래와 같습니다.

sudo ufw allow from 192.168.0.104 proto tcp to any port 22

거부 규칙을 생성하는 구문은 허용 규칙과 유사합니다. 매개변수를 허용에서 거부로 변경하기만 하면 됩니다.

규칙 삭제

때로는 기존 규칙을 삭제해야 할 수도 있습니다. 다시 한 번 ufw를 사용하면 규칙을 쉽게 삭제할 수 있습니다. 위 샘플에는 아래 규칙이 있는데 이를 삭제하려고 합니다.

To 		Action 			From
-- 		----------- 		------
22/tcp		ALLOW 			192.168.0.104
21/tcp		ALLOW 			Anywhere
21/tcp 		ALLOW 			Anywhere (v6)

규칙을 삭제하는 방법에는 두 가지가 있습니다.

방법 1

아래 명령은 ftp 서비스와 일치하는 규칙을 삭제합니다. 따라서 ftp 포트를 의미하는 21/tcp가 삭제됩니다.

sudo ufw delete allow ftp
방법 2

하지만 위의 예에서 아래 명령을 사용하여 첫 번째 규칙을 삭제하려고 하면

sudo ufw delete allow ssh

Or 

sudo ufw delete allow 22/tcp

와 같은 오류 메시지를 발견할 수 있습니다.

Could not delete non-existent rule
Could not delete non-existent rule (v6)

그러면 이 트릭을 수행할 수 있습니다. 위에서 언급한 것처럼 규칙 수를 표시하여 삭제하려는 규칙을 나타낼 수 있습니다. 우리가 당신에게 그것을 보여 드리겠습니다.

sudo ufw status numbered

To 		Action 			From
-- 		----------- 		------
[1] 22/tcp		ALLOW 			192.168.0.104
[2] 21/tcp		ALLOW 			Anywhere
[3] 21/tcp 		ALLOW 			Anywhere (v6)

그런 다음 다음을 사용하여 첫 번째 규칙을 삭제할 수 있습니다. “y”를 누르면 규칙이 영구적으로 삭제됩니다.

sudo ufw delete 1

Deleting :
Allow from 192.168.0.104 to any port 22 proto tcp
Proceed with operation (y|n)? y

이러한 방법을 통해 차이점을 확인할 수 있습니다. 방법 2는 규칙을 삭제하기 전에 사용자 확인을 요청하지만 방법 1은 그렇지 않습니다.

규칙을 재설정하는 방법

어떤 상황에서는 모든 규칙을 삭제/재설정해야 할 수도 있습니다. 입력하시면 됩니다.

sudo ufw reset

Resetting all rules to installed defaults. Proceed with operation (y|n)? y

y”를 누르면 ufw는 ufw를 재설정하기 전에 기존 규칙을 모두 백업합니다. 규칙을 재설정하면 방화벽도 비활성화됩니다. 사용하려면 다시 활성화해야 합니다.

고급 기능

위에서 언급했듯이 ufw 방화벽은 iptables가 할 수 있는 모든 것을 할 수 있습니다. 이는 iptables-restore 적절한 텍스트 파일에 불과한 다양한 규칙 파일 세트를 사용하여 수행됩니다. ufw를 미세 조정하거나 ufw 명령을 통해 허용되지 않는 추가 iptables 명령을 배치하는 것은 여러 텍스트 파일을 편집하는 문제입니다.

  1. /etc/default/ufw: 기본 정책, IPv6 지원 및 커널 모듈에 대한 기본 구성입니다.
  2. /etc/ufw/before[6].rules: 이 파일의 규칙은 ufw 명령을 통해 규칙이 추가되기 전에 계산됩니다.
  3. /etc/ufw/after[6].rules: 이 파일의 규칙은 ufw 명령을 통해 규칙이 추가된 후에 계산됩니다.
  4. /etc/ufw/sysctl.conf: 커널 네트워크 조정 가능 항목.
  5. /etc/ufw/ufw.conf: 부팅 시 ufw를 활성화할지 여부를 설정하고 LOGLEVEL을 설정합니다.

결론

iptables의 프런트엔드인 UFW는 확실히 사용자에게 쉬운 인터페이스를 제공합니다. 사용자는 복잡한 iptables 구문을 기억할 필요가 없습니다. UFW는 '일반 영어'를 매개변수로 사용합니다.

허용, 거부, 재설정이 그 중 하나입니다. 나는 더 많은 iptables 프런트엔드가 있다고 믿습니다. 그러나 확실히 ufw는 방화벽을 빠르고 쉽고 안전하게 설정하려는 사용자에게 최고의 대안 중 하나입니다. 자세한 내용을 보려면 man ufw를 입력하여 ufw 매뉴얼 페이지를 방문하세요.