phpmyadmin페이지 보안

Extra Form
PHP PHP 8.2
CMS WordPress

워드프레스 재설치중 갑자기 떠올라 여쭤봅니다.

phpmyadmin 페이지는 워드프레스처럼 비번이 몇번 틀렸을 경우 접근 제한하는 방법이 없느 ㄴ것 같던데

 

보안을위해서 하면 좋은 것들이 있을까요?

  • profile
    phpmyadmin 자체에는 보호기능이 없고 로그를 이용해 fail2ban등으로 일정횟수 이상 실패시 아이피를 차단할수 있습니다.(자세한 설정방법은 검색해보시면 나옵니다)

    혹은 특정 아이피 주소에서만 접속 가능하게 설정하는것도 도움이 됩니다. 해당 아이피를 사용하는 기기가 해킹되지 않는한 접속할수 없게 되니까요.

    사실 pma를 설치하지 않는게 보안상 제일 좋습니다(db 접속은 외부프로그램 이용 - 접속시 ssh 터널링)
  • profile profile
    아 외부프로그램! 비버인가 그런것을 말씀하시는거죠?!
  • profile profile

    네. HeidiSQL도 좋습니다.

     

    db 관리를 pma로 하셔야 한다면 아래 폴더명 변경 비번 변경등 조치만 취하셔도 충분하긴 합니다.

  • profile

    꼭 사용해야 한다면 쉽게 짐작할 수 없는 위치에 설치합니다.

    도메인/phpmyadmin, 도메인/phpMyAdmin, 도메인/pma 등은 누구나 알 수 있으니까요.

    님만 알고 있는 서브도메인에 흔하지 않은 포트, 랜덤으로 바꾼 폴더명을 사용한다면

    웬만하서는 접속 주소를 알아내기 어렵습니다.

     

    DB 비번도 랜덤으로 생성해야 합니다.

    단지 대소문자와 특수문자를 섞어쓰는 것으로는 충분하지 않습니다.

    만약 DB 비번이 dongdong!@ 이라면 님의 신원을 알고 있는 사람이 충분히 예측할 수 있습니다.

    아무 의미도 없고 사람이 기억할 수도 없는 L01NtLQ610yWV0qS7T2CUZckyjcb8reJ

    이런 것을 어디다가 저장해 두고 필요시 복붙해서 쓴다면

    해커가 1년 내내 로그인 시도를 하더라도 발뻗고 잘 수 있습니다.

  • profile profile

    아.. 위치 바꾸는거 좋네요! 지금 워드프레스 세팅이 끝난 상태인데 pma 삭제 후 위치 다시 옮겨도 상관없을까요? 괜찮을 것 같기도 한데 혹시 몰라서 미리 여쭤봅니다. ㅎㅎ

  • profile profile
    pma 삭제하셔도 워드프레스에는 영향이 없어야 정상입니다.
  • profile

    pma를 특정 port로만 접속하게 지정하고(예: 8985), 그 port는 특정 ip에서만 접속할수 있도록 firewall을 지정할수 있습니다. 본인 집(IP가 자주 바뀌면 안되겠죠)이나 회사 네트웍에서만 pma 서버로 접속할수 있도록 하는 것입니다. 물론 해커가 이것도 통과할수는 있지만 port 번호와 ip를 알아내는것이 쉽지는 않고, 이걸 통과해도 DB 비번이 막고 있으므로(위분들 말씀처럼 링크와 암호를 복잡하게 함) 국가보안시설이 아닌 이상 그렇게까지 원한(?)을 품고 시간을 투자할 해커가 있을려나 모르겠습니다.

  • profile profile
    간단하고 좋은 방법이네요! # ufw allow from 123.123.123.123 to any port 0000 검색해보니 이것같은데 맞을까요?
  • profile profile

    네, 단독ip면 그렇게 하시면 되고, 회사 대역폭이라면 ufw allow from 123.123.123.0/24 to any port 8985 이런 식으로 하면 되구요. 그리고 pma 용으로 따로 (apache나 nginx에서) virtual server를 할당하고, 포트를 8985로 지정하면 되죠.

     

    iptables를 사용한다면

    iptables -I INPUT -p tcp -s 123.123.123.0/24 --dport 8985 -j ACCEPT

    이런 식으로 할수도 있구요.

     

    그리고 8985(예를들면) port를 ssl로 지정할수도 있습니다. 그럼 더 안전해지겠죠. 샘플로,

    server {
        listen 8985 ssl http2;
        server_name 내도메인.com www.내도메인.com;
        root /var/www/phpmyadmin;
        allow 123.123.123.0/24; #firewall과 별도로 한번 더 걸러줌
        deny all;
        ssl_certificate /etc/ssl/certs/내도메인.com/내도메인.com.bundle.crt;
        ssl_certificate_key /etc/ssl/private/내도메인.com.key;
        ssl_trusted_certificate /etc/ssl/certs/내도메인.com/내도메인.com.bundle.crt;
        ...
    }