Once again it’s one of the posts, which are rather not my standard, but I couldn’t find any info about repairing this bluetooth speaker, so I thought I’ll share how I got it to work: What I’ve done was to:
replace a battery with a replacement,
replace a slide switch, since my speaker was randomly turning on and off,
replace a Micro-USB port to a USB-C,
put some replacement on a hinge on the slide switch, since the gum was damaged.
Little help from my friend who modeled and printed me a hinge
Disassembly
You have to take off the gum underneath holding a Jack cable, then you have to use Torx 6 screwdriver to unscrew two ones holding the part with a black/yellow hook. Then, you slide it off.
Next, you have to take off the upper part of the plastic with a metal spudger (I broke a plastic one). During that, you must use 99% IPA, since the part is glued from inside. 99% IPA is safe, so you can pour it a little bit into a place where you pry the plastic. Be sensitive, it’s easy to break it. I started pulling it a bit from control panel, then a bit from a hook side and then I got it off.
That’s the result:
At this point, if your target is just a battery replacement, you can unglue the old battery with a bit of IPA, unsolder pins, resolder it for a new battery, glue it back on some dual sided tape and call it a day. However, in this case it’s safe to have this photo and desolder the battery, NFC transmitter (circle on right) and the speakers from a main board. On this photo I already took down the screws and I believe they are all Torx 7 or 8.
That also lets you take off shielding of the speakers from a case, which can let you clean it up inside (it was really needed after 10 years of use in my case). There is a video from a disassembly on YouTube, where you have to pry metal hinges underneath in order to get this off and I advise against it; I didn’t break them entirely and i was able to bend them back, so they fit nicely, but it’s just a terrible idea.
When you get parts desoldered, disconnect a FFC cable from a connector; you have to take off a green tape and push the black latch up by 90 degrees, so it unlocks the cable.
Then, you should patiently take of the cable with a use of IPA, as there is a lot of glue underneath.
In order to get access to the other PCB with USB, Jack and the slide switch, you have to unscrew Torx 7 screws on the lower side of a speaker. You don’t have to take this „Jabra” cover, I was very curious how does it look like inside, however it might be easier to have access here in order to be able to put more pressure on the screws, for me they were very hard to screw off, it was impossible with iFixIt screwdriver, so I bought Torx specific long head screws in order to access the screws deep inside the case.
I don’t have a photo of unscrewing the other PCB, but I will describe how to deal with it. I opened the case and plastic elements covering LEDs came off as well as the hinge on a slide switch. I unscrewed 1 and 2 screws, they were Torx 6 I think and I pulled of a microphone (marked as 3) on the photo, so I could take off the PCB for inspection, as well as desoldered a green cable.
Underneath the PCB there is a second side of a FFC ribbon cable, so make sure you unlatch it as you did with the first side. Here is how it looks with the microphone from below:
The job
So that’s what we have to work on:
As I said, the switch in question should be kept after desoldering. The switch has 3 positions from bottom to up: OFF, ON, PAIR and this switch has a stem with a slot for a spring, which pushes back the switch from PAIR position to ON. It’s not the end of the world if we just solder in the switch I’ve found, but I have managed to put the stem with spring to a new slider. This is how the slider looks from below (sorry for a blurry photo):
In order to open it, you have to pry a top housing from both sides and then from the top side. The stem and spring will fall off, so make sure you won’t lose it, because they are very small. Let me show you the difference between the damaged base (bottom) and a new one (up):
I put the stem to a new base with a spring, put the top housing from an old switch and pried it back, so it holds the rest nicely inside and soldered it back to the board. I also cleaned up the Jack port with IPA, super fine brush and a lot of patience (10 minutes), so it got a bit shiny. Then, I desoldered the USB port, figured out on which side I can find a GND and 5V pin and soldered the new port in. The photo below wasn’t final, these pins weren’t soldered properly and I got it reflowed with more solder, so it connected 1-5 pins with the board correctly.
The only negative thing about these ports is that they don’t work symmetrically, or at least I didn’t manage to get it work like this. Data connection works only if you put a USB-C cable one way. After that, I used a grinding pen with a lot of patience and grinded the case, so it can fit the PCB with a USB-C port (both the plastic part with glue on the inner part as well as the main case). The final result is at the top of the post. I added a 3D printed hinge, but I don’t share the model, because it wasn’t a perfect fit, but I made it work with a little help of grinding pen again.
While I keep all of my posts in Polish as they are unique in that way, I couldn’t find any posts about BPHS1 repairs in the Web, so I’d love to share my story, as these are quite decent headphones. Audio-Technica BPHS1 is a production-grade headset, which is very popular in casting on a professional level. I’ll try to keep things short, providing as much images as I can.
The order
The backstory with my case is that I bought these headphones with a broken mic for an extremely cheap price (208,67 PLN). I got them for 308,14 PLN, but the seller wasn’t aware of the state of a mic, also windscreen was missing. Turns out you can buy these microphones if you contact Audio-Technica directly (I’ve contacted their support for EU which is served in UK), because parts aren’t available on their part website. They will send you a personalised link, which will add the part you need. Product codes you need are:
386500470 – Audio-Technica BPHS1 Mic Unit – 4,33 EUR net
385403650 – Audio-Technica BPHS1 Windscreen 1,13 EUR net
I’ve ended up paying 10,70 EUR with a shipment to Poland, which I find crazy cheap.
The fix
You start by unscrewing this screw. If you are handy with stuff like this (unlike me), it will be the only screw you will have to touch.
Bend this piece of metal, so you can take off the mic casing; it’s from both sides.
When you take off the case, it should look like this:
Colours on the other side are signed as these:
That’s how pins are located on the microphone side:
Originally there was a piece of paper isolating GND from MIC+ and MIC-, but it’s very brittle; I highly suggest putting electrical tape inbetween:
That should be enough in order to put it back and make it work. Don’t forget to bend back the pieces of metal holding casing on the microphone.
Szybka ściągawka, szczególnie przydatne w sytuacji, w której masz wystawiony na świat CRL check point, by móc online sprawdzać certyfikaty (na przykład, w przypadku używania certyfikatów SSL wystawionych przez wewnętrzny urząd certyfikacji):
certutil -f -URL http://example.com/CA-Name.crl
Otworzy się w Windowsie okienko, w którym możemy sprawdzić status ważności list CRL, klikamy Retrieve. Wszystkie wpisy muszą mieć status OK. W przypadku, gdy jest niedostępny choć jeden wpis lub jest nieważny (status Expired), certyfikat nie zostanie zweryfikowany i otrzymamy następujący błąd (np. w przypadku próby połączenia z serwerem VPN):
Da się to ominąć, choć nie polecam. W przykładzie powyżej używałem połączenia SSTP i dla niego jest parametr DWORD NoCertRevocationCheck w rejestrze w:
Przykład powyżej przedstawia sposób przechowywania znacznej części administratorów w polskich firmach prywatnych i państwowych. Oczywiście nie widać momentu jak wpisuję hasło do arkusza, ale darujmy sobie to. W sumie nie tylko mowa o administratorach, bo spotkałem się z przełożonymi korzystającymi z takich praktyk. Mój komentarz jest następujący: TO JEST DRAMAT. Postaram się wyjaśnić dlaczego łapię się za głowę jak to widzę i przy okazji postaram się przedstawić bezpieczny sposób na hasła w sieci i nie tylko. Jest to mechanizm, który sam sobie wypracowałem i posługuję się nim od ponad roku.
Jakie są najlepsze praktyki w zabezpieczaniu kont w sieci?
W skrócie:
hasła do różnych serwisów powinny być różne,
hasła powinny składać się z cyfr, znaków specjalnych, dużych i małych liter oraz powinny być dłuższe niż 12 znaków oraz hasło nie powinno składać się ze spójnych elementów (np. hasła z generatorów haseł), powinno zawierać pewien element losowości,
hasła powinny być przechowywane w pęku kluczy stworzonym przez menedżerze haseł,
hasła te powinny być zmieniane co jakiś czas (celowo nie określam przedziału czasowego),
pęk kluczy powinien być zabezpieczony hasłem lub kluczem publicznym lub kluczem sprzętowym (zaleca się wykorzystywanie co najmniej 2 form zabezpieczenia),
pęk kluczy powinien być zabezpieczony przed utratą w postaci kopii zapasowej (na przykład poprzez synchronizację na chmurze),
dwustopniowe uwierzytelnienie powinno być skonfigurowana w miejscach, gdzie to jest możliwe oraz powinna być realizowana przez mechanizm, który umożliwia tworzenie kopii zapasowej.
To może być trochę przerażające, ale to są naprawdę najlepsze opcje na bezpieczeństwo w sieci. Zakładam, że nie każdego stać i nie każdy ma ochotę kupować klucze sprzętowe by być bezpieczniejszym. Nie ma potrzeby do czegoś takiego się zmuszać, wszystko powinno się w tej kwestii robić z rozsądkiem.
Zanim wejdę w temat, krótkie wyjaśnienie:
Uwierzytelnienie (authentication) to proces, w którym udowadniamy, że my to my, możemy to zrobić poprzez „coś, co wiemy”, czyli na przykład znamy jakieś hasło, „coś, co mamy”, czyli na przykład token z aplikacji do logowania lub klucz sprzętowy lub poprzez „coś, czym jesteśmy”, czyli na przykład korzystając biometryki (używając odcisków palców na czytniku, korzystając z Intel RealSense 3D skanując nasz kształt twarzy przez specjalną kamerę, skanując tęczówki oka).
Autoryzacja (authorization) to proces, w którym system sprawdza, czy mamy prawo dostępu. Na przykład po zalogowaniu się do systemu ten wie, że my to my, lecz nie wie czy mamy dostęp do usług. Na przykład, jeśli nie opłacę subskrypcji za Netflixa i zaloguję się na swoje konto, ale nie będę mógł oglądać żadnych filmów. To przykład nieudanej autoryzacji.
Niektórzy używają pojęcia autentykacja – to jest kalka z angielskiego i dotyczy ona uwierzytelnienia.
„hasła do różnych serwisów powinny być różne”
Załóżmy, że używamy 1 hasła: Zaq12wsx!cokolwiek Jest to hasło, które spełnia prawie wszystkie wymagania, które przedstawiłem (z wyjątkiem losowości, bo jest ona trochę kiepska). Te hasło używamy na wielu różnych stronach. Facebook, Google, Instagram, cokolwiek innego. Nagle jeden z tych serwisów zostaje zaatakowany przez grupę hakerów, która wykrada bazę danych. Potem okazuje się, że strona nie przechowywała haseł w bezpieczny sposób (czyli na przykład przechowywała hasła w czystym tekście albo korzystała z kiepskiego mechanizmu haszującego). W ten sposób w większości wypadków ktoś ma w bazie nasz adres email i hasło – czyli najpopularniejszą formę logowania. Załóżmy, że z tej listy to był Instagram – w takiej sytuacji mając te same loginy i hasła atakujący może się zalogować na Facebooka, konto Google i cokolwiek innego tam, gdzie ustawiliśmy te same hasła. To jest małe piwo. Duże piwo zaczyna się wtedy jeśli używaliśmy tego samego hasła na kontach firmowych i ktoś zorientuje się jaki adres mailowy posiadamy w pracy lub nazwę użytkownika. Wtedy się mogą zacząć prawdziwe kłopoty.
Rozwiązanie? Inne hasła. Ale z drugiej strony spójrzmy prawdzie w oczy – ile jesteśmy w stanie haseł zapamiętać? 1? 5? 10? Będzie dobrze jak 5. Problem w tym, że większość z nas nie korzysta z 5 serwisów, tylko na przykład z 50. W moim przypadku zliczyłem ponad 150 kont w Internecie. Powodzenia w zapamiętaniu tych 150 haseł. To nie jest możliwe, dlatego trzeba sobie te hasła zabezpieczać. Dlatego hasła należy przechowywać w jednym, wspólnym miejscu.
mocne hasło i dwustopniowe uwierzytelnianie
Dzięki temu nasze hasło jest trudniej odgadnąć. Najprościej jest używać menedżera haseł i kopiować wygenerowane hasła – moje hasła są w większości 32-znakowe i nie ma szans, bym pamiętał chociaż jedno. Jest kilka kont, do których potrzebuję szybkiego dostępu typu na przykład Koleje Śląskie jak bym chciał szybko przez telefon kupić bilet na pociąg, ale poza tym wszędzie te hasła są po prostu długie i je wszystkie kopiuje z bazy. Po 10 sekundach od skopiowania hasła z KeePassa te jest usuwane ze schowka w systemie. Hasło same w sobie powinno mieć ogólnie więcej niż 12 znaków, duże, małe litery, cyfry i znaki specjalne. Do testowania haseł można skorzystać ze strony howsecureismypassword.net, która pozwala nam wpisać hasło, a strona powie nam w ile przeciętny komputer powinien takie hasło złamać:
Przykład dobrego hasła:
Kmn6X;c?F4Mx'=^"
Te hasło jest całkowicie losowe. Co prawda, nie może być wykorzystane wszędzie, bo zawiera znaki, których nie możemy dodać np. w pliku konfiguracyjnym. Takie znaki to często: { } [ ] ( ) / \ ' " ` ~ , ; : . < >, ale na szczęście generatory haseł pozwalają nam wykluczyć takie znaki z generacji, dzięki czemu można otrzymać to:
Cr*f6y_8EV4ey!&r
Przykład trudnego, ale nie całkowicie losowego hasła:
23N2iePatrz5ieNaP6likany%
Ciężko, by takie hasło było związane z jakąś pracą, bo jest całkowicie losowe + znaki w haśle są czasami w losowych miejscach. To sprawia, że hasło jest trudniejsze do złamania, ale jednocześnie trudniej je zapamiętać.
Przykład słabego hasła:
NazwaNaszejFirmy2021!123
Hasło składa się z prostych słów, które łatwo zapamiętać, przez co sprawia, że łatwiej je zapamiętać. To dobre dla nas, lecz też ułatwia to sprawę atakującym. Trzeba na to uważać z jakich słów składają się hasła, bo jeśli kontekst hasła pasuje do tego gdzie ono jest używane – sprawia to, że łatwiej jest je odgadnąć.
Teraz pytanie: czy każdy powinien używać takiego trudnego hasła? To zależy gdzie takie hasło będziesz używać:
strony internetowe – całkowicie losowe,
bazy danych, aplikacje – całkowicie losowe,
menedżer haseł – trudne, ale nie musi być całkowicie losowe,
strony „niskiego ryzyka” – trudne, ale nie musi być całkowicie losowe.
Dlaczego tak? Pierwsze dwa zawsze mogą być kopiowane z menedżera haseł i nie trzeba tych haseł pamiętać. Tak samo jest z drugim. W przypadku menedżera haseł te hasło musimy pamiętać (jest wyjątek, opiszę go w dalszej części posta). Tutaj musimy sami zdecydować jak dobrą mamy pamięć lub papier, na którym zapisujemy tekst.
W przypadku stron „niskiego ryzyka” – mam na myśli strony, w których jeśli stracimy dostęp, nikt nam nie wyrządzi szkody. Dla mnie taką stroną jest strona Kolei Śląskich, bo w przypadku, gdy ktoś przejąłby moje konto to mógłby zobaczyć jak się nazywam i ewentualnie mógłby kupić mi bilet na pociąg 😂
Żarty żartami, ale definitywnie do niskiego ryzyka nie należą strony takie jak na przykład Facebook. Typowy argument, który ja słyszę to: ale przecież ja nie mam nic do ukrycia, tam i tak nic nie ma, przecież nie jestem żadnym przestępcą, to co mogłoby się stać. Cóż, mogłoby i dam przykład. Załóżmy, że ja jestem atakującym. Mógłbym zalogować się na Facebooka ofiary i napisać do 2 znajomych, z którymi ofiara ostatnio pisała, że wykopałem się kasy i potrzebuje 50 zł na tydzień. W dużej mierze raczej osoba odpisze, że nie ma problemu, bo większość ludzi ma uśpioną czujność i nie zadzwoni na komórkę, by sprawdzić czy to na pewno prawdziwa prośba. Czyli w ten sposób wyjąłem od ofiary 100 zł, bo koniec końców pewnie odda te pieniądze. A to tylko jedna osoba. Oczywiście to tylko początek rzeczy, jakie można robić podszywając się pod kogoś i chyba lepiej się o tym nie przekonywać jak to mogłoby się skończyć, gdy ktoś przegląda nasze wiadomości prywatne…
Hasło do menedżera haseł może być losowym i trudnym hasłem pod warunkiem, że będziemy w stanie je wprowadzić w wygodny sposób. W innym wypadku większość ludzi po prostu nie będzie korzystać z takiego rozwiązania. W takich sytuacjach szczególnie warto się wyposażyć w klucz sprzętowy, jakim jest np. YubiKey:
Dzięki temu poza podaniem hasła w KeePassie należy wybrać klucz sprzętowy przypisany do bazy:
Alternatywą dla kluczy sprzętowych jest klucz publiczny – generujemy taki za pomocą Pageanta, gdy na przykład używamy PuTTY na Windowsie – to zdecydowanie wystarczy. Używałem czegoś takiego w poprzedniej pracy. Dla cierpliwych zawsze można skorzystać ze wszystkich trzech opcji, ale moim zdaniem nie jest warto.
„hasła powinny być przechowywane w pęku kluczy stworzonym przez menedżerze haseł”
Niektórzy używają Excela ale to jest kiepskie rozwiązanie z tego względu, że nie każdy zabezpiecza go hasłem, poza tym nie każdy ma nowego Office, co sprawiałoby to, że Office szyfrowałby dokument aktualnymi bezpiecznie mechanizmami (bodajże Office 2007 i 2003 mają bardzo łatwe do złamania mechanizmy). Poza tym Excel nie jest przeznaczony do przechowywania haseł, do tego są pęki haseł w programach typu KeePassXC (to taki lepszy KeePass). KeePass jest przykładowym rozwiązaniem i nie jest wyłącznym menedżerem haseł, które rozwiązuje ten problem. Jest wiele innych, czasami opartych o chmurę rozwiązań, które też są bezpieczne.
KeePass poza samym przechowywaniem haseł pozwala na obsługę 2FA kont, łatwe generowanie haseł, pozwala zabezpieczyć bazę haseł dwu- i trzystopniowo (hasło, klucz publiczny, klucz sprzetowy), da się go zintegrować z przeglądarką, dzięki czemu wpisywanie haseł jest prostsze. Zresztą przedstawiłem już nawet przykład powyżej.
Oczywiście trzeba pamiętać, że KeePass i jego baza nie jest czymś nie do złamania. Fakt, zawartość jest szyfrowana przez AES 256-bitowy, ale to nie zmienia faktu, że takie hasło da się złamać. Ten sam program jest w stanie łamać hasła do arkuszy w Excelu i jest nim hashcat. To ogólnie narzędzie do łamania haseł w różnych algorytmach, i po prostu bazy KeePassa i arkusze Excela są jedynie drobnym elementem listy tego, co on obsługuje. Tutaj jest gotowy skrypt do łamania arkuszy Excela.
Hasła się łamie na dwa sposoby: słownikowo i siłowo. Słownik zakłada, że posiada się dużą bazę haseł (na przykład jedną wielką sklejkę haseł z wycieków różnych serwisów internetowych z przeciągu kilku lat 😉) lub serwerek z mocną kartą graficzną do obliczeń i jeśli hasło było krótkie lub łatwe – zostanie złamane dosyć szybko.
Pokażę jak to wygląda w praktyce zakładając, że definiuję metodę siłową, która natrafi na hasło, które jest w arkuszu:
R:\supra\Pulpit\hashcat-6.0.0>hashcat.exe -a 3 -w 3 -m 9600 hash.lst ^Z?l?l?d?dwsx!
hashcat (v6.0.0) starting...
* Device #1: CUDA SDK Toolkit installation NOT detected.
CUDA SDK Toolkit installation required for proper device support and utilization
Falling back to OpenCL Runtime
* Device #1: WARNING! Kernel exec timeout is not disabled.
This may cause "CL_OUT_OF_RESOURCES" or related errors.
To disable the timeout, see: https://hashcat.net/q/timeoutpatch
OpenCL API (OpenCL 1.2 CUDA 11.0.140) - Platform #1 [NVIDIA Corporation]
========================================================================
* Device #1: GeForce RTX 2070, 6912/8192 MB (2048 MB allocatable), 36MCU
Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Applicable optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
* Slow-Hash-SIMD-LOOP
Watchdog: Temperature abort trigger set to 90c
Host memory required for this attack: 696 MB
The wordlist or mask that you are using is too small.
This means that hashcat cannot use the full parallel power of your device(s).
Unless you supply more work, your cracking speed will drop.
For tips on supplying more work, see: https://hashcat.net/faq/morework
Approaching final keyspace - workload adjusted.
[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit =>
Session..........: hashcat
Status...........: Running
Hash.Name........: MS Office 2013
Hash.Target......: $office$*2013*100000*256*16*cb973f1be246fbd96939c90...da8883
Time.Started.....: Fri Jul 17 12:12:55 2020 (2 secs)
Time.Estimated...: Fri Jul 17 12:13:03 2020 (6 secs)
Guess.Mask.......: Z?l?l?d?dwsx! [9]
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 10937 H/s (31.52ms) @ Accel:4 Loops:512 Thr:1024 Vec:1
Recovered........: 0/1 (0.00%) Digests
Progress.........: 0/67600 (0.00%)
Rejected.........: 0/0 (0.00%)
Restore.Point....: 0/67600 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:31744-32256
Candidates.#1....: Zar12wsx! -> Zqx84wsx!
Hardware.Mon.#1..: Temp: 71c Fan: 46% Util:100% Core:1935MHz Mem:7000MHz Bus:16
$office$*2013*100000*256*16*cb973f1be246fbd96939c909bce5905e*18fe55fc3f134776687f79551c68a3f6*b519e82fa04c357910f2022f6ddd8f2f2ba0ac81436c2b83d96ca7eb0eda8883:Zaq12wsx!
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MS Office 2013
Hash.Target......: $office$*2013*100000*256*16*cb973f1be246fbd96939c90...da8883
Time.Started.....: Fri Jul 17 12:12:55 2020 (6 secs)
Time.Estimated...: Fri Jul 17 12:13:01 2020 (0 secs)
Guess.Mask.......: Z?l?l?d?dwsx! [9]
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 11630 H/s (28.61ms) @ Accel:4 Loops:512 Thr:1024 Vec:1
Recovered........: 1/1 (100.00%) Digests
Progress.........: 67600/67600 (100.00%)
Rejected.........: 0/67600 (0.00%)
Restore.Point....: 0/67600 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: Zar12wsx! -> Zqx84wsx!
Hardware.Mon.#1..: Temp: 71c Fan: 54% Util:100% Core:1935MHz Mem:7000MHz Bus:16
Started: Fri Jul 17 12:12:52 2020
Stopped: Fri Jul 17 12:13:02 2020
/////////////////////////////////////////////////////////////////////////
Hashcat.potfile
$office$*2013*100000*256*16*cb973f1be246fbd96939c909bce5905e*18fe55fc3f134776687f79551c68a3f6*b519e82fa04c357910f2022f6ddd8f2f2ba0ac81436c2b83d96ca7eb0eda8883:Zaq12wsx!
/////////////////////////////////////////////////////////////////////////
W zaznaczonym miejscu widać hasło. Jak widać poniżej, taka metoda też jest dostępna dla KeePassa:
W przypadku posiadania dwustopniowego uwierzytelniania raczej ta opcja w hashcat to przycisk do papieru. Nie sądzę, by było możliwe łamanie dwóch ciągów znaków jednocześnie w wydajny sposób i w czasie, który pozwoli na łatwe złamanie siłą rzeczy dwóch haseł jednocześnie. Jeśli się mylę – dajcie znać.
„hasła te powinny być zmieniane co jakiś czas”
Tutaj nie ma za dużo do obgadywania. Hasła co jakiś czas należy zmieniać i to jest trochę jak wymienianie wypalonych żarówek w pokoju, lecz klepiemy na klawiaturze. W firmach sensownym okresem czasu jest 3-6 miesięcy. Prywatnie nie zmieniałbym częściej niż rok, nawet dwa. Wyjątkiem od tej reguły jest wyciek – wtedy zmieniamy hasło natychmiast. Oczywiście trzymając się poprzedniej reguły dotyczącej różnych haseł na różnych serwisach nie trzeba zmieniać tych haseł wszędzie – wystarczy w miejscu, gdzie to hasło wyciekło.
„pęk kluczy powinien być zabezpieczony hasłem lub kluczem publicznym lub kluczem sprzętowym (zaleca się wykorzystywanie co najmniej 2 form zabezpieczenia)”
Ten punkt jest opcjonalny. Nie każdego stać na to i nie każdy musi to mieć prywatnie, ale moim zdaniem służbowo jako administrator w firmie każdy powinien coś takiego posiadać. Dwa klucze sprzętowe, które są moim zdaniem godne uwagi to YubiKey 5 NFC i SoloKey Solo V2 (które powinno już być dostępne). Klucze powinno się kupować w parach, to znaczy zawsze dwie sztuki, bo jak uszkodzimy klucz to na zapasowym mamy kopię naszych kluczy prywatnych/HMAC itd. W przypadku YubiKey 5 NFC koszt to około 500 zł mając to na względzie. Solo V2 dostaniemy za połowę tej ceny. W cenie YubiKey dostaniemy definitywnie dużą odporność na uszkodzenia i wodoszczelność (której nie ma w Solo V2), w zamian w Solo V2 otrzymamy sprzęt z otwartym oprogramowaniem układowym (firmware YubiKey jest zamknięty) oraz nieco większe możliwości pod kątem autoryzacji w Windowsie od YubiKey).
Konfiguracja kluczy jest dosyć prosta, udało mi się wszystko ustawić tego samego wieczoru, którego odebrałem urządzenia 😊
„pęk kluczy powinien być zabezpieczony przed utratą w postaci kopii zapasowej”
Podałem jako przykład chmurę, bo to wydaje się najrozsądniejsze. W ten sposób możemy mieć dostęp do pęku kluczy z telefonu, bo na Androidzie jest aplikacja KeePass2Android, która jest w stanie pobierać pęk kluczy z chmury i go aktualizować. Ponadto obsługuje klucze sprzętowe! To jest moim zdaniem coś. Najlepiej mieć do tego własną chmurę, ale zdając sobie sprawę z tego, że nie każdego na to stać lub nie każdy chce musieć coś takiego ustawiać – zawsze można wybrać Google Drive czy Dropbox. To też są rozwiązania, które raczej będą okej. Ja osobiście korzystam z Nextcloud, bo uważam to za najlepsze rozwiązanie do prywatnej chmury ze względu na możliwości i fakt, że te oprogramowanie jest otwartoźródłowe. Ponadto jest wtyczka, która pozwala na otwieranie baz KeePassa bezpośrednio ze stronki Nextcloud, lecz niestety ona raczej nie obsługuje zabezpieczenia kluczem sprzętowym 😔
Jeśli hasła dotyczą tylko lokalnych systemów/baz – dobrym rozwiązaniem też może być przechowywanie bazy na udziale sieciowym. Jeśli ktoś chce – zawsze można korzystać z dysków zewnętrznych, ale to jest dosyć uporczywe, bo trzeba ciągle pamiętać o kopiowaniu najnowszej wersji pliku i posiadaniu jego kopii gdzieś indziej. Chmura sama w sobie to rozwiązuje. Jeśli komputer padnie – jest na chmurze. Jeśli chmura padnie – jest na dysku lokalnie. Poza tym mam kopię na dwóch komputerach, więc mogę spać spokojnie.
„dwustopniowe uwierzytelnienie powinno być skonfigurowana w miejscach, gdzie to jest możliwe oraz powinna być realizowana przez mechanizm, który umożliwia tworzenie kopii zapasowej”
W każdym szanującym się dzisiaj serwisie mamy możliwość korzystania z dwustopniowego uwierzytelniania (2FA, two-factor authentication) lecz większość ludzi z tego nie korzysta. BŁĄD. To jest mechanizm, który pozwala nam znacznie zwiększyć bezpieczeństwo w sieci. W skrócie działa to tak: wpisujemy login i hasło, następnie wpisujemy token (ciąg cyfr, najczęściej 6) z telefonu lub używamy klucza sprzętowego do potwierdzenia, że to naprawdę my chcemy się zalogować. Tokeny same w sobie są generowane na podstawie tajnego kodu przechowywanego przez aplikację oraz aktualnego czasu. Nie wymagają one połączenia z Internetem. W skrócie, musimy mieć ustawioną aktualną godzinę, w innym wypadku generowane tokeny nie będą działać. Odnosi się to do tokenów z aplikacji, nie z SMSów.
Korzystanie z tokenów na telefonie odbywa się przez wiadomości SMS lub aplikację i w drugim przypadku wymaga od nas jedynie posiadania telefonu z Androidem lub iOSem (sic!). Na telefonie musimy zainstalować odpowiedni program, następnie należy dodać metodę uwierzytelniania w postaci tokenu. Następnie należy aplikacją do tokenów zeskanować kod QR wyświetlany na ekranie lub podać tajny kod wygenerowany przez kreator do programu z tokenami. To doda możliwość generowania tokenów. Następnie taki token należy przepisać do okienka w kreatorze dodawania metody uwierzytelniania i voilà – gotowe.
Najpopularniejszą aplikacją do tokenów jest Google Authenticator, lecz ja osobiście polecam Authy. Google Authenticator nie posiada mechanizmu kopii zapasowej tajnych kodów, przez co jak zgubilibyśmy telefon, tracimy wszystkie tokeny i mamy problem. Duży problem. Z Authy takiego problemu nie ma, ponieważ tajne kody są przechowywane w chmurze. Aplikacja i tokeny w niej wyglądają mniej więcej tak:
Alternatywą jest klucz sprzętowy. Wpisujemy login i hasło, następnie musimy dotknąć klucz sprzętowy w odpowiednim miejscu lub podać kod PIN klucza. Przykład logowania do konta Google możecie zobaczyć poniżej:
Na innych serwisach możemy dostać nieco inny prompt, przykład z cloudflare.com:
Kopia takiego klucza jest realizowana w prosty sposób: po prostu na dwóch kluczach sprzętowych zapisuje się dokładnie ten sam klucz prywatny, klucz HMAC itd. Wtedy jeśli jeden przestaje działać, drugi dalej może być używany. Przy konfiguracji YubiKey zapisałem sobie plik tekstowy z kluczami, które znajdują się wewnątrz urządzenia. Dzięki temu będę mógł przepisać dane na kolejne urządzenie jeśli uszkodzę jakoś jeden klucz, a potem będę musiał kupić nowy, by zachować status 2 kluczy w jednym czasie. Klucz sprzętowy ma jedną zasadniczą wadę – można go łatwo zgubić. Warto więc przechowywać kopię klucza w bezpiecznym miejscu, a główny klucz w miejscu, które na pewno nie zniknie – ja trzymam go przy kluczach, bo tak na dobrą sprawę to jest taki trochę klucz, lecz elektroniczny. Ponadto używałbym takiego klucza tylko w sprzęcie, któremu ufam – nie wiem jakie oprogramowanie może pracować w czyimś komputerze i niekoniecznie chciałbym to testować.
najważniejsze pytanie – czy naprawdę nam jest to potrzebne?
To niegrzeczne, ale odpowiem pytaniem – a czy Tobie jest potrzebne bezpieczeństwo w sieci?
Definitywnie nie każdy musi mieć klucze sprzętowe. Nie powiem, że to jest bajer, to jest przydatna rzecz, ale nie każdy musi tak bardzo dbać o swoje bezpieczeństwo i to rozumiem. Jednak jak wspomniałem na początku, kradzież tożsamości z punktu widzenia ofiary to okropna rzecz i nikomu tego nie życzę. Dlatego moim zdaniem, dla własnego spokoju warto spędzić jeden lub dwa popołudnia przeglądając historię przeglądania Internetu w przeglądarce, spisać portale, na których się logujemy, utworzyć pęk kluczy, pozmieniać hasła do wszystkiego (na każdej stronie inne), zrobić kopię bazy kluczy i już jesteśmy bezpieczniejsi niż większość świata. To wymaga zaangażowania, ale nie wymaga wielkiego wysiłku, by o to zadbać.
Koniec końców trzeba sobie zadać pytanie – co bardziej się opłaca? Zmarnować trochę czasu na bawienie się w menedżera haseł i zmienianie haseł na trudniejsze, a potem ich kopiowanie przy logowaniu się do serwisów czy zmienianie ich po tym, jak ktoś w naszym imieniu wykorzysta naszych znajomych lub zrobi coś jeszcze gorszego i ten cały wstyd, który zostaje po całej sytuacji?
W większości niestandardowych systemów takich jak np. FreeNAS VMware Workstation przy tworzeniu maszyny tworzy interfejs(y) sieciowe wykorzystując domyślnie sterownik e1000, który pozwala na wyciągnięcie 1 Gbit/s po stworzeniu sieci pomiędzy maszynami wirtualnymi/hostem. To jest problem, bo czasami jeśli chce się zrobić testy na iSCSI, sprzęt mamy wydajny i coś wolno działa. Generalnie ten sterownik jest problemem i jest proste rozwiązanie na zmianę tego sterownika na wydajny vmxnet3, który pozwala na wyciągnięcie na luzie 10 Gbit/s. Problem w tym, że nie każdy system to wspiera. W moim przypadku wiem, że wspiera.
Rozwiązanie jest proste: wystarczy znaleźć plik o formacie *.vmx dla naszej maszyny wirtualnej (w moim przypadku jest to maszyna freenas.vmx, edytować plik i zmienić zmienną ethernetX.virtualDev = "e1000" (X – numer interfejsu sieciowego) na ethernetX.virtualDev = "vmxnet3". To załatwia sprawę, ale trzeba pamiętać, że system wykryje te interfejsy jako nowe przechowując nadal starą konfigurację, więc trzeba się upewnić, że nie ma się w swoim systemie przypisanych żadnych ustawień do tych „starych” interfejsów.
Dzięki programowi Orca można osiągnąć taki efekt, że w trakcie kreatora instalacji nie trzeba podawać adresu serwera ShadowControl przy instalacji agenta, ponieważ może on być zapisany wewnątrz instalatora i wygląda to tak:
Dzięki temu można zainstalować agenta i po instalacji on sam się podepnie do konsoli. Program Orca możemy znaleźć w Windows 10 SDK – wystarczy przy instalacji zaznaczyć opcję MSI Tools i nic innego. Dzięki temu w folderze Windows 10 SDK będziemy mieć instalator do Orca:
Wystarczy przejść instalator i będziemy mieli program Orca na swoim komputerze. Po tym należy go otworzyć, przeciągnąć na niego instalator ShadowControl, a następnie wybrać po lewej pole Property, a następnie kliknąć na środku na wolne pole PPM i wybrać opcję Add row…
Następnie w polu Property należy zdefiniować APPL_ADDR i w polu Value wpisać adres IP lub FQDN naszej konsoli ShadowControl. Po tym zapisujemy i w File > Save nasz plik instalacyjny.
Po tym taki instalator możemy zainstalować przez GPO lub przez np. polecenie msiexec:
To jest całkiem przydatna rzecz, szczególnie w 2 przypadkach: mamy wdrażane vCenter i chcemy mieć zaufane wszystkie certyfikaty lub wdrażamy SSL deep inspection. Do tego niektórzy używają Firefoxa i tego nie jesteśmy w stanie przeskoczyć, więc pozostaje nam spróbować wymusić ustawienia przez GPO. Takich ustawień nie ma domyślnie w GPO, ale możemy wykorzystać pliki ADMX, które nam dodają specjalne ustawienia w przeglądarkach. Do Firefoxa plik ADMX znajduje się na stronie getadmx.com i to wykorzystamy. Klonujemy repo, w którym są te ustawienia, otwieramy katalog SYSVOL na naszym kontrolerze domeny (pod adresem //domena.local/SYSVOL lub //kontroler-domeny/SYSVOL, np. //serba.local/SYSVOL lub //dc1.serba.local/SYSVOL), w nim otwieramy folder o nazwie naszej domeny (w moim przypadku serba.local), w nim tworzymy folder PolicyDefinitions i wklejamy tam folder o nazwie języka + pliki ADMX, które znajdują się w folderze. Z faktu, że nie ma języka polskiego – kopiuję folder en oraz pliki *.admx.
Folder PolicyDefinitions istnieje także w C:/Windows/PolicyDefinitions. Takie tworzenie folderu w SYSVOL dla definicji polityk GPO jest określane jako Central Store. Poza samymi zmienionymi politykami powinniśmy skopiować wszystko, co jest we wspomnianym folderze systemowym do //serba.local/SYSVOL/serba.local/PolicyDefinitions. Dzięki temu wszystkie opcje w GPO będą trzymane w jednym miejscu, co jest istotne w przypadku posiadania wielu kontrolerów domeny. Dlatego też nie polecam wrzucania 3rd party plików ADMX do lokalnego folderu – w przyszłości jeśli będzie się miało drugi kontroler domeny to ten nie będzie wiedział w ogóle co znaczą te polityki i one mogą nam nie działać.
Następnie w GPO tworzymy nowy obiekt (nazwałem go firefox use local ca store), następnie rozwinąłem w Konfiguracja komputera > Zasady > Szablony administracyjne: definicje zasad (pliki ADMX) pobrane z komputera lokalnego > Mozilla > Firefox > Certificates i włączamy opcję Import Enterprise Roots.
Po tym wystarczy podłączyć taką politykę i wymusić aktualizację zasad grupy:
Po aktywowaniu, jak sama polityka wskazuje zmiany są stosowane nawet jeśli przeglądarka była zainstalowana po wprowadzeniu polityki, ponadto użytkownik nie może zmienić wskazanego ustawienia: