Krecikowy Blog

Feed Rss

Serwer – szybkie How To

09.28.2008, Serwer, by .

Sprawa wygląda następująco… sam jestem administratorem serwera od miesiąca i z lepszymi/gorszymi efektami ale daję sobie rade ale – jestem jeszcze początkującym administratorem-amatorem. Poniższy tekst przedstawia PODSTAWOWĄ konfigurację serwera aby działał i działał bezpiecznie – mam taką nadzieję, że tak jest :P. Jest to konfiguracja dla jednego użytkownika. Jak wspomniałem wyżej jestem jeszcze amatorem w tym zakresie.. ale dzięki temu napiszę to też takim językiem, że każdy powinien to zrozumieć (mam taką nadzieje :P).

Decyzja

Pierwsze i najważniejsze to musimy sobie odpowiedzieć na pytanie czy serwer dedykowany jest nam naprawdę potrzebny. Druga sprawa równie ważna: Czy umiem sobie poradzić sam z instalacją i konfiguracją windowsa i z jego obsługa, czy komputery są dla mnie „łatwe” czy to czarna magia. A trzecie: Czy nie boję się używać linuksa. Jak na wszystkie trzy *pytanie* twoja odpowiedź brzmi tak, przejdź do dalszej części tego tekstu.

Wybór

Wybór serwera dedykowanego w dużej mierze zależy od funduszy jakimi dysponujemy oraz naszych potrzeb. Ja osobiście korzystam z serwerów OVH i mogę je polecić. Nic lepszego w takiej cenie nie znajdziecie.

Ale jak nie macie doświadczenia w administrowaniu serwerem, a jak czytacie co tu pisze to tak właśnie jest, zalecam potrenowanie najpierw na VPS. Jest to „kilka serwerów dedykowanych” na jednej maszynie, nazwijmy to w ten sposób. Serwer dedykowany w tym wypadku dzielony jest na kilku użytkowników dla których jest przydzielana odpowiednia ilość zasobów tej maszyny z której ten user może korzystać i działa to podobnie do dedyka. Jedną z tańszych ofert możecie znaleźć na tej stronie http://webh.pl/index.php?cmd=svps

Pamiętajmy o jednym – wybierając dystrybucje linuksa na nasz serwer wybierajmy tą która jest najbardziej popularna i najlepiej, jak mamy jakieś pojęcie o niej :) ! Polecam Debiana albo Ubuntu Server. Poradnik napisany jest dla Ubuntu Server, ale dla Debiana będzie się różnił bardzo niewiele.

No to mamy już zamówiony VPS. Dostajemy już na maila dane do zalogowania się na nasz serwer i teraz zaczynamy zabawę :). Zaczynamy od ściągnięcia programu Putty – z oficjalnej strony, bądź tez z mojego mirrora. Po pobraniu włączamy program. Naszym oczom ukaże się takie o to okienko

estetyka_konstrukcji_mostowych

W Host Name wpisujemy adres naszego serwera, jako protokół wybieramy SSH. Dodatkowo możemy nadać naszej sesji jakąś nazwę (Saved Sesion) i klikamy na Save. Po tych wstępnych czynnościach nie pozostanie nam nic innego jak kliknąć na Open.

Wyskoczy nam okienko aby podać login i hasło. I tutaj uwaga. Podczas wpisywania hasła na ekranie nie będzie się nic pojawiać. Tak ma być, wszystko jest OK. Po zalogowaniu się na serwerze możemy przystąpić do pracy.

Pomyślmy pierw czego będziemy potrzebowali. Na pewno dostępu przez ftp oraz serwera www, a z serwerem www idą w parze mysql i php. Ale zacznijmy od początku :). Bo na początku potrzebujemy użytkownika dla siebie, pamiętajmy że na roota wchodzimy tylko gdy jest to nie zbędne… nic wtedy nie zepsujemy :P. więc tworzymy użytkownika poleceniem

  1. adduser nazwa_uzytkownia

Apache+mysql+php

Okey, więc czas na instalację apache+mysql+php. Wpisujemy komendę.

  1. apt-get install apache2

i czekamy aż się zainstaluje apache. Kolejną komendą jest:

  1. apt-get install php5

po zainstalowaniu php czas na mysql do konsoli wklepujemy

  1. apt-get install mysql5-server mysql5-client

po zainstalowaniu:

  1. mysqladmin -u root password twoje_haslo

gdzie w twoje haslo wpisujesz swoje haslo, do szczęścia jeszcze nam brakuje:

  1. apt-get install libapache2-mod-auth-mysql

który to moduł odpowiada za współpracę apache2 z mysql. Teraz czas na php

  1. apt-get install php5-mysql

Teraz jak mamy już wszystko zainstalowane należy zrestartować apache. Wklepujemy w terminal:

  1. /etc/init.d/apache2 restart

Huh… i po krzyku :). Tylko że, to co zrobiliśmy… to jak na razie tylko zainstalowanie, została nam jeszcze konfiguracja. Domyślnym katalogiem www w którym apache szuka stron www to /var/www ale jak się tam dostać? Zostawimy na razie konfigurację www i przejdziemy do zainstalowania jakiegoś serwera ftp.

Ftp

Skorzystamy z programu ProFTPd. Wklepujemy w konsolę

  1. apt-get install proftpd

Przy instalacji wybieramy standalone i w zasadzie już mamy działający serwer ftp. – możesz się logować na konto usera które zrobiliśmy parę akapitów wyżej. Domyślnie w ProFTPd możesz się logować do każdego usera w systemie, oprócz roota. Logując się przez ftp kierujemy się do naszego katalogu domowego czyli /home/nazwa_usera. No dobra.. ale teraz zapytasz się jak mam wrzuć swoją strone/portal. Zrobimy to w prosty sposób. Utwórz w swoim katalogu domowym katalog www poleceniem

mkdir wwwpamiętajmy że musimy być w naszym katalogu domowym. W tym wypadku poruszamy się po konsoli która polecenia ma jak DOS. Czyli aby wejść do katalogu cd katalog aby wyjść cd .. aby zobaczyć listę plików/katalogów w folderze ls. Ale możemy się posłużyć również darmowym linuksowym commanderem. Wpisz w konsole: mc. Jak dostaniesz komunikat, że program nie zainstalowany posłuż się jak już wiesz poleceniem:

  1. apt-get install mc

no i po instalacji mc. Jak widzisz.. jest już prościej :). No dobra.. ale jak robimy ten myczek katalogiem www. Jak już zrobiliśmy katalogów www wpisujemy w konsole.

  1. nano /etc/fstab

i uwaga.. NIC NIE ZMIENIAMY Z ISTNIEJĄCYCH WPISÓW. Przechodzimy do nowej linii i dodajemy:

  1. /home/twoj_user/www /var/www none bind 0 0

aby zapisać zmiany ctrl+o i wyjsc ctrl+x (jeżeli gdzieś zobaczysz w opisie polecenia ^X oznacza to skrót ctrl+x). Teraz wklepujemy w konsoli

  1. mount -a

To co zrobiliśmy to zmapowaliśmy oba foldery www. Teraz to wszystko co wrzucisz go home/twoj_user/www znajdzie się również na /var/www.

To teraz czas na kolejne kroki.. czyli konfigurację tego wszystkiego :). Zaczniemy tym razem od tyłu czyli od ftp.

Cala konfiguracja naszego ftp siedzi w pliku /etc/proftpd/proftpd.conf i jego będziemy edytować.

  1. nano /etc/proftpd/proftpd.conf

i zmieniamy:

  1. ServerName „nasza_nazwa_serwera”

usuwamy # przy

  1. DefaultRoot i PassivePorts.

Przy Umask ustawiamy wartości:

  1. 002 002

AllowOverwrite ustawiamy na on a dodajemy:

  1. AllowRetrieveRestart on
  2. AllowStoreRestart on

i zapisujemy nasz plik. W zasadzie jak nie ruszaliśmy domyślnego katalogu apache możemy go na razie ominąć. Kolejną rzeczą jest sprawa uprawnień. System uprawnień linuksa jest podzielony na: Właściciel Grupa Świat. Co obrazuje zapis uprawnień w postaci 3 cyfr, np. 775. Odsyłam do google jak nie wiecie o co dokładnie chodzi. :). To teraz się wyjaśni co to ta nasza opcja Umask w konfiguracji daje… otóż jej wartość to 002 i 002 – jest odpowiednio do uploadowanych katalogów i plików i oznacza ona że nasze pliki i katalogi będą z prawami 775. A to z kolei oznacza, że Właściciel ma pełne prawa, Grupa ma pełne prawa a Świat może oglądać i tego właśnie potrzebujemy. Instalując apache uruchamia się on jako użytkownik www-data w grupie www-data. Zaś nasz użytkownik jest jako użytkownik: twój_user i w grupie twój_user. Jak byśmy teraz w grali nasze pliki do katalogu www dostalibyśmy błąd 403 – Brak uprawnień. Co właśnie wynika z tego że apache nie ma uprawnień do czytania/wykonywania plików które wrzuciłeś do katalogu www. No to trzeba to poprawić. Wszystkie informacje na temat grup są w /etc/group a więc do dzieła.

  1. nano /etc/group

Edycja tego pliku jest bardzo prosta. Mianowicie ma on postać: grupa:x:user,user2 więc dodajemy wpisy do grup www-data i twój_user. Do www-data dodajemy twój_user a do grupy twój_user użytkownika www-data. I po problemie. Twoja strona powinna już śmigać.

Firewall

Teraz trzeba troszkę zabezpieczyć nasz serwer. Do tego celu posłużymy się firewallem na bazie iptables którego samemu napiszemy :) Najpierw przeczytaj wszystkie akapity związane z firewallem nim zaczniesz coś robić! firewall start. Tworzymy skrypt poleceniem:

  1. touch /etc/init.d/firewall && chmod +x /etc/init.d/firewall && nano -w /etc/init.d/firewall

co spowoduje nam utworzenie pliku, nadanie odpowiednich uprawnień i otworzenie go w edytorze. Do pliku kopiujemy:

  1. #!/bin/sh
  2. iptables -F
  3. iptables -X
  4. iptables -t nat -X
  5. iptables -t nat -F
  6. iptables -A INPUT -i lo -j ACCEPT
  7. iptables -A FORWARD -o lo -j ACCEPT
  8. iptables -P INPUT DROP
  9. iptables -P FORWARD DROP
  10. iptables -P OUTPUT ACCEPT
  11. iptables -A INPUT -j ACCEPT -m state –state ESTABLISHED,RELATED
  12. iptables -A FORWARD -j ACCEPT -m state –state ESTABLISHED,RELATED
  13.  
  14. iptables -A INPUT -p icmp –icmp-type 8 -j ACCEPT
  15.  
  16. iptables -A INPUT -s 0/0 -p tcp –dport 80 -j ACCEPT
  17. iptables -A INPUT -s 0/0 -p udp –dport 80 -j ACCEPT
  18.  
  19. iptables -A INPUT -s 0/0 -p tcp –dport 22 -j ACCEPT
  20. iptables -A INPUT -s 0/0 -p udp –dport 22 -j ACCEPT
  21.  
  22. iptables -A INPUT -s 0/0 -p tcp –dport 20:21 -j ACCEPT
  23. iptables -A INPUT -s 0/0 -p udp –dport 20:21 -j ACCEPT
  24. iptables -A INPUT -s 0/0 -p tcp –dport 49152:65534 -j ACCEPT
  25. iptables -A INPUT -s 0/0 -p udp –dport 49152:65534 -j ACCEPT

zapisujemy i wychodzimy. Co nam daje ten skrpyt? Skrypt ten zamyka wszystkie porty i otwiera 80 (www) 22 (ssh) 20 i 21 (ftp) i 49152:65534 (passiv ftp – zgodnie z configiem ProFTPd) a dzięki –icmp-type 8 nasz serwer będzie odpowiadał na polecenie ping. Okey.. to teraz zostało nam nasz firewall uruchomić poleceniem:

  1. /etc/init.d/firewall.

I teraz.. sprawdźmy czy: www chodzi, do ftp da się zalogować, serwer odpowiada na pingi i czy po wylogowaniu możemy się zalogować do shella. Jak tak.. nic nie sknociliśmy i możemy wpisać w konsoli:

  1. update-rc.d firewall defaults 90

spowoduje to dodania naszego skryptu do auto startu… od teraz firewall będzie zawsze aktywny :)

Fail2ban

No to mamy już pozamykany porty, jeszcze może przydałoby się coś do pilnowania czy przypadkiem ktoś nie próbuje się nam na chama zalogować do ssh lub ftp. Do tego celu wykorzystamy program fail2ban.

  1. apt-get install fail2ban

Cała konfiguracja jest w /etc/fail2ban/jail.conf

  1. nano /etc/fail2ban/jail.conf

do ignoreip dodajmy nasz adres ip, z którego będziemy korzystać aby administrować serwerem. Dlaczego dodajmy go tu? Sam się naciąłem, że mi fail2ban dał bana na godzinę ponieważ źle wpisywałem hasło.. no cóż jak się człowiek śpieszy to się mogą pomylić klawisze na klawiaturze, ale że ja admin to mi wolno.. :P dalej przechodzimy do sekcji [ssh]

maxretry=ilość_prób_zanim_ban

bantime=ilość_sekund_trwania_bana np. – 3600 to godzin, kiedy nie ma bantime to dodajmy ten wpis. Teraz czas na serwer ftp. Przechodzimy do sekcji [proftpd].

Enabled = true a reszta tak jak przy ssh. Zapisujemy konfiguracje i

  1. /etc/init.d/fail2ban restart

i już po bólu.. nasz serwer działa i jest wstępnie zabezpieczony.. można iść spać :)

Podobne wpisy:

Jedna odpowiedź na „Serwer – szybkie How To

  1. Pingback: webh.pl - lekko zawiedziony | Krecikowy Blog

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>