czwartek, 20 listopada 2008 
Start arrow FreeBSD arrow WWW arrow Vhosty poprzez WWW
Menu BSD4u
FreeBSD
OpenBSD
NetBSD
Dla *BSD
FAQ BSD4u
Forum BSDGuru.org
Security Advisory
Licencje
Images BSD
Menu ogólne
Start
Aktualności
Download
Sondy
Szukaj
Linki
Książki
About BSD4u
Info
Team BSD4u
Regulamin
Kanał #BSD4u
Kontakt
Sondy
Co sądzisz o naszym nowym Projekcie, i jak oceniasz zmianę koncepcji Projektu?
 
Popularne
Kompilacja i konfigu...
SQUID - najpopularni...
Neostrada+ i modem ...
NATowanie czyli jak ...
Samba - serwer plikó...
Upgrade systemu
Apache (konfiguracja...
Praktyczne IPFW
MRTG - statystyki ru...
CVSup - pomocny podc...
Neostrada na modemie...
Postfix z autoryzacj...
Postfix - bezpieczny...
System Portów (Kolek...
Dummynet - dzielenie...
Top Download
File icon Postfix - "Krok po kroku" v1.16693
File icon Postfix - "Krok po kroku" v1.06600
File icon PPTPd - "Prosty i szybki VPN" v1.0b6066
File icon sdi.sh3842
File icon uEagle 1.0p12963
File icon named.sh2908
File icon uEagle 0.99b2864
File icon cs.sh2785
File icon uEagle 1.02752
File icon uEagle 1.12555
Ostatnie komentarze
transparent a virus...
Dodał: grzywka18
Dnia: 2008-05-13 11:19:58
hmm
Dodał: dzibi
Dnia: 2007-12-12 10:01:14
Bez tytułu
Dodał: grzywka18
Dnia: 2007-12-11 17:46:06
Bez tytułu
Dodał: termid
Dnia: 2007-05-09 18:01:11
Bez tytułu
Dodał: sarelo33
Dnia: 2006-12-30 23:50:14
Jest ok ale..
Dodał: theviant
Dnia: 2006-11-16 08:10:05
Google

Google


Newsletter
Zapisz się na nasz newsletter, jeżeli chcesz być na bieżąco informowany o aktualnościach..




Apache (konfiguracja, modu?y, SSL, chroot) - 1. Instalacja Drukuj E-mail
Oceny: / 37
KiepskiBardzo dobry 
sobota, 09 października 2004 - Napisał: Przemysław Ozga (43287 odsłon)
Spis treści
1. Instalacja
2. Konfiguracja
3. Uruchomienie
4. Moduły
5. Bezpieczeństwo
6. Domeny wirtualne
7. Chroot

7. Zabezpieczanie serwera i połączeń

Każda nowa usługa na serwerze na jaka się decydujemy, niesie za sobą nowe ryzyko, dlatego też bardzo dużą uwagę należy zwrócić na to w jakim stopniu jesteśmy ostrożni przy konfigurowaniu, a raczej nie dopuszczeniu aby ktoś spowodował szkody na naszym serwerze.

Na początek należy przyjąć pewna twarda regułę :

Blokujemy wszystko, następnie puszczamy tylko to co jest / będzie nam potrzebne. Jeżeli chodzi o serwer httpd Apache, ważnym jest śledzenie zmian i poprawek, dlatego tez zapraszam na stronę http://www.apache.org/.

7.1. Opis dyrektyw zabezpieczających serwer httpd

Przedstawione dyrektywy oczywiście wpisujemy w plik httpd.conf.

LimitRequestBody
Dyrektywa ta ogranicza rozmiar treści żądania HTTP, Jeżeli żądanie przekroczy limit zostanie odrzucone z komunikatem o błędzie. Dyrektywa ta zmniejsza ryzyko blokady usługi. W dyrektywie tej 0 oznacza brak limitu, - ustawienie domyślne. Zakres to 0-2147483647.

LimitRequestFields
Ograniczenie dopuszczenia liczby pól nagłówka w żądaniu. Jeżeli przekroczony zostanie limit, żądanie zostanie odrzucone z błędem(0 oznacza brak limitu) zakres to 0-32767.

LimitRequestFieldSize
Ograniczenie rozmiaru każdego nagłówka żądania - zmniejsza to ryzyko przepełnienia bufora (buffer-overflow).
Zakres to 0-8190 (0 oznacza brak limitu).

LimitRequestLine
Ograniczenie długości każdego wiersza. Zakres to 0-8190 (0 oznacza brak limitu).

RLimitCPU
Dyrektywa ta ogranicza liczbę sekund, przez którą proces może zajmować procesor, dyrektywa ta posiada dwa parametry pierwszy limit miękki a drugi maksymalny, dyrektywa ta może też występować w <VirtualHost>

RlimitNProc
Ograniczenie liczby procesów, które mogą zostać odgałęzione przez każdy proces, przyjmuje jeden lub dwa parametry liczbowe, tak jak dyrektywa wyżej.

KeepAlive
Dyrektywa ta włącza trwale połączenie, zwiększa to wydajność serwera, gdyż klient może zgłosić kilka żądań, nie nawiązując za każdym razem oddzielnego połączenia, dyrektywa ta może przyjąć parametr on lub off.

KeepAliveTimeout
Wyznacza maksymalny czas oczekiwania na następne żądanie przez to samo połączenie.

MaxKeepAliveRequests
Ograniczenie liczby żądań zgłaszane przez to samo połączenie, domyślne ustawienie to 100, zalecane jest obniżenie tej wartości.

7.2. Wprowadzenie do SSL

SSL odpowiada za szyfrowanie danych, miedzy warstwą transportu a warstwą aplikacji TCP, szyfruje wszystkie dane wychodzące z aplikacji i deszyfruje dane wchodzące do aplikacji. W przypadku serwera httpd SSL zabezpiecza dokumenty czyli poufne dane. Standardowo SSL oczekuje na zapytania na porcie 443, przeglądarka zgłasza takie zapytanie poprzez protokół https://. SSL daje poczucie bezpieczeństwa, które jest tak ważne w dzisiejszej dobie internetu.

7.3. Kompilacja apache do współpracy z SSL

Na początek musimy zaopatrzyć się w źródła modułu ssl, które znajdziemy na stronie projektu http://www.modssl.org/.

A dokładniej ściągamy wersje pod apache w wersji 1.3.29 http://www.modssl.org/source/mod_ssl-2.8.16-1.3.29.tar.gz.

Rozpakowywujemy źródła:

# tar zvf mod_ssl-2.8.16-1.3.29.tar.gz

Przechodzimy do katalogu

# cd mod_ssl-2.8.16-1.3.29

Konfigurujemy z podaniem ścieżki do naszych źródeł serwera apache :

# ./configure -with-apache=../apache-1.3.29

# make
# make install

Przechodzimy do katalogu apache :

# cd apache-1.3.29

I zaczynamy kompilacje tak jak w zrobiliśmy to wcześniej :

# ./configure : --prefix=/katalog/przeznaczenia/apache \
    --activate-module=src/modules/php4/libphp4.a \
    --enable-module=php4 \
    --add-module=../mod_bandwidth.c \
    --add-module=../mod_throttle.c

Do tego dodajemy jeszcze jedna opcje a dokładnie :

--enable-module=ssl

# make

I tworzymy certyfikat

# make certificate TYPE=custom

Po odpowiedzeniu na kilka zadanych pytań, zostanie utworzony certyfikat. W tym momencie musimy zdecydować czy usuwamy hasło z klucza serwera, w przeciwnym wypadku przy każdym restarcie serwera apache będziemy pytani o hasło, co w niektórych sytuacjach może przysporzyć problemu.

Jeżeli zdecydujemy się na takowy krok piszemy :

# cd ./conf/ssl.key
# openssl rsa -in ./server.key -out ./server.key

Podajemy hasło jakie wcześniej ustaliliśmy.

# cd ../../
# make install

Jeżeli wszystko zrobiliśmy bezbłędnie oznacza to iż jesteśmy gotowi do uruchomienia serwera z modułem ssl.

Jeszcze jedna ważna sprawa, przy tej instalacji został wygenerowany nowy plik konfiguracyjny:

/usr/local/apache/conf/httpd.conf.default

Proszę o zapoznanie się ze zmianami jakie nastąpiły - są to dyrektywy odpowiedzialne za poprawne funkcjonowanie SSL.

Od tego momentu zmienia się sposób uruchamiania serwera a dokładnie :

# /usr/local/apache/bin/apachectl startssl

Czyli opcja startssl.

Oczywiście użyliśmy metody, własnego podpisania certyfikatu. Jeżeli nie zdecydujemy się aby podpisała nam certyfikat odpowiednia do tego celu instytucja, przy uruchomieniu protokołu https:// przeglądarka wyświetli nam komunikat iż certyfikat został podpisany przez firmę która nie została sklasyfikowana jako godna zaufania.

7.4. CGI konfiguracja i bezpieczeństwo

CGI, ma ogromne zastosowanie, i udostępnia pełna moc systemu operacyjnego, jest to oczywiście zaleta ale i wada.

Ważne jest określenie komu pozwalasz na umieszczanie skryptów CGI a komu nie. Aby poprawnie mogły funkcjonować skrypty CGI na koncie użytkownika musimy zdefiniować pewne dyrektywy. Na początek dodajemy :

AddHandler cgi-script .cgi

Następnie aby zezwolić użytkownikowi np. "jasio" który mieści się w katalogu /home/users/jasio piszemy :

<Directory "/home/users/jasio/public_html/cgi-bin/">
 AllowOverride None Options ExecCGI
 Order allow,deny
 Allow from all
</Directory>

Oczywiście w przypadku takim musi być stworzony katalog cgi-bin, zakładając ze to właśnie w tym katalogu użytkownik będzie trzymał skrypty CGI.

Istnieje możliwość zrobienia aliasu do katalogu za pomocą dyrektywy "ScriptAlias".

Dobrym sposobem na zabezpieczenie się przed błędami programistycznymi naszych użytkowników jest korzystanie z nakładek CGI.

Czyli przed instalacją źródeł należy aktywować opcje "suexec", dokładne opcje opisane są po wydaniu komendy ./configure -help w katalogu apache.

Aby uaktywnić przed kompilacją apache czyli w ./configure dodajemy :

--enable-suexec - zbuduje plik binarny suexec, czyli program nakładki CGI.

7.5. PHP, kilka rad na zabezpieczenie skryptów

Jeżeli prowadzimy usługi typu hosting, bardzo ważnym elementem jest zabronienie, uruchamiania poleceń systemowych za pomocą funkcji w php.

Czyli włączmy opcje Safe_Mode

Wyedytujmy plik /usr/local/lib/php.ini

Odszukujemy dyrektywę Safe_Mode i uaktywniamy ją zmieniając z off na on :

safe_mode = On

Oczywiście można tak, aby tylko użytkownicy mieli włączona taką opcje a np. my opcje tą wyłączoną, w takim przypadku edytujemy plik httpd.conf i piszemy : <Directory "/home/admin/public_html"> php_admin_value safe_mode 0 </Directory>

Pamiętajmy o przeładowaniu serwera aby opcje mogły wejść w życie:

# /usr/local/apache/bin/apachectl restart

Opisze teraz ciekawy sposób utajnienia hasła do bazy danych np. MySQL

Edytujemy plik httpd.conf i wstawiamy następująca dyrektywę:

<Directory "/home/users/jasio/public_html">
   php_admin_value disable_functions TUTAJ_HASLO_DO_BAZY
</Directory>

Nic nie stoi na przeszkodzie abyśmy wpisali jakiś string zakodowany, w takim przypadku nasz skrypt po otrzymaniu zakodowanego hasła musiał by najpierw go rozkodować. Jednak na potrzeby artykułu opisze sposób bez kodowania - tylko ukrycia hasła.

Mamy hasło w httpd.conf, w takim przypadku musimy pamiętać o tym abyśmy tylko my mieli prawo do odczytania pliku httpd.conf czyli np.:

# chown root:wheel httpd.conf
# chmod 700 httpd.conf

Następnie przechodzimy do naszego skryptu łączącego się a bazą czyli tak jak zdefiniowaliśmy w dyrektywie powyżej: edytujemy plik np. /home/users/jasio/public_html/connect_sql.php

<?php
   // Otzymujemy hasło z pliku httpd.conf
   $key = ini_get("disable_functions");
   // $key czyli nasze pobrane haslo.
   $connection = mysql_connect("localhost", "USER, "$key");
   // itd. itd.
?>

Następna sprawa to standardowo pliki sesji trzymane są w /tmp/ Na ogół do tego katalogu mają dostęp również zwykli użytkownicy, co stwarza zagrożenie przejęcia sesji.

Istnieje możliwość umieszczenia plików sesji w innym katalogu niż standardowo "/tmp/". Służy do tego funkcja PHP o nazwie : session_save_path();

Czyli rozkładając na kod PHP:

<?
   $sess = "/home/users/jasio/public_html";
   session_save_path($sess);
?>

Od razu nasuwa się myśl aby zakodować również podobnym sposobem jak metodą z hasłem ścieżkę gdzie trzymamy katalog sesji, więc w przypadku takowym zasada jest ta sama.



Ostatnio aktualizowany ( piątek, 11 listopada 2005 )

dalej »
Ciekawostki
Jeśli dokonałeś zmian w pliku używając vi(1), a później okazało się, że nie możesz ich zapisać, wpisz ``!rm -f %'' następnie ``:w!'' by wymusić zapis. To nie zadziała, jeśli nie masz praw do zapisu w katalogu, w którym znajduje się plik i prawdopodobnie nie będzie przydatne jeśli edytujesz poprzez symlinka.
Pobierz
FreeBSD
OpenBSD
NetBSD
DragonFlyBSD
PC-BSD
FreeSBIE LiveCD
4.4BSD Lite
Reklama M3M.pl
Domeny
Książki

FreeBSD. Księga eksperta

FreeBSD. Księga eksperta

Cena: 125.00 zł
Dodaj do koszyka


FreeBSD. Podstawy administracji systemem

FreebBSD

Cena: 64.90 zł
Dodaj do koszyka


OpenBSD. Podstawy administracji systemem

OpenBSD

Cena: 84.90 zł
Dodaj do koszyka


OpenBSD. Tworzenie firewalla za pomocą PF

Firewall PF

Cena: 44.90 zł
Dodaj do koszyka

Licznik odwiedzin
Odwiedziło już nas
2519724
Internautów od lutego 2003

Korzystamy ze statysyk