Tym wpisem chce zacząć poruszać kwestie bezpieczeństwa na serwerze. Nie będą to wpisy od podstaw lecz ciekawostki, porady pewne obserwacje na różne tematy. Dziś bezpieczeństwo ssh ale nie od samych podstaw.
Bardzo często do serwera logujemy się jednym loginem.Kont może być dużo (np serwer poczty z kontami bash) lub kilka (poczta na bazie danych). Ale do logowania używa się jednego konta np: postmaster, admin lub innego. Konto admin jest często używane przez skanery wiec nazwa nie jest fortunna. Jak ograniczyć możliwość logowania do jednego? W pliku sshd_config.ssh dodajemy jedną linie:
AllowUsers admin
Oznacza to, że tylko user admin może się zalogować przez ssh. Dość proste ograniczenie możliwości zgadywania loginów i haseł. Jeśli konto będzie się nazywać np: dziwnylogin praktycznie metoda brutal-force nie ma racji bytu.
Następna opcja jest MaxAuthTries
MaxAuthTries 2
Ogranicza ona ilość prób(w tym przypadku do 2). tez jakieś zabezpieczenie chociaż one nie jest największe.
Jeśli ktoś już bardzo upierdliwie skanuje nasz serwer można użyć fail-ban opisywany na tej stronie. Chociaż w tym przypadku najlepszym rozwiązaniem jest użycie narzędzia z następnego akapitu.
I ostatni punkt kto wie czy nie najważniejszy. Część ludzi przenosi port ssh na wysokie numery(np 62324). Faktycznie pomaga, skanery nie przelatują po wszystkich portach ale po co…. Można użyć świetnego narzędzia jakim jest knocker.
Na firewallu nie dopuszczamy połączeń ssh. Odpalamy serwer knock na maszynie. Jej zadaniem jest nasłuchiwanie pukania(knocking) do zdefiniowanych przez użytkownika portów w odpowiedniej kolejności. Klient knockera uruchamiany na maszynie z której chcemy się połączyć wykonuje tą sekwencje (zdefiniowaną przez nas) i wtedy na określony czas zostaje otwarty port ssh na firewallu tylko z adresu którego zapukano. Genialne! Oczywiście możemy dodać do firewalla na adres pracy czy jakiś inny.Na sieci jest dużo materiałów można zacząć od tej strony. Wg mnie świetne zabezpieczenie.
przegladajac logi fail2ban zauwazylem ciekawy skan ze strony 71.6.135.131 domena shodan.io
ciekawa strona, musze sie jej kiedys przygladnac
na pierwszy look – wychodzi na to, ze skanuje i UDOSTEPNIA ????!!! loginy i hasla jakie ich serwer znalazl z calego swiata
Tu mały podgląd na jaką skale to robią https://www.badips.com/info/71.6.135.131
Tak można stosować zmianę portu SSH, Można zablokować możliwość logowania bezpośrednio na konto roota, można dać możliwość logowania się wyłącznie z danego ip. Jednak wszystko to oprócz oczywistych zalet ma także pewne wady. Przykład, swego czasu miałem taką sytuację, że serwer u mojego znajomego w firmie, serwer który stawiałem mu do podziału pasma internetowego działał nieprzerwanie od siedmiu lat 🙂 Serwer na Slackware. Znajomy chciał doinstalować Sqida, więc poprosił mnie o to. Siadam do logowania a tu zonk. Okazało się, że zmieniłem port na taki, jakiego już dawno nie pamiętałem, zablokowałem także możliwość bezpośredniego logowania na roota, ale nazwę usera sobie dość szybko przypomniałem (znajomy miał zapisane samo hasło do logowania), umożliwiłem także logowanie do shella wyłącznie z sieci wewnętrznej z danego ściśle określonego ip, oczywiście to IP od jakiegoś czasu nie było wykorzystywane, a sam komputer jaki udostępniłem do takiego logowania skończył na śmietniku, ja też po tak długim czasie także nie pamiętałem jakie to IP. Straciłem ponad tydzień, aby wejść na ten serwer kombinując różnymi sposobami i dochodząc metodą prób i błędów jakie były hasła, ip, itp. :] Dobrze, że coś mi tam jeszcze świtało po tak długim czasie. Kilka razy zdarzało mi się także, że miałem konieczność zalogowania się do konsoli, a akurat nie miałem dostępu do komputera z danym IP lub nie pamiętałem portu na jaki zmieniłem SSH. Tak zmiana portu na prosty do zapamiętania jak 2222, czy 5555 nie wchodzi w grę bo praktycznie nic nie daje. Skanery są w stanie szybko sprawdzić potencjalne porty SSH na jakich on nasłuchuje. Jak masz jeden serwer do administracji to jeszcze pół biedy, ale jak masz ich kilka to już robi się problem, a do dokumentów z hasłami (o ile takie zawierają aktualne dane zawsze) nie zawsze jest dostęp. Awarie i tego typu rzeczy najczęściej lubią się zdarzać jak jesteśmy poza naszym stałym miejscem pracy. Wiem, że takim może być nasz laptop ale kto go zawsze wszędzie ze sobą nosi ?. Jak ja to robię obecnie? Portów nie zmieniam jak nie wymusza nikt tego na mnie, daje FAil2Bana i filtr Recidive zawsze, potem reguły na SSH i dość niskie progi prób logowania np. 3. Na Recidive ustawiam dość długi okres bana. Dla serwerów jakimi się zajmuję generuję klucze rsa, pliki z nimi noszę na zabezpieczonym, zaszyfrowanym pendrivie jaki mam zawsze w kieszeni przy kluczach, a druga kopia leży w innym bezpiecznym miejscu (w razie jakbym zgubił tego pendraka). To pozwala logować mi się do konsoli np. przez puttiego bez hasła, wykorzystując jedynie ten klucz rsa. Logowanie na roota zablokowane oczywiście. Nikt mi się jeszcze na serwer nie włamał, więc metoda działa. Jakie klucze generujemy? Przynajmniej 2048bit, 1024bitowe szyfrowania i niższe są obecnie możliwe do złamania (za kilka dolców poprzez oferty z sieci) . Oczywiście trzymamy się także podstaw bezpieczeństwa, jak generowanie co jakiś czas nowych haseł i kluczy. Wygenerowanie nowego klucza rsa trwa kilka sekund, WYGENEROWANIE (silnego) i zmiana hasła także, razem z zalogowaniem się już. Naprawa serwera po ataku natomiast dużo dużo dłużej, więc warto o tym pamiętać. PS. Nigdy ale to nigdy jako usera nie używamy nazwy admin, administrator i innych podobnych!!!!
zmiana portu na inny niz standardowy – daje spokoj w logach, ilosc serwerow skanujacych wszystkie porty jest ciagle nieliczna
Ja po zmianie portu nie zaobserwowalem w logach fail2bana ani jednej blokady na ssh ! to znaczy ze warto
obecnie mam:
– min 1 atak na minute na poczte
– 5-10 dziennie atakow na ftp
– 2-3 ataki dziennie na proxy i www
mam otwarte jeszcze kilka innych portow , ale proby wejscia na nie jest 2-3 razy na rok
Wszystko zależy ile ten Twój serwer jest już w sieci, czy, gdzie i do kogo trafiły twoje adresy IP oraz jak popularne masz na nim usługi – na przykład czy masz tam jakiś serwer www i jakieś popularne strony. Zależy także do kogo należy taki serwer. Serwery firmowe, instytucji rządowych itp. są częściej atakowane.
Jeżeli serwer był kiedyś słabo zabezpieczony przed potencjalnymi atakami i adres, czy też adresy jego trafiły do osób dokonujących ataków, to nie licz na to, że jak go zabezpieczysz lepiej i zmienisz mu np. port, to ataki na niego z dnia na dzień ustaną. Tym bardziej jak trafiły na jakieś fanowskie strony lub listy jakimi się wymieniają crackerzy 🙂 Ludzie często zmieniają porty na sugerowane w różnego typu tutorialach, a te porty zazwyczaj dobrze znają atakujący i uwzględniają je w swoich narzędziach za pomocą, których dokonują ataków.
Zmiana portu na np. 60022 (Dość często opisywany w swego rodzaju tutorialach) faktycznie zmniejsza ilość dokonywanych ataków, tylko czy ta ilość, na większych i bardziej popularnych serwerach jest już na tyle mała, że nie trafi się potencjalny agresor, który jednak taki port znajdzie ? Czy Potencjalny agresor, nie uwzględnił tego portu na pewno w narzędziach, których używa do takich ataków i to np. jako port który jest sprawdzany zaraz po porcie 22 :] ?.
Jak sądzę sprawdzenie 20tu najbardziej popularnych portów dla SSH, to nie to samo co sprawdzenie prawie 65000 portów, czy są otwarte dla tej usługi. Natomiast i tak pewnie da to 70%-80% trafień jeśli wziąć pod uwagę zwykłych użytkowników takich serwerów, którzy budują swoje „zabezpieczenia” o tutoriale z sieci, nie bardzo wiedząc do końca co dokładnie robią 🙂 Dobrze więc mieć jakieś zabezpieczenie jeżeli taki port jednak znajdą 🙂 a znajda wcześniej czy później na pewno.
to ze znajda – to oczywiste – sam niedawno pisalem o odkryciu serwera, ktory bezinteresownie skanuje caly swiat i uwidacznia luki w zabezpieczeniach (typu standardowy login i haslo)
jednak zastanawiam sie – co Twoj post wniosl ciekawego
juz wiem – Twoj serwer jest korporacyjny i najlepszy
zet ile ty masz lat? 15? Tak się składa, że zajmuje się kilkoma serwerami i to od dłuższego czasu i mam w tym jakieś doświadczenie (z samym linuksem pracuję od 96 roku) , czy moje serwery są najlepsze? wątpię ale, czy takie w ogóle istnieją?
Wydaje się, że dyskusja powinna służyć wymianie doświadczeń i informacji, a nie jakimś gówniarskim przepychankom kto ma rację. Jeśli mam być szczery, to za kilkaset dolców każdy praktycznie może wywrócić jakieś 99% serwerów i twój ani mój wcale w tym nie jest żadnym wyjątkiem, a to za sprawą powszechnego dostępu do botnetów, których twórcy nawet dają możliwość graficznej i przystępnej aplikacji online do dokonania różnych ataków na serwer.
Jeżeli taki atak przyjdzie na różne usługi, z tysięcy różnych ip jednocześnie (DDOS), to praktycznie nie ma siły, aby serwer wytrzymał bez dobrej klasy zabezpieczeń zewnętrznych zazwyczaj dość kosztownych. Ofert dostępu do takich sieci botnet jest cala masa, jak się wie gdzie szukać oczywiście :). Za 45$ możesz już wykupić jakiś mały pakiet i dokonać ataku na własny serwer i sprawdzić w jaki sposób i na ile się takiemu atakowi podda.
Ataki niestety są przeprowadzane nie tylko na sam serwer ale także na urządzenia, które stoją przed nim jak switche, routery itp. blokując tym samym dostęp do samego serwera. Szukanie słabych punktów w bliskim otoczeniu samego serwera, to także dość powszechna praktyka.
Mi jednak nie chodzi o stosowanie jakichś super zabezpieczeń, aby się oprzeć takim atakom ale o proste zabezpieczenie zwykłego ssh, co by ci byle dzieciak neostrady się na serwer nie wbił. Także, by zabezpieczyć się przed takimi botami hurtowo skanującymi internet w poszukiwaniu potencjalnych ofiar stających się potem np. takimi zombie.
Różnica między botem, a specjalistą dokonującym celowo ataku na wybraną maszynę jest taka, że bot to robi hurtem według podanych mu wcześniej algorytmów (na podstawie cech wspólnych serwerów pod kontem ich konfiguracji, czasem danych wersji oprogramowania, w których wykryto luki).
Koszt w rozbiciu na tysiące maszyn jakie uda się trafić takiemu botowi jest znikomy w porównaniu z wynajęciem specjalisty i opłaceniu go, stąd też najczęściej, to boty są wykorzystywane do dokonywania ataków i szukania potencjalnych ofiar.
Jeśli ktoś już dokonuje celowego i świadomego ataku na daną maszynę własnoręcznie, to nie po to, aby weszła ona potem w skład jakiejś sieci botnet na przykład, ale aby wykraść z takiego serwera kompromitujące dane, dane które można potem odsprzedać, robi się takie ataki na serwery rządowe, korporacyjne w celu wygenerowania wielkich strat w danej firmie itp. Wynajęcie jednak takich specjalistów kosztuje i to nie mało 🙂
Co post wnosi ciekawego? Dla ciebie zapewne nic, bo ty już „wiesz wszystko” 🙂
Dlatego polecam knocker. Sam uzywam dosc często (zawsze) i to dziala. Nic nie skanuje bo port zamkniety.
Oczywiscie zostaje problem gdzie zapisac pukneicia jakie trzeba zrobci aby sie sezam otworzyl:)