Szukaj

Bezpieczeństwo Asteriska – zahaszuj hasło punktu końcowego za pomocą md5 (md5secret)

Bezpieczeństwo Asteriska – zahaszuj hasło punktu końcowego za pomocą md5 (md5secret)

Uniemożliwienie każdemu zobaczenia twoich haseł w Asterisk CLI i używanie go tylko raz (podczas tworzenia punktu końcowego) wydaje się dobrą praktyką zapewniającą minimalnie większe bezpieczeństwo. Bądźmy jednak szczerzy. Korzystanie z MD5 zapewnia niewielkie lub żadne zabezpieczenia. O ile nie używasz szyfrowanych połączeń, hasło jest nadal wysyłane zwykłym tekstem.

Spis treści

1) Dlaczego warto to zrobić?

Jak dotąd znalazłem tylko jeden powód, dla którego warto używać MD5. Nie widać wtedy haseł w konsoli CLI.

Po wejściu do konsoli CLI Asteriska (asterisk -r) możesz wyświetlić wszystkie hasła.

PJSIPSIP
Komendy, żeby wyświetlić informacje o użytkowniku:
pjsip show auths
pjsip show auth 100
Komendy, żeby wyświetlić informacje o użytkowniku:
sip show users
sip show user 100

Hasło tekstowe wyświetlone w CLI

Hasło tekstowe ukryte CLI

CLI wyświetli hasło (tylko pierwsze 15 znaków) lub puste pole, jeśli użyto MD5

Wyświetlenie informacji o konkretnym użytkowniku pokaże tylko, które hasło (secret lub md5secret) zostało ustawione.

2) How-to

Najpierw upewnij się, że Asterisk obsługuje funkcję MD5. Aby to zrobić, wykonaj poniższe polecenie, aby sprawdzić dostępność wspomnianej funkcji. Możesz to zrobić za pomocą polecenia powłoki.

				
					asterisk -rx 'core show function MD5'
				
			

Powinno to wyświetlić informacje o funkcji MD5.

Jeśli z jakiegoś powodu funkcja nie jest dostępna, możesz załadować odpowiedni moduł poleceniem asterisk -rx 'module load func_md5.so' i dodać go w razie potrzeby do a/etc/asterisk/modules.conf. Jeśli to nie pomoże, może być konieczna ponowna kompilacja Asteriska i zaznaczenie opcji MD5 w "make menuelect".

Możesz ustawić niestandardowe dziedziny (ang. realm) dla swoich punktów końcowych. Aby sprawdzić domyślne dziedziny wpisz:

# dla PJSIP
				
					asterisk -rx "pjsip show settings" | grep "realm"
				
			
# dla SIP
				
					asterisk -rx "sip show settings" | grep "realm"
				
			

Ponieważ mamy wymaganą funkcję, możemy przejść do haszowania haseł. Zanim przejdziesz dalej, pamiętaj, że hasło w rzeczywistości składa się z 3 części: nazwy użytkownika, dziedziny i hasła. Hasło jest tworzone, jak pokazano poniżej:

md5secret = md5(nazwauzytkownika:dziedzina:haslo)

Aby stworzyć md5secret możesz użyć polecenia linux (podając wszystkie 3 zmienne):

				
					echo -n "username:realm:secret" | md5sum
				
			

Na przykład, jeśli masz zmienne, takie jak:
username=100 (tł. nazwa użytkownika)
realm=asterisk (tł. dziedzina)
secret=Y0urS3cretP4ssword (tł. hasło)
haszowanie utworzy md5secret, jak poniżej:

				
					echo -n "100:asterisk:Y0urS3cretP4ssword" | md5sum
3a4ebd8ef2dc6aad3af620447b5062fd
				
			

Dodajemy -n do echo, żeby polecenie nie dodało nowej linii na końcu zmiennej, generując tym samym błędny ciąg md5.

 2.1) Urządzenie końcowe PJSIP

W urządzeniu końcowym PJSIP hasło jest przechowywane w kontekście auth punktu końcowego. Najpierw zlokalizuj hasło punktu końcowego. Domyślnie będzie się znajdować w pliku /etc/asterisk/pjsip.conf.

Następnie zaszyfruj swoje hasło. W tym przykładzie wykonamy:

				
					echo -n "100:asterisk:password_for_100" | md5sum
# wynik to 618b6c7ef2ed8faebd5ddc0170886c1f
				
			

Następnie dokonaj dwóch zmian:

  1. Zmień auth_type z userpass (zwykły tekst) na md5
  2. Zamień linijkę z password z md5_cred jak poniżej:

Aby zastosować zmiany (niestety) musisz przeładować cały moduł PJSIP.

				
					asterisk -rx "module reload res_pjsip.so"
				
			

Nie musisz wprowadzać żadnych zmian w swoim urządzeniu końcowym (telefonie, bramie, itp.), ponieważ hasło pozostaje takie samo. Zostało po prostu ukryte w konsoli CLI.

 2.2) Urządzenie końcowe SIP

W urządzeniu końcowym SIP hasło jest przechowywane w kontekście punktu końcowego. Najpierw zlokalizuj hasło punktu końcowego. Domyślnie będzie się znajdować w pliku /etc/asterisk/sip.conf.

Następnie zaszyfruj swoje hasło. W tym przykładzie wykonamy:

				
					echo -n "100:asterisk:password_for_100" | md5sum
# wynik to 618b6c7ef2ed8faebd5ddc0170886c1f
				
			

Następnie zamień linijkę z secret z md5secret jak poniżej:

Aby zastosować zmiany, przeładuj konfigurację SIP.

				
					asterisk -rx "sip reload"
				
			

Nie musisz wprowadzać żadnych zmian w swoim urządzeniu końcowym (telefonie, bramie, itp.), ponieważ hasło pozostaje takie samo. Zostało po prostu ukryte w konsoli CLI.

3) Słowa przestrogi

Oto kilka rzeczy, które musisz wiedzieć!

Jeśli w konfiguracji punktu końcowego SIP (nie PJSIP) ustawiono md5secret, hasło (ang. secret) tego użytkownika zostanie zignorowane!

To prawda: nie możesz bezpośrednio odszyfrować MD5 i nie możesz odzyskać oryginalnej zawartości z hasza. Jednak przy odrobinie pracy możesz stworzyć dwa ciągi tekstowe, które będą miały ten sam hash. Możesz również znaleźć narzędzia online, które używają słownika do pobierania oryginalnego niehaszowanego ciągu tekstowego. To zapewni naszemu intruzowi nazwę użytkownika, dziedzinę i sekret oddzielone znakiem „:”.

Mimo to … uniemożliwienie każdemu zobaczenia twoich haseł w Asterisk CLI i używanie go tylko raz (podczas tworzenia punktu końcowego) wydaje się dobrą praktyką zapewniającą minimalnie większe bezpieczeństwo. Pamiętaj tylko, aby usunąć te informacje z ~/.bash_history. W przeciwnym razie wpisanie cat ~/.bash_history wyświetli wszystkie twoje hasła!

A przede wszystkim …

NIE UŻYWAJ NIEZABEZPIECZONYCH HASEŁ Z TEGO TUTORIALU!

Czy wiesz co tak na prawdę dzieje się na Twojej centrali? Wypróbuj nasze autorskie oprogramowanie VOIPERO.

System niedawno wystartował i teraz jest udostępniany całkowicie za darmo.  Instalacja i konfiguracja zajmuje kilka minut.

Przeczytaj co potrafi nasz system VOIPERO w zakresie monitorowania na żywo i raportowania systemów VoIP opartych na asterisku.

Share this post

Masz pytania lub potrzebujesz oferty?

Skontaktuj się z naszym doradcą.

Popularne wpisy

Powiązane posty

Projekt wystartował!

Monitorowanie i raportowanie Twojego serwera VoIP