Jak uruchomić swój własny serwer WWW w Aruba Cloud

dodał 5 grudnia 2016 o 07:33 w kategorii HowTo  z tagami:
Jak uruchomić swój własny serwer WWW w Aruba Cloud

Jedną z najpopularniejszych usług w internecie jest WWW. Postawienie własnego serwera często jest jednym z pierwszych kroków na drodze samodzielnego administratora. Dzisiaj pomożemy Wam zainstalować i uruchomić serwer http.

We współpracy z firmą ArubaCloud pokazaliśmy Wam, jak postawić swój serwer backupów, jak skonfigurować własny serwer VPN i podłączyć do niego komputer, telefony komórkowe oraz domowy ruter a także jak schować się przed cenzurą sieci i jak zacząć serwer zabezpieczać oraz jak postawić swój własny zdalny pulpit. Dzisiaj z kolei postawimy wspólnie serwer WWW, na którym będzie mogli umieścić swoją witrynę.

Instalacja i konfiguracja oprogramowania

Jeśli nie macie jeszcze swojego własnego serwera, to jest to dobra okazja by się w taki wyposażyć. Aruba oferuje dwa miesiące korzystania ze swojego podstawowego serwera gratis – a po zakończeniu promocji będzie on Was kosztował zaledwie 4 złote miesięcznie. Instrukcję jak krok po kroku skorzystać z promocji i uruchomić swój serwer znajdziecie w tym artykule. Jeśli macie już swój serwer – to zapraszamy do lektury kolejnych akapitów.

Korzystając z systemu do zarządzania pakietami yum instalujemy niezbędne pakiety w systemie CentOS 7.2:

1. Instalacja serwera Apache2:

sudo yum install httpd

2. Instalujemy obsługę skryptów PHP na serwerze:

sudo yum install php php-mysql

(listę dodatkowych modułów można wyświetlić za pomocą yum search php-*)

3. Gdy już postawimy stronę, będziemy musieli sprawdzić, czy prawidłowo działa. W tym celu tworzymy testowy skrypt PHP z funkcją phpinfo(), wyświetlającą podstawowe informacje o serwerze WWW.

sudo mcedit /var/www/html/info.php
<?php
phpinfo();
?>

4. Aby serwer był dostępny w sieci dodajemy wyjątek w firewallu:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Jeśli korzystacie z firewalld to ta reguła będzie wyglądać następująco:

sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload

5. Uruchamiamy i testujemy usługę

sudo systemctl start httpd

W przeglądarce wpisujemy adres IP naszego serwera (http://xx.xx.xx.xx). Jeśli usługa została uruchomiona poprawnie oraz firewall zezwolił na połączenie, w przeglądarce pojawi strona startowa naszego serwera WWW:

serwer_www

Aby sprawdzić nasz plik info.php, który utworzyliśmy w kroku 2, w przeglądarce wpisujemy adres naszego serwera z odpowiednią ścieżką (http://xx.xx.xx.xx/info.php, czyli odwołanie do pliku /var/www/html/info.php).

test_phpinfo

Tuning serwera Apache

Po uruchomieniu serwera warto zmienić kilka parametrów jego konfiguracji. Tworzymy i edytujemy dodatkowy plik konfiguracyjny dla apache:

mcedit /etc/httpd/conf.d/tuning.conf

W pliku tuning.conf wpisujemy:

ServerTokens prod
ServerSignature Off
TraceEnable off

Co oznaczają wprowadzone zmiany?

ServerTokens – Dyrektywa ta określa czy pole nagłówka odpowiedzi serwera, które jest wysyłane do klienta zawiera opis: nazwę systemu operacyjnego, wersję oraz informacje o dodatkowych modułach. Ustawiając wartość na 'off’ wyłączamy wysyłanie nagłówka 'Server’ do klienta, utrudniając identyfikację wersji używanego oprogramowania.

ServerSignature – Dyrektywa ServerSignature umożliwia konfigurację linii stopki dla dokumentów generowanych przez serwer (np. dla dokumentów 404). Ze stopki usuwamy adres serwera oraz wersję oprogramowania.

TraceEnable – Wyłączamy obsługę żądań typu HTTP Trace aby zapobiec atakom typu XST.

Następnie edytujemy plik /etc/php.ini, w linii 44 zmieniamy expose_php:

expose_php = Off

Ustawiając zmienną expose_php na Off określamy, że w nagłówkach nie będzie wysyłana używana przez nas wersja php (np. X-Powered-By: PHP/5.3.7)

Testujemy serwer www za pomocą narzędzia nikto

Nikto to prosty skaner , którego zdaniem jest znalezienie podstawowych błędów w konfiguracji serwera WWW.  Nikto jest dostępny w repozytorium epel-release. Jeśli w naszym systemie nie korzystamy z repozytorum epel, należy je zainstalować w następujący sposób:

sudo yum install epel-release
sudo yum install nikto

Skanujemy nasz serwer www:

nikto -host localhost
[[email protected] ~]# nikto -host localhost
- ***** RFIURL is not defined in nikto.conf--no RFI tests will run *****
- ***** SSL support not available (see docs for SSL install) *****
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         2016-12-03 14:03:05 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache
+ The anti-clickjacking X-Frame-Options header is not present.
+ Allowed HTTP Methods: OPTIONS, GET, HEAD, POST 
+ OSVDB-3233: /info.php: PHP is installed, and a test script which runs phpinfo() was found. This gives a lot of system information.
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ 4197 items checked: 0 error(s) and 5 item(s) reported on remote host
+ End Time:           2016-12-03 14:03:11 (GMT1) (6 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Skaner poinformował nas, że wykrył dostępność pliku /info.php (OSVDB-3233), możliwość indeksowania katalogu /icons/ (OSVDB-3268) oraz standardowy plik README w katalogu /icons/. Jeśli chcecie poćwiczyć, to rozwiązanie powyższych problemów z pomocą Google lub bez nie powinno sprawić Wam problemów.

Dla pełnej przejrzystości – za przygotowanie oraz opublikowanie powyższego artykułu otrzymujemy wynagrodzenie.