How to secure phpMyAdmin

后端 未结 9 671
清歌不尽
清歌不尽 2020-12-02 04:40

I have noticed that there are strange requests to my website trying to find phpmyadmin, like

/phpmyadmin/
/pma/

etc.

Now I have ins

9条回答
  •  醉梦人生
    2020-12-02 05:01

    The best way to secure phpMyAdmin is the combination of all these 4:

    1. Change phpMyAdmin URL
    2. Restrict access to localhost only.
    3. Connect through SSH and tunnel connection to a local port on your computer
    4. Setup SSL to already encrypted SSH connection. (x2 security)
    

    Here is how to do these all with: Ubuntu 16.4 + Apache 2 Setup Windows computer + PuTTY to connect and tunnel the SSH connection to a local port:

    # Secure Web Serving of phpMyAdmin (change URL of phpMyAdmin):
    
        sudo nano /etc/apache2/conf-available/phpmyadmin.conf
                /etc/phpmyadmin/apache.conf
            Change: phpmyadmin URL by this line:
                Alias /newphpmyadminname /usr/share/phpmyadmin
            Add: AllowOverride All
                
                    Options FollowSymLinks
                    DirectoryIndex index.php
                    AllowOverride Limit
                    ...
            sudo systemctl restart apache2
            sudo nano /usr/share/phpmyadmin/.htaccess
                deny from all
                allow from 127.0.0.1
    
            alias phpmyadmin="sudo nano /usr/share/phpmyadmin/.htaccess"
            alias myip="echo ${SSH_CONNECTION%% *}"
    
    # Secure Web Access to phpMyAdmin:
    
            Make sure pma.yourdomain.com is added to Let's Encrypt SSL configuration:
                https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04
    
            PuTTY => Source Port (local):  - Destination: 127.0.0.1:443 (OR localhost:443) - Local, Auto - Add
    
            C:\Windows\System32\drivers\etc
                Notepad - Run As Administrator - open: hosts
                    127.0.0.1 pma.yourdomain.com
    
            https://pma.yourdomain.com:/newphpmyadminname/ (HTTPS OK, SSL VPN OK)
            https://localhost:/newphpmyadminname/ (HTTPS ERROR, SSL VPN OK)
    
            # Check to make sure you are on SSH Tunnel
                1. Windows - CMD:
                    ping pma.yourdomain.com
                    ping www.yourdomain.com
    
                    # See PuTTY ports:
                    netstat -ano |find /i "listening"
    
                2. Test live:
                    https://pma.yourdomain.com:/newphpmyadminname/
    

    If you are able to do these all successfully,

    you now have your own url path for phpmyadmin,
    you denied all access to phpmyadmin except localhost,
    you connected to your server with SSH,
    you tunneled that connection to a port locally,
    you connected to phpmyadmin as if you are on your server,
    you have additional SSL conenction (HTTPS) to phpmyadmin in case something leaks or breaks.
    

提交回复
热议问题