[OŚWIADCZENIE] Zdaję sobie sprawę, że jestem spóźniony na imprezę, ale chciałbym wkleić odpowiedź, której udzieliłem na inne pytanie , ponieważ wydaje mi się, że może to dać dobry wgląd czytelnikom, a to pytanie wydaje się być przewodnikiem miejsce na podstawowe informacje ssh.
Był podobny problem, który uderzył mnie po przeczytaniu tego pytania tutaj na AskUbuntu i sprawdzeniu mojego VPS, tylko po to, aby zobaczyć bazillion prób brutalnej siły. Wtedy postanowiłem podjąć działania.
Teraz, zgodnie z pytaniem, z którym się powiązałem, jeśli chcesz zobaczyć nieudane próby zalogowania się na twoim komputerze przez ssh (mogą to być próby użycia siły lub cokolwiek innego), spróbuj wpisać:
grep sshd.\*Failed /var/log/auth.log | less
Jeśli dane wyjściowe składają się z wielu wierszy, czyli wielu prób użycia siły, zwłaszcza jeśli miały one miejsce w krótkich odstępach czasu, możesz wykonać następujące czynności:
Zmień plik konfiguracyjny ssh
Aby to zrobić, otwórz plik znajdujący się w / etc / ssh / sshd_config w swoim ulubionym edytorze, takim jak ten vim /etc/ssh/sshd_config
.
1. Spróbuj przenieść ssh z portu 22 : Teraz zlokalizuj wiersz o treści:
# What ports, IPs and protocols we listen for
Port 22
i skomentuj Port 22 i skorzystaj z dowolnej osoby, którą chcesz. Przykład:
# What ports, IPs and protocols we listen for
# Port 22
Port 28934
Pamiętaj, że porty poniżej 1024 wymagają specjalnych uprawnień (root). Nie wiem, jak to może w to przeszkadzać, ale mówię tylko.
2. Wyłącz rootowanie logowania przez ssh : Ponieważ nazwa użytkownika root jest przewidywalna i zapewnia pełny dostęp do twojego systemu, zapewnienie nieograniczonego dostępu do tego konta przez SSH jest nierozsądne. Znajdź odczyt linii PermitRootLogin i ustaw go na no .
PermitRootLogin no
3. Wyłącz uwierzytelnianie hasłem : Wygeneruj klucze SSH i użyj ich, aby zalogować się do systemu. Bez włączonego hasła osoby atakujące będą musiały zgadnąć (lub ukraść) klucz prywatny SSH, aby uzyskać dostęp do serwera. Coś, co jest bardzo, bardzo trudne. Przejdź do wiersza z hasłem Uwierzytelnianie hasła i ustaw go na no
PasswordAuthentication no
!OSTRZEŻENIE! Zanim to zrobisz, zapoznaj się z tym przewodnikiem tutaj, jak skonfigurować uwierzytelnianie certyfikatu.
UWAGA: Po wprowadzeniu zmian użyj sudo /etc/init.d/ssh restart
. Aby połączyć się z innym portem poprzez ssh: ssh username@hostname.com -p <port_number>
.
Skonfiguruj zaporę ogniową
Zapoznaj się z tym przewodnikiem, w jaki sposób skonfigurować niezwykle wydajną i wydajną zaporę, która jest zintegrowana z systemem Linux, IPTables .
Skonfiguruj skrypty, które pomogą Ci w bezpieczeństwie
Jednym, którego używam osobiście i szybko przychodzi mi na myśl, jest Fail2Ban . Fail2ban będzie monitorować pliki dziennika pod kątem nieudanych prób logowania. Gdy adres IP przekroczy maksymalną liczbę prób uwierzytelnienia, zostanie zablokowany na poziomie sieci i zdarzenie zostanie zalogowane /var/log/fail2ban.log
. Aby zainstalować:sudo apt-get install fail2ban
Sprawdź historię poleceń przez ssh
Istnieje polecenie linux o nazwie history
, które pozwala zobaczyć, które polecenia zostały wprowadzone do tego momentu. Spróbuj wpisać history
terminal, aby zobaczyć wszystkie polecenia do tego momentu. To może pomóc, jeśli jesteś rootem .
Aby wyszukać określone polecenie, spróbuj:history | grep command-name
Aby wyświetlić listę wszystkich poleceń po ssh :fc -l ssh
Możesz także edytować polecenia za pomocą vi (nie wypróbowałem tego vima, ale zakładam, że również działa):fc -e vi
Możesz także usunąć historię :history -c
UWAGA: Jeśli nie jesteś fanem tego polecenia, history
w twoim katalogu domowym ( cd ~
) jest także plik o nazwie .bash_history (jeśli używasz bash), w którym możesz cat
zobaczyć wszystko, co zostało wpisane w powłoce bash.
unset HISTFILE
bash, a wtedy ich historia bash nie zostanie zapisana.