Strona domowa projektu APACHE to
http://apache.org/
Niniejsza strona opisuje konfigurację Apacha 1.x
zainstalowanego na Mandrake 8.x, 9.0. 24.03.2003 pojawił sie
Mandrake 9.1 z Apache2 na pokładzie. Jeżeli chodzi o
konfigurację demona, to do podstawowych zastosowań nie ma potrzeby
modyfikowania domyślnych ustawień, no może poza wpisem
zamieniającym ServerName localhost na ServerName
pd132.wroclaw.sdi.tpnet.pl . Poniżej wyjaśnię o co chodzi.
Spis treści:
Jeżeli instalowałeś już Apache pod Windowsem zadasz pewnie
pytanie: po co tyle zachodu z konfigurowaniem tego samego programu
pod Linuksem, skoro łatwiej się to robi pod Windowsem? Ano z
bardzo prozaicznego powodu: BEZPIECZEŃSTWO. Jeżeli zainstalujesz
Apache pod Windowsem 9x lub Milenium - to jak zabezpieczysz pliki
poprzez nadanie restrykcyjnych praw dostępu? Pod Windows typu NT
jest to już rozwiązane, ale pojawia się... konieczność szybkiego
usuwania dziur w bezpieczeństwie systemu, co nie jest tak łatwe jak
w Linuksie. Problemem jest też konfigurowanie Windows 2000 oraz XP
jako serwera pracującego pod SDI-HIS (trzeba pobrać łatę ze strony
Microsoftu). Na koniec może przekona Ciebie jeszcze jeden argument:
nie znalazłem wpisów w logach serwera Apache informujących o
próbach ataku na katalogi i pliki unixowe, natomiast
kilka-kilkanaście razy dziennie ktoś z Internetu próbuje odpalić
na moim komputerze skrypty atakujące pliki windowsowe.
Oczywiście nieskutecznie ;]
Przyjmuję, że masz w domu stałe połączenie z Internetem poprzez
usługę SDI (od TPSA). Poznałeś podstawowe polecenia tekstowe typu:
SKOPIUJ, USUŃ, PRZENIEŚ (możesz od biedy ratować się programem
mc).
Przypominam, że POZIOM BEZPIECZEŃSTWA DLA SERWERÓW (po wykonaniu
polecenia msec 4) reguluje między innymi prawa do katalogów
w /home/* , co zablokuje konta www zwykłych użytkowników.
Jeżeli nie wiesz o czym mówię, to znaczy, że niepotrzebnie się
spieszysz i... nie przeczytałeś tej
stronki.
Zainstalowanie serwera apache jest bardzo łatwe. Można to zrobić w
trakcie instalacji lub po pierwszym uruchomieniu (w KDE wybierz:
MANDRAKE CONTROL CENTER- ZARZĄDZANIE OPROGRAMOWANIEM- INSTALACJIA
OPROGRAMOWANIA- Znajdź w nazwach-
apache i kliknij WYSZUKAJ,
ZAINSTALUJ).
Ze względów bezpieczeństwa nie instaluj na początek modułów
związanych z php. Dlaczego? Przeczytaj tę notatkę.
Ustal swój prawdziwy adres (domenę), który TPSA nadała Tobie
wraz usługą SDI-HIS. Pytasz się po co? Ano z prostego powodu: po
zainstalowaniu serwera Apache będziesz mógł udostępniać swoją
stronę www po wpisaniu do przeglądarki adresu
http://218.97.152.120 lub
http://pd132.wroclaw.sdi.tpnet.pl (uwaga:
w takim adresie nie wpisuj znaku www!!!). Potrzebna
będzie jak widać znajomość adresu-domeny od TPSA. Adresu, który
może wyglądać mniej więcej tak:
pd132.wroclaw.sdi.tpnet.pl .
O ile ustalenie Twojego nr IP jest banalnie proste - znajdziesz go
na instrukcji obsługi SDI (oraz na umowie), to adres musisz odkryć
samodzielnie. Zapraszam na sąsiednią
stronę.
Jeżeli nie podoba Ci się domena nadana przez TPSA, możesz (po
skonfigurowaniu Apache ;) ustalić alias, czyli zastępczy, ale
równoważny adres na witrynie np. www.prv.pl . Tam
zarejestruj jakaś atrakcyjną domenę typu
gwiezdnysklep.prv.pl jako alias do przykładowego
pd132.wroclaw.sdi.tpnet.pl . Od tej chwili (jeżeli będziesz
miał włączony komputer z serwerem na pokładzie) po wpisaniu adresu
http://pd132.wroclaw.sdi.tpnet.pl (nie
wpisuj znaku www!!!) lub
http://www.gwiezdnysklep.prv.pl (tutaj
możesz wpisać znak www) zobaczysz swoją witrynę.
Inne aliasy:
- www.xu.pl oferuje *.xu.pl oraz *.spec.pl
- www.w.pl oferuje *.w.pl
- www.vel.pl oferuje *.vel.pl
- www.one.pl oferuje *.one.pl (nie mylić z ONETem)
- www.z.pl oferuje *.z.pl
- www.er.pl oferuje *.er.pl
- www.end.pl oferuje *.end.pl
oraz prosto z Niemiec:
- www.de.vu oferuje *.de.vu
* * *
Umieszczanie plików dla strony głównej
www.
Ustawianie praw własności oraz praw
odczytu, uruchomienia, modyfikacji. Teoretycznie można przyjąć dwie
postawy. Pierwszą czyli jak najwięcej praw i jak najmniej kłopotów
z konfiguracją. Drugą czyli: dużo prób i jak najmniej praw, co
zwiększa bezpieczeństwo, ale wymaga więcej
zaangażowania.
Skrócony opis konfiguracji. Zaloguj sie jako root zleceniem
su , podaj hasło roota.
* * *
W razie problemów lub z nadmiaru ambicji będziesz musiał
zrozumieć co, jak i dlaczego. Oto bardziej
rozwinięty opis konfiguracji.
- Sprawdź zleceniem cd /;ls -la czy
katalog /var ma właściciela: [root.root]
-
Sprawdź poleceniem cd /var;ls -la czy
katalog /var/www ma właściciela: [apache.apache]
-
Sprawdź poleceniem cd /var/www/;ls -la
czy katalog /var/www/html ma właściciela:
[apache.apache]
-
Ustal prawo własności do zawartości katalogu
/var/www/html poleceniem:
cd /var/www/html oraz chown -R
apache.apache *
Parametr -R oznacza rekurencyjnie, czyli z podkatalogami.
Polecenie to wydajemy oczywiście jako root. Jest
to ważne, jeżeli kopiujemy gotową witrynę, której pliki mają nieustalone prawa dostępu.
-
Teraz ustalisz prawo do czytania, wykonywania i modyfikowania
plików na Twojej witrynce. Teoretycznie powinieneś dotrzeć do
dyrektywy AllowOverride w pliku
/etc/httpd/commonhttpd.conf i ręcznie wykonać konfigurację.
Nie polecam jednak tego dla początkujacych (przyjmuję, że dopiero
się uczysz), ponieważ tamte ustawienia domyślne są spójne i
logiczne. Z poziomu /var/www/html (czyli będąc w katalogu
war/www/html) nadaj odpowiednie prawa do katalogów i plików
- poleceniami w następujacej kolejności:
- chmod -R 755 * (rwxr-xr-x docelowo
dla podkatalogów, -R oznacza rekurencyjnie, czyli z
podkatalogami)
- chmod -R 644 *.* (-rw-r--r-- zmiana dla
wszystkich plików. Jeżeli będziesz miał w przyszłości kłopoty z
wyświetlaniem plików z podkatalogów np.
/var/www/html/obrazki , to przetestuj uprawnienia
-rwxr-x-r-x nadane poleceniem chmod 755 *
z pozycji podkatalogu /var/www/html/obrazki.
Jest to są szczególnie ważne, jeżeli kopiujemy
gotową witrynę z np. partycji windowsowej.
Jeżeli nadmiernie zabezpieczysz swój system i nadasz zbyt
restrykcyjne prawa pojawią się problemy. Na przykład, jeżeli będąc
w katalogu /var/www/ nadamy rekurencyjnie wobec katalogu ~/html
prawa (drwx--x--x) , to wyświetlą się nam tylko pliki z tego
katalogu. Niestety "znikną" pliki z jego podkatalogów.
* * *
Pamiętaj, że zajmuję się tutaj opisem dla Mandrake/Mandriva. W innych
dystrybucjach pliki witryny domowej umieszcza się w innym katalogu
(prawdopodobnie /home/httpd/html/). O położeniu katalogu
głównego /var/www/html/ decyduje plik
/etc/httpd/conf/commonhttpd.conf (w innych dystrybucjach
może to być /etc/httpd/conf/smr.conf) - pozycja DocumentRoot. Więcej o plikach konfiguracyjnych na sąsiedniej stronie.
* * *
Ważne jest, abyś udostępnił na firewallu port 80.
* * *
Przypominam: przy każdym (w przyszłości) kopiowaniu plików do
katalogu z witryną www musisz zadbać o właściwe prawa plików i
katalogów.
* * *
Jeżeli wszystko zrobiłeś prawidłowo, po wpisaniu do przeglądarki
adresu http://218.097.152.120 lub
http://pd132.wroclaw.sdi.tpnet.pl (nie wpisuj w adresie
www) uzyskasz obraz własnej witryny. Od tej chwili
powiększyłeś zasoby Internetu o jeszcze jedną, nikomu niepotrzebną
stronę www :-)))
* * *
Co się stanie jeżeli masz prawidłowo działający serwer, a Twój
gość źle wpisze nazwę pliku html? Pojawi się oczywiście komunikat
404 w języku angielskim. Proponuję, byś zmusił swojego Apacha do
wyświetlenia przygotowaną wcześniej stronę: missing.html ,
którą możesz pobrać i przerobić wg
uznania. Następnie skopiuj ją do katalogu /var/www/html .
Nie zapomnij nadać właściwych praw (takich jake mają inne pliki
html w katalogu). Na koniec zmień wpis w pliku
/etc/httpd/conf/commonhttp.conf w linii ErrorDocument
. Najprościej będzie wyedytować ten plik i wyszukać hasło 404 (w
mcedit wciśnij F7). Następnie najprawdopodobniej wystarczy
odhaszować wiersz z tą dyrektywą, która wygląda mniej więcej tak:
ErrorDocument 404 /missing.html . Mam jedną
uwagę: jeżeli zdecydujesz się na ozdobienie grafiką pliku
missing.html, to adresowanie obrazków (w kodzie html) musisz
dać bezwzględne np. http://poddomena.domena.pl/obrazki/obrazek.jpg . W
przeciwnym wypadku pojawi się nieestetyczny plik
missing.html bez obrazków.
Jeżeli do kodu html pliku missing.html wpiszesz (w części
HEAD) wiersz:
<meta http-equiv="refresh" CONTENT="25;
URL=index.html">
to po 25 sekundach gość zostanie zrzucony na stronę startową
serwera.
Jeżeli nie lubisz jakiegoś adresu IP, to możesz nie dopuścić go
do oglądania swoich stron www. Wystarczy, że wpiszesz (lub
odhaszujesz) w pliku /etc/httpd/conf/commonhttpd.conf
wiersze:
#Controls who can stuff from this server
Order allow,deny
Allow from all
Deny from 218.26.92.124 spidersoft.com aol.com
Po restarcie demona httpd zleceniem /etc/rc.d/init.d/httpd restart wybrane stacje dotknie
komunikat 403 (odmowa dostępu). Dodatkowo możesz w pliku
/etc/httpd/conf/commonhttpd.conf dopisać wiersz:
ErrorDocument 403 http://www.wp.pl
Wówczas każdy, kto będzie zablokowany zostanie zrzucony na wp.pl
:)
Inna możliwość to wpis:
ErrorDocument 403 /error/HTTP_FORBIDDEN.html
i włożyć plik HTTP_FORBIDDEN.html do katalogu /var/www/html/error
* * *
Umieszczanie plików dla stron www użytkowników
Twojego Linuksa.
Serwer Apache umożliwia także założenie osobnych witryn dla
każdego posiadacza shellowego konta w naszym LINUXie. Uwaga: aby
założyć konto użytkownika nie wystarczy utworzenie samego katalogu
w /home ;-). Trzeba założyć konto, którego konsekwencją będzie
zaistnienie katalogu /home/uzytkownik z hasłem,
przynależnością do grup itd. Oczywiście na początku będziemy
umieszczać pliki stron www mając bezpośredni (fizyczny) dostęp do
komputera. Odłożymy na później możliwość umieszczania plików
zdalnie, czyli z Internetu np. poprzez serwer ftp, smb, ewentualnie sshd.
Mamy użytkownika antek, któremu pozwolimy na posiadanie
własnej witryny www na naszym Linuksie. A więc siadamy wygodnie i
wykonujemy co następuje:
- Tworzymy katalog /home/antek/public_html
-
Kopiujemy wcześniej wykonaną witrynkę do katalogu
public_html (z plikiem index.html jako
startowym!)
-
Zmieniamy prawo dla katalogu antek (poleceniem chmod 711 antek - będąc w katalogu /home/).
-
Zmieniamy prawo dla katalogu public_html wraz z jego zawartością (poleceniem chmod -R antek.antek public_html - będąc w katalogu /home/antek).
-
Zmieniamy prawo dla katalogu public_html (poleceniem chmod 755
public_html - będąc w
katalogu /home/antek).
-
Zmieniamy prawo dla plików i podkatalogów umieszczonych w
katalogu /home/antek/public_html . Będąc w katalogu
~/public_html wykonamy polecenia w następujacej
kolejności:
- chmod -R 755 *
- chmod -R 644 *.*
parametr -R czyli rekurencyjnie (z
podkatalogami)
-
Edytujemy plik
/etc/httpd/conf/httpd.conf i haszujemy # pozycję
ServerName localhost. Następnie wpisujemy poniżej (w nowym
wierszu) przykładową domenę uzyskaną od TPSA:
ServerName pd132.wroclaw.sdi.tpnet.pl
Teraz wpisujemy do przeglądarki adres:
http://www.gwiezdnysklep.prv.pl/ (możesz wpisać znak
www) jako alias do przykładowego:
http://pd132.wroclaw.sdi.tpnet.pl/~antek (bez znaku www)
Serwer powinien chodzić. Ale nie musi.
Uwaga: jeżeli nie możesz zobaczyć witryny www użytkownika
antek, to sprawdź czy nie zostały zmienione prawa do
katalogu /home/
antek. Kiedy może nastąpić ich zmiana? Otórz
WYSOKI dla Serwerów(4) POZIOM BEZPIECZEŃSTWA zeruje między innymi
ustawienia praw wobec newralgicznych katalogów, w tym tych
umieszczonych w
/home.
Dodatkowym
problemem jest zachowanie Mandrake od wersji 9.x oraz Mandriva,, który po
KAŻDYM restarcie zeruje prawa do newralgicznych katalogów.
Ponieważ poruszam rozległy temat - zapraszam tutaj.
Zapamiętaj jedynie, ze katalog /home/antek powinien mieć
prawa rwxr--r-- i dorywczo można to uzyskać po wydaniu
polecenia chmod 711 /home/antek.
Inny teoretyczny powód blokowania serwera apache to...
ściana ogniowa. Mam nadzieję, że wiesz jak konfigurować firewalla
(polecenie mcc lub drakfirewall).
*
O możliwości założenia strony www na każdym koncie zwykłego
użytkownika decyduje plik /etc/httpd/conf/commonhttpd.conf
(w innych dystrybucjach może to być /etc/httpd/conf/smr.conf) -
pozycja UserDir . W Mandrake/Mandriva domyślnie jest wpisana opcja
zezwalająca na tworzenie kont www. O miejscu katalogu www (indywidualnegop użytkownika) decyduje
wpis:
UserDir nazwakatalogu.
*
Aby w Mandrake 9.1 była prawidłowo wyswietlana polska czcionka
na macierzystych stronkach html, należy w pliku
/etc/httpd/conf/commonhttpd.conf (prawie na samym końcu
pliku) w wierszu
AddDefaultCharset ISO-8859-1
przestawić wpis 1 na 2, czyli:
AddDefaultCharset ISO-8859-2
W innych wersjach Linuksa może to być plik: /etc/httpd/conf/httpd.conf
Mam tutaj kilka uwag. Nowicjusze mają błędne przekonanie, iż wystarczy w konfigu Apache ustawić opcję domyślnego kodowania czcionek (AddDefaultCharset ISO-8859-2) i jak za dotknięciem magicznej różdżki stronki html (które źle wyświetlały literki śćąęńłó) nagle zaczną dobrze działać. Nic bardziej mylnego! Problem prawidłowości kodowania jest bardzo rozległy. Ponieważ niniejsza strona zajmuje się konfiguracją Apache, nie ma miejsca na naukę programowania w html, php oraz MySQL (tekst zapisany w bazach danych, a odtwarzanych poprzez pliki php też podlega prawom kodowania czcionek). Wspomnę jedynie, o kilku zasadach, których osobiście przestrzegam:
- Używam JEDNEGO programu do edycji plików html (mam darmową wersję AceHTMLFree). Znam go na wylot, a przede wszystkim umiem ustawiać domyślne kodowanie. Gdy mam problemy, to otwieram plik html, wybieram VIEW-ENCODING i zamieniam wszystko na Windows-1250, potem powtórnie VIEW-ENCODING i wybieram ISO-8859-2. Zapisuję zmiany i sprawdzam jak wyglądają literki ąś. Jeżeli źle, to ręcznie je poprawiam lub używam programiku Ogonki97.
- Nie edytuję swoich plików html w przypadkowych edytorkach, gdyż grozi to uszkodzeniem jednolitości kodowania czcionki. Przykładowo, gdy plik html w kodowaniu ISO-8859-2 otworzyłem pod Windows w Notatniku (który domyślnie otwiera w kodowaniu Windows-1250) i zapisałem nawet drobne zmiany, to mam sknocone polskie czcionki. W nagłówku kodu html jest kodowanie ISO, ale faktyczne kodowanie będzie już w Windows-1250.
Należy pamiętać, że linuksowe edytorki mają generalnie domyślne kodowanie UTF-8. Dobry linuksowy edytor html BlueFish trzeba przekonfigurować: EDYCJA- USTAWIENIA- EDYTOR- Wyłącz Obsługę UTF-8... oraz EDYCJA- USTAWIENIA- PLIKI- DOMYŚLNY ZBIÓR ZNAKÓW- zmień na ISO-8859-2 OK.
- Do zmiany kodowania czcionki tekstu zapisanego w bazach danych MySQL (z Win-1250 na ISO-8859-2) służy prosty windowsowy programik PomocnikMySQL
Uwagi związane z bezpieczeństwem.
Poważną luką w bezpieczeństwie serwera apache jest fakt, że
prywatne konto www ma dane na shellowym koncie systemowym.
Powinieneś w takich okolicznościach radykalnie ograniczyć możliwość
uruchomienia procesów i powłok systemowych. Jak to zrobić? Poczytaj
tutaj.
Wskazane też jest wydzielenie osobnej partycji (montowanej bardzo
restrykcyjnie) jako /var/www oraz /home/uzytkownik .
Wykonasz to poprzez korektę pliku /etc/fstab . U mnie
wyglada to tak:
/dev/hda14 /home/antek ext3 rw,nosuid,nodev,noexec,auto,nouser,async 1 2
oraz
/dev/hda12 /var/www ext3 nosuid,ro,nodev,noexec 1 2
Od tej chwili - aby zmienić zawartość głównej witryny, będziesz
musiał w pliku
/etc/fstab zmienić wartość
ro na
rw (
tylko do odczytu na
do odczytu oraz
zapisu) i restartować komputer. Jest to może kłopotliwe dla
administratora, ale jak dobrze zabezpiecza pliki :) Więcej na ten
temat
tutaj.
Uwaga. Jeżeli coś namieszasz w pliku
/etc/fstab to nie
uruchomisz więcej systemu :( Bądź uważny. W razie problemów
zapraszam
tutaj.
Jeżeli użytkownicy kont www nie będą potrzebowali dostępu do
shella (co jest bardzo dobrym pomysłem), to po utworzeniu usera
wykonaj małą korektę ustawień: wpisz im w plikach
/etc/passwd oraz /etc/passwd- powłokę
/bin/false (zamiast domyślnej /bin/bash). Oczywiście
nie zapomnij wpisać wiersza /bin/false w pliku
/etc/shells (jeżeli go tam jeszcze nie ma). Takie
rozwiązanie uniemożliwi zdalne (i bezpośrednie) zalogowanie na
shella, ale jednocześnie udostępni pełnoprawne konto www
użytkownikwi indywidualnemu. Można też ustawić jako domyślną
powłokę /bin/false dla nowych userów - robisz to zmieniając
w plik /etc/default/useradd wpis /bin/bash na
/bin/false lub/oraz w pliku /etc/adduser.conf
wpisując DSHELL=/bin/false
Jako admin bądź czujny. Możesz skupić całą uwagę na
zabezpieczeniu plików z konta www i zapomnieć, że włamywacz
bezczelnie zmieni zawartość plików konfiguracyjnych serwera, a
następnie... założy inny (nowy) katalog w dowolnym miejscu np. w
/tmp do którego wszyscy mają dostęp. W ten sposób serwer zacznie udostępniać w
Internecie nowe, podmienione pliki z nowego katalogu, a stare będą
sobie bezużytecznie leżeć w katalogu macierzystym. Na sąsiedniej stronie o BHP przedstawiłem mój sposób rozwiązania tego problemu.
Goście z Internetu mogą zdobyć nr wersji serwera APACHE i przygotować włam za pomocą exploita. Trzeba im to utrudnić. Proponuję więc ukryć informację o serwerze APACHE poprzez edycję pliku /etc/httpd/conf/commonhttpd.conf.
Odrobina teorii i dodatkowych informacji.
Po instalacji skonfiguruj połączenie z
Internetem, udostępnianie, firewall, itd., a następnie wykonaj
korekty w plikach: