🔐 Rocky Linux + MariaDB 보안 하드닝 가이드

— “DB 보안은 설정이 아니라 습관이다”

데이터 유출 사고의 80%는
**취약한 기본 설정(Default Configuration)**에서 시작된다.


1️⃣ 보안 하드닝의 기본 원칙

MariaDB 보안은 DB 자체만의 문제가 아닙니다.
OS → 네트워크 → DB → 계정 → 운영 절차까지 이어지는 계층적 보안이 필요합니다.

🔑 핵심 원칙 5가지

  1. 최소 권한 원칙 (PoLP)
  2. 외부 노출 최소화
  3. 암호화 기본 적용
  4. 접근 기록 및 감사
  5. 사고를 가정한 복구 설계

2️⃣ OS(Rocky Linux) 레벨 보안 하드닝

✅ 2-1. 불필요한 서비스 제거

systemctl list-unit-files --type=service
  • DB 서버에는 웹 서버, FTP, 메일 데몬 불필요
  • 사용하지 않는 서비스는 disable 처리
systemctl disable avahi-daemon
systemctl stop avahi-daemon

✅ 2-2. SELinux 활성화 (권장)

getenforce
  • Enforcing 상태 유지 권장
  • MariaDB는 기본 정책으로 정상 동작
setsebool -P mysql_connect_any 0

mysql_connect_any=1은 보안 취약 → 반드시 0 유지


✅ 2-3. 방화벽 최소 개방

firewall-cmd --permanent --remove-service=mysql
firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="10.10.10.0/24"
port protocol="tcp" port="3306" accept'
firewall-cmd --reload

📌 특정 서버/대역만 허용
📌 % 전체 허용은 절대 금지


3️⃣ MariaDB 기본 보안 설정 (필수)

✅ 3-1. mariadb-secure-installation

mariadb-secure-installation
항목권장
root 비밀번호반드시 설정
unix_socket 인증❌ (운영 불편)
익명 사용자
root 원격 접속
test DB

✅ 3-2. root 계정 보호 전략

SELECT Host, User FROM mysql.user WHERE User='root';

권장 상태:

root | localhost

❌ 아래는 제거:

DROP USER 'root'@'%';
DROP USER 'root'@'::1';

📌 root는 로컬 관리용 계정,
📌 운영 계정은 별도로 생성


4️⃣ 계정 & 권한 하드닝 (가장 중요)

✅ 4-1. 운영 계정 분리

CREATE USER 'appuser'@'10.10.10.20'
IDENTIFIED BY 'Strong!Pass123';

GRANT SELECT, INSERT, UPDATE, DELETE
ON appdb.*
TO 'appuser'@'10.10.10.20';

🚫 GRANT ALL 금지
🚫 SUPER, FILE, PROCESS 권한 금지


✅ 4-2. 계정 감사

SELECT user, host, password_expired
FROM mysql.user;
  • 불필요 계정 즉시 제거
  • 정기 계정 점검 필수

5️⃣ 네트워크 & 통신 보안 (TLS 적용)

✅ 5-1. DB 통신 암호화 (TLS)

[mysqld]
ssl-ca=/etc/mysql/ssl/ca.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

사용자별 강제 적용:

ALTER USER 'appuser'@'10.10.10.20'
REQUIRE SSL;

📌 내부망이라도 TLS 적용 권장
📌 DB 패킷 스니핑 사고 다수 발생 사례 존재


6️⃣ 데이터 보안 (저장·백업)

✅ 6-1. 디스크 암호화

  • LUKS 또는 스토리지 암호화 적용
  • DB 데이터 디렉토리: /var/lib/mysql

✅ 6-2. 백업 파일 보호

chmod 600 *.sql
chown root:root *.sql

📌 백업 파일 유출이 가장 흔한 사고 원인


7️⃣ 감사(Audit) 및 로그 설정

✅ 7-1. 쿼리 로그 (선별적 사용)

[mysqld]
log_error=/var/log/mariadb/error.log
slow_query_log=ON
slow_query_log_file=/var/log/mariadb/slow.log
long_query_time=2

✅ 7-2. MariaDB Audit Plugin (권장)

INSTALL SONAME 'server_audit';
[mysqld]
server_audit_logging=ON
server_audit_events=CONNECT,QUERY
server_audit_file_path=/var/log/mariadb/audit.log

📌 누가 언제 접속했는지 반드시 기록


8️⃣ 설정 파일 보안

chmod 640 /etc/my.cnf
chown root:mysql /etc/my.cnf
  • 일반 사용자 읽기 금지
  • 비밀번호 포함 금지

🔐 .my.cnf 활용

[client]
user=backup
password=********
chmod 600 ~/.my.cnf

9️⃣ 장애·침해 대응 관점 보안

✅ 9-1. 백업 + DR 필수

  • 일일 백업 + 주간 Full
  • 오프사이트(외부 스토리지) 보관
  • Proxmox, Vembu, S3 등 활용

✅ 9-2. 랜섬웨어 대비

  • 백업 스토리지 Immutable 설정
  • DB 서버 → 백업 서버 단방향 통신

1️⃣0️⃣ 운영 체크리스트 (요약)

구분체크
OS 방화벽IP 제한
root 원격차단
계정 권한최소화
SSL적용
로그활성화
백업암호화
감사기록 유지
설정 파일권한 제한

✅ 결론

Rocky Linux + MariaDB는
보안 하드닝만 제대로 하면 엔터프라이즈급 DB 플랫폼이 됩니다.

“DB 보안은 해킹을 막는 것이 아니라
사고를 통제 가능한 수준으로 낮추는 것이다.”


2930 Blog에서 더 알아보기

구독을 신청하면 최신 게시물을 이메일로 받아볼 수 있습니다.