Apache2: Instalacja i konfiguracja na Debian 10 (2021)

Zacznijmy od instalacji Apache2, serwera usługi WWW (http oraz https), podobnie jak Nginx. Dla mnie najważniejszą różnicą jest to, że Nginx znacznie lepiej używa zasobów (jest mniej zasobo-żerny) jeżeli chodzi o serwowanie statycznego kontentu (np html+css+js+obrazki). Natomiast jeżeli chodzi o kontent dynamiczny (np. PHP) sytuacja jest inna, ponieważ Nginx nie potrawi przetwarzać skryptów php wewnątrz swojego procesu, musi je przesyłać do zewnętrzego interpretatora np. php-fpm. Dlatego jeżeli planujecie korzystać z rozwiązań opartych na PHP (np. WordPress, Joomla, Drupala), i zależy wam na możliwości definiowania uprawnień do przekierowań z poziomu np. ftp (za pomocą pliku .htaccess) okazuje się, że Apache2 jest lepszym rozwiązaniem. Wiedząc dlaczego Apache2, a nie jednak lekki Nginx zacznijmy naszą instalację.

  1. Instalacja pakietów jako uprawniony użytkownik
apt-get install apache2 apache2-doc apache2-utils

2. Aktualizujemy politykę firewall, dodając do niej porty, z których korzysta Apache2

ufw allow 80/tvp
ufw allow 443/tcp
ufw reload

3. Sprawdźmy czy Apache2 działa poprawnie, wejdźmy z poziomu przeglądarki na adres Twojego serwera, naszym oczom powinna ukazać się strona Apache2 z danymi oraz napisem: „It works!”

http://adres_twojego_serwera

4. Usuńmy domyślną stronę, nie jest ona potrzeba, w zależności od konfiguracji strona ta wyświetla się przy błędach 404 lub przy wpisaniu sub-domeny nie istniejącej

a2dissite 000-default.conf

5. Utwórzmy katalogi i konfigurację dla Naszej strony oraz włączmy ją w Apache2

# utwórzmy sobie strukturę, w której będziemy trzymać nasze strony
mkdir -p /var/www/nasza_nazwa/public_html
mkdir /var/www/nasza_nazwa/logs

# utwórzmy plik konfiguracji zgodnie z katalogami przygotowanymi wcześniej
nano /etc/apache2/sites-available/nasza_nazwa.conf
<VirtualHost *:80> 
     ServerAdmin webmaster@nasza_domena
     ServerName nasza_domena
     ServerAlias www.nasza_domena
     DocumentRoot /var/www/nasza_nazwa/public_html/
     ErrorLog /var/www/nasza_nazwa/logs/error.log 
     CustomLog /var/www/nasza_nazwa/logs/access.log combined
</VirtualHost>

a2ensite nasza_nazwa.conf
systemctl reload apache2

6. Zabezpieczmy trochę naszego Apache2

# Wyłączmy sygnatury serwera, aby atakujący nie znał dokładnej wersji
sed -i -e "s/^ServerSignature OS*.*\$/ServerSignature Off/" '/etc/apache2/conf-available/security.conf'
sed -i -e "s/^ServerTokens OS*.*\$/ServerTokens Prod/" '/etc/apache2/conf-available/security.conf'

# wyłączmy listowanie plików i podążanie za linkami symbolicznymi
nano /etc/apache2/conf-available/security.conf
# należy odnaleźć linię zaczynającą się od :<Directory /var/www/>
# pod nią zamienić Options Indexes FollowSymLinks
# na Options -Indexes
# jeżeli planujemy korzystać z plików .htaccess (to był powód dlaczego wybrałem Apache2)
# zamieniamy następna linię zaczynającą się od: AllowOverride None
# na AllowOverride All

# po zmianie fragment kodu, który zmienialiśmy wygląda tak
<Directory /var/www/>
        Options -Indexes
        AllowOverride All
        Require all granted
</Directory>

7. Instalacja dodatkowego modułu do bezpieczeństwa

apt-get install libapache2-mod-security2

8. Konfiguracja modułu bezpieczeństwa (w sumie pakiet zawiera bardzo dużo różnych reguł, dlatego nie ma potrzeby na magiczne wstrzykiwanie go, moduł przy instalacji robi to sam)

# dla pewności uruchomimy tester czy wszystko jest ok
apache2ctl -t
# jeżeli polecenie zwróci "Sytanx: OK", jeżeli nie popełniliśmy gdzieś błąd i musimy go skorygować
systemctl restart apache2

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*