firefox

Jak włączyć w Firefox ESNI (Encrypted SNI)

Obecnie szyfrowanie zapytań DNS staje się powoli normą za sprawą protokołu DoH (DNS over HTTPS) lub DoT (DNS over TLS). Można by zatem pomyśleć, że wraz z implementacją szyfrowania tego kluczowego dla działania internetu protokołu (przynajmniej z naszego ludzkiego punktu widzenia), poprawie ulegnie również nasza prywatność w kwestii odwiedzanych przez nas stron WWW. Niemniej jednak, w dalszym ciągu można bez problemu wyciągnąć adresy domen, które zamierzamy odwiedzić. Nie ma przy tym żadnego znaczenia ile stron jest hostowanych na danym adresie IP, ani nawet fakt, że ruch do serwera WWW będzie szyfrowany (w pasku adresu wpiszemy https:// ) z wykorzystaniem protokołu SSL/TLS (w tym również TLS v1.3). Wszystko przez rozszerzenie SNI (Server Name Indication), którego to zadaniem jest umożliwienie jednemu serwerowi na prezentowanie wielu certyfikatów hostowanych w jego obrębie domen. Dzięki takiemu rozwiązaniu, każda domena może szyfrować ruch niezależnie od siebie na linii serwer<->klient (używać innych kluczy szyfrujących). Niemniej jednak, podczas nawiązywania szyfrowanego połączenia, w pakiecie ClientHello przesyłanym do takiego serwera musi znaleźć się nazwa domeny, której to certyfikat serwer będzie musiał nam przedstawić. Niestety ten pakiet jest przesyłany przez sieć otwartym tekstem, przez co każdy, kto podsłuchuje naszą komunikację (w tym też nasz ISP), bez problemu może ustalić na jakie strony internetowe wchodzimy. Ostatnimi czasy jednak pojawiły się dwa rozszerzenia ECH (Encrypted Client Hello) oraz ESNI (Encrypted SNI), które mają zaadresować problemy związane z prywatnością przez pełne zaszyfrowanie pakietu ClientHello lub też zaszyfrowanie jedynie pola SNI w tym pakiecie. Póki co, prace nad tymi rozszerzeniami nie są jeszcze skończone ale Firefox w połączeniu z CloudFlare powoli testują ESNI. Postanowiłem zatem dobrowolnie przyłączyć się do grupy testerów i wdrożyć na swoim linux'ie to rozszerzenie ESNI dla przeglądarki Firefox.

Uruchamianie graficznych aplikacji w kontenerach Docker'a

Bawiąc się ostatnio na Debianie przestrzeniami nazw sieciowych, wpadł mi do głowy pomysł na nieco bardziej zautomatyzowaną formę separacji procesów użytkownika od pozostałej części systemu. Co by nie mówić, opisany w podlinkowanym artykule sposób uruchomienia Firefox'a niezbyt mi przypadł do gustu. Nowy sposób separacji zakłada za to wykorzystanie kontenerów Docker'a, w których to będzie uruchamiany dowolny proces, np. Firefox, a całym przedsięwzięciem związanym z procesem konteneryzacji będzie zajmował się już Docker. W ten sposób uruchomienie dowolnej aplikacji, w tym też tych graficznych (GUI), będzie sprowadzać się do wydania w terminalu tylko jednego polecenia. Zatem do dzieła.

Jak uruchomić Firefox'a w osobnej przestrzeni nazw sieciowych

Domyślnie każdy proces uruchomiony na linux (w tym przypadku Debian) dziedziczy swoją przestrzeń nazw sieciowych (network namespaces) od procesu nadrzędnego, standardowo od procesu init (tego z pid 1). W takim przypadku, wszystkie procesy współdzielą tę samą przestrzeń nazw sieciowych, przez co mają dostęp do tych samych interfejsów sieciowych, tych samych tras routingu, a reguły firewall'a czy ustawienia serwerów DNS w jednakowym stopniu dotyczą wszystkich procesów i zmieniając sieciową konfigurację systemu robimy to globalnie dla wszystkich tych procesów jednocześnie. Czasami tego typu mechanika działania sieci nie jest zbyt pożądana z punktu widzenia bezpieczeństwa lub też prywatności użytkownika. Przykładem mogą być przeglądarki internetowe, np. Firefox, Opera czy Google Chrome/Chromium, które mogą zdradzić nasz lokalny adres IP (w przypadku stosowania NAT). Jako, że też zostawiamy wszędzie nasz namiar w postaci zewnętrznego adresu IP, to oba te adresy mogą nas bez większego problemu zidentyfikować w internecie. Można jednak postarać się, by ten adres lokalny, który zwróci przeglądarka internetowa, różnił się od tego, który przydziela nam nasz operator ISP.

Jak zrobić screenshot całej strony www w Firefox

Każdy z nas potrafi raczej zrobić prostego "skrina" tego co wyświetla się w danej chwili na ekranie naszego komputera. Nie jest to jakaś zaawansowana wiedza i wystarczy przycisnąć przycisk PrintScreen na klawiaturze i zrzut ekranu powinien zostać przechwycony przez system i zwykle gdzieś zapisany. Niemniej jednak, strony www w przeglądarce internetowej bardzo rzadko są nam pokazywane w całej swojej okazałości. Zwykle mamy po prawej stronie pasek przewijania (scrollbar), za pomocą którego możemy przewinąć stronę w górę lub w dół. Pojawia się zatem pytanie: jak w takiej sytuacji zrobić screenshot całej strony www? Można, co prawda, przewinąć stronę kilka razy, zrobić zrzut każdego kawałka i scalić obraz w jakimś programie graficznym ale raczej za dużo z tym zachodu. Można także zaprzęgnąć jakiś plugin do przeglądarki, np. Firefox ma na wyposażeniu Awesome Screenshot. Istnieje jednak prostsza alternatywa i do tego natywnie zaimplementowana w Firefox'ie. Mowa o wierszu poleceń Firefox'a. W tym krótkim wpisie zobaczymy jak przy pomocy tego narzędzia w bardzo prosty sposób zrobić fotkę całej witryny www.

Baza danych pozwoleń w Firefox'ie (permissions.sqlite)

Praktycznie każda przeglądarka, w tym też i Firefox, oferuje możliwość nadania określonym domenom praw dostępu do zasobów systemowych. Chodzi generalnie o wykorzystywanie wtyczek, np. flash, które są aktywowane na danej stronie internetowej jeśli ta ich potrzebuje. Po części też sprawa dotyczy korzystania z urządzeń takich jak wbudowane w laptop kamera i mikrofon oraz szeregu dodatkowych rzeczy, np. ciasteczka, pop-up'y i inne takie. Obecnie Firefox standardowo blokuje dostęp do pluginów, a gdy zachodzi potrzeba skorzystania z któregoś z nich, to zostaje nam zaprezentowane okienko, w którym możemy zdecydować co zrobić. Gdy często odwiedzamy daną witrynę, to naturalnie prosimy naszą przeglądarkę, by ta zapisała ustawienia dla tej strony. Firefox robi to przez dodanie wyjątku w pliku permissions.sqlite . W sporej części przypadków będziemy mogli cofnąć pozwolenia w dość prosty sposób. Niemniej jednak, nie we wszystkich z nich da się to tak łatwo zrobić.

Systemowy klient Tor w TorBrowser

TorBrowser to projekt, który ma na celu zabezpieczenie użytkownika przed przeciekiem informacji. Jest to połączenie klienta sieci Tor oraz przeglądarki Firefox (plus kilka dodatków). Ten mechanizm jest tak skonfigurowany, by możliwie jak w największym stopniu dbał o naszą prywatność podczas przeglądania stron internetowych. Kilka lat wstecz, użytkownicy Firefox'a mogli się zaopatrzyć w addon TorButton. Niemniej jednak, obecnie ten dodatek nie jest już rozwijany, przynajmniej nie jako osobny projekt. Cały ten TorButton został zintegrowany z TorBrowser i nie ma obecnie sposobu na to, by przeznaczyć jeden profil Firefox'a pod bezpieczne przeglądanie internetu. Jeśli chcemy mieć taką możliwość, to musimy korzystać z TorBrowser. Nie stanowi to oczywiście problemu ale jako, że ma on w sobie wbudowanego klienta Tor'a, to uruchamia też pewne procesy, które mogą okazać się zbędne, zwłaszcza, gdy na swoim linux'ie mamy już systemową instancję Tor'a. W takim przypadku, przydałoby się wyłączyć tego klienta Tor w TorBrowser, a ruch z przeglądarki przekierować do systemowego Tor'a i przez ten proces postaramy się przebrnąć w tym wpisie.

Aktualizacja Firefox'a i Thunderbird'a w debianie

W 2006 roku, Mozilla przyczepiła się do debiana o to, że ten wykorzystuje ich znaki towarowe. Chodziło głównie o to, że debian wprowadzał swoje poprawki, które nie były zatwierdzone przez zespół Mozilli. W efekcie czego, debian pozmieniał nazwy szeregu produktów Mozilli i tak zamiast normalnego Firefox'a mamy Iceweasel, podobnie z Thunderbird'em i Icedove. Obecnie nie ma możliwości wgrania aplikacji Mozilli wykorzystując repozytorium debiana. Trzeba się trochę wysilić i paczki pobierać ręcznie z serwerów Mozilli. Takie rozwiązanie nie jest zbytnio praktyczne, bo przecie w linux'ie aplikacji nie aktualizuje się za pomocą ich interfejsów graficznych. Jeśli tak by było, to musielibyśmy uruchamiać przeglądarkę z uprawnieniami root w trybie graficznym, czego raczej nikt rozsądny nie próbowałby robić. Można, co prawda, napisać skrypt i całą operację aktualizacji nieco zautomatyzować. Problem w tym, że zarówno Firefox jak i Thunderbird ważą tak około 50 MiB każdy i taka aktualizacja polegająca na pobraniu całej aplikacji i zainstalowaniu jej na nowo zjadłaby trochę transferu. Istnieje jednak rozwiązanie, które zakłada wykorzystanie plików MAR. Ważą one zaledwie kilka MiB, bo zawierają jedynie aktualizację danej aplikacji. W tym wpisie spróbujemy się przyjrzeć procesowi aktualizacji z wykorzystaniem tych właśnie plików.

Zgodnie z informacją na tym blogu, Firefox wraca do debiana i zastępuje tym samym Iceweasel. Od tego momentu można już instalować pakiet firefox i cieszyć się normalnym produktem Mozilli. Niniejszy artykuł w dalszym ciągu znajduje zastosowanie ale nie można mieszać opisanego niżej sposobu aktualizacji Firefox'a z tym dostarczanym w ramach menadżera pakietów apt/aptitude . Zatem albo instalujemy Firefox'a bezpośrednio z repozytorium debiana, albo ściągamy pakiet z serwerów Mozilli.

Metadane plików graficznych (EXIF)

Każdy plik posiada szereg opisujących go atrybutów. Możemy się o tym przekonać wykorzystując narzędzia ls lub stat . W ich przypadku zostaną nam zwrócone takie informacje jak rozmiar pliku, data modyfikacji czy też prawa dostępu. To właśnie są metadane opisujące pliki w obszarze systemu plików i są one wymagane, by system operacyjny działał prawidłowo. To jednak nie jedyne metadane, z którymi spotykamy się na co dzień. Najlepszym przykładem są zdjęcia czy filmy robione smartfonami czy też aparatami lub kamerami cyfrowymi. Każdy plik stworzony za pomocą tych urządzeń zawiera w sobie bardzo rozbudowane informacje, które nie zawsze chcielibyśmy udostępniać. W tym wpisie skupimy się głównie na danych EXIF zawartych w plikach graficznych, które postaramy się wydobyć, zmienić i usunąć.

Konfiguracja cache DNS w Firefox'ie

We wpisie poświęconym systemowemu cache DNS w linux'ie mieliśmy okazję zobaczyć jak wzrasta wydajność po zaimplementowaniu tego mechanizmu. W skrócie, to ponad drugie tyle zapytań było rozwiązywanych lokalnie bez potrzeby odwoływania się do zdalnego serwera DNS, co zajmuje sporo czasu (20-40ms). Przeglądarki internetowe, np. Firefox, mają swoje wynalazki, które potrafią wyeliminować opóźnienia związane z surfowaniem po stronach www. Do nich zalicza się również cache DNS, z tym, że w tym przypadku zaimplementowany jest on na poziomie przeglądarki, a nie globalnie w systemie. Dzięki temu rozwiązaniu, nawet bez dnsmasq , Firefox jest nam w stanie zaoszczędzić sporo czasu przy przeglądaniu internetu. Zajrzyjmy zatem Firefox'owi pod maskę i sprawdźmy, które parametry dotyczące cache DNS wymagają dostosowania.

Więcej niż jeden profil w Firefox'ie

Ogromna większość ludzi korzysta z jednego profilu swojej przeglądarki internetowej. Niesie to ze sobą spore zagrożenie bezpieczeństwa jak i może godzić w naszą prywatność. Jeśli dzielimy z kimś komputer, to raczej wszyscy domownicy posiadają osobne konta w systemie, a co z tym się wiąże, inny profil przeglądarki. I na tym zwykle podział się kończy ale przecie to nie wszystko. Profil, jak sama nazwa wskazuje, jest w stanie dostosować opcje przeglądarki, np. pod kątem pewnych aktywności. W tym wpisie postaramy się utworzyć kilka profili w Firefox'ie i sprawdzimy korzystanie z nich będzie odczuwalne w jakiś sposób dla przeciętnego użytkownika internetu.