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.
PJSIP | SIP |
---|---|
Komendy, żeby wyświetlić informacje o użytkowniku:pjsip show auths | Komendy, żeby wyświetlić informacje o użytkowniku:sip show users |
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:
- Zmień
auth_type
zuserpass
(zwykły tekst) namd5
- Zamień linijkę z
password
zmd5_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.