300 likes | 508 Views
Serwer oparty na systemie Linux, podstawy jego administracji. Wykonanie: Wojciech Olanin, kl. 1Ti. Opis popularnych wersji systemu Linux do zastosowań serwerowych. Debian CentOS Red Hat Enterprise Linux. Debian. CentOS. Red Hat Enterprise Linux. Przydatne programy do
E N D
Serwer oparty na systemie Linux, podstawy jego administracji Wykonanie:Wojciech Olanin, kl. 1Ti
Opis popularnych wersji systemuLinux do zastosowań serwerowych • Debian • CentOS • Red Hat Enterprise Linux
Przydatne programy do monitorowania całego systemu • Wstęp • top, htop • nload, iptraf, tcpdump • smartctl
Wstęp Prezentowane przykłady będą opierały się na systemie operacyjnym Linux Debian (wersja 6) ponieważ uważam, iż jest on najprostrzy w obsłudze i nauce zarówno dla zaawansowanych jak i początkujących administratorów. Dla zostosowań serwerowych polecam instalować system bez środowiska graficznego, ponieważ i tak w większości przypadków jest on nie używany, nie potrzebny, gdyż wszystko instaluje się, wykonuje z poziomu konsoli, a w takim przypadku zużywa on niepotrzebnie zasoby serwera. W pierwszej kolejności po zalogowaniu się do nowo zainstalowanego systemu należy go zaktualizować, można zrobić to za pomocą komendy:apt-get update && apt-get upgradePo chwili, jeżeli mamy system w języku polskim pojawi się komunikat:Kontynuować [T/n]? -> Wpisujemy w konsoli literę: „t” i klikamy [enter](dla systemu w innym języku pojawi się również podobny komunikat w odpowiednim języku). Jeśli pojawią się podczas aktualizacji jakieś inne dodatkowe komunikaty klikamy po prostu [enter] System został poprawnie zaktualizowany.
Procesy - top Możemy przeglądać aktualnie uruchomione procesy na serwerze oraz monitorować ile oraz jakie zasoby zużywają procesora, pamięci. Do tego celu służy polecenie: top nie musimy go instalować. Poniżej przykładowy wynik:
Procesy - htop Polecenie htop pokazuje analogicznie to samo co polecenie top lecz jego wyniki są wyświetlane w bardziej przejżysty sposób. Program trzeba doinstalować do systemu. Można to zrobić komendą: apt-get install htop
Sieć - nload Dzięki poleceniu nload możemy w przejżysty sposób monitorować wykożystanie łącza, transferu na serwerze. Program można zainstalować, wydająć komendę: apt-get install nload Domyślnie wyniki pokazywane są w Bit/s, polecam jednak wświetlać je w Mbit/s, w tym celu program należy uruchomić z dodatkowymi parametrami komendą: nload -u m -U G eth0
Sieć - iptraf Czasem w różnych okolicznościach przydają się szczegółowe informacje o zużyciu łącza, np. kto w danej chwili jest połączony z naszym serwerem.Takie informacje można uzyskać dzięki programowi iptraf, który trzeba również zainstalować: apt-get install iptraf Końcówki adresów IP zostały ukryte celowo, domyślnie są widoczne.
Sieć - tcpdump Również przydatne polecenie tcpdump, zawiera wiele różnego rodzaju opcji. Pozwala m.in. na logowanie ruchu sieciowego i zapisywanie połączeń do pliku. W prosty sposób można sortować oraz wybierać interesujące nas informacje o połączeniach. Program jest zainstalowany domyślnie. Końcówki adresów IP zostały ukryte celowo, domyślnie są widoczne.
Działanie dysku - smartctl Można powiedzieć, że w serwerze najważniejszym podzespołem jest dysk twardy, o który należy w szczególności „dbać” i monitorować jego działanie. To właśnie na nim znajdują się wszystkie zapisane nasze dane. Jeżeli ulegnie awarii możemy utracić bezpowrotnie nasze wszystkie dane oraz ew. użytkowników. Z pomocą przychodzi pakiet smartmontooli polecenie: smartctlWyświetli nam szczegółowe informacje o konkretnym dysku. Przykład polecenia: smartctl -a /dev/sdX w miejsce litery X podajemy literę dysku twardego, przykładowo dla jednego dysku jest to: a, dla dwóch dysków mamy litery: a, b dla kolejnych analogicznie. W zależności od typu dysku oraz producenta oznaczenia, wartości maksymalne, minimalne mogą się różnić jakie dysk może spełniać, lecz w większości są one podobne.
Podstawowe zabezpieczenieserwera • iptables • fail2ban • denyhosts
iptables Iptables to program sterujący filtrem pakietów (głównie używanym jako zapora sieciowa bądź NAT) opracowany dla systemu operacyjnego Linux. Autor Rusty Russell napisał pierwszą wersję w 1998 roku w języku C. Program może być używany jako filtr pakietów, bądź tzw. stanowa zapora dla systemów Linux z jądrem począwszy od serii 2.4.x, kontrolujący połączenia wchodzące i wychodzące do sieci komputerowej lub stacji roboczej. Wymaga jądra skompilowanego z modułem ip_tables. Aplikacja jest zainstalowana domyślnie. Przykład blokowania dostępu do całego serwera z konkretnego adresu IP:iptables –A INPUT –s 127.0.0.1 –j DROPGdzie pod: 127.0.0.1 podstawiamy adres IP jaki ma być zablokowany. Przykład usuwania zablokowanego adresu IP z zapory: iptables –D INPUT –s 127.0.0.1
fail2ban Fail2ban to niezwykle ciekawa aplikacja dla każdego administratora serwera, ale także dla zwykłego użytkownika. Głównym zadaniem wspomnianej aplikacji, jest analizowanie plików z logami serwerów usług takich, jak ssh, ftp, www, poczta, itp. Według gotowych “filtrów” wychwytywane są charakterystyczne frazy dla błędnych prób połączeń. Na ich podstawie identyfikowane są niepożądane zachowania, a winowajcy blokowani.Aplikacje trzeba zainstalować poleceniem: apt-get install fail2ban Konfiguracja sprowadza się do edycji kilku plików. Zacznijmy od “/etc/fail2ban/jail.conf”, znajdują się tam wszelkie reguły filtracji.W pliku “/etc/fail2ban/fail2ban.conf”, możemy ustawić m.in.: loglevel = 3 # poziom logowania (1-błędy,2-ostrzeżenia,3-informacyjne,4-debug) logtarget = /var/log/fail2ban.log # ścieżka do pliku z logami dla fail2ban
denyhosts DenyHosts jest programem napisanym w Pythonie i jest jednym z najlepszych narzędzi do zabezpieczania SSH przeciw atakom typu brute force stosowanymi najczęściej przez boty. Program należy zainstalować, komendą: apt-get install denyhosts Plik konfiguracyjny mieści się w: /etc/denyhosts.conf W nim będziemy dokonywać całą konfigurację programu, na początek najważniejsza opcja: SECURE_LOG #odpowiada za ścieżkę do logów SSH HOSTS_DENY #opcja tyczy się również położenia pliku z logami, jeśli instalowaliśmy program z paczki (np. pod Debianem) to nie trzeba tych dwóch pierwszych opcji modyfikować PURGE_DENY #odpowiada za czas po jakim IP będą odblokowywane, jeśli opcja jest bez parametrów to oznacza to, że nigdy BLOCK_SERVICE #tutaj ustawiamy czy blokowany ma być dostęp tylko do SSH czy do wszystkich usług serwera, standardowo opcja jest ustawiona na ALL, czyli blokowanie dostępu do wszystkich usług DENY_THRESHOLD_INVALID #po ilu nieudanych próbach logowania na konta których nie ma w /etc/passwd (ogólnie mówiąc plik z listą kont w systemie) ma być blokowany dostęp, jest to opcja zabezpieczająca przeciw atakom słownikowym
denyhosts DENY_THRESHOLD_ROOT #ilość prób logowania na konto root (główne konto administratora systemu) DENY_THRESHOLD_RESTRICTED #odpowiada za ilość prób logowania na konta znajdujące się w /var/lib/denyhosts/restricted-usernames (standardowo), polecam ustawić wartość 1, a do pliku /var/lib/denyhosts/restricted-username dopisać konta, które nigdy nie powinny mieć możliwości logowania na SSH np. mysql, więcej tutaj ADMIN_EMAIL #tutaj możemy ustawić adres e-mail admina na który mają dochodzić powiadomienia o blokowaniu danego IP, raczej nie polecam ustawiania tej opcji na większych serwerach :-), wszystkie opcje zaczynające się od SMTP_ #odpowiadają za sposób wysyłania poczty i dane konta z którego będzie wysyłane powiadomienie o blokadzie, natomiast wszystkie opcje zaczynające się od AGE_RESET_ #odpowiadają za czas naliczania prób logowania SYNC_SERVER #bardzo przydatna opcja pozwalająca na synchronizację bazy blokowanych adresów IP, szczerze polecam SYNC_INTERVAL #czas co ile lista będzie synchronizowana baza SYNC_UPLOAD #czy program ma wysyłać zablokowane przez nasz serwer adresy IP SYNC_DOWNLOAD #czy program ma ściągać listę IP zablokowanych adresów przez innych użytkowników programu, polecam obie powyższe opcje włączyć (yes) SYNC_DOWNLOAD_THRESHOLD #bardzo ważna opcja, ile różnych serwerów musi wysłać dane IP, żeby zostało zablokowane na naszym serwerze, polecam wartość 3 lub więcej.
Instalacja i konfiguracja przydatnych pakietów do pracy jako serwer stronWWW • apache2, PHP5 • MySQL, PhpMyAdmin • Serwer FTP – proftpd • Zadania - cron
Serwer stron - apache2, php5 Apache jest najszerzej stosowanym serwerem HTTP w Internecie. W grudniu 2011 jego udział wśród serwerów wynosił 65%. W połączeniu z interpreterem języka skryptowego PHP i bazą danych MySQL, Apache stanowi jedno z najczęściej spotykanych środowisk w firmach oferujących miejsce na serwerach sieciowych. PHP jest najczęściej stosowany do tworzenia skryptów po stronie serwera WWW, ale może być on również używany do przetwarzania danych z poziomu wiersza poleceń, a nawet do pisania programów pracujących w trybie graficznym (np. za pomocą biblioteki GTK+, używając rozszerzenia PHP-GTK). Implementacja PHP wraz z serwerem WWW Apache oraz serwerem baz danych MySQL określana jest jako platforma AMP (w środowisku Linux – LAMP, w Windows – WAMP). Ponadto PHP można uruchomić na serwerze IIS (Windows) oraz w chmurze Windows Azure.
Instalacja - apache2, php5 Instalacja zarówno apache2 jak i PHP5 jest bardzo prosta. Wszystko opiera się na wykonaniu kilku prostych komend. Na początku instujemy apache2: apt-get install apache2 Instalacja PHP5 i kilka przydatnych modułów:apt-get install php5 php5-cgi php5-curl php5-mysql php-pear libapache2-mod-php5 Możemy aktywować sobie jeszcze obsługę mod_rewrite (.htaccess), poprzez komendę: a2enmod rewrite Na sam koniec należy zrestartować apache2:/etc/init.d/apache2 restart Pliki naszej strony możemy umieszczać, w katalogu: /var/www Stronę można zobaczyć pod adresem: http://127.0.0.1/
Baza danych - MySQL, PhpMyAdmin MySQL rozwijany jest przez firmę Oracle. Wcześniej przez większość czasu jego tworzeniem zajmowała się szwedzka firma MySQL AB. MySQL AB została kupiona 16 stycznia 2008 roku przez Sun Microsystems[1], a ten 27 stycznia 2010 roku przez Oracle. PhpMyAdmin – narzędzie służące do łatwego zarządzania bazą danych MySQL, napisane w języku PHP. Oprogramowanie wydawane jest na licencji GNU General Public License i umożliwia między innymi tworzenie/usuwanie baz danych, dodawanie/kasowanie relacji oraz edycję ich struktury i zawartości. Wszystkie operacje mogą być wykonywane z poziomu przeglądarki internetowej, w graficznym środowisku, bez konieczności pracy z domyślnym interfejsem tekstowym.
Instalacja - MySQL, PhpMyAdmin W prosty sposób można zainstalować serwer baz danych MySQL oraz przyjazny panel do obsługi tej bazy PhpMyAdmin. Instalację rozpoczynamy wykonaniem komendy:apt-get install mysql-server mysql-common mysql-client Podczas instalacji zostaniemy poproszeni o podanie hasła, należy je wpisać i zatwierdzić klawiszem [enter] Nasz serwer bazy danych został zainstalowany pomyślnie. Instalacja panelu PhpMyAdmin jest również prosta: apt-get install phpmyadminPodczas instalacji należy zaznaczyć (spacją) obok napisu: apache2 i kliknąć [enter], po chwili znów klikamy [enter] i podajemy hasło 3-krotnie to samo co podczas instalacji MySQL. Wykonamy jeszcze kilka komend i baza jest gotowa do pracy.cp /etc/phpmyadmin/apache.conf /etc/apache2/sites-available/phpmyadmin&& a2ensite phpmyadmin && /etc/init.d/apache2 restart Możemy zalogować się do panelu pod adresem: http://127.0.0.1/phpmyadmin
Serwer FTP - proftpd Do plików warto mieć dostęp przez protokół FTP. W tym celu zainstalujemy serwer proftpd i dodamy nowego użytkownika. Rozpoczynamy wykonując komendę: apt-get install proftpd Wybieramy opcję domyślną – standalone i klikamy [enter] Po instalacji koniecznie należy odkomentować linię DefaultRoot ~ w pliku konfiguracyjnym, poleceniem: nano /etc/proftpd/proftpd.conf aby użytkownicy nie mogli „wychodzić” ponad swój katalog domowy. Jeszcze zrestartujemy serwer: /etc/init.d/proftpd restart Aby dodać nowego użytkownika wykonujemy polecenie:adduser –d nazwa_uzytkownika podajemy dwókrotnie hasło, którego nie widać zatwieradzając klawiszem [enter], a w późniejszych krokach klikamy tylko [enter]. Konto zostało utworzone. Z wybranym loginem oraz hasłem możemy się teraz zalogować przez klienta FTP. Pliki znajdują się w katalogu: /home/nazwa_uzytkownika zostaje on automatycznie utworzony.
Zadania - cron Cron pozwala na cykliczne uruchamianie wybranych programów, skryptów. Plik z wisami można edytować za pomocą komendy: nano /etc/crontab Kilka przykładów: /etc/cron.hourly - skrypty wykonywane co godzinę/etc/cron.daily - skrypty wykonywane codziennie/etc/cron.weekly - skrypty wykonywane raz w tygodniu/etc/cron.monthly - skrypty wykonywane raz w miesiącu 23 0-23/2 * * * echo "uruchamiaj 23 min po polnocy, 2, 4 ..., codziennie”5 4 * * sun echo "Uruchamiaj się 5 po 4 w niedziele”0 10 * * 1,3 echo "Uruchamiaj się w każdy poniedzialek i srode o 10.00"*/2 * * * * echo "Uruchamiaj się co 2 minuty"
Zadania - cron Przykład budowy polecenia odpowiadającego za czas wykonania: * * * * * komenda do wykonania- - - - - | | | | | | | | | +----- dzień tygodnia (0 - 7) (Niedziela=0, Poniedziałek=1, Wtorek=2,..., Niedziela=7) | | | | | | | +------- miesiąc (1 - 12) | | | | | +--------- dzień miesiąca (1 - 31) | | | +----------- godzina (0 - 23) | +------------- minuta (0 - 59)
Przydatne polecenia, programy • apt-get install nazwa <= Instalacja pakietu o danej nazwie • cd /sciezka/do/katalogu <= Przejście do katalogu • df –h <= Ilość wolnego miejsca na dysku • ls <= Lista plików w danym katalogu • lsof -i -n -P | grep port <= To samo co powyżej, lecz inny sposób • mkdir <= Tworzenie katalogu • nano <= Przyjazny edytor plików • ndcu / <= To samo co powyżej lecz lepiej przedstawione graficznie • netstat -anp | grep port <= Sprawdzanie co nasłuchuje na danym porcie • netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort –n <= Wykrywanie ilości połączeń z danego adresu IP • passwd <= Zmiana hasła użytkownika root, lub usera po podaniu nazwy • reboot <= Restart systemu • w <= Lista zalogowanych użytkowników • To tylko bardzo mała część poleceń, po więcej zapraszam na stronę: http://gabo.hi.pl/linux/polecenia.htm
Bibliografia • http://centos.com.pl • http://forum.infojama.pl • http://google.pl/images • http://gustaff.bsdaemon.pl • http://iconfinder.com • http://linuxportal.pl • http://wikipedia.org
Dziękuję za uwagę Wykonanie:Wojciech Olanin, kl. 1Ti