Настройка на защитен сървър на Apache на Ubuntu 24.04


В това изчерпателно ръководство ще ви преведем през процеса на настройка на защитен сървър на Apache на Ubuntu 24.04. Независимо дали създавате личен уебсайт или бизнес платформа, следването на тези стъпки ще гарантира, че вашият сървър е не само функционален, но и сигурен. Не забравяйте да замените "myweb.linuxconfig.org" със собствен домейн в този урок.

В този урок ще научите:

  • Как да актуализирате и надстроите вашата система Ubuntu
  • Стъпки за инсталиране и конфигуриране на Apache
  • Конфигурация на защитната стена за сигурност
  • Създаване на примерен уебсайт и настройка на виртуални хостове
  • Активиране и стартиране на услугата Apache
  • Тестване на настройката на Apache
  • Защита на Apache с Let's Encrypt SSL сертификат
  • Подсилете вашия Apache сървър за подобрена сигурност

Ръководство стъпка по стъпка

  1. Актуализиране и надстройка на системата: Започнете с актуализиране на индексите на пакетите и надстройване на системата до най-новата версия. Това гарантира, че имате всички най-нови корекции и зависимости за сигурност.

    $ sudo apt update
    sudo apt upgrade
    
  2. Инсталиране на Apache: След това инсталирайте уеб сървъра на Apache2. Apache е безплатен софтуер за уеб сървър с отворен код, който захранва голяма част от мрежата.

    $ sudo apt install apache2
    
  3. Конфигурация на защитната стена: Конфигурирайте защитната стена, за да позволи HTTP и HTTPS трафик. Освен това активирайте SSH, ако планирате да управлявате сървъра си дистанционно.

    $ sudo ufw allow http
    sudo ufw allow https
    sudo ufw allow OpenSSH
    sudo ufw enable
    
  4. Командите sudo ufw allow http и sudo ufw allow https се използват за разрешаване съответно на входящи HTTP и HTTPS трафик, които са от съществено значение за обслужване на уеб страници и сигурни уеб комуникации. Командата sudo ufw allow OpenSSH е за отваряне на SSH порта, позволявайки сигурно отдалечено управление на сървъра. И накрая, sudo ufw активира защитната стена на UFW, налагайки посочените правила за контрол на трафика на сървъра.

  5. Създаване на примерен уебсайт: Създайте директория за вашия уебсайт и добавете примерен index.html файл. След това променете собствеността на потребителя на уеб сървъра (www-data).

    $ mkdir -p /var/www/html/myweb
    echo "Setting Up a Secure Apache Server on Ubuntu 24.04" > /var/www/html/myweb/index.html
    chown -R www-data:www-data /var/www/html/myweb/
    
  6. Командата mkdir -p /var/www/html/myweb създава нова директория с име 'myweb' в пътя '/var/www/html', която обикновено се използва за съхранение на уеб съдържание. Командата echo се използва за създаване на прост HTML файл с име "index.html" в тази директория, съдържащ текста "Настройка на защитен Apache сървър на Ubuntu 24.04". И накрая, chown -R www-data:www-data /var/www/html/myweb/ променя собствеността на директорията "myweb" и нейното съдържание на потребителя и групата "www-data", която е потребителят по подразбиране за уеб сървъра на Apache, осигурявайки подходящи разрешения за работа на уеб сървъра.

  7. Настройка на виртуален хост: Създайте файл с виртуален хост за вашия домейн. Това позволява на Apache да отговаря на заявки за вашия домейн. Не забравяйте да активирате сайта и по желание да деактивирате сайта по подразбиране.

    $ sudo nano /etc/apache2/sites-available/myweb.conf
    
    Insert the following configuration:
    <VirtualHost *:80>
        ServerAdmin admin@myweb.linuxconfig.org
        ServerName myweb.linuxconfig.org
        DocumentRoot /var/www/html/myweb
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    

    След това активирайте сайта и по желание деактивирайте сайта по подразбиране

    $ sudo a2ensite myweb
    sudo a2dissite 000-default
    
  8. Командата sudo a2ensite myweb се използва за активиране на сайта "myweb" в Apache. Тази команда създава символна връзка на конфигурационния файл на сайта от директорията "sites-available" към директорията "sites-enabled", като по този начин активира конфигурацията на сайта. Обратно, командата sudo a2dissite 000-default деактивира сайта по подразбиране, предоставен от Apache. Това се постига чрез премахване на символната връзка за конфигурацията "000-default" от директорията "sites-enabled", което спира Apache да зарежда настройките по подразбиране.

  9. Стартиране и активиране на Apache: Разрешете услугата Apache да стартира при зареждане и след това рестартирайте услугата, за да приложите промените.

    $ sudo systemctl enable apache2
    sudo systemctl restart apache2
    
  10. Командата sudo systemctl enable apache2 се използва, за да се гарантира, че услугата Apache2 се стартира автоматично при зареждане на системата. Това създава постоянна настройка, която свързва услугата Apache2 с процеса на зареждане на системата. След това командата sudo systemctl restart apache2 се използва за рестартиране на услугата Apache2. Това е необходимо за прилагане на всички скорошни промени, направени в конфигурацията на Apache, или за стартиране на услугата след инсталиране или актуализации. Рестартирането на услугата гарантира, че Apache работи с най-новите конфигурации.

  11. Тествайте конфигурацията на Apache: Тествайте настройката си, като влезете в уебсайта си. Можете да използвате браузър или инструменти от командния ред като wget, за да видите дали сайтът ви се обслужва правилно.

    $ wget myweb.linuxconfig.org
    

  12. Защита на Apache с Let's Encrypt: По избор: Защитете сайта си с безплатен Let's Encrypt SSL сертификат. Това осигурява криптиране на вашия уебсайт, защитавайки данните на вашите посетители.

    $ sudo apt install certbot python3-certbot-apache
    sudo certbot --apache
    

    Командата sudo apt install certbot python3-certbot-apache инсталира 'certbot' и неговия плъгин Apache в системата. 'Certbot' е безплатен, автоматизиран инструмент, предназначен за получаване на SSL сертификати от Let's Encrypt, безплатен сертифициращ орган. Плъгинът Apache, "python3-certbot-apache", се използва специално за конфигуриране на SSL сертификати на сървъри на Apache. След инсталацията се изпълнява командата sudo certbot --apache. Това стартира "certbot" с плъгина Apache, който не само получава SSL сертификата от Let's Encrypt, но също така автоматично конфигурира Apache да използва този сертификат, позволявайки HTTPS на сървъра.

  13. Тествайте Secure SSL уебсайт: В този момент уеб сървърът на Apache2 трябва автоматично да пренасочи всички HTTP заявки към портиране на HTTPS. Тествайте уебсайта си и се уверете, че работи на защитен SSL http порт.

  14. Укрепване на сигурността на Apache: И накрая, подсилете инсталацията си на Apache, като промените конфигурационния файл на Apache. Това включва деактивиране на заявки за проследяване, скриване на версията на Apache и изключване на сървърните подписи.

    $ sudo nano /etc/apache2/apache2.conf

    Добавете или променете следните редове:

    TraceEnable Off
    ServerTokens Prod
    ServerSignature Off
    

    Директивите за конфигуриране на Apache TraceEnable Off, ServerTokens Prod и ServerSignature Off са важни за подобряване на сигурността на сървъра. TraceEnable Off деактивира метода за заявка TRACE HTTP, предотвратявайки всякакви потенциални атаки за проследяване на сайтове (XST). ServerTokens Prod ограничава количеството информация (по-специално версията на сървъра и типа на операционната система), която се изпраща в заглавките на отговора на сървъра, като по този начин намалява излагането на информация на потенциални нападатели. ServerSignature Off допълнително ограничава изтичането на информация, като премахва версията на сървъра от страниците за грешки и генерираните от сървъра документи. Взети заедно, тези настройки са от решаващо значение за прикриване на подробности за сървъра, които иначе биха могли да бъдат използвани от нападателите при изработването на целенасочени атаки.

    В допълнение към директивите за конфигуриране TraceEnable Off, ServerTokens Prod и ServerSignature Off, можете да помислите за добавяне на следните настройки, за да подобрите допълнително защитата и производителността на вашия сървър на Apache. Можете да добавите към .htaccess, httpd.conf или VirtualHost секция:

    Заглавката винаги задава X-Content-Type-Options "nosniff": Тази заглавка не позволява на браузърите да извършват подслушване от MIME тип, което може да намали излагането на атаки за изтегляне от drive-by.

    Заглавката винаги задава X-Frame-Options "SAMEORIGIN": Тази настройка предотвратява кликването, като инструктира браузъра да не позволява страницата да се показва в рамка, освен ако не е поискана от същия източник.

    Заглавката винаги задава X-XSS-Protection "1; mode=block": Това позволява филтъра за скриптове между сайтове (XSS), вграден в най-новите уеб браузъри, и му казва да блокира отговори, които съдържат открити атаки.

    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1: Тази линия деактивира по-стари, по-малко сигурни SSL/TLS протоколи (SSLv3, TLSv1 и TLSv1.1) и позволява само по-сигурни протоколи, намалявайки риска от атаки за понижаване на нивото на протокола.

    SSLCipherSuite HIGH:!aNULL:! MD5: Това задава силен пакет от шифри за SSL/TLS връзки, който определя използваните алгоритми за криптиране.

    Добавянето на тези настройки подобрява цялостната сигурност, като смекчава няколко често срещани уеб уязвимости и гарантира, че комуникацията с вашия сървър остава криптирана и сигурна. Не забравяйте да рестартирате Apache, след като направите тези промени, за да ги приложите.

    Запишете и излезте, след което рестартирайте Apache

    $ sudo systemctl restart apache2
    

Извод

Следвайки тези стъпки, вие успешно сте настроили защитен сървър на Apache на Ubuntu 24.04. Тази настройка осигурява солидна основа за хостване на вашия уебсайт, като гарантира както функционалност, така и сигурност. Не забравяйте да поддържате сървъра си актуализиран и периодично да преглеждате настройките си за защита, за да поддържате стабилно и сигурно присъствие в мрежата.