블로그로 돌아가기

Ubuntu 18.04에서 UFW로 방화벽 구성하기

Ubuntu 18.04에서 UFW로 방화벽 구성하기

하나의 firewall은 시스템 보안의 핵심 구성 요소 중 하나입니다. 네트워크를 통한 들어오고 나가는 연결을 관리하는 역할을 합니다. 이는 서버와 데이터를 보호하는 최전선 방어선입니다. 그렇기 때문에 잘 구성된 방화벽을 갖추는 것이 가장 중요합니다. 이 가이드에서는 Ubuntu 18.04에서 UFW로 방화벽을 설정하는 단계를 안내해 드립니다.

Ubuntu에서의 UFW

용어 UFW는 “Uncomplicated Firewall”의 약자입니다. Ubuntu에 기본적으로 사전 설치되어 제공되는 기본 방화벽 프로그램입니다. UFW는 실제로는 iptables의 인터페이스입니다. UFW의 목표는 방화벽 구성 및 관리를 더 쉽게 만드는 것입니다. iptables 자체는 견고하고 유연한 옵션이지만 초보자에게는 친숙하지 않습니다. UFW는 초보자와 숙련된 사용자 모두가 더 쉽게 사용할 수 있도록 해줍니다.

먼저, 기본적인 UFW 기능에 익숙해지는 데 도움이 되는 포괄적인 가이드를 살펴보세요. 또한 Ubuntu 서버를 설치하기 위한 이 가이드를 따를 수도 있습니다. 이제 시작해 보겠습니다!

우선, 어떤 이유로든 UFW가 설치되어 있지 않다면 즉시 설치하세요:

UFW 구성하기

  • IPv6 사용하기

현재로서는 IPv4가 여전히 지배적입니다. 이를 염두에 두고 이 가이드의 대부분도 IPv4를 다룹니다. 다행히도 UFW는 IPv6에 대한 지원도 제공합니다. UFW 구성 파일에서 이 기능을 활성화하기만 하면 됩니다.

먼저 텍스트 편집기에서 UFW 구성 파일을 엽니다. 변경 사항을 저장하려면 텍스트 편집기를 sudo 권한으로 실행해야 합니다:

“IPV6”를 찾아 “yes”로 설정되어 있는지 확인합니다.

  • 기본 정책

방화벽을 처음 다루는 경우, 먼저 기본 정책을 정의하는 것이 좋습니다. 이 규칙들은 명시적인 규칙과 일치하지 않는 트래픽이 제어되는 방식을 결정합니다. 기본적으로 UFW는 들어오는 모든 연결은 거부하고 나가는 모든 연결은 허용하도록 구성되어 있습니다. 이는 서버에서 실행 중인 애플리케이션이 외부로 연결할 수는 있지만, 아무도 서버에 접속할 수 없음을 정의합니다.

다음 명령은 UFW의 기본 동작을 재정의합니다. 이전에 수정된 적이 있다면 UFW 동작이 변경되므로 주의하세요:

개인용 컴퓨터의 경우 이러한 방화벽 규칙만으로도 충분할 수 있습니다. 하지만 서버는 보안을 적절히 강화하기 위해 더 많은 설정이 필요합니다.

SSH 연결 허용하기

현재 UFW가 구성된 방식으로는 들어오는 모든 연결을 거부합니다. 원격 서버의 경우 이는 불가능한 상황입니다. 서버에 접속할 수 없으면 아무것도 할 수 없기 때문입니다. 이 문제를 방지하기 위해 UFW가 들어오는 SSH 또는 HTTP 연결을 허용하도록 구성할 수 있습니다.

서버에 대한 SSH 연결을 허용하려면 다음 명령을 실행합니다. 이는 기본적으로 UFW에 포트 22번의 모든 연결을 허용하도록 지시합니다. 이 포트는 SSH 데몬이 기본적으로 수신 대기하는 포트입니다:

이 명령 대신 포트 22번으로의 연결 허용을 직접 구성할 수도 있습니다. 이 포트는 다음 파일에 정의되어 있습니다: /etc/services 파일:

포트 22번은 SSH 데몬의 기본 포트이기 때문에 공격에 취약할 수 있습니다. 만약 SSH 서버가 다른 포트에서 수신 대기하도록 구성되어 있다면 어떻게 해야 할까요? 이러한 상황에서는 UFW가 해당 포트로의 연결을 허용해야 합니다. SSH 서버가 포트 1234번에서 수신 대기하고 있다고 가정하면 다음 명령을 사용합니다:

UFW 활성화하기

UFW 규칙이 수립되었더라도 UFW가 활성화되지 않으면 아무런 동작도 하지 않습니다. 기본적으로 UFW는 비활성화되어 있으므로, 규칙을 선언했더라도 이를 적용하지 않습니다. UFW를 활성화하려면 다음 명령을 실행하세요:

UFW는 기존 SSH 연결이 중단될 수 있다는 경고 메시지를 표시할 수 있습니다. SSH 연결을 허용하도록 이미 구성했기 때문에 UFW를 활성화해도 연결이 중단되지 않습니다. 설정된 규칙을 확인하려면 다음 명령을 실행하세요:

다양한 연결 허용하기

이 시점에서 안정적인 환경을 유지하려면 UFW에 다른 규칙들을 추가로 설정해야 합니다. 허용할 연결은 사용자의 구체적인 필요에 따라 다릅니다. 서비스 이름이나 포트 번호를 기반으로 연결을 허용하도록 UFW에 지시하는 방법은 이미 설명했습니다.

다음은 일반적으로 열어두는 몇 가지 다른 포트입니다:

  • SSH (22번 포트): SSH 연결을 위해 구성된 기본 포트입니다.
  • HTTP (80번 포트): 암호화되지 않은 웹 서버가 사용하는 기본 포트입니다.
  • HTTPS (443번 포트): 암호화된 웹 서버가 사용하는 기본 포트입니다.

To enable SSH connections, run either of the following commands:

다음으로, HTTP 연결을 활성화하려면 다음 명령 중 하나를 실행합니다:

HTTPS 연결을 활성화하려면 다음 명령 중 하나를 실행합니다:

포트 범위

지금까지는 특정 포트를 허용하는 방법을 설명했습니다. 만약 포트 범위가 필요하다면 어떻게 해야 할까요? UFW에 각 포트를 개별적으로 선언하는 것은 매우 비효율적입니다. 일부 애플리케이션은 여러 포트를 사용합니다. 다행히도 UFW는 포트 범위를 선언할 수 있도록 지원합니다. 그렇게 하려면 다음 명령 구조를 사용하십시오:

다음 예시는 다음 포트를 사용하는 X11 연결을 활성화합니다: 6000 ~ 6007:

가능하면 프로토콜을 선언하는 것이 좋습니다. 하지만 대부분의 경우 선언하지 않아도 문제없이 잘 작동합니다.

특정 IP 주소

UFW를 사용할 때 특정 IP 주소별로 연결을 필터링할 수도 있습니다. 기본적으로 UFW는 모든 IP 주소로부터의 연결을 차단합니다. 특정 IP 주소로부터의 연결을 허용하도록 선언할 수 있습니다. IP 주소로부터의 연결을 허용하려면 다음 명령 구조를 사용하십시오:

해당 IP 주소가 연결할 수 있도록 허용된 특정 포트를 선언할 수도 있습니다. 그렇게 하려면 명령에 to any port 뒤에 포트 번호를 추가하십시오:

서브넷

IP 주소의 서브넷을 허용해야 하는 경우 CIDR 표기법을 사용하여 허용할 수 있습니다. 이 예시에서 UFW는 다음 범위의 IP 주소로부터의 연결을 허용합니다: 203.0.113.1 ~ 203.0.113.254:

이전 단계와 마찬가지로, 이 IP 주소들이 연결할 수 있는 포트를 지정할 수도 있습니다:

특정 네트워크 인터페이스에 연결하기

서버 환경에서는 시스템에 여러 네트워크 인터페이스가 연결되어 있을 수 있습니다. UFW를 사용하면 특정 규칙이 특정 네트워크 인터페이스에만 적용되도록 지정할 수 있습니다. 먼저 서버에 연결된 모든 네트워크 인터페이스를 확인합니다. 대상 네트워크 인터페이스의 이름이 주요 관심사입니다:

 firewall with UFW on Ubuntu 18.04. 4

저희의 경우, 공인 인터넷에 연결되는 네트워크 인터페이스는 ens3 하나뿐입니다. 이 네트워크 인터페이스로부터의 인바운드 연결을 허용하려면 다음 명령 구조를 사용하십시오:

네트워크 인터페이스를 통해 들어오는 트래픽이 도달할 수 있는 포트를 정의할 수도 있습니다:

연결 거부

기본 설정에 따라 UFW는 (선언된 예외를 제외한) 모든 소스로부터의 연결을 거부합니다. 이는 UFW를 사용하는 권장 방법입니다. 그러나 특정 소스 IP 주소 또는 서브넷으로부터의 특정 연결을 차단해야 할 수도 있습니다. UFW의 기본 동작이 모든 연결을 허용하도록 설정되어 있을 수도 있습니다(권장하지 않음).

특정 IP 주소로부터의 연결을 거부하려면 UFW에 거부(deny) 규칙이 필요합니다. 거부 규칙을 작성하는 것은 매우 간단합니다. 아무 허용(allow) 규칙이나 가져와서 “allow”라는 단어를 “deny”로 바꾸면 끝입니다! 거부 규칙이 됩니다.

다음 예시를 살펴보십시오. 모든 HTTP 연결을 거부하려면 다음 거부 규칙을 사용하십시오.

다음으로부터의 연결을 거부하려면 203.0.113.1, 다음 거부 규칙을 사용하십시오:

규칙 삭제

지금까지 배운 것은 규칙을 생성하는 방법뿐입니다. 규칙이 생성되는 것과 마찬가지로 삭제할 수도 있습니다. UFW의 경우, 규칙을 삭제하는 두 가지 구체적인 방법이 있습니다.

  • 규칙 번호로 규칙 삭제하기

이것은 UFW 규칙을 삭제하는 가장 간단한 방법입니다. UFW의 각 규칙에는 규칙 번호가 있습니다. 다음 명령은 모든 UFW 규칙을 규칙 번호와 함께 출력합니다.

 firewall with UFW on Ubuntu 18.04. 3

다음 명령은 규칙 번호로 지정된 규칙을 삭제합니다.

  • 실제 규칙으로 규칙 삭제하기

이것은 규칙을 삭제하는 더 어려운 방법입니다. 삭제할 실제 규칙을 수동으로 지정해야 합니다. 다음 예시에서 UFW는 다음으로 지정된 규칙을 삭제합니다: allow http:

규칙은 다음과 같이 지정될 수도 있습니다: allow 80. 이 경우, 다음 명령이 해당 규칙을 삭제합니다:

규칙을 삭제하면 IPv4와 IPv6 모두에서 삭제됩니다.

UFW 상태 및 규칙 확인

UFW가 활성화되어 있는지 여부를 확인하는 것이 중요합니다. UFW의 상태를 확인하려면 다음 명령을 실행하십시오.

 firewall with UFW on Ubuntu 18.04. 2

상태가 “inactive”(비활성)인 경우, 위의 UFW 활성화 단계를 수행하여 활성화하십시오. 활성 상태인 경우, UFW는 “active”(활성) 상태를 보고하고 모든 활성 규칙을 나열합니다.

UFW 비활성화

어떤 이유로든 UFW를 사용하지 않으려면 다음 명령을 사용하여 비활성화하십시오.

UFW가 비활성화되면 생성된 모든 규칙이 더 이상 활성화되지 않습니다. 그러나 규칙이 삭제되지는 않습니다. UFW가 다시 활성화되면 모든 규칙이 다시 활성화됩니다. 현재 UFW 설정이 엉망인 경우는 어떻게 해야 할까요? 규칙을 하나씩 삭제하는 대신, 단일 명령으로 모든 규칙을 삭제할 수 있습니다. UFW를 재설정하려면 다음 명령을 실행하십시오:

 firewall with UFW on Ubuntu 18.04. 1

이 작업은 처음에 구성된 기본 UFW 동작을 변경하지 않습니다.

결론

보안과 기능을 보장하려면 적절한 방화벽 구성이 필요합니다. 불필요한 연결은 제한하면서 필요한 인바운드 연결만 허용하도록 구성해야 합니다.

더 많은 방화벽 솔루션에 대해 알아보고 싶다면 저희 블로그에서 추가 리소스를 확인해 보십시오:

즐거운 컴퓨팅 되세요!

author

Hark Labs

작성자 · CloudSigma

Preslav Dobrev는 CloudSigma의 크리에이티브 디자이너로서, 전통적이고 혁신적인 마케팅 채널을 활용하여 일관된 비즈니스 정체성을 구축하는 데 중점을 두고 있습니다. 그는 영향력 있는 브랜드 내러티브를 창출하기 위해 예술적 비전과 전략적 마케팅을 결합하는 데 능숙합니다.

댓글

아직 댓글이 없습니다. 첫 번째로 작성해 보세요.