PlusMagi's Blog By Pitt Phunsanit MariaDB,MySql,Nginx,PHP,SecDevOps,Web ðŸ›Ąïļ āļ„āļđāđˆāļĄāļ·āļ­āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡ phpMyAdmin + Nginx āļšāļ™ Ubuntu āđƒāļŦāđ‰āļ›āļĨāļ­āļ”āļ āļąāļĒāļ‚āļąāđ‰āļ™āļŠāļļāļ” (Enterprise Isolating)

ðŸ›Ąïļ āļ„āļđāđˆāļĄāļ·āļ­āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡ phpMyAdmin + Nginx āļšāļ™ Ubuntu āđƒāļŦāđ‰āļ›āļĨāļ­āļ”āļ āļąāļĒāļ‚āļąāđ‰āļ™āļŠāļļāļ” (Enterprise Isolating)

āļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰āļˆāļ°āļžāļēāļ„āļļāļ“āļ•āļīāļ”āļ•āļąāđ‰āļ‡ phpMyAdmin āļœāđˆāļēāļ™āđāļžāđ‡āļāđ€āļāļˆāļĢāļ°āļšāļš (apt) āđ€āļžāļ·āđˆāļ­āļ„āļ§āļēāļĄāļ‡āđˆāļēāļĒāđƒāļ™āļāļēāļĢāļ”āļđāđāļĨāļĢāļąāļāļĐāļēāđāļĨāļ°āļ­āļąāļ›āđ€āļ”āļ•āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđƒāļ™āļĢāļ°āļĒāļ°āļĒāļēāļ§ āđ‚āļ”āļĒāđ€āļĢāļēāļˆāļ°āļĒāļāļĢāļ°āļ”āļąāļšāļāļēāļĢāļ›āđ‰āļ­āļ‡āļāļąāļ™āļ”āđ‰āļ§āļĒāđ€āļ—āļ„āļ™āļīāļ„ āļŠāļļāđˆāļĄ Subdomain āļĨāļąāļš (Obscurity Subdomain), āļˆāļģāļāļąāļ”āļŠāļīāļ—āļ˜āļīāđŒāļžāļ·āđ‰āļ™āļ—āļĩāđˆāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢ PHP āļ”āđ‰āļ§āļĒ open_basedir āđāļĨāļ° āļ—āļģāļĢāļ°āļšāļšāļĨāđ‡āļ­āļāļ‹āđ‰āļģāļŠāļąāđ‰āļ™āļŦāļ™āđ‰āļēāļšāđ‰āļēāļ™āļ”āđ‰āļ§āļĒ HTTP Basic Auth āđ€āļžāļ·āđˆāļ­āļŠāļāļąāļ”āļāļąāđ‰āļ™āļāļēāļĢāļŠāđāļāļ™āļˆāļēāļāļšāļ­āļ—āļ āļēāļĒāļ™āļ­āļāđ„āļ”āđ‰āđāļšāļš 100%


ðŸ“Ķ āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ—āļĩāđˆ 1: āļ•āļīāļ”āļ•āļąāđ‰āļ‡ phpMyAdmin āļœāđˆāļēāļ™ apt

āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļĢāļ°āļšāļšāļ‚āļ­āļ‡āđ€āļĢāļēāļ‚āļąāļšāđ€āļ„āļĨāļ·āđˆāļ­āļ™āļ”āđ‰āļ§āļĒ Nginx āđ€āļ›āđ‡āļ™āļŦāļĨāļąāļ āđ€āļĢāļēāļˆāļ°āđ„āļĄāđˆāļ•āļīāļ”āļ•āļąāđ‰āļ‡āļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļĢāđˆāļ§āļĄāļāļąāļš Apache āđ€āļžāļ·āđˆāļ­āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļ„āļ§āļēāļĄāļ‹āđ‰āļģāļ‹āđ‰āļ­āļ™āđāļĨāļ°āļ›āļĢāļ°āļŦāļĒāļąāļ”āļ—āļĢāļąāļžāļĒāļēāļāļĢāļ‚āļ­āļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ

# āļ­āļąāļ›āđ€āļ”āļ•āđāļžāđ‡āļāđ€āļāļˆāļĢāļ°āļšāļš
sudo apt update
sudo apt install phpmyadmin -y

⚠ïļ āļ‚āđ‰āļ­āļ„āļ§āļĢāļĢāļ°āļ§āļąāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ•āļīāļ”āļ•āļąāđ‰āļ‡

  1. āđ€āļĄāļ·āđˆāļ­āļĢāļ°āļšāļšāđāļŠāļ”āļ‡āļŦāļ™āđ‰āļēāļˆāļ­āđ€āļĄāļ™āļđāļŠāļĩāļŸāđ‰āļēāļ–āļēāļĄāđ€āļĢāļ·āđˆāļ­āļ‡ Web Server (apache2 āļŦāļĢāļ·āļ­ lighttpd) āđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āđ€āļĨāļ·āļ­āļāļ•āļąāļ§āđ€āļĨāļ·āļ­āļāđƒāļ” āđ† āđƒāļŦāđ‰āļāļ”āļ›āļļāđˆāļĄ Tab āļšāļ™āļ„āļĩāļĒāđŒāļšāļ­āļĢāđŒāļ”āđ€āļžāļ·āđˆāļ­āđ€āļĨāļ·āđˆāļ­āļ™āļĄāļēāļ—āļĩāđˆāļ›āļļāđˆāļĄ āđāļĨāđ‰āļ§āļāļ” Enter āļ—āļąāļ™āļ—āļĩ (āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāđ€āļĢāļēāļˆāļ°āđƒāļŠāđ‰ Nginx)
  2. āđ€āļĄāļ·āđˆāļ­āļĢāļ°āļšāļšāļ–āļēāļĄāđ€āļĢāļ·āđˆāļ­āļ‡āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ”āđ‰āļ§āļĒ dbconfig-common āđƒāļŦāđ‰āđ€āļĨāļ·āļ­āļāļ•āļ­āļš āļˆāļēāļāļ™āļąāđ‰āļ™āļāļģāļŦāļ™āļ”āļĢāļŦāļąāļŠāļœāđˆāļēāļ™āđ€āļžāļ·āđˆāļ­āļĢāļ°āļšāļšāļˆāļ°āļŠāļļāđˆāļĄāļŠāļĢāđ‰āļēāļ‡āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ āļēāļĒāđƒāļ™āļ‚āļ­āļ‡āļ•āļąāļ§āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļ­āļ‡āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī

🔐 āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ—āļĩāđˆ 2: āļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļŠāļļāđˆāļĄ Blowfish Secret

āļŦāļēāļāļ•āļĢāļ§āļˆāļŠāļ­āļšāđ„āļŸāļĨāđŒāļ„āļ­āļ™āļŸāļīāļāđāļĨāđ‰āļ§āļžāļšāļ§āđˆāļēāļ„āļĩāļĒāđŒāļĢāļ°āļšāļšāļ§āđˆāļēāļ‡āđ€āļ›āļĨāđˆāļē āđ€āļĢāļēāļˆāļģāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āļŠāļĢāđ‰āļēāļ‡āļŠāļ•āļĢāļīāļ‡āļĢāļŦāļąāļŠāļĨāļąāļšāļ‚āļķāđ‰āļ™āļĄāļēāđ€āļ­āļ‡ āđ€āļžāļ·āđˆāļ­āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠāđāļĨāļ°āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāļ”āļąāļāļˆāļąāļšāđ€āļ‹āļŠāļŠāļąāļ™ (Session Cookie)

  1. āđ€āļˆāļ™āļŠāļ•āļĢāļīāļ‡āļŠāļļāđˆāļĄāļ„āļ§āļēāļĄāļĒāļēāļ§ 32 āļ•āļąāļ§āļ­āļąāļāļĐāļĢ
    āļĢāļąāļ™āļ„āļģāļŠāļąāđˆāļ‡āļ™āļĩāđ‰āļšāļ™ Terminal āđ€āļžāļ·āđˆāļ­āļŠāļĢāđ‰āļēāļ‡āļŠāļļāļ”āļĢāļŦāļąāļŠāļŠāļļāđˆāļĄāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļŠāļđāļ‡
    openssl rand -base64 32
    (āļ„āļąāļ”āļĨāļ­āļāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļŠāļ•āļĢāļīāļ‡āļœāļĨāļĨāļąāļžāļ˜āđŒāļĒāļēāļ§ āđ† āļ—āļĩāđˆāđ„āļ”āđ‰āļˆāļēāļāļŦāļ™āđ‰āļēāļˆāļ­āđ€āļ­āļēāđ„āļ§āđ‰)
  2. āļ™āļģāđ„āļ›āđ€āļ•āļīāļĄāđƒāļ™āđ„āļŸāļĨāđŒāļ„āļ­āļ™āļŸāļīāļāđ€āļŠāļĢāļīāļĄāļ‚āļ­āļ‡āļĢāļ°āļšāļš
    āđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒāļ—āļĩāđˆāđ€āļāđ‡āļšāļ„āļĩāļĒāđŒāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ
    sudo nano /var/lib/phpmyadmin/blowfish_secret.inc.php
    āļ™āļģāļ„āļĩāļĒāđŒāļ—āļĩāđˆāļ„āļąāļ”āļĨāļ­āļāļĄāļēāļ§āļēāļ‡āđ„āļ§āđ‰āļ āļēāļĒāđƒāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļŦāļĄāļēāļĒāļ„āļģāļžāļđāļ”āđ€āļ”āļĩāđˆāļĒāļ§
    <?php
    $cfg['blowfish_secret'] = 'YOUR_GENERATED_OPENSSL_RANDOM_STRING';
    
  3. āļœāļđāļ Path āđ‚āļŸāļĨāđ€āļ”āļ­āļĢāđŒāđ€āļŠāļĢāļīāļĄāđ€āļ‚āđ‰āļēāļāļąāļšāđ„āļŸāļĨāđŒāļ„āļ­āļ™āļŸāļīāļāļŦāļĨāļąāļ
    āđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒāļ„āļ­āļ™āļŸāļīāļāļŦāļĨāļąāļāļ‚āļ­āļ‡ phpMyAdmin
    sudo nano /etc/phpmyadmin/config.inc.php
    āđ€āļĨāļ·āđˆāļ­āļ™āļĨāļ‡āđ„āļ›āļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡āļŠāļļāļ”āļ‚āļ­āļ‡āđ„āļŸāļĨāđŒ āđāļĨāđ‰āļ§āđ€āļžāļīāđˆāļĄāļāļēāļĢāļœāļđāļ Path āđ‚āļŸāļĨāđ€āļ”āļ­āļĢāđŒāļŠāļģāļŦāļĢāļąāļšāļĢāļ­āļ‡āļĢāļąāļšāđ„āļŸāļĨāđŒāļ­āļąāļ›āđ€āļ”āļ•āļ‚āļ™āļēāļ”āđƒāļŦāļāđˆāđāļĨāļ°āļĢāļ°āļšāļšāđāļ„āļŠ (UploadDir, SaveDir, TempDir) āđ€āļ‚āđ‰āļēāđ„āļ›āļ”āļąāļ‡āļ™āļĩāđ‰
    /*
     * Directories for saving/loading files from server
     */
    $cfg['UploadDir'] = '/var/lib/phpmyadmin/upload';
    $cfg['SaveDir'] = '/var/lib/phpmyadmin/save';
    $cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
    
  4. āļŠāļĢāđ‰āļēāļ‡āđ„āļ”āđ€āļĢāļāļ—āļ­āļĢāļĩāļˆāļĢāļīāļ‡āđāļĨāļ°āļŠāđˆāļ‡āļĄāļ­āļšāļŠāļīāļ—āļ˜āļīāđŒāđƒāļŦāđ‰ PHP-FPM
    āļĢāļąāļ™āļ„āļģāļŠāļąāđˆāļ‡āļŠāļĢāđ‰āļēāļ‡āđ‚āļŸāļĨāđ€āļ”āļ­āļĢāđŒāļˆāļĢāļīāļ‡āļšāļ™ Ubuntu āđāļĨāļ°āļ›āļĢāļąāļšāļŠāļīāļ—āļ˜āļīāđŒ Owner āđƒāļŦāđ‰āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡ PHP (www-data) āļŠāļēāļĄāļēāļĢāļ–āļ­āđˆāļēāļ™āđāļĨāļ°āđ€āļ‚āļĩāļĒāļ™āđ„āļŸāļĨāđŒāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĢāļąāļ”āļāļļāļĄ
    # Create target physical directories
    sudo mkdir -p /var/lib/phpmyadmin/upload
    sudo mkdir -p /var/lib/phpmyadmin/save
    sudo mkdir -p /var/lib/phpmyadmin/tmp
    
    # Reassign granular workspace permissions
    sudo chown -R www-data:www-data /var/lib/phpmyadmin
    sudo chmod 750 /var/lib/phpmyadmin/upload
    sudo chmod 750 /var/lib/phpmyadmin/save
    sudo chmod 777 /var/lib/phpmyadmin/tmp
    

🔒 āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ—āļĩāđˆ 3: āļŠāļĢāđ‰āļēāļ‡āļĢāļ°āļšāļšāļĨāđ‡āļ­āļāļŦāļ™āđ‰āļēāļšāđ‰āļēāļ™ (āļŠāļļāđˆāļĄ Nginx Username & Password)

āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āđ„āļĄāđˆāđƒāļŦāđ‰āļœāļđāđ‰āđ„āļĄāđˆāļŦāļ§āļąāļ‡āļ”āļĩāļŦāļĢāļ·āļ­āļšāļ­āļ—āļ āļēāļĒāļ™āļ­āļāđ€āļ‚āđ‰āļēāļĄāļēāļžāļĒāļēāļĒāļēāļĄāđ€āļ”āļēāļĢāļŦāļąāļŠāļœāđˆāļēāļ™āļŦāļ™āđ‰āļēāđ€āļ§āđ‡āļšāļ•āļĢāļ‡ āđ† āđ€āļĢāļēāļˆāļ°āļ—āļģāļĢāļ°āļšāļš HTTP Basic Authentication āļ„āļĢāļ­āļšāļ—āļąāļšāđ„āļ§āđ‰āļ­āļĩāļāļŦāļ™āļķāđˆāļ‡āļŠāļąāđ‰āļ™ āđ‚āļ”āļĒāļœāļđāđ‰āđƒāļŠāđ‰āļˆāļ°āļ•āđ‰āļ­āļ‡āļāļĢāļ­āļāļĢāļŦāļąāļŠāļœāđˆāļēāļ™āļĢāļ°āļ”āļąāļšāđ€āļ§āđ‡āļšāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđƒāļŦāđ‰āļœāđˆāļēāļ™āļāđˆāļ­āļ™ āļˆāļķāļ‡āļˆāļ°āļĄāļ­āļ‡āđ€āļŦāđ‡āļ™āļŦāļ™āđ‰āļēāļĨāđ‡āļ­āļāļ­āļīāļ™āļŦāļĨāļąāļāļ‚āļ­āļ‡ phpMyAdmin

  1. āļ•āļīāļ”āļ•āļąāđ‰āļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļŠāđˆāļ§āļĒāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠāļĢāļŦāļąāļŠāļœāđˆāļēāļ™
    sudo apt install apache2-utils -y
  2. āļŠāļļāđˆāļĄāļŠāļĢāđ‰āļēāļ‡āđ„āļŸāļĨāđŒāđ€āļāđ‡āļšāļĢāļŦāļąāļŠāļĨāļąāļš
    āđƒāļŠāđ‰āļ„āļģāļŠāļąāđˆāļ‡āļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡āļ™āļĩāđ‰āļŠāļĢāđ‰āļēāļ‡āļĢāļŦāļąāļŠāļœāđˆāļēāļ™āđ‚āļ”āļĒāļāļģāļŦāļ™āļ”āļŠāļ·āđˆāļ­āļœāļđāđ‰āđƒāļŠāđ‰ (Username) āđ€āļŠāđˆāļ™ phpmyadmin_secure_admin (āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļĨāļĩāđˆāļĒāļ™āđ€āļ›āđ‡āļ™āļŠāļ·āđˆāļ­āļ­āļ·āđˆāļ™āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāđ„āļ”āđ‰) āļˆāļēāļāļ™āļąāđ‰āļ™āļĢāļ°āļšāļšāļˆāļ°āđƒāļŦāđ‰āļ„āļļāļ“āļ•āļąāđ‰āļ‡āļĢāļŦāļąāļŠāļœāđˆāļēāļ™āđāļĨāļ°āđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠāđ€āļāđ‡āļšāđ„āļ§āđ‰āđƒāļ™āđ„āļŸāļĨāđŒ /etc/nginx/.pma_passwd
    sudo htpasswd -c /etc/nginx/.pma_passwd phpmyadmin_secure_admin
    (āļāļĢāļ­āļāļĢāļŦāļąāļŠāļœāđˆāļēāļ™āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāļĨāđ‡āļ­āļāļŦāļ™āđ‰āļēāļšāđ‰āļēāļ™āļˆāļģāļ™āļ§āļ™ 2 āļ„āļĢāļąāđ‰āļ‡)

🌐 āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ—āļĩāđˆ 4: āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ„āļ­āļ™āļŸāļīāļ Nginx āļĢāđˆāļ§āļĄāļāļąāļš Subdomain āļĨāļąāļš

āđāļ—āļ™āļ—āļĩāđˆāļˆāļ°āļ•āļīāļ”āļ•āļąāđ‰āļ‡āđ„āļ§āđ‰āļ āļēāļĒāđƒāļ•āđ‰āđ‚āļŸāļĨāđ€āļ”āļ­āļĢāđŒāļ‚āļ­āļ‡āđ‚āļ”āđ€āļĄāļ™āļŦāļĨāļąāļāļ›āļāļ•āļī āđ€āļĢāļēāļˆāļ°āļŦāļąāļ™āļĄāļēāđƒāļŠāđ‰āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ Dedicated Subdomain āđāļšāļšāļŠāļļāđˆāļĄāļŠāļēāļĒāļĒāļēāļ§ āđ€āļžāļ·āđˆāļ­āļ•āļąāļ”āļŠāđˆāļ­āļ‡āļ—āļēāļ‡āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āļ­āļ‡āļšāļ­āļ—āļ āļēāļĒāļ™āļ­āļāļ­āļ­āļāđ„āļ›āđ‚āļ”āļĒāļŠāļīāđ‰āļ™āđ€āļŠāļīāļ‡
āļŠāļĢāđ‰āļēāļ‡ Subdomain āļĨāļąāļš
openssl rand -hex 24
(āļ„āļąāļ”āļĨāļ­āļāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļŠāļ•āļĢāļīāļ‡āļœāļĨāļĨāļąāļžāļ˜āđŒāļĒāļēāļ§ āđ† 24 āļ•āļąāļ§āļ—āļĩāđˆāđ„āļ”āđ‰āļˆāļēāļāļŦāļ™āđ‰āļēāļˆāļ­āđ€āļ­āļēāđ„āļ§āđ‰) āđ€āļŠāđˆāļ™
kl3gxpezqqzerk3kvprec57bgdvwwwuh

āļŠāļĢāđ‰āļēāļ‡āđ„āļŸāļĨāđŒāļ„āļ­āļ™āļŸāļīāļāļšāļĨāđ‡āļ­āļāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļ‚āļ­āļ‡ Nginx
sudo nano /etc/nginx/sites-available/phpmyadmin.conf
āđƒāļŠāđˆāđ€āļ™āļ·āđ‰āļ­āļŦāļēāļ„āļ­āļ™āļŸāļīāļāļ—āļĩāđˆāļœāđˆāļēāļ™āļāļēāļĢāļ›āļĢāļąāļšāļˆāļđāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļĢāļ°āļ”āļąāļš Enterprise Isolating āļ‹āļķāđˆāļ‡āļĄāļĩāļāļēāļĢāđƒāļŠāđ‰āđ€āļ—āļ„āļ™āļīāļ„āļāļąāļāļšāļĢāļīāđ€āļ§āļ“āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ”āđ‰āļ§āļĒ open_basedir āļ‚āļ­āļ‡āļĢāļ°āļšāļšāđāļžāđ‡āļāđ€āļāļˆ apt āđāļĨāļ°āđ€āļ›āļīāļ”āļĢāļ°āļšāļšāļĨāđ‡āļ­āļāļŦāļ™āđ‰āļēāļšāđ‰āļēāļ™ āđ‚āļ”āļĒāļ„āļ­āļĄāđ€āļĄāļ™āļ•āđŒāđ‚āļ„āđ‰āļ”āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ”āđ‰āļ§āļĒāļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐāļ”āļąāļ‡āļ™āļĩāđ‰āļ„āļĢāļąāļš

# --- 1. Redirect HTTP to HTTPS ---
server {
    listen 80;
    listen [::]:80;
    server_name kl3gxpezqqzerk3kvprec57bgdvwwwuh.plusmagi.com;

    # Allow Let's Encrypt / Certbot ACME verification challenges to pass through
    location /.well-known/acme-challenge/ {
        root /usr/common/var/www/html;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

# --- 2. Main HTTPS Block ---
server {
    server_name kl3gxpezqqzerk3kvprec57bgdvwwwuh.plusmagi.com;

    # --- Listen Ports for SSL + HTTP/3 ---
    listen 443 ssl;
    listen 443 quic; # (Re-useport parameter managed in central global configuration)
    listen [::]:443 ssl;
    listen [::]:443 quic;

    # Global security and optimizations templates
    include snippets/cloudflare.conf;
    include snippets/http3.conf;
    include snippets/security.conf;

    # Target source directory paths for native apt deployment structures
    root /usr/share/phpmyadmin;
    index index.php index.html;

    # --- SSL Certificates Configuration ---
    ssl_certificate /etc/letsencrypt/live/kl3gxpezqqzerk3kvprec57bgdvwwwuh.plusmagi.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/kl3gxpezqqzerk3kvprec57bgdvwwwuh.plusmagi.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    # --- Client Buffering Adjustments for Heavy Data Operations ---
    client_max_body_size 64M; 
    client_body_timeout 300s; 

    # --- 🔒 HTTP Basic Authentication Gatekeeping ---
    auth_basic "Restricted Access - Database Administrator Only";
    auth_basic_user_file /etc/nginx/.pma_passwd;

    # --- PHP-FPM Handling Configuration ---
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.5-fpm.sock;
        
        # ðŸ”đ 🔒 SECURITY BOUNDARY UPGRADE: open_basedir sandboxing
        # Enforces isolation boundaries for the runtime execution environment.
        # Restricts script traversals completely within targeted application contexts.
        fastcgi_param PHP_VALUE "open_basedir=/tmp/:/var/lib/php/sessions/:/usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/";
        fastcgi_read_timeout 300;
    }

    # --- Security Rule: Block Sensitive Files ---
    # Intercepts and drops incoming inquiries trying to expose version or vendor data.
    location ~ /^(README|LICENSE|CHANGE|CHANGELOG|composer\.json|config\.inc\.php) {
        deny all;
    }

    # --- Static Assets Caching Optimization ---
    location ~* \.(jpg|jpeg|gif|css|png|js|ico|html|svg|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    # Drop and block visibility over all hidden operational system assets (e.g. .git, .env)
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}

🔄 āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ—āļĩāđˆ 5: set ssl

āđ€āļžāļīāđˆāļĄ ssl āđƒāļŦāđ‰āđ€āļ›āļĨāļĩāđˆāļĒāļ™ subdomain āđƒāļŦāđ‰āļ–āļđāļāļ•āđ‰āļ­āļ‡ āđāļĨāļ°āļ­āļēāļˆāļˆāļ°āļ•āđ‰āļ­āļ‡āđ€āļ›āļĨāļĩāđˆāļĒāļ™ cloudflare āđ€āļ›āđ‡āļ™ Flexible āļāđˆāļ­āļ™

sudo certbot certonly --webroot -w /usr/common/var/www/html -d kl3gxpezqqzerk3kvprec57bgdvwwwuh.plusmagi.com

āļ—āļ”āļŠāļ­āļšāļ§āđˆāļēāđƒāļŠāđ‰āđ„āļ”āđ‰āļĄāļąāđ‹āļĒ
curl -Iv https://kl3gxpezqqzerk3kvprec57bgdvwwwuh.plusmagi.com --resolve kl3gxpezqqzerk3kvprec57bgdvwwwuh.plusmagi.com:443:127.0.0.1

  • āļ–āđ‰āļēāļ‚āļķāđ‰āļ™āļ•āļ­āļšāļāļĨāļąāļšāļ§āđˆāļē HTTP/2 401 Unauthorized (āļ•āļīāļ” Basic Auth): āđāļ›āļĨāļ§āđˆāļē Nginx āļāļąāđˆāļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđ€āļĢāļēāļ—āļģāļ‡āļēāļ™āļ–āļđāļāļ•āđ‰āļ­āļ‡āđāļĨāđ‰āļ§ āļ›āļąāļāļŦāļēāļ­āļĒāļđāđˆāļ—āļĩāđˆ Cloudflare
  • āļ–āđ‰āļēāļ‚āļķāđ‰āļ™ Error āđ€āļĢāļ·āđˆāļ­āļ‡ SSL/BIO: āđāļ›āļĨāļ§āđˆāļēāđƒāļ™ Nginx Config āļšāļĢāļĢāļ—āļąāļ” ssl_certificate āļŦāļĢāļ·āļ­ include /etc/letsencrypt/options-ssl-nginx.conf; āļĒāļąāļ‡āļŠāļĩāđ‰āļžāļīāļāļąāļ”āđ„āļŸāļĨāđŒāļœāļīāļ”āļ­āļĒāļđāđˆāļ„āļĢāļąāļš

🔄 āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ—āļĩāđˆ 6: āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ­āļ™āļŸāļīāļāđāļĨāļ°āļ—āļģāļāļēāļĢāļĢāļĩāđ‚āļŦāļĨāļ”āđ€āļ§āđ‡āļšāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ

āļāđˆāļ­āļ™āļˆāļ°āļŠāļąāđˆāļ‡āđƒāļŦāđ‰āļšāļĢāļīāļāļēāļĢ Nginx āļ”āļķāļ‡āļ„āđˆāļēāļ„āļ­āļ™āļŸāļīāļāđ„āļ›āđƒāļŠāđ‰āļ‡āļēāļ™āļˆāļĢāļīāļ‡ āđ€āļĢāļēāļ•āđ‰āļ­āļ‡āļĢāļąāļ™āļĢāļ°āļšāļšāļ—āļ”āļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡ Syntax āđ€āļŠāļĄāļ­āđ€āļžāļ·āđˆāļ­āđ„āļĄāđˆāđƒāļŦāđ‰āđ€āļ§āđ‡āļšāļŦāļĨāļąāļāļĢāļ°āļšāļšāļ­āļ·āđˆāļ™āļŦāļĒāļļāļ”āļ—āļģāļ‡āļēāļ™

# 1. āđ€āļŠāļ·āđˆāļ­āļĄāđ‚āļĒāļ‡āđ„āļŸāļĨāđŒāļ„āļ­āļ™āļŸāļīāļāđ€āļžāļ·āđˆāļ­āđ€āļ›āļīāļ”āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™ (āļŠāļąāđˆāļ‡āđ€āļ‰āļžāļēāļ°āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡āļ„āļĢāļąāđ‰āļ‡āđāļĢāļ)
sudo ln -s /etc/nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-enabled/

# 2. āļ•āļĢāļ§āļˆāļŠāļ­āļšāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āđ„āļŸāļĨāđŒ Nginx āļ”āđ‰āļ§āļĒāļŠāļīāļ—āļ˜āļīāđŒ Super-user
sudo nginx -t

āļŦāļēāļāļŦāļ™āđ‰āļēāļˆāļ­āļ•āļ­āļšāļāļĨāļąāļšāļĄāļēāđ„āļĄāđˆāļĄāļĩ Error āļšāļĢāļĢāļ—āļąāļ”āļŠāļĩāđāļ”āļ‡
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

āđƒāļŦāđ‰āļŠāļąāđˆāļ‡āļŠāļąāđˆāļ‡āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ„āļ­āļ™āļŸāļīāļāđƒāļŦāļĄāđˆāđ„āļ”āđ‰āļ—āļąāļ™āļ—āļĩāđ‚āļ”āļĒāļ—āļĩāđˆāđ€āļ§āđ‡āļšāđ„āļĄāđˆāļˆāļģāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āļŦāļĒāļļāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™ (Zero-downtime Hot Reload)
sudo systemctl reload nginx


ðŸ’ŧ āļ§āļīāļ˜āļĩāļāļēāļĢāđ€āļ›āļīāļ”āđ€āļ‚āđ‰āļēāđƒāļŠāđ‰āļ‡āļēāļ™

āđ€āļĄāļ·āđˆāļ­āđ€āļ›āļīāļ”āđ€āļ§āđ‡āļšāļšāļĢāļēāļ§āđ€āļ‹āļ­āļĢāđŒāļ‚āļ­āļ‡āļ„āļļāļ“āđāļĨāđ‰āļ§āļ§āļīāđˆāļ‡āđ„āļ›āļĒāļąāļ‡ URL āļ‹āļąāļšāđ‚āļ”āđ€āļĄāļ™āļĨāļąāļšāļ—āļĩāđˆāļ•āļąāđ‰āļ‡āđ„āļ§āđ‰

  • āļ”āđˆāļēāļ™āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ—āļĩāđˆ 1: āļšāļĢāļēāļ§āđ€āļ‹āļ­āļĢāđŒāļˆāļ°āđāļŠāļ”āļ‡āļŦāļ™āđ‰āļēāļ•āđˆāļēāļ‡ Pop-up āđƒāļŦāđ‰āļ›āđ‰āļ­āļ™āļĢāļŦāļąāļŠāļœāđˆāļēāļ™āļŠāļąāđ‰āļ™āđāļĢāļ (āđƒāļŦāđ‰āļ›āđ‰āļ­āļ™ Username pitt_secure_admin āđāļĨāļ°āļĢāļŦāļąāļŠāļœāđˆāļēāļ™āļ—āļĩāđˆāļŠāļļāđˆāļĄāļ•āļąāđ‰āļ‡āđ„āļ§āđ‰āđƒāļ™āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ—āļĩāđˆ 3)
  • āļ”āđˆāļēāļ™āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ—āļĩāđˆ 2: āđ€āļĄāļ·āđˆāļ­āļœāđˆāļēāļ™āļ”āđˆāļēāļ™āđ€āļ§āđ‡āļšāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđ€āļ‚āđ‰āļēāļĄāļēāđ„āļ”āđ‰ āļ„āļļāļ“āļˆāļķāļ‡āļˆāļ°āļžāļšāļŦāļ™āđ‰āļēāļ•āđˆāļēāļ‡āļĨāđ‡āļ­āļāļ­āļīāļ™āļŦāļĨāļąāļāļ‚āļ­āļ‡ phpMyAdmin āđ€āļžāļ·āđˆāļ­āļāļĢāļ­āļāļŠāļīāļ—āļ˜āļīāđŒāļœāļđāđ‰āđƒāļŠāđ‰āļ‚āļ­āļ‡āļĢāļ°āļšāļšāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ MySQL/MariaDB āļ•āđˆāļ­āđ„āļ›āļ„āļĢāļąāļš āļĢāļ°āļšāļšāļŠāļļāļ”āļ™āļĩāđ‰āļˆāļ°āđ€āļ‡āļĩāļĒāļš āļŠāļ‡āļš āļ›āļĨāļ­āļ”āļ āļąāļĒāļˆāļēāļāļāļēāļĢāđāļ­āļšāļŠāđˆāļ­āļ‡āļ‚āļ­āļ‡āļšāļ­āļ— 100% āļ„āļĢāļąāļš

āļ­āđˆāļēāļ™āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄ

āļ›āđ‰āļēāļĒāļāļģāļāļąāļš:, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,