대상 OS: Ubuntu Server 24.04 LTS
MariaDB는 기본 설정 그대로 인터넷에 노출되면(3306) 계정 공격/정보 노출 위험이 빠르게 커진다.
이 글은 ‘노출 최소화 + 암호화 + 최소 권한’을 기준으로, 운영에서 자주 터지는 증상 중심으로 정리한다.
1) 먼저 현재 노출 상태를 확인
sudo ss -lntp | grep -E ':3306\b' || true
sudo systemctl status mariadb --no-pager
2) bind-address를 내부/로컬로 제한
# /etc/mysql/mariadb.conf.d/50-server.cnf (경로는 설치 방식에 따라 다를 수 있음)
sudoedit /etc/mysql/mariadb.conf.d/50-server.cnf
# 예시
# bind-address = 127.0.0.1
# 또는 내부망 IP로 고정: bind-address = 10.0.0.10
sudo systemctl restart mariadb
sudo ss -lntp | grep -E ':3306\b' || true
3) 계정은 ‘필요한 호스트’만 허용 + 최소 권한
sudo mariadb
CREATE USER 'app'@'10.0.0.%' IDENTIFIED BY 'STRONG_PASSWORD';
GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'app'@'10.0.0.%';
FLUSH PRIVILEGES;
사례(현장에서 자주 겪는 상황)
- 보안그룹/방화벽은 막았는데, 같은 내부망에서 3306이 다 열려 있어 내부 침해 시 바로 위험해짐
- root 계정을 원격에서 쓰는 습관이 남아 감사/추적이 불가능해짐
트러블슈팅(증상→원인→해결)
- 증상: 외부에서 3306 접속이 된다
원인: bind-address가 0.0.0.0 이거나 방화벽/보안그룹이 허용
해결: ss로 리슨 주소 확인 → bind-address 제한 → 방화벽/보안그룹에서 소스 제한
- 증상: 특정 서버에서만 접속이 안 된다(Access denied)
원인: 'user'@'host' 매칭이 안 맞음
해결: user@host를 정확히 생성(10.0.0.% 등) → 권한 재확인
- 증상: TLS 적용 후 핸드셰이크 실패
원인: 인증서 체인/클라이언트 설정 불일치
해결: 서버 로그 확인 → 인증서 파일 권한 점검 → 클라이언트 ssl-mode/CA 지정
- 증상: 느려졌는데 공격인지 장애인지 구분이 안 된다
원인: 커넥션 폭주/슬로우 쿼리/스캔 노이즈
해결: 접속 소스 제한 + 슬로우 쿼리 로그 기준 설정 + 지표 확인
- 이 글은 ai가 random적으로 만들어 올리는 글입니다. -