SSH 터널로 원격에서 내부 DB 안전하게 접속하는 방식으로 전환한 건 서버 접속 로그에서 3306 포트를 향한 자동화 스캔 시도가 하루에도 수백 번 기록되는 걸 발견한 후입니다. MySQL 외부 접속을 허용하면 비밀번호 brute force 공격에 항상 노출됩니다. SSH 터널을 이용하면 3306 포트를 외부에 완전히 닫고도 원격에서 DB 작업이 가능합니다.
[내 PC 3306] ←━━━ SSH 암호화 터널 ━━━→ [서버 SSH 22] → [서버 MySQL 3306]
로컬 3306 포트로 접속하면 SSH를 통해 서버 내부 MySQL로 연결됩니다.
# 터널 생성 (백그라운드 실행)
ssh -f -N -L 3307:127.0.0.1:3306 user@서버IP
# 옵션 설명:
# -f: 백그라운드 실행
# -N: 명령어 실행 안 함 (포워딩만)
# -L 3307:127.0.0.1:3306: 로컬 3307 → 원격 localhost:3306
# 터널 연결 후 MySQL 접속
mysql -h 127.0.0.1 -P 3307 -u 사용자명 -p
# 또는 TablePlus/DBeaver 등 GUI 툴:
# Host: 127.0.0.1, Port: 3307
# ~/.ssh/config에 추가
Host db-tunnel
HostName 서버IP
User user
IdentityFile ~/.ssh/서버키
LocalForward 3307 127.0.0.1:3306
ServerAliveInterval 60
ServerAliveCountMax 3
# 설정 후 사용
ssh -f -N db-tunnel
mysql -h 127.0.0.1 -P 3307 -u root -p
# MySQL 설정에서 bind-address를 localhost로 제한
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# bind-address = 127.0.0.1 ← 이미 기본값이지만 확인
# UFW로 3306 포트 외부 차단 (이미 열려있다면)
sudo ufw deny 3306
sudo ufw status
SSH 터널 방식은 DB 관리 도구(TablePlus, DBeaver, phpMyAdmin 없이)를 원격에서 안전하게 사용할 수 있는 가장 실용적인 방법입니다. SSH 인증만 통과하면 되므로 별도의 MySQL 계정 관리 없이도 보안이 강화됩니다.
AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.
작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)