.. html_protection: HTML Protection =============== Use the Apache web server with ``.htaccess`` and ``.htpasswd`` files to protect the access to HTML pages. 1. Create a ``.htpasswd`` Password File --------------------------------------- Use the ``htpasswd`` utility to create a new password file and add a user. Replace ``username`` with the username to be added: .. code:: sudo htpasswd /etc/apache2/.htpasswd username In case it is the first user use this command with flag ``-c`` to also create a file containing usernames and encrypted passwords: .. code:: sudo htpasswd -c /etc/apache2/.htpasswd username Delete the user ``username`` from ``.htpasswd``: .. code:: sudo htpasswd -D /etc/apache2/.htpasswd username | 2. Create an ``.htaccess`` File ------------------------------- In the directory containing the HTML files create an ``.htaccess`` file if it doesn't already exist. .. code:: sudo nano /var/www/html/.htaccess This file will specify the access control rules. Add the following lines to the ``.htaccess`` file: .. code:: AuthType Basic AuthName "Restricted Access" AuthUserFile /etc/apache2/.htpasswd Require valid-user | 3. Enable ``.htaccess`` ----------------------- By default, Apache doesn't allow ``.htaccess`` files to override settings. Enable this by editing the Apache configuration file: .. code:: sudo nano /etc/apache2/apache2.conf Find the ```` section for the directory (usually ``/var/www/html``) and change ``AllowOverride None`` to ``AllowOverride All``. .. code:: Options Indexes FollowSymLinks AllowOverride All Require all granted Save the file and exit. | 4. Restart Apache ----------------- After making these changes, restart the Apache service to apply the new configuration: .. code:: sudo systemctl restart apache2 When someone tries to access the HTML pages from the web server, they will be prompted for a username and password. Remember to replace ``/var/www/html`` with the actual directory where the HTML files are located. Additionally, ensure that ``.htpasswd`` file is not accessible from the web, as it contains sensitive information. | 5. Disable ``.htaccess`` Protection ----------------------------------- Open the .htaccess file in the protected directory: .. code:: sudo nano /var/www/html/.htaccess Comment out the auth directives: .. code:: # AuthType Basic # AuthName "Restricted Area" # AuthUserFile /full/path/to/.htpasswd # Require valid-user After making these changes, restart the Apache service to apply the new configuration: .. code:: sudo systemctl restart apache2