Archiwum kategorii ‘OpenBSD’

OpenBSD: Following -current

czwartek, 12 Listopad 2009

Kolejny wpis z cyklu ‘OpenBSD Following -current’ (oczywiście tylko działka, którą śledzę).
pflogd już nie ma opcji -p (do 4.6 była), więc poinformowanie go o rotowaniu plików przez newsyslog musi odbyć się inaczej. Opis zmiany tutaj: 2009/11/03 – pflogd(8) requires new method of logfile rotation
(więcej…)

Border Gateway Protocol 4

czwartek, 24 Wrzesień 2009

Jakiś czas temu przejąłem serwer, który korzysta z BGP. Jako, że wcześniej z braku czasu ten temat zawsze spychałem gdzieś dalej, to teraz musiałem się w niego co najmniej lekko wgryźć. Dałem radę!

Oprócz tego, że zarządzam produkcyjnym serwerem, zrobiłem sobie poligon, gdzie testuję różne rzeczy. Poniżej schemat dla mojego przyszłego pracodawcy ;-)

BGP-dev
(więcej…)

OpenBSD 4.6 jednak 1 listopada

piątek, 18 Wrzesień 2009

Theo de Raadt poinformował, że OpenBSD 4.6 wydane zostanie jednak 1 listopada, a nie jak poprzednio ustalono – 1 października. Z powodu tego, że źródła są zamrożone już dość długo, wiele poprawek będzie dopiero w 4.7 (m. in. zmiany w pf).

Przy okazji – niedawno przeglądałem ‘Zapiski herszta bandy ruterowców’ (wcześniejszy blog) i znalazłem informację, że pierwszy raz produkcyjnie OpenBSD użyłem 21 maja 2003 r. (pierwsza instalacja dzień wcześniej :>; wersja 3.3). FreeBSD produkcyjnie ruszyło (chyba) 28 marca tego samego roku, a pierwsze gratulacje z okazji udanej instalacji wysłał ikt pod koniec listopada 2002 r.

OpenBSD: pf – zmiany

piątek, 4 Wrzesień 2009

1 września część społeczeństwa cofała się 70 lat w czasie, część paliła w toalecie z dawno nie widzianymi znajomymi, a Henning Brauer na grupie openbsd-misc opublikował informację na temat sporej zmiany w kodzie pf (3’000 linii różnic odchudza kod o 800 linii). Zmiana dotyczy składni translacji i przekierowania adresów – nie będę one osobnymi regułami, a akcjami na regułach match / pass / block. Więcej w oryginalnej wiadomości:

a także w dokumencie Following -current, gdzie znajduje się również informacja z następnego dnia o zmianie składni reguł z opcjami route-to, reply-to, dup-to and fastroute.

Osobiście uważam, że obie zmiany sprawią, że plik konfiguracyjny będzie bardziej czytelny. Zaczynam testowanie!

Nowa akcja w filtrze pakietów OpenBSD

środa, 19 Sierpień 2009

Wczoraj coś wspomniałem o nowej akcji match w pf, dziś nie mogę nie rozwinąć tematu. Tym bardziej, że nie znalazłem żadnych dodatkowych informacji ani na spryciarze.pl, ani na jaktosierobi.tv (a na tym drugim przejrzałem wszystkie filmy).

Fakty, które znamy (-release):

  • reguły przetwarzane są z góry do dołu (a w każdej linii od lewej do prawej),
  • ostatnia pasująca reguła wygrywa,
  • wyjątkiem jest słowo kluczowe quick.

Powyższe oznacza, że każdy pakiet przejdzie po kolei pełny zestaw reguł. Co w przypadku, gdy logujemy (log)? Niejako jest to powiązane z akcją, więc pakiet zalogowany będzie tylko raz. Poniżej przykład:

block log all
pass in log on $int_if inet proto tcp from any to ($int_if) port ssh flags S/SA modulate state

tcpdump pokaże nam:

07:30:44.227293 rule 3/(match) pass in on xl0: 192.168.1.131.61392 > 192.168.1.64.22: S 738501558:738501558(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK> (DF)

Nowa akcja match (-current) po prostu dopasowuje pakiet i może go zalogować lub oznakować (tag), ale nie zrobi z nim nic więcej (nie zaakceptuje i nie odrzuci). Zmieniony zestaw reguł:

block log all
match in log on $int_if inet proto tcp from any to ($int_if) port ssh
pass in log on $int_if inet proto tcp from any to ($int_if) port ssh flags S/SA modulate state

da następujące wyniki:

07:36:55.505154 rule 4/(match) pass in on xl0: 192.168.1.131.61403 > 192.168.1.64.22: S 3714164883:3714164883(0) win 8192 (DF)
07:36:55.505168 rule 3/(match) match in on xl0: 192.168.1.131.61403 > 192.168.1.64.22: S 3714164883:3714164883(0) win 8192 (DF)

Czyli jeden pakiet (patrz numer sekwencyjny) dwukrotnie zalogowany. Co ważne – w logach pierw mamy pass, a potem match (niezależnie jak reguły ułożymy).

Przydatne? Myślę, że tak. Wracamy do NetFlow (oczywiście z najeżkowatą w tle – pamiętać należy, że w Polsce nie wolno wprowadzać ich do obrotu).

OpenBSD: pf: scrub: syntax error

wtorek, 18 Sierpień 2009

peeper ~ # pfctl -nf /etc/pf.conf
/etc/pf.conf:7: syntax error
peeper ~ # head -n 7 /etc/pf.conf |tail -n 1
scrub in all
peeper ~ # uname -a
OpenBSD peeper.mbs.dmz 4.6 GENERIC#0 i386

Kto podąża za -current, powinien czytać też o zmianach. Czyli:

Po co mi FortiGate?

środa, 20 Maj 2009

W związku z moimi problemami z FortiGate zacząłem się zastanawiać po co go w ogóle używam i czy na pewno nie da się go zastąpić innym urządzeniem. I tak:

  • router / (S|D)NAT – można zastąpić czymkolwiek,
  • filtrowanie stron WWW – kiedyś przyglądałem się SquidGuard, myślę, że można wrócić do tematu i przyjrzeć się temu,
  • IDS  – Snort + SnortSam,
  • uwierzytelnianie użytkowników w Active Directory – nie znalazłem niczego takiego!

I z racji ostatniego kryterium, postanowiłem zaprojektować sobie coś takiego samemu. Ze względu na uwielbienie pf wybrałem OpenBSD (i żeby noszenie koszulki miało uzasadnienie), który służył mi przed FortiGate. Wzorowałem się trochę na dokumentacji Fortinet (prezentacja MS Power Point), bo model, który oferują nie jest zły. Cały proces składa się z następujących kroków:

  1. Użytkownik uruchamia swój komputer i loguje się do domeny.
  2. Agent zdobywa informację z serwera o nazwie użytkownika (i przynależności do grup) i nazwie maszyny, z której nastąpiło logowanie (FQDN).
  3. Agent sprawdza IP maszyny i odpowiedź klienta (Fortinet proponuje testowanie portu TCP:139 lub TCP:445).
  4. Dane o użytkowniku przesyłane są do zapory – FortiGate dostaje nazwę użytkownika i grupy oraz adres IP. Wydaje mi się, że wystarczający jest sam adres sieciowy, natomiast pozostałe dane jedynie do prezentacji.
  5. Zapora buduje sobie odpowiednie reguły.
  6. Ruch od klienta jest przepuszczany.

Oczywiście świadomie rezygnuję z ‘wyklikanego’ interfejsu, bo z autopsji wiem, że takich reguł nie ma wiele i nie zmienia się ich praktycznie w ogóle. Idea tego rozwiązania od początku polegała na tym, że ktoś robi zaporę raz, a zarządzanie dostępem zrzuca się na osobę administrującą kontrolerem domeny (lub mającą oddelegowane prawa).

Pomocniczy schemat wygląda tak:

fw + AD

Elementami potrzebnymi będą:

  • agent wyciągający dane z kontrolera domeny i przesyłający je dalej,
  • demon działający na OpenBSD i modyfikujący odpowiednio reguły.

Zabieram się za podsłuchiwanie ruchu pomiędzy FortiGate, a AD, żeby przyjrzeć się jak wygląda komunikacja pomiędzy tymi elementami. Może to pomoże przy własnym rozwiązaniu, ew. uda się skorzystać z FSAE i stworzyć rozwiązanie przejściowe.

Co do programowania, to otwarcie szukam ludzi, którzy mogli by zająć się dowolnym elementem tego rozwiązania. Pomocą przy pisaniu demona pod OpenBSD mogą być źródła np. relayd (komunikacja z pf). Jeśli chodzi o Windows, to szukam sposobu na uzyskiwanie danych z AD.

Każdy palec potrafiący przycisnąć coś na klawiaturze mile widziany!