열어야 할 포트와 막아야 할 포트, 서버 방화벽 기본 이해하기

작성자

카테고리:

서버를 운영하다 보면 방화벽, 포트, SSH, HTTP, HTTPS 같은 용어를 자주 접하게 됩니다.

웹사이트를 정상적으로 운영하려면 외부 사용자가 서버에 접속할 수 있어야 하지만 모든 연결을 무조건 허용하는 것은 보안상 바람직하지 않습니다.

필요한 연결은 허용하고 필요하지 않은 접근은 제한하는 역할을 하는 것이 서버 방화벽입니다.

방화벽을 이해하려면 먼저 포트가 무엇인지 알아두는 것이 좋습니다.

서버 방화벽이란 무엇일까?

방화벽은 서버로 들어오거나 서버에서 나가는 네트워크 통신을 일정한 규칙에 따라 허용하거나 차단하는 보안 기능입니다.

쉽게 말하면 서버의 출입문을 관리하는 경비원과 비슷합니다.

어떤 연결은 통과시키고 어떤 연결은 막을 것인지 미리 정해둔 규칙에 따라 네트워크 요청을 처리합니다.

서버를 인터넷에 연결하면 다양한 외부 요청이 들어올 수 있기 때문에 필요한 서비스만 접근할 수 있도록 관리하는 것이 중요합니다.

포트란 무엇일까?

IP 주소가 인터넷에서 서버의 위치를 찾기 위한 주소라면 포트는 해당 서버에서 어떤 서비스로 연결할지를 구분하는 번호라고 생각하면 이해하기 쉽습니다.

하나의 서버에서는 웹사이트뿐 아니라 SSH, 데이터베이스, 이메일 등 여러 서비스가 동시에 실행될 수 있습니다.

이러한 서비스를 구분하기 위해 포트 번호가 사용됩니다.

포트 번호는 0번부터 65535번까지 사용할 수 있으며 서비스에 따라 일반적으로 사용되는 번호가 있습니다.

웹사이트에서 자주 보는 80번과 443번

웹서버를 운영할 때 자주 접하게 되는 포트가 80번과 443번입니다.

80번 포트는 일반적인 HTTP 웹 통신에 사용됩니다.

443번 포트는 HTTPS 통신에 사용됩니다.

HTTPS는 SSL/TLS를 이용해 브라우저와 서버 사이의 통신을 암호화합니다.

따라서 일반적인 웹사이트를 운영한다면 80번과 443번 포트를 접할 가능성이 높습니다.

SSH에서 사용하는 22번 포트

리눅스 서버를 원격으로 관리할 때 많이 사용하는 SSH의 기본 포트는 22번입니다.

SSH를 이용하면 자신의 컴퓨터에서 원격 서버에 접속해 명령어를 실행하고 서버를 관리할 수 있습니다.

인터넷에 연결된 서버에서 SSH를 사용한다면 외부에서 로그인 시도가 발생할 수도 있기 때문에 계정과 인증 방법을 안전하게 관리해야 합니다.

SSH 키 인증을 사용하거나 서버 환경에 따라 접근 가능한 IP를 제한하는 방법 등을 고려할 수 있습니다.

데이터베이스 포트도 주의해야 한다

웹사이트에서는 MySQL이나 MariaDB 같은 데이터베이스를 사용하는 경우가 많습니다.

MySQL과 MariaDB에서는 일반적으로 3306번 포트를 사용합니다.

하지만 웹서버와 데이터베이스가 같은 서버에 있다면 외부 인터넷에서 데이터베이스 포트에 직접 접근할 필요가 없는 구성도 많습니다.

사용하지 않는 서비스를 외부에 불필요하게 공개하면 공격 대상이 늘어날 수 있기 때문에 실제 서버 구성에 맞게 필요한 접근만 허용하는 것이 중요합니다.

모든 포트를 열어두면 왜 위험할까?

서버에 설치된 프로그램 중에는 외부에서 직접 접속할 필요가 없는 서비스도 있습니다.

그런데 모든 포트를 외부에 공개하면 사용하지 않는 서비스까지 인터넷에서 접근할 가능성이 생깁니다.

프로그램에 보안 취약점이 있거나 설정이 잘못되어 있다면 문제가 발생할 가능성도 커질 수 있습니다.

그래서 서버 방화벽은 기본적으로 필요한 서비스만 허용하는 방식으로 구성하는 것이 중요합니다.

방화벽 규칙은 어떻게 작동할까?

방화벽에서는 어떤 통신을 허용하고 어떤 통신을 차단할지 규칙을 설정합니다.

예를 들어 웹사이트를 운영하는 서버라면 HTTP와 HTTPS 접속을 허용할 수 있습니다.

서버 관리가 필요하다면 SSH 접속도 필요한 범위에서 허용할 수 있습니다.

반대로 사용하지 않는 서비스에 대한 외부 연결은 제한할 수 있습니다.

이처럼 서버의 용도에 맞게 허용할 연결을 정하는 것이 방화벽 설정의 기본입니다.

리눅스 서버에서 사용하는 UFW

Ubuntu 같은 리눅스 환경에서는 UFW라는 방화벽 관리 도구를 사용할 수 있습니다.

UFW는 Uncomplicated Firewall의 약자로 복잡한 방화벽 설정을 비교적 간단한 명령어로 관리할 수 있도록 도와줍니다.

현재 상태를 확인할 때는 다음과 같은 명령어를 사용할 수 있습니다.

sudo ufw status

특정 포트를 허용하는 명령은 다음과 같은 형태입니다.

sudo ufw allow 80

HTTPS에 사용되는 443번 포트를 허용한다면 다음과 같이 설정할 수 있습니다.

sudo ufw allow 443

다만 실제 서버에서 명령을 실행하기 전에는 현재 사용 중인 서비스와 접속 방법을 먼저 확인해야 합니다.

SSH 사용 중에는 특히 조심해야 한다

원격으로 SSH에 접속한 상태에서 방화벽을 설정할 때는 주의해야 합니다.

SSH 연결에 필요한 포트를 허용하지 않은 상태에서 방화벽을 활성화하면 현재 연결이 끊긴 뒤 서버에 다시 접속하지 못하는 상황이 발생할 수 있습니다.

따라서 원격 서버의 방화벽을 변경하기 전에는 SSH가 사용하는 포트와 현재 허용 규칙을 먼저 확인하는 것이 중요합니다.

클라우드 서버에는 방화벽이 하나만 있는 것이 아닐 수 있다

AWS나 여러 클라우드 및 VPS 서비스를 사용하다 보면 운영체제 내부의 방화벽 외에도 서비스 업체에서 제공하는 네트워크 보안 기능이 있을 수 있습니다.

따라서 리눅스 방화벽에서 포트를 허용했는데도 외부에서 접속되지 않는다면 클라우드 서비스의 네트워크 규칙도 확인할 필요가 있습니다.

반대로 클라우드 서비스에서 포트를 허용했다고 해서 서버 내부의 방화벽 설정까지 자동으로 변경되는 것은 아닐 수 있습니다.

두 설정을 함께 확인해야 하는 환경도 있다는 뜻입니다.

포트가 열려 있다는 것은 무슨 뜻일까?

포트가 열려 있다는 표현은 해당 포트를 통해 연결을 받을 수 있는 상태를 의미할 때 사용합니다.

하지만 방화벽에서 포트를 허용했다고 해서 반드시 해당 서비스가 정상적으로 작동하고 있다는 뜻은 아닙니다.

예를 들어 80번 포트를 허용했더라도 실제 웹서버 프로그램이 실행되고 있지 않다면 웹사이트가 정상적으로 표시되지 않을 수 있습니다.

따라서 접속 문제가 발생하면 방화벽뿐 아니라 해당 서비스가 실행 중인지도 함께 확인해야 합니다.

사용하지 않는 서비스는 정리하자

서버에 여러 프로그램을 설치하다 보면 현재 사용하지 않는 서비스가 계속 실행되고 있을 수 있습니다.

사용하지 않는 서비스라면 외부 접근을 제한하는 것뿐 아니라 실제로 서비스가 필요한지 확인해보는 것이 좋습니다.

불필요한 프로그램과 서비스를 줄이면 서버 관리도 단순해지고 보안 점검 범위도 줄일 수 있습니다.

방화벽만 설정하면 서버가 안전할까?

방화벽은 서버 보안에서 중요한 부분이지만 방화벽 하나만으로 모든 보안 문제가 해결되는 것은 아닙니다.

운영체제와 프로그램을 최신 상태로 유지하고 관리자 계정을 안전하게 관리해야 합니다.

강력한 인증 방법을 사용하고 불필요한 프로그램을 제거하는 것도 중요합니다.

웹사이트를 운영한다면 워드프레스나 플러그인, 테마 등의 업데이트도 관리해야 합니다.

서버 백업 역시 보안 사고나 시스템 장애에 대비하기 위한 중요한 준비입니다.

처음에는 필요한 포트부터 이해하자

서버 방화벽을 처음 접하면 복잡한 규칙과 명령어를 모두 외워야 할 것처럼 느껴질 수 있습니다.

하지만 먼저 자신이 운영하는 서버에서 어떤 서비스가 필요한지 파악하는 것부터 시작하면 됩니다.

웹사이트를 운영한다면 HTTP와 HTTPS가 왜 필요한지, 서버를 원격으로 관리한다면 SSH가 어떤 포트를 사용하는지 이해하는 식입니다.

그다음 실제로 사용하지 않는 서비스가 외부에 공개되어 있지는 않은지 확인할 수 있습니다.

서버 보안은 필요한 연결만 허용하는 것부터 시작한다

서버 방화벽의 기본 목적은 모든 연결을 막는 것이 아니라 필요한 통신은 허용하면서 불필요한 접근을 제한하는 것입니다.

IP 주소가 서버의 위치를 나타낸다면 포트는 서버 안에서 어떤 서비스와 통신할지를 구분하는 번호라고 이해하면 쉽습니다.

80번과 443번은 웹서비스, 22번은 SSH와 같이 자주 사용되는 포트의 역할부터 알아두면 방화벽 설정을 이해하는 데 도움이 됩니다.

서버를 직접 운영한다면 무작정 여러 포트를 열기보다 현재 어떤 서비스가 실행되고 있으며 외부에서 접근할 필요가 있는지를 먼저 확인하는 습관이 중요합니다.

이 기본 원리를 이해하면 이후 VPS나 클라우드 서버를 운영할 때 방화벽 설정과 네트워크 보안을 훨씬 쉽게 이해할 수 있습니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다