AWS를 사용하여 DDOS 공격으로부터 홈 Minecraft 서버 보호

IP 주소를 공개하지 않고 집에서 Minecraft 서버를 실행하고 싶습니까? 당신은 할 수 있습니다! 서비스 거부 공격으로부터 서버를 보호하려면 Amazon Web Services에서 무료 프록시를 설정하기만 하면 됩니다. 방법을 알려드리겠습니다.

이 가이드는 Minecraft뿐만 아니라 모든 게임 서버에서 작동합니다. 특정 포트에서 프록시 트래픽만 하면 됩니다. Minecraft의 포트 25565를 게임 서버가 실행되는 포트로 변경하기만 하면 됩니다.

어떻게 작동합니까?

Minecraft 서버를 호스팅하고 인터넷에 공개하고 싶다고 가정해 보겠습니다. 하나를 실행하는 것은 그렇게 어렵지 않습니다. 설치가 쉽고 하나의 처리 스레드만 사용하며 심하게 개조된 서버라도 온라인에 있는 몇 명의 플레이어와 함께 2~3GB 이상의 RAM을 사용하지 않습니다. 다른 사람에게 호스팅 비용을 지불하는 대신 오래된 랩톱이나 데스크톱 컴퓨터의 백그라운드에서 서버를 쉽게 실행할 수 있습니다.

그러나 사람들이 그것에 연결하려면 IP 주소를 제공해야 합니다. 이것은 몇 가지 문제를 제시합니다. 특히 라우터에 여전히 기본 관리자 암호가 있는 경우 이는 주요 보안 위험입니다. 또한 DDOS(분산 서비스 거부) 공격에 노출되어 Minecraft 서버를 중지할 뿐만 아니라 공격이 진정될 때까지 인터넷도 차단할 수 있습니다.

사람들이 라우터에 직접 연결하도록 허용할 필요는 없습니다. 대신 Amazon Web Services에서 작은 Linux 상자를 빌릴 수 있습니다. 구글 클라우드 플랫폼, 또는 Microsoft Azure – 모두 프리 티어가 있습니다. 이 서버는 Minecraft 서버를 호스팅할 만큼 강력할 필요는 없습니다. 연결만 전달하면 됩니다. 이를 통해 자신의 IP 주소 대신 프록시 서버의 IP 주소를 제공할 수 있습니다.

누군가가 귀하의 서버에 연결하기를 원하므로 귀하의 AWS 프록시 IP 주소를 Minecraft 클라이언트에 입력한다고 가정해 보겠습니다. 패킷은 포트 25565(Minecraft의 기본 포트)에서 프록시로 전송됩니다. 프록시는 포트 25565 트래픽을 일치시키고 이를 홈 라우터로 전달하도록 구성됩니다. 이것은 배후에서 발생합니다. 연결하는 사람도 알지 못합니다.

그런 다음 실제 PC로 연결을 더 전달하려면 홈 라우터가 포트 전달되어야 합니다. PC는 서버를 실행하고 클라이언트의 패킷에 응답합니다. 다시 프록시로 전달한 다음 프록시는 패킷을 다시 작성하여 프록시가 응답하는 것처럼 보이게 합니다. 클라이언트는 이것이 일어나고 있다는 것을 모르고 단순히 프록시가 서버를 실행하는 시스템이라고 생각합니다.

홈 라우터가 컴퓨터를 보호하는 것과 같은 방식으로 서버 앞에 다른 라우터를 추가하는 것과 같습니다. 그러나 이 새로운 라우터는 Amazon Web Services에서 실행되며 모든 AWS 서비스(AWS 쉴드라고 함). 공격이 감지되면 서버를 방해하지 않고 자동으로 완화됩니다. 어떤 이유로 중지되지 않으면 언제든지 인스턴스를 끄고 집과의 연결을 끊을 수 있습니다.

프록시를 처리하기 위해 sslh라는 유틸리티를 사용합니다. 프로토콜 다중화를 위한 것입니다. 동일한 포트에서 SSH(보통 포트 22) 및 HTTPS(포트 443)를 실행하려는 경우 문제가 발생합니다. sslh는 이 문제를 해결하기 위해 앞에 앉아서 의도한 응용 프로그램으로 포트를 리디렉션합니다. 그러나 라우터와 마찬가지로 전송 계층 수준에서 이 작업을 수행합니다. 즉, Minecraft 트래픽을 일치시켜 홈 서버로 전달할 수 있습니다. sslh는 기본적으로 불투명합니다. 즉, 홈 IP 주소를 숨기기 위해 패킷을 다시 작성합니다. 이것은 누군가가 다음과 같은 것으로 냄새를 맡는 것을 불가능하게 만듭니다. 와이어샤크.

새 VPS 생성 및 연결

시작하려면 프록시 서버를 설정했습니다. 약간의 Linux 경험이 있는 경우 이 작업을 수행하는 것이 더 쉽지만 필수는 아닙니다.

로 향하다 아마존 웹 서비스 그리고 계정을 만드세요. 직불 또는 신용 카드 정보를 제공해야 하지만 이는 사람들이 중복 계정을 만드는 것을 방지하기 위한 것입니다. 생성 중인 인스턴스에 대해서는 요금이 부과되지 않습니다. 무료 등급은 1년 후에 만료되므로 사용을 마친 후에는 꺼야 합니다. 구글 클라우드 플랫폼 f1-micro 인스턴스를 사용하고 싶다면 항상 무료로 사용할 수 있습니다. Google은 또한 적절한 클라우드 서버를 실행하는 데 실제로 사용할 수 있는 1년 동안 300달러의 크레딧을 제공합니다.

AWS는 대역폭에 대해 약간의 요금을 부과합니다. 1GB를 무료로 사용할 수 있지만 그 이상에 대해서는 GB당 $0.09의 세금이 부과됩니다. 현실적으로, 당신은 아마 이것을 검토하지 않을 것이지만, 당신의 청구서에 20센트의 요금이 보인다면 그것을 주시하십시오.

계정을 만든 후 “EC2″를 검색합니다. AWS의 가상 서버 플랫폼입니다. AWS가 새 계정에 대해 EC2를 활성화할 때까지 약간 기다려야 할 수도 있습니다.

“인스턴스” 탭에서 “인스턴스 시작”을 선택하여 시작 마법사를 불러옵니다.

딸깍 하는 소리

기본 “Amazon Linux 2 AMI” 또는 “Ubuntu Server 18.04 LTS”를 OS로 선택할 수 있습니다. 다음을 클릭하면 인스턴스 유형을 선택하라는 메시지가 표시됩니다. 프리 티어 인스턴스인 t2.micro를 선택합니다. 이 인스턴스는 AWS의 프리 티어에서 연중무휴로 실행할 수 있습니다.

선택하다

“검토 및 실행”을 선택합니다. 다음 페이지에서 “Launch”를 선택하면 아래 대화 상자가 표시됩니다. “새 키 쌍 만들기”를 클릭한 다음 “키 쌍 다운로드”를 클릭합니다. 이것은 인스턴스에 대한 액세스 키이므로 잃어버리지 않도록 하십시오. 보관을 위해 문서 폴더에 보관하십시오. 다운로드가 완료되면 “Launch Instances”를 클릭합니다.

  딸깍 하는 소리

인스턴스 페이지로 돌아갑니다. 서버 주소인 인스턴스의 IPv4 공개 IP를 찾습니다. 원하는 경우 AWS 탄력적 IP(재부팅 시 변경되지 않음) 또는 다음을 사용하여 무료 도메인 이름을 설정할 수 있습니다. 점.tk, 주소를 찾기 위해 이 페이지로 계속 돌아가지 않으려면

나중을 위해 주소를 저장합니다. 먼저 인스턴스의 방화벽을 편집하여 포트 25565를 열어야 합니다. 보안 그룹 탭에서 인스턴스가 사용 중인 그룹(아마도 launch-wizard-1)을 선택한 다음 “편집”을 클릭합니다.

클릭

새 사용자 지정 TCP 규칙을 추가하고 포트 범위를 25565로 설정합니다. 소스는 “Anywhere” 또는 0.0.0.0/0으로 설정해야 합니다.

새 사용자 지정 TCP 규칙을 추가하고 포트 범위를 25565로 설정합니다. 소스는 0.0.0.0/0(또는

변경 사항과 방화벽 업데이트를 저장합니다.

이제 프록시를 설정하기 위해 SSH로 서버에 접속합니다. macOS/Linux를 사용하는 경우 터미널을 열 수 있습니다. Windows를 사용하는 경우 다음과 같은 SSH 클라이언트를 사용해야 합니다. 퍼티 또는 Linux용 Windows 하위 시스템을 설치합니다. 더 일관성이 있으므로 후자를 권장합니다.

가장 먼저 해야 할 일은 키 파일이 있는 문서 폴더로 cd하는 것입니다.

cd ~/Documents/

Linux용 Windows 하위 시스템을 사용하는 경우 C 드라이브는 /mnt/c/에 있으며 문서 폴더로 cd해야 합니다.

cd /mnt/c/Users/username/Documents/

-i 플래그를 사용하여 SSH에 키 파일을 사용하여 연결할 것임을 알립니다. 파일의 확장자는 .pem이므로 다음을 포함해야 합니다.

ssh -i keyfile.pem [email protected]

“0.0.0.0”을 IP 주소로 바꿉니다. AWS Linux가 아닌 Ubuntu 서버를 만든 경우 “ubuntu” 사용자로 연결합니다.

액세스 권한이 부여되어야 하며 명령 프롬프트가 서버 프롬프트로 변경되는 것을 확인해야 합니다.

SSLH 구성

패키지 관리자에서 sslh를 설치하려고 합니다. AWS Linux의 경우 yum이고 Ubuntu의 경우 apt-get을 사용합니다. AWS Linux에 EPEL 리포지토리를 추가해야 할 수 있습니다.

sudo yum install epel-release
sudo yum install sslh

설치가 완료되면 nano로 구성 파일을 엽니다.

nano /etc/default/sslh

RUN= 매개변수를 “yes”로 변경합니다.

ㅏ

마지막 DAEMON 줄 아래에 다음을 입력합니다.

DAEMON_OPTS="--user sslh --listen 0.0.0.0:25565 --anyprot your_ip_address:25565 --pidfile /var/run/sslh/sslh.pid

“your_ip_address”를 집 IP 주소로 바꿉니다. IP를 모르면 검색하십시오. “내 IP 주소는 무엇입니까?” 예, 심각합니다.

이 구성은 sslh 프록시가 포트 25565의 모든 네트워크 장치에서 수신하도록 합니다. Minecraft 클라이언트가 다른 것을 사용하거나 다른 게임을 플레이하는 경우 이를 다른 포트 번호로 교체하십시오. 일반적으로 sslh를 사용하면 다른 프로토콜을 일치시키고 다른 위치로 라우팅합니다. 그러나 우리의 목적을 위해 가능한 모든 트래픽을 일치시키고 your_ip_address:25565로 전달하기를 원합니다.

Control+X를 누른 다음 Y를 눌러 파일을 저장합니다. sslh를 활성화하려면 다음을 입력합니다.

sudo systemctl enable sslh
sudo systemctl start sslh

시스템에서 systemctl을 사용할 수 없는 경우 대신 서비스 명령을 사용해야 할 수 있습니다.

이제 sslh가 실행 중이어야 합니다. 홈 라우터가 포트 포워딩이고 25565 트래픽을 컴퓨터로 보내고 있는지 확인하십시오. 변경되지 않도록 컴퓨터에 고정 IP 주소를 제공할 수 있습니다.

사람들이 서버에 액세스할 수 있는지 확인하려면 프록시의 IP 주소를 온라인 상태 검사기. 프록시의 IP를 Minecraft 클라이언트에 입력하고 가입을 시도할 수도 있습니다. 작동하지 않으면 인스턴스의 보안 그룹에서 포트가 열려 있는지 확인하십시오.