Miałem kilka problemów bezpieczeństwa z moim serwerem, kilku użytkowników SSH rozpalało pożary, zwane także problemami.
Chciałbym:
- Śledź logowania i wylogowania użytkowników
- Śledź aktywność tych SSH, aby wykryć wszelkie złośliwe działania
- Zapobiegaj usuwaniu dzienników przez użytkowników
Nie jestem zbytnio administratorem systemu i jestem dość niedoświadczony w tej kwestii, więc wszelkie porady byłyby bardzo mile widziane i bardzo pomocne. :)
unset HISTFILE
bash, a wtedy ich historia bash nie zostanie zapisana.~/.bash_history
lub~/.bashrc
)$HISTFILE
. Ale to samo w sobie może być całkowicie uzasadnione (np. Użytkownik chce po prostu uruchomićzsh
lub chce ustawić własną opcję na przemianbashrc
).[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ć:
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:
i skomentuj Port 22 i skorzystaj z dowolnej osoby, którą chcesz. Przykład:
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 .
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
!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 [email protected] -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żeszcat
zobaczyć wszystko, co zostało wpisane w powłoce bash.źródło
Trochę przesada, ale możesz zobaczyć wszystko, co jest uruchomione w systemie za pomocą „złącza zdarzeń procesu”:
http://www.outflux.net/blog/archives/2010/07/01/reporting-all-execs/
źródło
źródło
Oprócz samego logowania nie ma bezpiecznego sposobu na śledzenie / rejestrowanie działań użytkowników po zalogowaniu, zakładając, że mają oni podstawową wiedzę na temat Linuksa, będą mogli wyłączyć rejestrowanie powłoki lub po prostu uruchamiać polecenia z innych powłok (np. Python).
Zamiast tego powinieneś zachować ostrożność w zapewnianiu dostępu ssh, czy naprawdę tego potrzebują? Udzielanie dostępu do ssh nie jest zbyt powszechne, chyba że korzystasz z powłoki biznesowej.
źródło