Konfiguracja SSH

by on Mar.31, 2012, under Hosting

SSH (secure-shell) to protokół komunikacyjny z rodziny protokołów TCP/IP działający w architekturze klient-serwer. SSH domyślnie uruchomiony jest na porcie 22, zaś przesyłanie danych pomiędzy klientem, a serwerem odbywa się w sposób zaszyfrowany.

Głównym zagrożeniem są boty, które metodą brute force próbują złamać hasło do konta root w naszym systemie. Poniżej zamieszczę kilka przydatnych informacji, dzięki którym będziemy w stanie podnieść bezpieczeństwo naszego systemu.

Jednym z rozwiązań jest wyłączenie możliwości logowania się via SSH na konto root oraz zmiana numeru portu na którym będzie nasłuchiwał demon sshd. Przechodzimy do edycji pliku konfiguracyjnego, który w Debianie znajduję się w lokalizacji /etc/ssh/sshd_config

W pliku tym znajdziemy kilka ciekawych opcji:

– Port 22 – numer portu na którym nasłuchuje demon sshd, proponuję dokonać zmiany na dowolny inny port, który nie jest wykorzystywany przez usługi w naszym systemie, np. 5005,

– Protocol 2 – wersja protokołu SSH, obecnie są dostępne wersje 1 i 2, proponuję sprawdzić czy na pewno jest podana wersja 2 protokołu SSH.

– LoginGraceTime – czas podany w sekundach jaki mamy na zalogowanie się do systemu po nawiązaniu sesji SSH. Domyślna wartość to 600. Sugeruję zmianę na niższą wartość – np. 15 sekund – tyle czasu powinno w zupełności wystarczyć na wpisanie nazwy użytkownika i hasła.

– MaxAuthTries – ilość nieprawidłowych prób logowania się do systemu po których zostanie zerwana sesja SSH. Po zerwaniu sesji konto użytkownika na które próbujemy się zalogować nie jest blokowane.

– PermitRootLogin – ustawienie tej opcji na „no” spowoduje brak możliwości zalogowania się poprzez protokół SSH do konta root. Oczywiście po zalogowaniu się na każde inne dowolne konto utworzone w systemie może zmienić użytkownika na root poprzez komendę su.

– PermitEmptyPasswords – ustawienie tej opcji na „no” spowoduje brak możliwości logowania się na konto użytkownika bez podania hasła.

Przy wykorzystaniu fail2ban i opcji MaxAuthTries możemy jeszcze banować hosty z których, ktoś próbował nieskutecznego logowania do systemu, ale o tym napiszę w osobnym artykule.

Dodatkową możliwością zabezpieczenia dostępu do systemu jest określenie z jakich adresów IP jest możliwe nawiązanie dostępu do serwera przez SSH. Konfigurację tą można wprowadzić w pliku w lokalizacji /etc/host.allow – przykładowy poprawny wpis powinien mieć postać sshd : adres_IP : allow – oczywiście na końcu dobrze jest wprowadzić opcję sshd : ALL : deny

W ten sposób odbiegając od standardowej, domyślnej konfiguracji jesteśmy w stanie podnieść bezpieczeństwo naszego systemu.

Możliwość komentowania Konfiguracja SSH została wyłączona more...

Konfiguracja PHP5

by on Wrz.02, 2011, under Hosting

Zacząłem trochę nietypowo, bo od optymalizacji usługi MySQL, a później przeszedłem do konfiguracji serwera www Apache. Jeśli chcemy uruchomić LAMP to musimy wiedzieć, że PHP jest jednym z wymaganych składników :)

Na swoim serwerze korzystam z dystrybucji Debian Squeeze. Abyśmy mogli sprawdzić jego repo zachęcam do wydania polecenia apt-cache search php5 – trochę pakietów pojawi się w okienku, więc wybaczcie za to, że nie zamieszczę listy :)
Obecnie mam zainstalowane następujące moduły:

  • php5
  • libapache2-mod-php5
  • php5-common
  • php5-curl
  • php5-gd
  • php5-mcrypt
  • php5-memcache
  • php5-mysql
  • php5-xsl

Moduły przedstawione wyżej będą wystarczające do funkcjonowania najpopularniejszych cms-ów na naszym serwerze.
Plik, który odpowiada za konfiguracje PHP znajduje się w lokalizacji /etc/php5/apache2/php.ini

Najważniejsze dwa parametry, które  nas zainteresują to:

max_execution_time – jest to maksymalny czas wykonywania się skryptów PHP
memory_limit – wielkość pamięci RAM z jakiej PHP może korzystać.

Kolejnymi przydatnymi dyrektywami w PHP są:

– display_errors – odpowiada ona za wyświetlanie lub ukrywanie komunikatów błędów
– register_globals – zmienne globalne odpowiadają za możliwość korzystania m.in. ze zmiennych przesyłanych do serwera w postaci: $zmienna; zamiast $_GET[‚zmienna’];lub:$_POST[‚zmienna’];

Po wprowadzeniu zmian w php.ini musimy pamiętać o tym, aby zrestartować Apache. Możemy to zrobić za pomocą komendy /etc/init.d/apache2 restart

Jeśli restart nie zakończył się „wypluciem” komunikatów błędów przez Apache, a nie jesteśmy pewni, czy zmiany zostały wprowadzone to proponuje w katalogu /var/www stworzyć skrypt o dowolnej nazwie, np. konfiguracja.php o składni:

<?php phpinfo(); ?>

Wystarczy wtedy wpisać w przeglądarce adres IP naszego serwera ze wskazaniem na plik konfiguracja.php, czyli wywołujemy w postaci http://adres_ip/konfiguracja.php

Szczegółowy opis na temat dyrektyw PHP można znaleźć tutaj

Możliwość komentowania Konfiguracja PHP5 została wyłączona more...

Konfiguracja serwera Apache

by on Sie.24, 2011, under Hosting

Apache jest to nic innego jak serwer HTTP, który stanowi jedno z najczęściej spotykanych środowisk oferowanych przez firmy hostingowe.

Apache instalujemy w Debianie wydając polecenie apt-get install apache2. Po instalacji warto zainteresować się plikiem konfiguracyjnym w lokalizacji /etc/apache2/apache2.conf

Oto typowa zawartość tego pliku:

ServerName NazwaSerwera
Timeout 30
<IfModule mpm_prefork_module>
StartServers 20
MinSpareServers 15
MaxSpareServers 30
MaxClients 100
MaxRequestsPerChild 1000
</IfModule>
<IfModule mpm_worker_module>
StartServers 10
MaxClients 100
MinSpareThreads 20
MaxSpareThreads 50
ThreadsPerChild 20
MaxRequestsPerChild 1000
</IfModule>
ServerSignature Off

Multi-Processing Module (MPM) ma za zadanie izolować requesty do serwera HTTP w ten sposób, aby nie miały one wzajemnie na siebie wpływu.  Defaultowa zawartość pliku konfiguracyjnego jest całkiem w porządku, ale jeśli zamierzamy wykorzystywać serwer do celów testowych, a nie produkcyjnych to zachęcam do wprowadzenia modyfikacji.

Przede wszystkim parametr MaxClients powinien być tak ustawiony, aby wytrzymał ilość spodziewanych przez nas jednoczesnych żądań do serwera HTTP, ale nie może być zbyt wysoko ustawiony ponieważ przy dużym obciążeniu serwera zabraknie nam RAM do obsługi wszystkich procesów.

Dyrektywa StartServers ustawia liczbę procesów potomnych tworzonych w czasie uruchamiania serwera Apache. Ponieważ liczba procesów jest dynamicznie kontrolowana w zależności od obciążenia, z reguły nie ma powodu do zmiany tego parametru, natomiast ja polecam ustawienie tego parametru na możliwie najmniejszy jeśli serwer nie będzie wykorzystywany w celach produkcyjnych.

Dyrektywa MaxSpareServers ustawia maksymalną liczbę bezczynnych procesów potomnych. Są to procesy, które nie  przetwarzają requestów – są uśpione. Wstawianie tutaj dużej wartości liczbowej nie będzie najlepszym pomysłem.

Dyrektywa MinSpareServers ustawia minimalną liczbę bezczynnych procesów potomnych, które nie przetwarzają requestów do serwera HTTP. Jeżeli odpalonych jest mniej procesów niż pozwala na to wartość ustawiona przy MinSpareServers to proces macierzysty tworzy nowe procesy potomne z maksymalną prędkością jednego procesu na sekundę.

Dyrektywa MaxRequestsPerChild określia limit procesów, które może uruchomić proces child. Jeżeli MaxRequestsPerChild zostanie przekroczone to child zostanie ubity, a gdy ustawimy ten parametr na wartość zero to proces będzie wykonywał się nieprzerwanie – apache go nie ubije.

MaxSpareThreads określa maksymalną liczbę wątków, które pozostają w stanie bezczynności. To MPM monitoruje liczbę bezczynnych wątków per child. Jeśli jest zbyt wiele uruchomionych wątków to Apache ubije wątki i childa. Dla sekcji worker domyślnie MaxSpareThreads wynosi 250. Jeśli jest zbyt wiele wątków pozostaje bezczynne to wątki są ubijane. a następnie child  – aż liczba bezczynnych wątków jest mniejsza od wartości liczbowej przy MaxSpareThreads.

MinSpareThreads określa liczbę wątków które mogą być uruchomione podczas wystąpienia nagłych żądań do serwera HTTP. Parametr monitoruje liczbę bezczynnych wątków per child. Jeśli liczba bezczynnych wątków jest mniejsza od zadeklarowanej wartości to Apache zacznie tworzyć nowe wątki, w tym childy.

ThreadsPerChild określa liczbę wątków utworzonych przez każdy proces potomny. Dziecko tworzy te wątki na początku i nie tworzy ich więcej, niż zadeklarowana wartość.

Timeout określa ilość sekund po których dostaniemy informacje, że serwer Apache nie odpowiada.

Za pomocą ServerSignature możemy włączyć lub wyłączyć wyświetlanie stopki z informacją o serwerze i zainstalowanym oprogramowaniu. Taka sygnatura pojawia się m.in. przy stronie błędu 404. Sugeruję wyłączyć wyświetlanie takich
informacji, aby potencjalny intruz nie wiedział jaką wersję serwera HTTP mamy.

Jaką konfigurację przyjmiecie uzależnione jest od tego jaki ruch spodziewacie się przyjmować na serwerze. Metodą prób i błędów uzyskacie swoją idealną i optymalną konfigurację.

Możliwość komentowania Konfiguracja serwera Apache została wyłączona more...

Optymalizacja MySQL

by on Lip.22, 2011, under Hosting

Ostatnim czasem postawiłem sobie serwer MySQL. Niestety po instalacji byłem niemile zaskoczony, ponieważ apache i mysql wysycał mi 200 MB RAM. Apache był już skonfigurowany w miarę optymalnie do moich potrzeb, więc postanowiłem pogrzebać w konfiguracji serwera.

Konfigurację serwera wykonamy poprzez plik w lokalizacji /etc/mysql/my.cnf – oczywiście możemy wyedytować go, czym chcemy – vim, nano, mcedit.

Dobrą praktyką jest wycięcie tego, czego nie potrzebujemy :) Jeśli nie korzystanie z mechanizmu innodb to wystarczy odkomentować lub dodać linię skip-innodb.

Kolejno sugeruję włączyć logowanie „wolnych” zapytań poprzez podanie takich linii:

log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

Pomoże nam to przede wszystkim w optymalizacji naszych tabel oraz zapytań do bazy danych.

Proponuje też spojrzeć na parametr max_connections – w moim przypadku konfigurowany serwer jest środowiskiem testowym, więc ustawiłem ilość połączeń na 10.

Bardzo dobrym pomocnikiem jest mysqltuner, który jest napisany w Perlu. Wystarczy pobrać go wgetem na nasz serwer, lecz proszę pamiętajcie o tym, aby skrypt był wykonywalny. Innymi słowy należy wydać polecenie chmod +x mysqltuner.pl

Aby uruchomić skrypt wystarczy wpisać ./mysqltuner.pl – narzędzie to wyrzuci nam komunikaty w języku angielskim, co należałoby zmienić w confie. W moim wypadku dostałem sugestie, aby zmienić wartość parametru query_cache_limit

Po wprowadzeniu zmian nie zapomnijcie o restarcie usługi – przypomnę wykonamy to poleceniem

/etc/init.d/mysql restart

Po tych modyfikacjach Apache i MySQL u mnie pożera już tylko 65 MB RAM. Tak naprawdę nie ma złotej rady na optymalizację MySQLa – wszystko zależy jaką aplikację chcemy hostować na swoim środowiku, jakie usługi mamy już odpalone no i przede wszystkim trzeba śledzić logi MySQL oraz z rozsądkiem stosować się do rad mysqltunera.

Możliwość komentowania Optymalizacja MySQL została wyłączona more...

Joomla 1.7.x – modyfikacja pod Idea Webserver

by on Lip.22, 2011, under Hosting

Po rozpakowaniu plików i wywołania  instalacji pojawia się komunikat:

Warning: strpos() [function.strpos]: Empty delimiter in
/libraries/joomla/filesystem/path.php on line 156

Wystarczy zmienić w katalogu z Joomla w lokalizacji /libraries/joomla/filesystem/path.php linie 156:

if (strpos($path, JPath::clean(JPATH_ROOT)) !== 0) {

na

if (strpos($path, JPath::clean(‚/’)) !== 0) {

Po zakończonej instalacji należy jeszcze wyedytować plik configuration.php – plik ten znajduje się w katalogu z plikami Joomli.

Wystarczy zmienić parametr public $live_site = ”; na public $live_site = ‚http://mojadomena.pl’;

np. public $live_site = ‚http://szafran.szczecin.pl’;

Możliwość komentowania Joomla 1.7.x – modyfikacja pod Idea Webserver została wyłączona more...

Joomla 1.5.x oraz 1.6.x – modyfikacja pod Idea Webserver

by on Maj.11, 2011, under Hosting

W ostatnim czasie pojawiły się sygnały o braku możliwości instalacji aplikacji Joomla w wersji 1.5.x oraz 1.6.x na serwerach home.pl. Pracą własną zmodyfikowałem pliki .sql z katalogu installation dla wersji 1.5.x.

Użyteczna wersja Joomla 1.5.22 gotowa do instalacji dostępna jest pod tym linkiem

Główną zmianą jaką należy wprowadzić jest zmiana fraz TYPE=MyISAM na Engine=MyISAM – taką poradę odnalazłem na forum Joomli. Zmianę taką przeprowadzamy w plikach z rozszerzeniem .sql w katalogu installation. Developerzy zdają sobie sprawę o niekompatybilności aplikacji dla niektórych wersji MySQL 5.5.x

W samej Joomli 1.6.x błąd został wyprowadzony przez developerów, lecz nie rozumiem dlaczego nie można wprowadzić adresu URL pod jakim Joomla ma być dostępna po instalacji [parametr live_site]. Joomla 1.6.x dostępna jest pod tym adresem

Aby można było dostać się do zaplecza należy w pliku configuration.php zmienić parametr live_site [plik ten odnajdziesz w katalogu do którego skopiowałeś Joomla] – zmianę tą wykonajcie po zakończeniu instalacji i usunięciu katalogu instalacyjnego.

Domyślnie w linii 17 jest wpis:

public $live_site = ”;

należy go zmienić na:

public $live_site = ‚http://www.twojadomena.pl/’;

Do edycji w/w plików polecam aplikację Notepad++

Możliwość komentowania Joomla 1.5.x oraz 1.6.x – modyfikacja pod Idea Webserver została wyłączona more...

Praca nad nowymi serwisami

by on Paź.18, 2010, under Projekty

Na chwilę obecną pracuję nad uruchomieniem dwóch serwisów opartego na Joomli nagiepanie.pl oraz parlamentarne.org opartego na WordPressie. W przypadku projektu o nazwie parlamentarne.org poszukuje osób, które studiują dziennikarstwo lub nauki polityczne etc. do współtworzenia strony

Dodatkowo prowadzę zintensyfikowane prace mające na celu dostosowanie serwera VPS w firmie 3it.pl do moich własnych wymagań, lecz zdarzają mi się jeszcze drobne pomyłki i niedociągnięcia, lecz liczę na to, iż uda się w szybkim tempie przeznaczyć ów serwer pod obsługę parlamentarne.org.

Możliwość komentowania Praca nad nowymi serwisami została wyłączona more...

Wyszukiwarka