Serwer HTTP bazujący na Apache powinien być odpowiednio skonfigurowany tak by
niepowołane osoby nie mogły przejąc nad nim kontroli. Oczywiście coś takiego jak 100% zabezpieczenie nie istnieje, niemniej jednak nie oznacza to, że nie można zrobić wszystkiego by maksymalnie zniechęcić potencjalnych atakujących.
Zawsze zdarza się tak, że obok informacji dotyczącej błędu występującego w danym systemie, programie czy usłudze pojawia się również wersja, której ten bug dotyczy. Standardowo serwer Apache wyświetla informacje na temat systemu/wersji na jakim został postawiony i potencjalnie w momencie znalezienia jakiegoś błędu może stać się to powodem do praktyk włamaniowych. Z tego też względu warto wyłączyć opcje odpowiedzialną za wyświetlanie tego typu informacji.
Wszystkie opcje będziemy wprowadzać i zapisywać w pliku konfiguracyjnym kryjącym się pod nazwą httpd.conf.
ServerSignature Off
ServerTokens Prod
Kolejna sprawa to upewnienie się by serwer Apache nie miał dostęp do innych folderów (łącznie z opcją przeglądania) z wyjątkiem tego w którym znajduje się nasz serwis:
<Directory />
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>
<Directory /techit>
Order Allow,Deny
Allow from all
</Directory>
Serwer Apache umożliwia nam również zacieśnić ilość osób jakie mogą mieć dostęp do naszego serwera dla danej klasy czy konkretnego IP:
Order Deny,Allow
Deny from all
Allow from xx.xx.xx.x/24
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Inną z ciekawych opcji jakie oferuje Apache jest możliwość zablokowania dostępu do określonych plików. Poniższy przykład pokazuje jak zablokować dostęp do plików zaczynających swoją nazwę od .tech
AccessFileName .httpdoverride
<Files ~ "^\.tech">
Order allow,deny
Deny from all
Satisfy All
</Files>
i restart Apacha...
/etc/init.d/apache2 restart
Poza wskazanymi ustawieniami warto się zastanowić nad odpowiednią konfiguracją takich elementów jak MaxSpareServers, MaxRequestsPerChild, ThreadsPerChild, ServerLimit, MaxSpareThread, LimitRequestBody czy Timeout. Ważne jest również by wyłączyć moduły z których się nie korzysta.