E-mail
  ldwin@naver.com
제목
  안전한 Mysql 보안 설정 (From. 소스놀이터)


PHP와 함께 쓰이는 데이터베이스 중, 가장 흔한 데이터베이스라면 Mysql을 들 수 있습니다.
이제 Mysql 데이터베이스 보안에 대해 얘기하고자 합니다.
보안이라는 부분은 하드웨어 장비, 애플리케이션, 네트워크 장비 등 전체를 망라하는 부분이지만, 이 중 Mysql과 관련된 보안 사항 몇가지만 생각해보겠습니다.

1. bind-address 설정
      bind-address 설정은 문지기와 같습니다.
      원하는 대상만 접속할 수 있도록 설정할 수 있기 때문입니다.
      my.cnf 설정 파일에서 설정할 수 있습니다.
      (해당 파일에 이 설정이 빠져있다면, 디폴트 설정이 적용됩니다. 디폴트는 모든 IP에서의 접속을 허용합니다.)

 
      다음은 설정 내용의 예입니다.
      [mysqld]

      ... (생략)
      ...
      ...

      port            = 3306
      bind-address    = 127.0.0.1

      bind-address 속성이..

      A. "localhost" 또는 "127.0.0.1" 일 때
            이 때는 서버 자신만 Mysql에 접속하도록 허용합니다.
            한 서버에 아파치 및 Mysql이 모두 설치된 경우 유용합니다.
            이 설정은 상대적으로 훌륭한 보안을 제공합니다.
            (물론, 대다수의 해킹이 Mysql 포트가 아닌 80번 포트로 이루어지므로 한계는 있습니다.)
      B. "0.0.0.0"
            모든 IP로부터 접속을 허용합니다.
            (어떤 이유에서인가 모든 IP로부터 접속을 허용해야 한다면, 보안 부분에 상당히 신경을 써야 합니다.)
            (최소한 포트번호를 3306이 아닌 다른 포트로 설정하는 것이 좋습니다.)
      C. 특정 아이피
            특정 IP만 접속을 허용합니다.
            웹서버와 Mysql 데이터베이스가 서로 다른 IP에 있다면 유용합니다.

2. Mysql 사용자 설정
      Mysql 각 사용자의 접속 권한 설정을 알맞게 지정합니다.
 
      A.설정 방법
            mysql 데이터베이스 내, user 테이블을 통해 설정합니다.
            이 테이블 필드 중에는 User, Host 필드가 있습니다.
            예를 들어, User = root, Host = 150.150.1.10 라고 설정되어 있다면
            IP "150.150.1.10"에서 접속한 root 계정에 대해 접속을 허용하게 됩니다.
            이와 같은 방식으로 다양한 계정에 대해 접속 권한을 설정할 수 있습니다.

            "User = root, Host = 150.150.1.10" 및 "User = root, Host = 150.150.1.50"
            두 레코드셋이 존재한다면, "150.150.1.10"로 접속한 root 계정 외에, "150.150.1.50"으로 접속한 root 계정 역시 접속을 허용합니다.

 
      B.user 테이블에는 이 외에도 다양한 권한을 설정할 수 있습니다.
            user 테이블을 살펴보시면, 이 외에도 select, insert, create 권한 등, 세부적인 권한 설정이 가능합니다.
            필요한 최소 권한만 설정한다면, 가장 안정적인 보안이 가능합니다.


3. 기타 설정
      1, 2번에서 설명된 보안 요소는 Mysql에서 제공되는 기능적 측면에서의 보안입니다.
      이 외에도 하드웨어 기기(라우터 등) 및 소프트웨어 계층(웹방화벽 및 OS에서 제공하는 방화벽 기능)을 이용한 방화벽을 설정할 수 있습니다.
      방화벽에 대한 세부 설명은 이 글에서 제외하고자 합니다. (범위가 넓은 주제입니다.)

      한가지 제안을 드리자면, 가장 기본적인 보안 즉, 최소 권한만 부여하십시오.
      접속할 대상이 누구이며 어디에서 오는지 확인하여, 그 대상만 허용하는 것입니다.

 

 

트위터, 페이스북 공유 부탁드립니다~!
트위터   페이스북


  • 패스워드
           
X