MongoDB®를 시작하는 것은 쉽습니다. 그러나 지속적으로 등장하는 새로운 기능으로 인해 몇 가지 문제가 발생할 수 있습니다. 이러한 우려 사항 중 하나는 이 블로그의 초점인 보안입니다.
소개
MongoDB 애플리케이션으로 보안을 유지하는 것은 데이터베이스 애플리케이션에 매우 중요합니다. 위협으로부터 데이터베이스를 보호하려면 루프 구멍을 식별하고 데이터베이스 또는 애플리케이션 보안의 유형과 방법을 알아야 합니다. 보안 기술 구현 가이드를 엄격히 준수 (STIG)는 MongoDB를 크게 보호하는 데 도움이 됩니다. 수시로 감사하면 시스템이나 데이터베이스의 주요 결함을 식별하는 데 도움이 되므로 다양한 위협으로부터 시스템이나 데이터베이스를 보호할 수 있습니다.
이 블로그에서는 MongoDB를 안전하게 보호하기 위한 10가지 팁을 다룹니다.
팁 1:항상 인증 사용
인증을 활성화하는 것은 MongoDB를 보호하는 좋은 방법이자 가장 간단한 방법입니다. 때로는 활성화된 가장 간단한 보안 기능이 시스템을 최대한 보호할 수 있으므로 수백만 달러의 비용이 들 수 있는 데이터 유출로부터 조직을 구할 수 있음을 기억하십시오.
mongod.conf
에 다음 줄을 추가합니다. MongoDB에서 인증을 활성화하기 위한 구성 파일:
Security:
Authentication: on
다음 이미지는 DB 수준 보안을 보여줍니다.
이미지 출처:https://www.slideshare.net
팁 2:복잡한 비밀번호 사용
이 팁은 그냥 상식입니다. 대부분의 경우 응용 프로그램이나 데이터베이스에 사용되는 가장 기본적이고 간단한 암호는 12345
입니다. 또는 ABC123
. 그러나 이러한 단순 비밀번호는 시스템을 해킹하고 귀중한 데이터를 훔치기 위해 선택하는 무기입니다.
MongoDB는 비밀번호에 대한 잠금 옵션을 제공하지 않기 때문에 해커가 가장 간단한 비밀번호를 시도하여 데이터베이스나 애플리케이션에 침투하는 몇 분 안에 크랙을 시도하기 쉽습니다.
팁 3:역할별로 사용자 권한 부여
MongoDB는 기본적으로 액세스 제어를 활성화하지 않습니다. --auth
키워드를 사용하여 인증을 활성화할 수 있습니다. MongoDB 쉘을 초기화할 때.
모든 사람이 데이터베이스를 관리해야 하는 것은 아닙니다. 데이터베이스에 인증이 활성화되어 있더라도 모든 사람에게 관리 권한을 부여하지 마십시오. 대신 사용자에게 권한을 부여하는 역할을 항상 생성하는 것이 가장 좋습니다.
특정 사용자 역할을 설정하면 각 사용자의 복잡성이 줄어들고 나중에 재난을 초래할 계정 침해 위험이 크게 줄어듭니다.
역할이 있는 사용자를 만들려면 다음 명령을 실행하세요.
db.createUser({user:"admin", pwd:"X1eL#pM0C12", roles:[{role:"userAdminAnyDatabase", db:"admin"]})
팁 4:복제 키 파일 추가
복제 키 파일을 활성화하면 MongoDB에서 자동으로 인증이 활성화됩니다. 이 기능을 활성화하면 이 파일이 설치된 호스트만 복제본 세트에 참여할 수 있습니다.
활성화된 복제 키 파일은 추가 보호 계층을 제공하는 MongoDB의 데이터 암호화도 보장합니다. 선택한 방법을 사용하여 키 파일을 생성하고 키 파일을 복제 세트 구성원에 복사한 다음 액세스 제어가 활성화된 복제 세트를 시작할 수 있습니다.
mongod.conf
에 다음 행을 추가하십시오. 복제 키 파일을 활성화하려면:
Security:
KeyFile: <Path to KeyFile>
다음 이미지는 키 파일 인증을 보여줍니다.
이미지 출처:https://www.slideshare.net
팁 5:기본 포트를 사용하지 마세요
기본 포트를 사용하여 MongoDB 인스턴스에 연결하지 마십시오. 대부분의 경우 해커는 공격하기 전에 기본 또는 표준 포트 번호만 검사합니다. MongoDB가 사용하는 기본 포트 중 일부는 27017
입니다. , 27018
, 27019
,2700X
등이 있습니다.
mongod.conf
에서 기본 포트 번호를 변경하는 것은 쉽습니다. .
팁 6:좋은 백업 접근 방식을 취하세요
공격이 발생한 순간부터 작업 로그(oplog)가 특정 시점(PIT) 복구에 대비할 수 있도록 항상 최신 데이터 복사본을 가지고 있는지 확인하십시오.
모든 종류의 공격에 대한 완벽한 재해 복구 설정으로 대비하십시오.
팁 7:데이터베이스에 대한 공개 액세스 비활성화
애플리케이션을 검토하여 데이터베이스에 대한 외부 계정 액세스가 필요한지 확인하십시오. 이러한 계정이 있으면 인증 및 암호화를 사용하도록 설정합니다.
mongod.conf
에서 호스트 인터넷 프로토콜(IP) 주소를 바인딩하여 공개 액세스를 비활성화할 수도 있습니다. .
팁 8:운영 체제 수준에서 방화벽 규칙 활성화 및 VPN 사용
방화벽은 네트워크를 통해 시스템에 대한 액세스를 필터링하고 제어하는 추가 보안 계층을 제공합니다. MongoDB 서버에서 클라우드 호스팅의 호스트 보안 그룹에 대한 방화벽 규칙을 활성화합니다.
항상 신뢰할 수 있는 소스에만 mongod 인스턴스에 대한 액세스 권한을 부여해야 합니다.클라우드 호스팅을 보다 안전하게 만들려면 서버의 IP 주소 또는 포트 범위를 차단하십시오.
VPN을 사용하여 다양한 수준의 암호화, 여러 수준의 인증 및 모든 클라이언트에 대한 권한 부여를 위해 데이터베이스 시스템에 대한 인증된 액세스를 제공하십시오.
팁 9:보안 문제에 대해 데이터베이스 시스템을 정기적으로 감사
데이터베이스 또는 호스트 시스템을 정기적으로 감사하여 위반 사항이 있는지 또는 역할 및 권한을 기반으로 사용자 계정에 필요한 권한 이외의 상승된 권한이 부여되었는지 확인하십시오.
테스트 목적으로 상승된 권한이 부여된 경우 시스템을 다시 보호하기 위해 권한을 취소해야 합니다.
팁 10:외부에서 데이터베이스 액세스 확인 및 테스트
귀하 또는 귀하의 팀은 침투 테스트 또는 SQL 주입을 사용하여 시스템을 악용하는지 확인하여 보안 문제에 대해 데이터베이스 시스템을 테스트해야 합니다. 외부 세계에서 데이터베이스로 노출되는 것이 없는지 확인하십시오.
nmap, telnet 등과 같은 많은 도구를 해당 테스트에 사용할 수 있습니다.
결론
이 블로그는 dailyMongoDB 관리를 위한 몇 가지 기본 보안 사례를 구성하는 데 도움이 됩니다. 이 팁과 설명된 도구를 사용하여 MongoDB 데이터베이스 애플리케이션을 보호하십시오.
mongo 셸을 사용하는 대신 MongoDB 모니터링 서비스(MMS)를 사용하여 대부분의 보안 관련 기능을 모니터링하고 구성할 수도 있습니다.
피드백 탭을 사용하여 의견을 남기거나 질문하십시오.
인증된 데이터베이스 관리자 및 데이터베이스 서비스에 대해 자세히 알아보십시오.