1. **기본 인증 설정 부족**
MongoDB는 기본적으로 인증 기능이 비활성화되어 있습니다. 이는 데이터베이스가 외부에 노출될 때 심각한 보안 위험을 초래할 수 있습니다. 적절한 인증을 활성화하지 않으면 누구나 데이터베이스에 액세스할 수 있게 됩니다.
```bash
# 몽고DB 인증 활성화
mongod --auth --dbpath /var/lib/mongodb
```
*예시: 인증이 설정되지 않은 몽고DB 서버에 외부 사용자가 쉽게 접근하여 데이터베이스를 조회하거나 수정할 수 있음.*
2. **잘못된 네트워크 설정**
기본적으로 MongoDB는 모든 인터페이스에 바인딩(bind)되도록 설정되어 있습니다. 이 설정은 의도치 않은 노출을 유발할 수 있습니다. 몽고DB는 외부 네트워크에 직접 노출되지 않도록 적절한 네트워크 설정이 필요합니다.
```yaml
# /etc/mongod.conf 파일 설정 예시
net:
bindIp: 127.0.0.1
```
*예시: 비정상적인 네트워크 설정으로 인해 외부 해커가 데이터베이스에 원격으로 액세스할 수 있음.*
3. **데이터 암호화 미사용**
MongoDB는 전송 중인 데이터를 암호화하는 SSL/TLS를 지원합니다. 그러나 이를 사용하지 않을 경우 데이터는 네트워크를 통해 평문으로 전송되며, 중간자 공격의 위험이 있습니다.
```yaml
# /etc/mongod.conf 파일 내 SSL 설정 예시
net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
```
*예시: TLS가 설정되지 않으면 중간자 공격자가 두 노드 사이의 트래픽을 엿볼 수 있음.*
4. **불필요한 디버그 정보 노출**
MongoDB 인스턴스가 디버그 모드로 실행될 경우 불필요한 정보가 로그로 노출될 수 있습니다. 이러한 정보는 공격자가 시스템을 이해하고 공격하는 데 사용될 수 있습니다.
```yaml
# 기본 로그 수준 설정으로 변경
systemLog:
verbosity: 0
```
*예시: 디버그 로그를 통해 서버의 구조 및 경로를 파악한 후, 권한 없는 접근을 시도하는 공격자의 행위.*
위와 같은 몽고DB 보안 취약점들은 간단한 설정 변경을 통해 쉽게 해결할 수 있습니다. 데이터베이스 보안을 강화하려면 항상 최신 권장 보안 프랙티스를 따르는 것이 중요합니다.