How to 목록

// blog post

Tailscale로 Mac mini 서버 보안 강화하기 — 포트 포워딩은 이제 그만

|
tailscalesecuritymac-minivpn

SSH 로그에 찍힌 수천 개의 로그인 시도

안녕하세요, 이프입니다.

집에 Mac mini를 개발 서버로 세팅해놓고, 외부에서 접속하려고 공유기에서 SSH 포트를 포트 포워딩했습니다. 처음엔 잘 되더라고요.

그런데 며칠 뒤 SSH 로그를 확인해보니... 모르는 IP에서 로그인 시도가 수천 건이었습니다. 봇들이 22번 포트를 끊임없이 두드리고 있었어요. 물론 SSH 키 인증만 허용해놔서 뚫리진 않았지만, 로그를 보는 것만으로도 불안하더라고요.

포트 포워딩의 문제는 이것 말고도 있었습니다.

  • ISP에 따라 CGNAT 뒤에 있으면 포트 포워딩 자체가 안 됩니다
  • 공인 IP가 바뀔 때마다 DDNS 설정을 확인해야 합니다
  • 공유기 설정을 건드려야 하는데, 모델마다 인터페이스가 달라서 번거롭습니다

Tailscale을 알게 된 뒤로 포트 포워딩은 완전히 걷어냈습니다.

Tailscale이 해결해주는 것

Tailscale은 WireGuard 기반 메시 VPN입니다. Mac mini와 스마트폰에 각각 설치하면 같은 네트워크에 있는 것처럼 접속할 수 있습니다. 포트 포워딩도, DDNS도, 방화벽 설정도 필요 없어요.

설치 및 설정

Mac mini

# Homebrew로 설치
brew install tailscale

# 데몬 시작
sudo tailscaled &

# 로그인 (--ssh로 Tailscale SSH 활성화)
tailscale up --ssh

--ssh 플래그를 쓰면 OS의 SSH 서버 설정 없이도 Tailscale 네트워크를 통해 SSH 접속이 됩니다. Mac App Store에서 GUI 앱을 설치해도 됩니다.

스마트폰

App Store나 Google Play에서 Tailscale을 설치하고 같은 계정으로 로그인하세요. 연결이 완료되면 스마트폰에도 Tailscale IP(100.x.x.x)가 할당됩니다.

접속 확인

tailscale ip -4
# 100.64.0.1 (예시)

스마트폰에서 이 IP로 SSH 접속이 되면 설정 완료입니다.

MagicDNS — IP 외울 필요 없습니다

Tailscale 관리 콘솔에서 MagicDNS를 켜면 기기 이름으로 접속할 수 있습니다.

# IP 대신 이름으로
ssh macmini

# 또는 전체 도메인
ssh macmini.tail12345.ts.net

VibeShell에서 연결을 추가할 때 호스트에 macmini을 입력하면 됩니다. IP가 바뀌어도 이름은 그대로라 재설정할 필요가 없어요. 연결 설정 방법은 연결 가이드를 참고하세요.

ACL로 접근 제어

누가 어떤 기기에 접근할 수 있는지 Tailscale ACL로 제어합니다.

{
  "acls": [
    {
      "action": "accept",
      "src": ["if@wevesolutions.co.kr"],
      "dst": ["macmini:*"]
    }
  ],
  "ssh": [
    {
      "action": "accept",
      "src": ["if@wevesolutions.co.kr"],
      "dst": ["tag:dev"],
      "users": ["macmini-user"]
    }
  ]
}

이 설정이면 제 계정에서만 Mac mini 접속이 허용됩니다.

이중 보안 — 더 꼼꼼하게

Tailscale 네트워크 자체가 인증 레이어 역할을 하지만, SSH 키 인증까지 더하면 보안이 한층 강화됩니다.

첫 번째 레이어 — Tailscale: Tailscale 계정으로 로그인한 기기만 네트워크에 접근 가능. 외부에서는 Mac mini의 존재 자체를 모릅니다.

두 번째 레이어 — SSH 키: 네트워크에 들어온 뒤에도 SSH 키가 있어야 로그인 가능. 비밀번호 인증은 꺼두세요.

# /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes

이렇게 하면 Tailscale 계정이 탈취되더라도 SSH 키 없이는 서버에 접근할 수 없습니다. 포트 포워딩으로 SSH를 열어뒀을 때와는 보안 수준이 완전히 다릅니다.

마무리

Tailscale 설치 후 달라진 점: SSH 로그에 의심스러운 접속 시도가 0건이 되었습니다. 당연하죠, 포트를 안 열었으니까요.

카페에서든, 지하철에서든, 해외에서든 Tailscale만 켜면 집 Mac mini에 바로 접속됩니다. MagicDNS로 기기 이름만 기억하면 되고, ACL로 접근을 제한하고, SSH 키로 이중 보안까지.

금융IT에서 보안을 다루던 경험이 여기서 도움이 되더라고요. 개인 개발 서버라도 보안은 꼼꼼하게 챙기시는 걸 추천합니다 😊