Bezpieczeństwo SSH to walka, więc ulepsz sshd_config dla szatana!

czerwiec 17th, 2008 · 3 Comments ·

Bardzo wiele serwerów korzysta z protokołu SSH do udostępniania powłoki. Wszyscy wiedzą, że jest to protokół bardzo bezpieczny. Mniej osób zdaje sobie sprawę z tego, że najsłabszym ogniwem w systemie zabezpieczeń systemów jest użytkownik i jego hasło. Postaram się przedstawić kilka prostych sztuczek jak uczynić SSH chociaż trochę bezpieczniejszym.

1. Domyślny port, na którym działa SSH to 22. Dobrym pomysłem jest przenieść SSH na port powyżej 1024. Unikniemy w ten sposób znakomitą większość ataków, jaką są ataki słownikowe. W większości są to niegroźne próby zalogowania się przy użyciu haseł pobranych ze słownika. Jednak gdyby jakimś cudem hasło, któregoś z użytkowników znalazło się w takim słowniku sytuacja przestałaby być mało groźna. Alternatywnym rozwiązaniem jest stosowanie skryptów, które przeglądają logi i po kilku nieudanych próbach zalogowania dodają do firewalla regułkę blokująca adres IP atakującego. Osobiście korzystałem jedynie z Bruteblocka, który działa na FreeBSD i można go sobie zainstalować z portów.

2. Kolejną ważną rzeczą jest niepozwolenie na logowanie się przez SSH superużytkownikowi (root). Musimy zatem dopilnować, aby opcja PermitRootLogin była ustawiona na no. Logujemy się wówczas na zwykłego użytkownika, a prawa roota uzyskujemy poprzez użycie komendy su lub sudo. Należy dopilnować, aby użytkownik, z którego chcemy mieć możliwość użycia komendy su znalazł się w odpowiedniej grupie - najczęściej jest to grupa wheel.

Można również w konfigu demona SSH wyszczególnić, jacy użytkownicy mają prawo do logowania się przez SSH:

AllowUsers nowaker kwiat admin

3. Domyślnie demon SSH pozwala na logowanie się przy użyciu protokołów w wersji 1 oraz 2. Wersja 1 jest mniej bezpieczna dlatego powinniśmy zezwalać na używanie tylko wersji 2:

Protocol 2

4. Dobrym pomysłem jest również zezwalanie na łączenie się jedynie z określonych adresów IP. Można tego dokonać poprzez odpowiednie regułki do firewalli lub poprzez użycie tzw. wrapperów TCP. W takim przypadku korzystamy z pliku /etc/hosts.deny i uzupełniamy go wg uznania.Warto również zastanowić się nad limitowaniem ilości połączeń SSH w jednostce czasu za pomocą firewalla.

W ten oto sposób przedstawiłem kilka bardzo prostych sposobów na minimalne zwiększenie bezpieczeństwa naszego demona SSH. Nie jest to może instrukcja typu kopiuj-wklej, aczkolwiek przy odrobinie chęci każdy początkujący administrator powinien sobie z tym poradzić.

Dzięki dla kwiata, administratora FreeBSD na serwerze Panic.PL za kilka poprawek merytorycznych :)

P.S. Tytuł wpisu stanowi nawiązanie do wpisu na zdzichuBG’u ;)

Tags: Bezpieczeństwo

3 responses so far ↓

  • Zyx // czerwca 17, 2008 at 14:34

    Żeby nie bawić się w prowizorki w postaci “skryptów do przeglądania logów” już lata temu wynaleziono PAM. Wystarczy wykorzystać jeden z gotowych modułów do blokowania dostępu przy zbyt dużej ilości nieudanych prób i przypisać go do SSH. Co więcej, można to wykorzystać ogólnie do zabezpieczenia wielu innych usług serwera.

  • Kwiat // czerwca 17, 2008 at 19:02

    Fakt, o modułach do PAM-a akurat wtedy nie pomyślałem, aczkolwiek blokowanie na firewallu jako dodatek też może się przydać.

  • tyranka // czerwca 20, 2008 at 22:21

    su sudo :> to przedewszystkim kojarzy mi sie z linuxem, ktory w polaczeiu ze mna i z moim komputerem wali caly system :D

Leave a Comment