Router OpenWRT jako serwer i klient RADIUS

Ten poniższy artykuł ma na celu pokazanie w jaki sposób stworzyć infrastrukturę WiFi w oparciu o oprogramowanie freeradius (serwer RADIUS), które zostanie zainstalowane na przykładowym routerze TP-Link Archer C7 v2. Router ma wgrany firmware OpenWRT Chaos Calmer w wersji 15.05.1 (r49294). Zostanie tutaj opisane dokładnie jak wdrożyć protokół WPA2 Enterprise z obsługą trzech metod uwierzytelniania: EAP-TLS, EAP-TTLS oraz PEAP (v0) .

Skrypt dhclient'a (dhclient script)

Jak wiele osób zapewne wie, szereg dystrybucji linux'a wykorzystuje dhclient w celu pobrania sieciowej konfiguracji hosta za sprawą protokółu DHCP. W zasadzie cała konfiguracja tego narzędzia sprowadza się do określenia szeregu opcji w pliku /etc/dhcp/dhclient.conf . W debianie nawet nie musimy dotykać tego pliku, by wszystko działało nam jak trzeba. Niemniej jednak, czasem konfiguracja interfejsów sieciowych może wymagać od nas dodatkowych zabiegów. W celu ułatwienia życia adminom dodano obsługę skryptów shell'owych (dhclient-script). Taki skrypt jesteśmy w stanie wywołać w zależności od zaistniałych zdarzeń protokołu DHCP. W tym wpisie zostanie pokazane w jaki sposób te skrypty możemy utworzyć i wykorzystać.

Konfiguracja interfejsów sieciowych w dhclient

Konfiguracja maszyn w sieci za sprawą protokołu DHCP znacznie ułatwia życie administratorom. Cały ten proces jest nie tylko szybszy ale też eliminuje szereg błędów, które mogą pojawić się za sprawą czynnika ludzkiego. W przypadku, gdy nasza maszyna dysponuje kilkoma interfejsami sieciowymi, to każdy z nich możemy skonfigurować nieco inaczej. Oczywiście, nie chodzi o samą konfigurację adresacji ale o szereg parametrów, które klient przesyła do serwera DHCP. To dzięki nim host min. wie jak ustawić adresację na interfejsie i pod jaki adres słać zapytania DNS. Każdy interfejs może w ten sposób posiadać własne opcje, które klient DHCP będzie przesyłał do serwera. W tym artykule postaramy się konfigurować niezależnie dwa interfejsy sieciowe przy pomocy dhclient , czyli domyślnego klienta DHCP w linux'ie.

Jak odszukać pliki utworzone godzinę temu (find)

W linux'ie wszystko może być reprezentowane za pomocą pliku. Te pliki są tworzone, zmieniane i usuwane praktycznie non stop podczas pracy systemu operacyjnego. Zwykle też nie zwracamy uwagi na metadane opisujące pliki w systemie plików, bo przecie bardziej interesuje nas ich zawartość. Niemniej jednak, w pewnych sytuacjach te metadane mogą się okazać bardzo użyteczne. Weźmy sobie przykład partycji /home/ . Prawie zawsze po odpaleniu aplikacji są tworzone na niej nowe pliki lub zmieniane te już istniejące. Jako, że nie zawsze wiemy na jakich plikach operuje dany program, to moglibyśmy przeszukać pliki w katalogu domowym użytkownika i poddać analizie ich czas modyfikacji. Taką operacje możemy przeprowadzić przy pomocy polecenia find i w tym wpisie zobaczymy jak tego dokonać.

Uruchamianie zadań cron co 15 minut lub 6 godzin

cron to takie linux'owe narzędzie, które cyklicznie, co pewien ustalony interwał czasu, wykonuje jakieś zaplanowane zadania. Minimalna wartość tego interwału to jedna minuta. Niemniej jednak, bardzo wielu użytkowników linux'a zastanawia się w jaki sposób wywołać określone zadanie, np. co 5, 10, 15, 30 minut, czy nawet co 2, 6 albo 12 godzin. Dlatego właśnie powstał ten wpis, by nieco przybliżyć mechanikę samego cron'a.

Data i czas utworzenia pliku w linux'ie (crtime)

Systemy plików, które wykorzystujemy na partycjach swoich dysków, zawierają metadane opisujące pliki. Domyślnym systemem plików w większości linux'ów (do nich zalicza się też debian) jest EXT4. Gdy listujemy pliki przy pomocy narzędzia ls , jesteśmy w stanie uzyskać szereg informacji opisujących konkretny plik. Mamy tam min. czas ostatniej modyfikacji i-węzła (i-node), czyli tzw. ctime . Narzędzia takie jak stat są w stanie podać również inne czasy, tj. atime (ostatni czas dostępu do pliku) oraz mtime (ostatni czas modyfikacji pliku). Jednak żaden z tych powyższych nie przekłada się na czas utworzenia pliku. Co prawda, po stworzeniu pliku, wszystkie te czasy są ze sobą zsynchronizowane ale po przeprowadzeniu szeregu różnych operacji na tym pliku, problematyczne może być ustalenie pierwotnej daty jego utworzenia. Celem tego artykułu jest pokazanie, jak przy pomocy debugfs uzyskać czas utworzenia dowolnie wskazanego pliku w systemie plików EXT4.

FZF (fuzzy finder) dla tmux'a

Jakiś czas temu pisałem o implementacji tmux'a na debianie. Dla tych, którzy nie za bardzo wiedzą czym tmux jest, to wyjaśniam, że jest to narzędzie, które min. potrafi dzielić okno terminala na kilka mniejszych okienek. W ten sposób możemy korzystać ze swojego ulubionego terminala i cieszyć się funkcjonalnością znaną choćby z terminatora. Ta umiejętność dzielenia okien w tmux idealnie współgra z FZF (fuzzy finder). Jest to narzędzie, które pomaga min. przeszukiwać historię poleceń shell'a. BASH czy ZSH są, jakby nie patrzeć, dość ograniczone pod tym względem. Może i ZSH nieco lepiej radzi sobie z odnajdywaniem poleceń w historii od BASH ale i tak jego umiejętności pozostają daleko w tyle za FZF. Dlatego też w tym artykule spróbujemy sobie zainstalować ten cały "fuzzy finder".

Losowy adres MAC dla WAN w OpenWRT

Na dużych dystrybucjach linux'a adres MAC można zmienić bez problemu. Podobnie sprawa ma się w przypadku automatycznego generowania takiego adresu MAC za każdym razem, gdy chcemy nawiązać połączenie z internetem. W OpenWRT rozwiązanie tego zadania nie jest tak oczywiste jak, np. na debianie, ale też znowu nie jest niemożliwe. W repozytorium OpenWRT mamy dostępny pakiet macchanger . Niemniej jednak, w przypadku routerów o małych pamięciach flash, instalowanie dodatkowych pakietów może nie być dobrym pomysłem. Przydałoby się zatem zaprojektować mechanizm generowania i zmiany adresu MAC interfejsu WAN za każdym razem, gdy będziemy resetować router i to zadanie postaramy się zrealizować w tym artykule.

Jak wyczyścić tablicę conntrack'a w debianie

Sporo użytkowników lunux'a, zwłaszcza dystrybucji debian, korzysta z własnych skryptów firewall'a aplikujących reguły iptables . Tego typu rozwiązanie ma jednak swoje wady i zalety. Niewątpliwie do zalet można zaliczyć brak dodatkowego oprogramowania obsługującego zaporę sieciową. Jeśli chodzi zaś o wady, to niestety cały skrypt trzeba sobie dobrze przemyśleć przed zaaplikowaniem. Ludzie często zapominają tutaj o śledzeniu połączeń przez kernel. To właśnie na podstawie wpisów w /proc/net/ip_conntrack lub /proc/net/nf_conntrack system wie, które pakiety należy na zaporze przepuścić, a które zablokować. Jeśli teraz dodajemy reguły do filtra iptables , to nowa polityka zapory nie będzie odnosić się do tych nawiązanych już połączeń, które są określone w tablicy conntrack'a. By się upewnić, że tego typu scenariusz nigdy nas nie spotka, musimy tę tablicę opróżnić.

Konfiguracja trybu AP kart WiFi na Debianie

Jakiś czas temu dokonałem zakupu adaptera WiFi TP-Link TL-WN722n, a to z tego względu, że potrzebowałem zewnętrznej karty sieciowej do mojego laptopa. Chodziło generalnie o to, że ten wbudowany w niego broadcom nie był w stanie robić kilku użytecznych rzeczy, min. testów penetracyjnych mojej bezprzewodowej sieci domowej. Jak się później okazało, ten zakupiony adapter posiada też dodatkowy ficzer, którym jest tryb AP (Access Point). Wprawdzie ta karta nie może się równać z routerami WiFi, bo te zwykle mają więcej anten, z których każda jest lepszej jakości ale jesteśmy w stanie połączyć ze sobą bezprzewodowo kilka stacji roboczych. Trzeba jednak wziąć po uwagę, że zasięg jak i transfer będą w dużej mierze ograniczone. W tym wpisie postaramy się przerobić zwykłą maszynę, na której jest zainstalowany Debian, na punkt dostępowy sieci WiFi.