Slowloris a Nginx (atak typu DOS)

Ostatnio zrobiło się głośno o Slowloris, napisały o tym programiku większość portali informacyjnych. Jako że, ten programik jest łatwy w użyciu i łatwo dostępny to… spowoduje to, że zacznie się częste ataki przy użyciu tego skryptu w perlu, to na pewno :) . Najbardziej narażony na atak jest Apache, ze względu na to jak działa samo Apache i na sama metodę przeprowadzenia ataku. Apache dla każdego połączenia tworzy osobny proces. Atak wygląda zaś w sposób, iż skrypt wysyła niedokończone nagłówki HTTP w ilości spoooorej, zależy z jakimi parametrami wywoła się skrypt, jednocześnie nie kończąc połączenia. Z tego powodu Apache czeka na dokończenie nagłówka przez klienta, ale on tego nie zrobi. Więc nagle Apache tworzy baaaardzo dużo procesów co zabiera baaardzo dużo zasobów. Powoduje to zadyszkę serwera, a w najgorszym wypadku, serwer przestanie odpowiadać w ogóle. Niestety… nie zmieni się sposobu działania apache. Ale to problemem przy dobrej konfiguracji nie jest. Należy zmniejszyć keepalive na kilka sekund np. Inną metodą może byś zastosowanie skryptu, który będzie sprawdzał ilość połączeń per IP. Jak ich będzie za duże, wyląduję gość w IPTables :) . I na przykład serwerownia Leasweb udostępniła tego typu skrypt.

Ale o czym to ja chciałem… a, już wiem :) . Ale nie używam Apache, tylko Nginxa.. i ja o tym chciałem :P . Nginx działa w sposób odmienny. Tworzy 2-4 procesy, ewentualnie więcej w zależności od konfiguracji i każdy z tych procesów, może obsłużyć kilkadziesiąt/set tysięcy połączeń. Jedyny ograniczeniem jest ustawienie kernela co do ilości dostępnych socketów, otwartych plików przez proces itp.  Zaś na przykład  buffory związane z cachowanie połączeń sieciowych, połączeń itp. należy zmniejszyć. Po prostu ustawienia systemu ograniczą Nginxa. Ale, jednak należy pamiętać, że trzeba ustawić odpowiednio wysokie limity ilości połączeń dla pojedynczego procesu w konfiguracji Nginxa. Np proponowane przez autora Nginxa Igora Sysoeva.

worker_processes  4;
events {
   worker_connections  200000;
   use epoll;
}

Jak policzyć ilośc możliwych klientów podłaczonych do serwera?

worker_process * worker_connections = 4 * 200'000 = 800'000 połączeń

I Nginx spokojnie obsłuży taką ilość połączeń, pytanie tylko, czy system mu na to pozwoli, o czym wspominałem wcześniej :) .  Jeszcze jeden taki mały szkopuł. Należy zwrócić uwagę, czy Nginx działa jako pojedynczy serwer, czy też z tandemem np Apache, gdzie to Apache odpowiada za PHP. W takiej konfiguracji ilość maksymalnych połączeń należy podzielić na połowę. Z racji tego, że dla nginx 1 połączneie to kient <-> Nginx. Zaś kolejnym jest Nginx <-> Apache.

Wiersz poleceń zamiast okienka

Tym wpisem, zacznę nową kategorie na forum, mianowicie dotyczącą programu AutoCAD i jego używania :) . Zacznę od bardzo prozaicznej rzeczy, która mnie dziś spotkała po otworzeniu programu.

W momencie, kiedy chciałem otworzyć rysunek, program zamiast przywitać mnie okienkiem, pojawił mi się wiersz poleceń: “Podaj nazwę pliku do otwarcia”. I tak trochę… pupcia ^^. Rozwiązanie problemy jest proste. W wierszu poleceń wpisujemy FILEDIA i zmieniamy wartość tej zmiennej systemowej na 1. Wszystko wraca do normy :)

W jakim katalogu jestem?

Kolejny wpis, poruszający dość błachy problem, a mogący spowodować problem. Ogołnie rzecz ujmując problem wygląda tak:

Jestem zalogowany na serwer, jako zwykły user i chcę sprawdzić dokładna ściężke od / do katalogu, w którym się znajduję. Aby to uczynić, musimy wpisać w konsoli:

  1. pwd

Polecenia to działa w zasadzie we wszystkich systemach *unix i wyświetli nam ścieżkę do aktualnego katalogu.

Dzień (noc?) Krecia :)

[SinglePic not found]

Po prawej… projekt z drogi, po lewej… ‘zabawa’ serwerm.
Dzień (noc) prawie jak co dzień (noc) :P .