기사 디렉토리
最新 헤스티아CP 이 완벽한 Adminer 설치 가이드는 원클릭 배포, 보안 강화 및 자동 구성 단계를 포함합니다. 데이터베이스 관리 도구를 배포하고 서버를 보호하는 방법을 단계별로 알려주므로 초보자도 쉽게 시작할 수 있으며 HestiaCP + Adminer 운영 및 유지 관리의 어려움을 해결할 수 있습니다.
만약 여전히 아무런 보호 장치 없이 데이터베이스 관리 도구를 사용하고 있다면, 해커들에게 데이터베이스 접근 권한을 넘겨주는 것과 마찬가지입니다.
Adminer를 선택해야 하는 이유는 무엇일까요? phpMyAdmin을?
Adminer는 1MB 미만의 단일 PHP 파일로 구성되어 있어 배포가 매우 간단하고 빠르며 리소스 효율적입니다.
phpMyAdmin의 복잡한 구조와 비교했을 때, Adminer는 VPS, 소규모 웹사이트 및 개인 프로젝트에 더 적합합니다.

HestiaCP에 관리자 계정을 설치하는 단계
1. 관리자 파일을 다운로드하세요.
이동 어드미니어처 공식 웹사이트 최신 버전을 다운로드하세요 adminer.php.
예를 들어, 해당 파일을 HestiaCP 웹사이트 디렉토리에 업로드하세요.
/home/username/web/adminer.domain.com/public_html/adminer.php
2. 서브도메인을 생성하고 SSL을 활성화합니다.
HestiaCP 패널에서 서브도메인을 추가하세요 adminer.domain.com안전한 데이터 전송을 위해 Let's Encrypt SSL을 활성화하세요.
3. Nginx 암호 보호 설정
서브도메인의 Nginx 설정 파일에 다음 내용을 추가하세요.
location / {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
root /home/username/web/adminer.domain.com/public_html;
index index.php adminer.php;
}
암호 파일 생성:
sudo apt-get install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd adminuser
관리자 계정에 접속하면 암호 입력 대화 상자가 나타나며, 올바른 사용자 이름과 암호를 입력해야만 로그인할 수 있습니다.
관리자 파일을 자동으로 업데이트합니다.
이전 버전을 사용하는 것과 관련된 보안 위험을 피하려면 셸 스크립트와 Cron 예약 작업을 사용하여 자동 업데이트를 수행할 수 있습니다.
업데이트 스크립트 예시
#!/bin/bash
URL="https://www.adminer.org/latest.php"
TARGET="/home/username/web/adminer.domain.com/public_html/adminer.php"
wget -q -O "$TARGET" "$URL"
chown username:username "$TARGET"
chmod 644 "$TARGET"
다른 이름으로 저장 /usr/local/bin/update-adminer.sh그리고 예약 작업을 추가하세요:
crontab -e
0 3 * * 1 /usr/local/bin/update-adminer.sh
이렇게 하면 관리자 파일이 매주 월요일 오전 3시에 자동으로 업데이트됩니다.
Fail2Ban 무차별 대입 공격 방지
Simple Basic Auth는 무차별 대입 공격에 취약한 반면, Fail2Ban은 악성 IP를 자동으로 차단할 수 있습니다.
필터 구성
문서:/etc/fail2ban/filter.d/nginx-adminer.conf
[Definition]
failregex = ^<HOST> - .* "GET /adminer.php HTTP/.*" 401
ignoreregex =
감옥 설정(단계별 차단 기간)
문서:/etc/fail2ban/jail.local
[nginx-adminer]
enabled = true
filter = nginx-adminer
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 3
findtime = 600
bantime.increment = true
bantime.rndtime = 60
bantime.factor = 2
bantime = 600
효과: 첫 번째 차단은 10분, 두 번째는 20분, 세 번째는 40분 등으로 지속됩니다. 공격 행위를 반복하는 사용자는 차단 시간이 점점 더 길어집니다.
원클릭 배포 스크립트 완성
다른 이름으로 저장 /usr/local/bin/setup-fail2ban-adminer.sh:
#!/bin/bash
FILTER_PATH="/etc/fail2ban/filter.d/nginx-adminer.conf"
JAIL_PATH="/etc/fail2ban/jail.local"
cat > $FILTER_PATH << 'EOF'
[Definition]
failregex = ^<HOST> - .* "GET /adminer.php HTTP/.*" 401
ignoreregex =
EOF
cat >> $JAIL_PATH << 'EOF'
[nginx-adminer]
enabled = true
filter = nginx-adminer
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 3
findtime = 600
bantime.increment = true
bantime.rndtime = 60
bantime.factor = 2
bantime = 600
EOF
systemctl restart fail2ban
fail2ban-client status nginx-adminer
구현하다:
sudo chmod +x /usr/local/bin/setup-fail2ban-adminer.sh
sudo /usr/local/bin/setup-fail2ban-adminer.sh
결론: 안전과 효율성의 균형
저는 데이터베이스 관리 도구를 공용 인터넷에 그냥 두고 안심하고 사용할 수 있는 것이 아니라고 확신합니다. Adminer의 간편한 디자인은 매력적이지만, 보안 조치 또한 그에 걸맞게 강화되어야 합니다. 비밀번호 보호는 첫 번째 방어선이며, 자동 업데이트는 지속적인 보호를 제공하고, Fail2Ban은 지능적인 대응책을 제공합니다. 이 세 가지 요소를 모두 갖춰야만 효율적이고 안전한 데이터베이스 관리 환경을 구축할 수 있습니다.
진정한 장인은 도구를 만드는 법만 아는 사람이 아니라, 도구를 보호하는 법까지 아는 사람이다.
희망 첸 웨이량 블로그( https://www.chenweiliang.com/ 여기에 공유된 "HestiaCP 관리자 설치: 보안 자동화 설정 + 데이터베이스 관리 최적화" 문서가 도움이 될 수 있습니다.
이 기사의 링크를 공유하는 것을 환영합니다:https://www.chenweiliang.com/cwl-34018.html
