Zabezpieczanie dostępu do SSH

Komentarze

Transkrypt

Zabezpieczanie dostępu do SSH
Zabezpieczanie dostępu do SSH
Napisane przez Piotr Pośpiech
Wtorek, 20 stycznia 2009 13:41 - Ostatnio zmieniane Wtorek, 11 września 2012
SSH to standard protokołów komunikacyjnych używanych w sieciach komputerowych TCP/IP,
w architekturze klient-serwer. W internecie istnieje bardzo wiele robaków, które probują
połączyć się na SSH metodą ataku słownikowego, w tym celu probują zalogować się np. na
konto root hasłem root, admin, admin123 itd. dlatego powinno się stosować trudne do
zgadnięcia hasła, czyli takie które posiadają małe, duże litery, cyfry, znaki specjalne.
Tyle słowem wstępu, teraz zajmijmy się rzeczywiście zabezpieczaniem SSH, jedynym z
najważniejszych aspektów jest uniemożliwienie logowania głównego administratora (root) na
SSH, w tym celu należy edytować plik plik konfiguracyjny SSH czyli /etc/ssh/sshd_config i
zmienić wpis PermitRootLogin no, w tym pliku możemy także zmienić port (od 0 do 65535) SSH
bądź dodać kolejne porty (dopisując kolejne linijki Port) na których dostępne będzie SSH,
możemy tu również zezwolić na logowanie jedynie wybranym użytkownikom dopisując
AllowUsers i loginy użytkowników rozdzielone spacją, możemy również zabronić logowania się
niektórym użytkownikom na SSH dodając wpis DenyUsers i analogicznie jak w przypadku
AllowUsers wpisując loginy rozdzielone spacją, aby zmiany weszły w życie należy zrestartować
SSH komendą /etc/init.d/sshd restart, następnie powinniśmy skonfigurować firewall'a tak aby
odrzucał wszystkie połączenia na port SSH (standardowo 22) z wyjątkiem tych które są
dopisane w konfiguracji. W celu konfiguracji firewall'a (iptables) należy wydać następujące
komendy:
iptables -A INPUT -p tcp -s NUMER_IP --dport 22 -j ACCEPT
(takich wpisów może być dowolna ilość), następnie odrzucić połączenia do SSH z innych
adresów komendą:
iptables -A INPUT -p tcp --dport 22 -j DROP
(jeśli zmieniliśmy port SSH to należy również zmienić wartość dport). Aby zobaczyć reguły
dopisane do iptables, należy wydać komendę iptables -L. To by było na tyle jeśli chodzi o
najważniejsze sposoby zabezpieczania SSH.
Źródło: http://ziaja.name/2008/02/16/zabezpieczanie-dostepu-do-ssh/
1/4
Zabezpieczanie dostępu do SSH
Napisane przez Piotr Pośpiech
Wtorek, 20 stycznia 2009 13:41 - Ostatnio zmieniane Wtorek, 11 września 2012
Istnieją robaki internetowe, które próbują zalogować się na serwer SSH za pomocą takich par
identyfikator/hasło, jak: „admin/admin”, „test/test”, „root/root”, itp. Jeśli używamy dobrych, tzn.
długich i skomplikowanych haseł, to nie musimy się ich obawiać. Warto jednak wiedzieć o
innych, równie prostych sposobach zabezpieczania serwera SSH.
Najbardziej oczywistą metodą jest pozwolenie na łączenie się z serwerem SSH tylko z
wybranych adresów IP. Można do tego celu użyć firewalla, który będzie przepuszczał
połączenia jedynie z zaufanych adresów i odrzucał połączenia z pozostałych.
Jeśli używasz firewalla iptables, możesz to zrobić w następujący sposób:
# Zezwala na łączenie się z serwerem SSH (port 22) z adresu 1.2.3.4
iptables -A INPUT -p tcp -m state --state NEW --source 1.2.3.4 --dport 22 -j ACCEPT
# Odrzuca połączenia z pozostałych adresów
iptables -A INPUT -p tcp --dport 22 -j DROP
Osoby, które nie używają firewalla lub nie chcą eksperymentować z jego konfiguracją mogą
skorzystać z innych metod ograniczania dostępu do serwera SSH. W Debianie paczka z
serwerem OpenSSH jest kompilowana ze wsparciem dla tcpwrapperów, co pozwala określić
bez użycia firewalla adresy maszyn, które mogą się łączyć z serwerem.
Do tego celu służą dwa pliki: /etc/hosts.allow i /etc/hosts.deny. Pierwszy z nich zawiera adresy
maszyn, którym zezwala się na łączenia z serwerem, a drugi - adresy maszyn, które nie mogą
tego robić.
Dla przykładu, jeśli chcemy, żeby z serwerem SSH mogły się łączyć wyłącznie komputery o
adresach 1.2.3.x i 192.168.0.x, to w pliku /etc/hosts.allow musimy umieścić:
# /etc/hosts.allow
sshd: 1.2.3.0/255.255.255.0
sshd: 192.168.0.0/255.255.255.0
2/4
Zabezpieczanie dostępu do SSH
Napisane przez Piotr Pośpiech
Wtorek, 20 stycznia 2009 13:41 - Ostatnio zmieniane Wtorek, 11 września 2012
Aby zaś pozostałe komputery nie mogły tego robić, w pliku /etc/hostsny należy umieścić:
# /etc/hosts.deny
sshd: ALL
Ostatnią metodą zabezpieczania serwera SSH jest jego odpowiednie skonfigurowanie. Do
dyspozycji mamy kilka użytecznych opcji związanych z bezpieczeństwem. Konfiguracja serwera
SSH jest przechowywana w pliku /etc/ssh/sshd_config.
Dla przykładu, jeśli chcemy, żeby zdalnie mogli się logować tylko użytkownicy „bob” i „chris”, to
do pliku konfiguracyjnego SSH musimy dopisać linijkę:
AllowUsers bob chris
Aby zmiana zaczęła obowiązywać należy zrestartować serwer SSH przy pomocy komendy:
/etc/init.d/sshd restart
Od tej pory pozostali użytkownicy systemu nie będą mogli się zalogować do niego przez SSH,
nawet jeśli podadzą prawidłowy identyfikator i hasło!
Można też wprost określić użytkowników, którzy nie mogą się logować do systemu przez SSH.
Dla przykładu, jeśli nie pozwalamy, żeby użytkownicy „badness” i „paula” logowali się zdalnie, to
do pliku /etc/ssh/sshd_config dopisujemy linijk:
DenyUsers badness paula
Prawdopodobnie najważniejszą rzeczą jaką powinieneś zmienić w konfiguracji serwera SSH
jest uniemożliwienie zdalnego logowania się do systemu przez użytkownika „root”. Można to
3/4
Zabezpieczanie dostępu do SSH
Napisane przez Piotr Pośpiech
Wtorek, 20 stycznia 2009 13:41 - Ostatnio zmieniane Wtorek, 11 września 2012
uzyskać za pomocą następującego wpisu:
PermitRootLogin no
Żródło: http://www.debianusers.pl/articles/71
4/4

Podobne dokumenty