Forum wszystko o hackingu i nie tylko Strona Główna
RejestracjaSzukajFAQUżytkownicyGrupyGalerieZaloguj
Apache

 
Odpowiedz do tematu    Forum wszystko o hackingu i nie tylko Strona Główna » Bezpieczeństwo serwerów Zobacz poprzedni temat
Zobacz następny temat
Apache
Autor Wiadomość
haker512
Administrator
Administrator



Dołączył: 07 Lut 2007
Posty: 58
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Kłodawa

Post Apache
1. Wstęp
2. Bezpieczeństwo Apache
2.1 Modularna budowa Apache
2.2 Ujawnianie informacji o sobie przez Apache
2.3 Apache pod Linuxem...
2.4 Ochroniarz na etacie, czyli krótko o logach...
2.5 Wskazówki dotyczące przygotowania Apache do pracy pod Windows
3. Ogólne bezpieczeństwo systemu Linux
4. Konfiguracja iptables, czyli swoisty firewall dla Linux'a





1. WSTĘP
Dostęp do łączy szerokopasmowych staje się powoli coraz bardziej powszechny i kusząca staje się perspektywa wykorzystania domowego komputera jako niewielkiego serwera [link widoczny dla zalogowanych] W związku z faktem, iż coraz więcej osób decyduje się na postawienie własnego serwera, chciałbym przedstawić w tym artykule podstawowe sposoby zabezpieczenia domowego serwera. Dla niektórych metody przedstawione w tym artykule mogą wydawać się absurdalnie podstawowe i obowiązkowe. Tak w istocie też jest, lecz jak sie okazuje nie każdy je stosuje i wykorzystuje do zabezpieczenia serwera. Mam nadzieję, że publikacja tego artykułu przyczyni się do zwiększenia bezpieczeństwa waszych serwerow i nie zostaną one skompromitowane przez początkujących włamywaczy ;-D

2. BEZPIECZEŃSTWO SERWERA HTTP APACHE

2.1 Modularna budowa Apache

Jeśli ktoś cokolwiek wie na temat bezpieczeństwa komputerowego, wie na pewno, że im mniej usług/modułów etc. w systemie, tym lepiej (bezpieczniej). Złota zasada jest taka: Pozostawiamy wszystko co jest niezbędne - resztę wyrzucamy. Tak też jest w przypadku Apache, który został napisany zgodnie z obowiązującymi trendami promującymi budowę modularną. Oznacza to , że lwią częśc funkcji umieszcza się w odzielnych bibliotekach i ładowane są tylko wtedy, gdy używamy oprogramowania do specyficznych zastosowań. Ma to wiele zalet np. możliwość nieskończonego rozszerzania funkcjonalności. Niestety z punktu widzenia bezpieczenstwa rozwiazanie to ma jedną potężną wadę. Otóż dodatkowe biblioteki to potencjalne miejsca występowania luk. Niektore funkcje sa groźne dla serwera. I tak na przyklad mod_info może ujawniac zbyt wiele informacji o serwerze a mod_autoindex wprawnemu włamywaczowi pozwoli na listowanie katalogów serwera.

Dla Apache główna zasada dotycząca modułów brzmi następująco:

Używamy jedynie modułów, które są absolutnie niezbędne do poprawnego udostępniania stron. Wszelkie moduły oferujące dodatkowe funkcje usuwamy...

Do poprawnego udostępniania statycznych stron potrzebne jest jedynie 5 z 34 standardowo ładowanych modułów (sic. !!!). Ładowane moduły możemy wyedytować oczywiście w pliku http.conf. Proponuję pozostawić następujące linijki:

AddModule mod_log_config.c //odpowiada za logowanie żądań
AddModule mod_mime.c //zapewnia prawidłowe kodowanie dokumentów, obsługę MIME
AddModule mod_dir.c //obsługuje pliki startowe witryn WWW, tj. index.html, main.html etc.
AddModule mod_access.c //dostarcza mechanizmy kontroli dostępu do stron WWW na podst. IP, nazwy domenowej etc.
AddModule mod_auth.c //wymagany do implementacji uwierzytelniania dostępu HTTP Basic Auth

Oczywiście każdy wie co jest mu potrzebne i do tej listy może dorzucić niezbędne moduły (np. do PHP). Więcej informacji dotyczących funkcji poszczególnych modułów znajdziecie oczywiście na [link widoczny dla zalogowanych]
Chciałbym dodać, że opisana powyżej optymalizacja ma jeszcze jedną istotną zaletę - oprócz podniesienia bezpieczeństwa, podnosi również wydajność serwera Very Happy To chyba na tyle jeśli chodzi o moduły...

2.2 Ujawnianie informacji o sobie przez Apache

Apache w standardowej konfiguracji ma skłonność do nadmiernego ujawniania informacji o sobie. Wpisując coś w rodzaju [ www ] dostajemy jak na dloni informację o wersji Apache, systemie (Linux czy Windows), oraz wersji PHP (o ile takowa jest zainstalowana na serwerze). Aby zlikwidować tą zdradziecką stopkę oraz zapobiec ujawnieniu zbyt wielu informacji o wersji i konfiguracji naszego Apache'a powinnismy zmienić następujące dyrektywy (w pliku httpd.conf):

UseCanonicalName Off
ServerSignature Off // ta dyrektywa odpowiada za tą paskudną (moim zdaniem) stopkę
HostnameLookups Off
ServerTokens Prod

Oprócz tego jeśli zastosowaliście się do rady z poprzedniego podpunktu macie wyłączony moduł mod_info Very Happy


2.3 Apache pod Linuxem

PUBLIC_HTML

Użytkownicy, którzy mają konta na waszych serwerach chcieliby zapewne mieć własne strony. Standardowa konfiguracja Apache'a jak wiemy nie umożliwia nam tego. Trzeba zatem przekonfigurować serwer.
Moduł który odpowiada za obsługę kont użytkowników to mod_userdir (należy go wrzucić spowrotem na listę ładowanych modułów jeśli zastosowaliśmy się do paragrafu 2.1). Należy również wyłączyć w pliku httpd.conf linię UserDir disable (stawiamy znaczek # przed tą dyrektywę) oraz uaktywnić linię UserDir public_html.
Należy również umożliwić Apache dostęp do katalogu użytkownika oraz zasobów strony: chmod 711 /home/nazwausera
Apache potrzebuje prawa odczytu do katalogu public_html: chmod a+r -R /home/nazwausera/public_html
Możemy oczywiście również ustalić kto może wogóle mieć stronę Smile np. Userdir disabled fubu mosquito im2fast4u
Podane linie należy umieścić jeszcze po definicji uaktywnionej linii UserDir:

Kod:


AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch

Order allow, deny
Allow from all


Order deny, allow
Deny from all




Włączenie stron domowych użytkowników to pierwsza część zadań administracyjnych. Drugą równie istotną są prawa nadane przez dyrektywę Directory. W konfiguracji tuż pod ustawieniami dla UserDir znajduje się nieaktywna konfiguracja praw dostępu do stron domowych. Uaktywniamy ją usuwając znaki "#" lini az do

2.4 Ochroniarz na etacie - czyli krótko o logach

W codziennej praktyce powinniśmy korzystać z dwóch rodzajów aplikacji: wykrywaczy włamań oraz monitorów zmian w systemie. Godne polecenia są programy GFI LANguard System Integrity Monitor 3 oraz Snort. Pierwszy z nich śledzi zmiany we wskazanych plikach i katalogach. Drugi natomiast stał się klasykiem w swej dziedzinie. Przypomina nieco zwyczajny firewall. Monitoruje docierające do naszego komputera pakiety i odpowiednio reaguje na anomalie.



Podsumowując, stosując powyższe działania zmniejszają możliwość włamania przez niezbyt doświadczonych włamywaczy. Należy pamiętać o aktualizowaniu Apache, oraz o przeglądaniu logów. Dobrym rozwiązaniem jest również uruchomienie Apache w osobnym środowisku - tak zwany chroot Apache.

2.5 Wskazówki dotyczące przygotowania Apache do pracy pod Windows

Mam nadzieję że nikt z Was nie będzie stawiał swojego serwera pod Windows, aczkolwiek żeby nikt nie zarzucił mi dyskryminacji, napiszę parę słów również o bezpieczeństwie Apache w tym systemie. Defaultowa instalacja Apache instaluje się w katalogu Program Files, czyli w sąsiedztwie samego systemu. Nie jest to bezpieczne... Proponuję zainstalować go wraz z innymi pierdołami (PHP, MySQL, PhpMyAdmin i reszta) na osobno wydzielonej partycji w formacie NTFS (żaden inny nie wchodzi wogóle w grę...). NTFS jest szybszy od FAT(32), umożliwia kontrolę dostępu przez poszczególnych użytkowników, nakładanie quoty (zarządzanie przydziałami).
Pierwsze co powinniśmy zrobić zaraz po instalacji Apache, to ustalenie restrykcji związanych z dostępem do katalogów programu. Powinniśmy zwrócić również uwagę na to z prawami jakiego użytkownika uruchamiany jest Apache. Fakt ten zapewnie zdziwi użytkowników Linuxa którzy są w lepszej sytuacji, ponieważ Apache domyślnie uruchamia sie z prawami użytkownika nobody i ma ustawione (powiedzmy ze prawidlowo - uwagi dot. tego znajdziesz w dalszej części artykułu) chmody.
Standardowo Apache pracuje w Windows z prawami konta LocalSystem lub System. Wiąże się z tym wielkie niebezpieczeństwo, bowiem każdy kto przejmie kontrolę nad naszym serwerem będzie mógł robić wszystko - począwszy od przeglądania dysków do usuwania plików.

Aby ograniczyć prawa, z jakimi uruchamiamy Apache'a postępujemy wg tych punktów:

1. Start/Panel Sterowania/Narzędzia administracyjne/Zarządzanie komputerem
Start/Control Panel/Administrative Tools/Computer Management

2. Zakładamy nowe konto i sprawdzamy czy zostało przydzielone do grupy zwykłych userów
3. Następną czynnością jest ustalenie odpowiednich praw dla nowego konta, czyli:
3.1 Uruchamiamy ponownie konsolę MMC > patrz punkt 1
3.2 Włączamy przystawkę Group Policy lub Local Security Policy
3.3 Uaktywniamy dwa przywileje dla Apache'a:
* Działaj jako część systemu (Act as part of the operating system)
* Loguj jako usługę (Log as a service)
4. Ostatnim etapem jest skonfigurowanie usługi Apache do uruchamiania z prawami nowego konta
4.1 Tak jak ostatnio > Zarządzanie komputerem > Zakładka Logowanie
4.2 Konfigurujemy odpowiednio (koniecznie wpisz hasło do konta serwera WWW)

Ponadto, konto Apache'a powinno mieć prawo do odczytu i wykonania wszystkich folderów i plików serwera Apache. W przypadku katalogu zawierającym nasze niezwykle cenne logi ;D (/logs) przyznajemy prawa odczytu i zapisu. Jeśli chodzi o katalogi zawierające witryny i inne gadżety dajemy prawa do odczytu i wykonania (jeśli korzystamy z php pamiętajmy o tym że niektóre aplikacje webowe korzystają z plików - katalogom z tymi skryptami dajemy oczywiście prawa do zapisu).
Myślę, że w tym miejscu nie muszę przypominać o aktualnym programie antywirusowym, odpowiednio skonfigurowanym firewallu (nie polecam tego standardowego z Windows XP, blee) etc... System aktualizujemy na bierząco. Śledzimy występowanie wszystkich bugów, ściągamy łatki dla Windows. Wyłączamy niepotrzebne usługi w Windows (nie będę o tym pisał bo mimo wszystko uważam że w tym arcie nie powinienem nawet wspominać o pomyśle postawienia serwera na Windows - google sie kłania dla zainteresowanych). NIE KORZYSTAMY Z INTERNET EXPLORER'A!!! Nawet żeby na chwilę otworzyć google!!! Internet Explorer ma nadal mnóstwo niezałatanych dziur. Zamiast niego polecam (już darmową zresztą) Operę - w tym miejscu pozdro dla używających FireFox'a którego ostatnimi czasy ciągle trzeba bylo pilnować i aktualizować hehehe Wink


3. Ogólne bezpieczeństwo systemu Linux

A. SUIDY
Każdy użytkownik mający dostęp do shella może uruchamiać programy zainstalowane na serwerze. Niektóre z nich mają nałożone specjalne prawa, ktore maja prawa wlasciciela - tzw. suidy. Niestety najczęściej właścicielem jest sam root. Z założenia programy mają nałożone suidy po to aby użytkownik mogł wykonywać je bez logowania się jako root. Takie dodatkowe prawa na serwerze mogą się okazać dość istotnym zagrożeniem np. może pojawić się jakiś exploit który wykorzystuje błąd w danej aplikacji i potencjalny włamywacz może uzyskać uprawnienia roota na naszym serwerze. Aby zwiększyć bezpieczeństwo systemu należy zostawić suidy tylko i wyłącznie dla programów które muszą je mieć - reszcie należy odebrać prawa:

1. logujemy się na root (su), odszukujemy w systemie pliki z suidami i zapisujemy rezultat do pliku:

find / -user root -perm -4000 > suids

2. Po pomyślnym wykonaniu powyższego polecenia mamy w pliku wszystkie nazwy plików z pełnymi ścieżkami dostępu, których właścicielem jest root, oraz mają nałożony suid
3. Używając jakiegoś edytora tekstu edytujemy plik. Proponuję usunąć z listy następujące programy:

passwd - użytkownik musi mieć prawo zmienić sobie hasło
mtr - odpowiednik traceroute
sudo - umożliwia uruchamianie programów z prawami innego usera
sendmail, exim - poczta
X - jeżeli bedą uruchamiane XWindow
su - logowanie na roota
ping - kazdy wie co to jest

Jeżeli uważamy że inne programy także powinny zniknąć z listy - usuwamy je

4. zapisujemy plik i wykonujemy polecenie:

chmod -s `cat suidy`

B. DOSTĘP DO PLIKÓW KONFIGURACYJNYCH

Odbieramy prawa do poszczególnych katalogów/plików:

chmod 751 /etc
chmod 700 /boot /root
chmod 750 /bin/mt-st
chmod 750 /sbin/badblocks
chmod 750 /sbin/debugfs
chmod 750 /sbin/depmod
chmod 750 /sbin/dumpe2fs
chmod 750 /sbin/explodepkg
chmod 750 /sbin/fdisk
chmod 750 /sbin/fsck
chmod 750 /sbin/fsck.ext2
chmod 750 /sbin/fsck.minix
chmod 750 /sbin/ftl_check
chmod 750 /sbin/ftl_format
chmod 750 /sbin/halt
chmod 750 /sbin/hwclock
chmod 750 /sbin/ifconfig
chmod 750 /sbin/ifport
chmod 750 /sbin/ifuser
chmod 750 /sbin/init
chmod 750 /sbin/insmod
chmod 750 /sbin/installpkg
chmod 750 /sbin/isapnp
chmod 750 /sbin/killall5
chmod 750 /sbin/lilo
chmod 750 /sbin/makepkg
chmod 750 /sbin/mke2fs
chmod 750 /sbin/mkfs
chmod 750 /sbin/mkfs.minix
chmod 750 /sbin/mkdosfs
chmod 750 /sbin/mkraid
chmod 750 /sbin/mkswap
chmod 750 /sbin/modinfo
chmod 750 /sbin/netconfig.color
chmod 750 /sbin/netconfig.tty
chmod 750 /sbin/pkgtool
chmod 750 /sbin/pnpdump
chmod 750 /sbin/removepkg
chmod 750 /sbin/rpc.portmap
chmod 750 /sbin/quotaon
chmod 750 /sbin/rdev
chmod 750 /sbin/runlevel
chmod 750 /sbin/setserial
chmod 750 /sbin/swapon
chmod 750 /sbin/tune2fs
chmod 750 /sbin/upgradepkg
chmod 750 /sbin/uugetty
chmod 750 /usr/bin/eject
chmod 4750 /usr/bin/gpasswd
chmod 750 /usr/bin/lpq
chmod 750 /usr/bin/lprm
chmod 4750 /usr/bin/lpr
chmod 750 /usr/bin/minicom
chmod 700 /usr/bin/nohup
chmod 700 /usr/bin/script
chmod 500 /usr/lib/news/bin/inndstart
chmod 500 /usr/lib/news/bin/startinnfeed
chmod 750 /usr/lib/setup/cpkgtool
chmod 750 /usr/lib/setup/hdsetup
chmod 750 /usr/sbin/atd
chmod 750 /usr/sbin/atrun
chmod 750 /usr/sbin/crond
chmod 750 /usr/sbin/ctrlaltdel
chmod 750 /usr/sbin/dhcpd
chmod 750 /usr/sbin/dhcrelay
chmod 750 /usr/sbin/edquota
chmod 750 /usr/sbin/groupadd
chmod 750 /usr/sbin/groupdel
chmod 750 /usr/sbin/groupmod
chmod 750 /usr/sbin/grpck
chmod 750 /usr/sbin/grpconv
chmod 750 /usr/sbin/grpunconv
chmod 750 /usr/sbin/hdparm
chmod 750 /usr/sbin/imapd
chmod 750 /usr/sbin/in.comsat
chmod 755 /usr/sbin/in.fingerd
chmod 755 /usr/sbin/in.identd
chmod 750 /usr/sbin/in.talkd
chmod 000 /usr/sbin/in.rexecd
chmod 000 /usr/sbin/in.rlogind
chmod 000 /usr/sbin/in.rshd
chmod 750 /usr/sbin/in.telnetd
chmod 000 /usr/sbin/in.tftpd
chmod 750 /usr/sbin/in.timed
chmod 750 /usr/sbin/inetd
chmod 750 /usr/sbin/ipop3d
chmod 750 /usr/sbin/klogd
chmod 2750 /usr/sbin/lpc
chmod 740 /usr/sbin/lpd
chmod 750 /usr/sbin/lpf
chmod 550 /usr/sbin/makemap
chmod 750 /usr/sbin/mouseconfig
chmod 750 /usr/sbin/named
chmod 750 /usr/sbin/newusers
chmod 750 /usr/sbin/nmbd
chmod 750 /usr/sbin/ntpdate
chmod 750 /usr/sbin/ntpq
chmod 750 /usr/sbin/ntptime
chmod 750 /usr/sbin/ntptrace
chmod 750 /usr/sbin/pppd
chmod 750 /usr/sbin/pwck
chmod 750 /usr/sbin/pwconv
chmod 750 /usr/sbin/pwunconv
chmod 550 /usr/sbin/quotastats
chmod 750 /usr/sbin/rpc.bootparamd
chmod 750 /usr/sbin/rpc.mountd
chmod 750 /usr/sbin/rpc.nfsd
chmod 750 /usr/sbin/rpc.rusersd
chmod 750 /usr/sbin/rpc.rwalld
chmod 750 /usr/sbin/rpc.yppasswdd
chmod 750 /usr/sbin/rpc.ypxfrd
chmod 750 /usr/sbin/rpcinfo
chmod 750 /usr/sbin/showmount
chmod 750 /usr/sbin/smbd
chmod 750 /usr/sbin/syslogd
chmod 750 /usr/sbin/tcpd
chmod 750 /usr/sbin/tcpdchk
chmod 750 /usr/sbin/tcpdmatch
chmod 750 /usr/sbin/tcpdump
chmod 750 /usr/sbin/timeconfig
chmod 750 /usr/sbin/useradd
chmod 750 /usr/sbin/userdel
chmod 750 /usr/sbin/usermod
chmod 750 /usr/sbin/vipw

Mała uwaga - zamiast kopiować każdą linijkę i wklejać kopiujemy całą powyższą listę, otwieramy konsolę i dajemy shift+insert

myślę ze o niczym nie zapomnialem


Post został pochwalony 0 razy
Pią 20:41, 09 Lut 2007 Zobacz profil autora
Wyświetl posty z ostatnich:    
Odpowiedz do tematu    Forum wszystko o hackingu i nie tylko Strona Główna » Bezpieczeństwo serwerów Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do: 
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Design by Freestyle XL / Music Lyrics.
Regulamin