기업에서 가장 가치 있는 자산은 대개 데이터베이스에 있는 고객 또는 제품 정보입니다. 따라서 이러한 기업에서 데이터베이스 관리의 중요한 부분은 외부 공격으로부터 데이터를 보호하고 소프트웨어/하드웨어 장애를 복구하는 것입니다.
대부분의 경우 소프트웨어 및 하드웨어 장애는 데이터 백업 메커니즘에 의해 처리됩니다. 대부분의 데이터베이스에는 전체 프로세스를 자동화하는 도구가 내장되어 있어 이 작업은 비교적 쉽고 오류가 없습니다. 그러나 문제는 다른 쪽에서 온다: 외래침입이 데이터베이스의 정보를 훔치거나 파괴하는 것을 방지한다. 불행히도, 일반적으로 이 문제를 해결할 수 있는 자동 도구는 없습니다. 또한 관리자가 회사 데이터의 보안을 보장하기 위해 수동으로 장애를 설정해야 합니다.
데이터베이스를 보호하지 않는 일반적인 이유는 이 작업이 "번거로움" 과 "복잡" 하기 때문입니다. 이것은 사실이지만, MySQL 을 적용한다면, 몇 가지 편리한 기능을 이용하여 당신이 직면한 위험을 현저히 줄일 수 있습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 도전명언) 다음과 같은 기능이 나열됩니다.
◆ 권한 부여 테이블에서 와일드카드를 삭제합니다.
MySQL 액세스 제어 시스템은 일련의 권한 부여 테이블을 통해 실행되어 데이터베이스, 테이블 또는 열 레벨에서 사용자의 액세스 권한을 정의합니다. 그러나 이러한 양식을 통해 관리자는 사용자에 대한 총괄 라이센스를 설정하거나 와일드카드를 적용하는 양식 세트를 설정할 수 있습니다. 이렇게 하면 제한된 계정이 시스템의 다른 부분에 액세스하는 데 사용될 수 있으므로 잠재적으로 위험할 수 있습니다. 따라서 사용자 권한을 설정할 때는 항상 사용자가 필요한 컨텐츠에만 액세스할 수 있도록 주의해야 합니다. 개별 사용자에 대한 수퍼 권한을 설정할 때는 일반 사용자가 서버의 기본 구성을 수정하고 전체 데이터베이스에 액세스할 수 있으므로 특히 주의해야 합니다.
제안: 각 사용자 계정에 Show Privilege 명령을 적용하여 권한 부여 테이블을 보고 와일드카드 권한 적용이 적절한지 확인하십시오.
◆ 보안 암호 사용을 요구한다.
사용자 계정의 보안은 사용자 계정을 보호하는 데 사용되는 비밀번호와 밀접한 관련이 있습니다. 따라서 MySQL 을 설치할 때 가장 먼저 해야 할 일은 MYSQL 루트 계정의 비밀번호를 설정하는 것입니다 (기본값은 비어 있음). 이 취약점을 복구한 후에는 각 사용자 계정에 생일, 사용자 이름, 사전의 단어 등 계발적 암호를 사용하지 않도록 해야 합니다. 이러한 암호는 쉽게 식별할 수 있습니다.
제안: MySQL- security-authorization 옵션을 적용하여 오래되고 안전하지 않은 MySQL 비밀번호 형식을 사용하지 않도록 하십시오.
◆ 프로필 사용 권한을 확인합니다.
일반적으로 서버 연결을 빠르고 쉽게 하려면 개별 사용자와 서버 관리자가 단일 사용자 MySQL 옵션 파일에 사용자 계정 암호를 저장해야 합니다. 그러나 암호는 하나의 파일에 일반 텍스트로 저장되므로 쉽게 검토할 수 있습니다. 따라서 이러한 단일 사용자 프로필이 시스템의 다른 사용자에 의해 검토되거나 비공유 위치에 저장되지 않도록 해야 합니다. 단일 사용자 프로파일을 사용자의 루트 디렉토리에 라이센스 0600 으로 저장하는 것이 좋습니다.
◆ 클라이언트와 서버 간 데이터 전송 암호화:
MySQL (및 기타) 클라이언트-서버 아키텍처의 중요한 문제 중 하나는 네트워크를 통해 데이터를 전송하는 보안입니다. 클라이언트와 서버 간의 상호 작용이 일반 텍스트로 발생하는 경우 전송된 패킷을 "냄새 맡" 고 기밀 정보를 얻을 수 있습니다. MySQL 구성에서 SSL 을 활성화하거나 OpenSSH 와 같은 보안 응용 프로그램을 적용하여 전송되는 데이터에 대한 보안 암호화 "채널" 을 설정하여 이 취약점을 차단할 수 있습니다. 이러한 방식으로 클라이언트와 서버 간의 연결을 암호화하면 권한이 없는 사용자가 데이터에 액세스하는 것이 매우 어려워질 수 있습니다.
◆ 원격 방문 금지.
사용자가 서버에 원격으로 액세스할 필요가 없는 경우 UNIX 슬롯 파일을 통해 모든 MySQL 연결을 강제로 수행할 수 있어 네트워크 공격의 위험을 크게 줄일 수 있습니다. 이 프로세스는 네트워크 옵션을 건너뛰고 서버를 시작하여 수행할 수 있습니다. 이렇게 하면 TCP/IP 네트워크가 MySQL 에 연결되지 않고 원격으로 시스템에 연결할 수 있는 사용자가 없습니다.
제안: MySQL 서버 구성에 주소 127.0.0. 1 을 바인딩하는 지시어를 추가하여 MySQL 이 로컬 시스템의 IP 주소를 바인딩하도록 함으로써 동일한 시스템의 사용자만 MySQL 에 연결할 수 있도록 할 수 있습니다.
◆ MySQL 액세스 기록을 사전 예방적으로 모니터링합니다.
MySQL 에는 고객 연결, 쿼리 및 서버 오류를 기록하는 다양한 로그 파일이 있습니다. 가장 중요한 것은 각 고객의 연결 및 연결 해제 시간을 타임스탬프로 기록하고 고객이 수행하는 모든 쿼리를 기록하는 범용 쿼리 로그입니다. 네트워크 침입과 같은 비정상적인 동작이 의심되는 경우 로그를 모니터링하는 것이 행동의 원인을 이해하는 좋은 방법입니다.
MySQL 데이터베이스를 보호하는 것은 일상적인 작업입니다. 따라서 이러한 단계를 완료했더라도 더 많은 보안 권장 사항을 배우고 시스템 보안을 사전 예방적으로 모니터링하고 업데이트하는 데 더 많은 시간을 할애해야 합니다.