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:
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).
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
[root@aruba-cloud ~]# 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.
Komentarze
Jest 5 grudnia, Międzynarodowy Dzień Wolontariusza, a tutaj artykuł na końcu którego jest napis:
„Dla pełnej przejrzystości – za przygotowanie oraz opublikowanie powyższego artykułu otrzymujemy wynagrodzenie.”
Fajnie by było jakby właśnie tego dnia ukazał się artykuł napisany nie dla kasy, ale dlatego by zrobić coś dobrego bezinteresownie :)
To napisz, chętnie opublikujemy.
Może ja coś napiszę?
może jednak nie?
Dlaczego apache? (to jestem w stanie zrozumieć, niby prosta konfiguracja i takie tam)
Dlaczego nic o wyłączeniu .htaccess (którego obsługa ma BARDZO negatywny wpływ na wydajność)?
To jaka jest alternatywa zamiast htaccess do apache? Wykorzystywany jest modrewrite i inne moduły bez którego htaccess jest potrzebny.
To co masz w plikach 'htaccess’ może skonfigurować w konfigu serwera. Działa szybciej i bezpieczniej. W dokumentacji apache wszytko pisze :)
czy bezpieczniej to się nie wypowiem, ale zdecydowanie szybciej
bo obsługa .htaccess wymusza poszukiwanie pliku w każdym podkatalogu ścieżki, dodatkowe odwołania do systemu plików
wręcz w dokumentacji nginksa widziałem porównanie wydajności i oni sami pokazali, ze apache bez .htaccessa działa praktycznie tak samo (przynajmniej o ile ram się nie skończy)
Trochę mnie zdziwił Apache zamiast nginx, ale z drugiej strony Apache to popularne rozwiązanie używane w wielu aplikacjach.
W powyższym artykule podobał mi się fragment o skanowaniu przy pomocy nikto, fajnie byłoby poczytać o innych narzędziach i rzeczach, na których trzeba się skupić przy skanowaniu.
Dodatkowo bardzo bym chciał zobaczyć drugą część artykułu o zabezpieczaniu serwera. Wiem, że to zależy od Aruby, więc jeżeli przedstawiciele tej firmy tu zaglądają, to ładnie proszę o kontynuowanie tematyki zabezpieczeń. Miło by również było zobaczyć paragraf o zabezpieczaniu strony SSLem przy pomocy Let’s Encrypt (wraz z automatyzacją procesu odnowień certyfikatów).
.htaccess to chyba najmniejszy problem w tym wypadku. PHP 5.4 (bez wsparcia od ponad roku) serwowane przez mod_php to prawdziwy performance killer. Dodatkowo dochodzą potencjalne problemy z uprawnieniami – wszystkie aplikacje PHP działają na tym samym użytkowniku i nie da się ich sensownie odseparować. Domyślam się że Aruba nie zaszalała z kasą za ten poradnik, ale w obecnej formie jest raczej bezużyteczny i wyrządza więcej szkody niż pożytku…
Osobiscie wole Nginx, ale to moje prywatne zdanie i angazuje tylko mnie.
Dorzucilbym cos na temat https i Lets’encrypt… albo zachecam zainteresowanych czytelnikow do zglebiania tematu.
Aruba i wydajność xD
Chyba klienci się coś za bardzo nie pchają, skoro w krótkim czasie tyle artykułów sponsorowanych przez Arubę.
Od początku jest jeden na miesiąc, ale miło mi że tak pilnie śledzisz serwis :)
Następny w kolejności to serwer poczty? :P :)
Nie śledzę pilnie, bo przeoczyłem obiecany opis afery z PlusBankiem.
Kiepski panel klienta, wolne działanie strony, długi czas uruchomienia usług i mała wydajność.
Dzięki za przypomnienie. Miałem doładować ;] Miałem Arube zanim zaczęła być modna xD
Artykuł o hardeningu apache+PHP by się przydał, ale taki z prawdziwego zdarzenia.
@Tomasz: a co proponujesz w zamian za Arubę z taką stawką za m-c?
to moze skoro juz daliscie poradnik jak postawic zombie, to teraz jakis poradnik jak tego zombiaka troszke uzbroic (zeby za szybko nie zzielenial), jakies iptables, albo cos?
W jaki sposób podpiąć własną domenę pod tak skonfigurowany serwer?
U operatora domeny w strefie DNS typ A ustawiasz adres IP swojego serwera