Wpisy otagowane ‘Fortigate’

Nowy FortiOS

wtorek, 30 Czerwiec 2009

Tym razem przed Firewall Guru ;-)

FortiGate i równoważenie obciążenia

czwartek, 28 Maj 2009

Równoważenie obciążenia (LB + HA) w FortiGate sprawdzone! Działa. Na razie w środowisku mocno testowym, produkcyjnie na razie nie mam potrzeby używania. Zanim opiszę jak używać, odnośniki do alternatywnych rozwiązań:

Produkcyjnie wykorzystywałem relayd, LVS i mod_jk. Heartbeat testowałem bardzo krótko.
Konfiguracja w FortiGate jest dość prosta (pomijam politykę zapory):

  1. Konfigurujemy Virtual Server
    W CLI konfigurujemy podobnie jak Virtual IP. Jako typ VIP ustawiamy server-load-balance. Rodzaj LB (server-type) możemy ustawić na: HTTP, TCP lub UDP oraz IP. Metod rozkładu obciążenia mamy do wyboru sześć: Static, Round Robin, Weighted, First Alive, Least RTT i Least Session. Do konfiguracji sprawdzania obecności (Health Check) trzeba wrócić później.
  2. Definiujemy rzeczywiste serwery
    Oprócz nazwy i adresu IP podajemy port usługi, a także wagę i maksymalną liczbę połączeń. Serwery rzeczywiste przypisujemy serwera wirtualnego.
  3. Definiujemy sposób sprawdzania obecności (przypisać go należy do wirtualnego serwera)
    Określamy typ (HTTP, TCP lub PING) i interwał oraz liczbę powtórzeń. W przypadku typu TCP podajemy port usługi, dla HTTP – URL i cią jaki ma być dopasowany do zawartości.
  4. …no i możemy cieszyć się gotowym rozwiązaniem.

lb1

Przykładowa konfiguracja może wyglądać tak:

config firewall ldb-monitor
edit "DEV-HCH"
set type tcp
set port 80
next
end
config firewall vip
edit "DEV"
set type server-load-balance
set extip 192.168.1.230
set extintf "wan1"
set server-type tcp
set monitor "DEV-HCH"
set ldb-method first-alive
set extport 80
config realservers
edit 1
set ip 10.1.0.1
set port 80
next
edit 2
set ip 10.1.0.2
set port 80
next
edit 3
set ip 10.1.0.3
set port 80
next
end
next
end

Jedyny minus jaki dotychczas dostrzegłem, to brak jakiejkolwiek informacji w logach (pamięć, FortiAnalyzer) o tym, że dany serwer nie działa lub zmienił swój stan.

Poniżej wykres z JMeter – duży skok na początku to wyłączenie pierwszego serwera; metoda rozkładania obciążenia: First Alive i 10 sekund pomiędzy kolejnymi testami.
spline-visualizer
Innych testów nie chciało mi się robić. Środowisko testowe jeszcze trochę będzie stało (planuję m. in. testy MySQL w klastrze), więc jak ktoś chce wyniki testów LB przy konkretnych ustawieniach, proszę o kontakt.

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!

HOWTO: FortiUSB

piątek, 17 Kwiecień 2009

Czasami zdarza się tak, że odcinamy sobie wszystkie drogi do urządzenia (jakiegokolwiek) – dostęp via WWW, SSH, telnet czy kabel szeregowy. Cóż, błąd ludzki… FortiGate ma na szczęście możliwość czytania konfiguracji i ew. firmware z pendrive. Oczywiście wcześniej niezbędne jest przygotowanie kopii bezpieczeństwa, no ale o to każdy przecież dba.

Sytuacja, o której wspominam nie miała miejsca w moim przypadku. Ot tak sobie chciałem przećwiczyć plan awaryjny, żeby na podstawie czegoś stworzyć kolejną procedurę :>

  1. Rozpoznanie terenu
  2. Domyślnie konfiguracja powinna znajdować się w pliku fgt_system.conf, obraz zaś w image.out. Kopiujemy pliki na pamięć (domyślnie takowe mają system plików FAT). Ew. wkładamy po prostu czystą pamięć i uruchamiamy urządzenie żeby sprawdzić co się stanie. Po starcie pojawia nam się smutny komunikat dotyczący problemu z odczytem ext3 (w starszych wersjach FortiOS) lub w drugim przypadku:

    System is started.
    Get image from USB disk ...Can not get image from USB disk.
    Can not get config file from USB disk.

    Możemy poddać się i zakupić FortiUSB lub…

  3. Przygotowanie własnego FortiUSB
  4. Oczywiście w nowszych wersjach FortiOS nie jest potrzebna zmiana systemu plików, ale domyślnie w 100A dają jakieś 3.0 MR5 (chyba), które nie znało niczego innego poza EXT3. Niemniej mamy już właściwy system, pora na kopiowanie plików. Jak wspomniałem – konfiguracja w fgt_system.conf, firmware w image.out (kopiujemy jeden z plików lub oba).

  5. To już!
  6. Wkładamy pamięć w odpowiedni port, uruchamiamy urządzenie i tadam!

    System is started.
    Get image from USB disk ...     OK.
    Check image...  OK.

    Please wait for system to restart.

    Firmware upgrade in progress ...
    Done.

    The system is going down NOW !!

    Please stand by while rebooting the system.
    FG100A (19:06-02.28.2006)
    Ver:04000003
    [...]

    Może się zdarzyć, że nie zaszła żadna zmiana, wtedy dostaniemy:

    Get image from USB disk ... OK.
    Checksum check synced! Don't need restore image.

    Get config file from USB disk OK.
    Checksum check synced! Don't need restore config.

    Czasami może być też tak:

    System is started.
    The config file may contain errors,
    Please see details by the command 'diagnose debug config-error-log read'

    Tu próba skopiowania konfiguracji z FortiOS 4 na 3. Jak pisałem wcześniej – jest kilka znaczących różnic. Tak czy inaczej plan przećwiczony. Pamiętamy o regularnych kopiach, nie wpadaniu w panikę, o postępowaniu zgodnie z procedurami i takie tam ;-)

A tu jeszcze Knowledge Center Fortinet na temat FortiUSB:

Teraz mam drugie urządzenie, więc mogę je podmienić (zostanę jednakże przy firmware z rodziny 3) i sprawdzić czy ‘zawieszanie się‘ to wina sprzętowa czy raczej programowa.

FortiGate CLI> diagnose

piątek, 17 Kwiecień 2009

fgdiagnose

FG100A3907510579 # diagnose hardware lspci
00:00.0 Host bridge: VIA Technologies, Inc. Unknown device 3123
00:01.0 PCI bridge: VIA Technologies, Inc. Unknown device b091
00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 10)
00:0c.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 10)
00:0d.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 10)
00:0e.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 10)
00:10.0 USB Controller: VIA Technologies, Inc. VT82C586B USB (rev 80)
00:10.1 USB Controller: VIA Technologies, Inc. VT82C586B USB (rev 80)
00:10.2 USB Controller: VIA Technologies, Inc. VT82C586B USB (rev 80)
00:10.3 USB Controller: VIA Technologies, Inc. Unknown device 3104 (rev 82)
00:11.0 ISA bridge: VIA Technologies, Inc. Unknown device 3177
00:11.1 IDE interface: VIA Technologies, Inc. VT82C586 IDE [Apollo] (rev 06)
00:12.0 Ethernet controller: VIA Technologies, Inc. Unknown device 3065 (rev 74)
00:13.0 Network and computing encryption device: Fujitsu Microelectr., Inc. Unknown device 4005 (rev 01)

FG100A3908506507 # get hardware status
Model name: Fortigate-100A
ASIC version: CP5
ASIC SRAM: 64M
CPU: Mobile Intel(R) Celeron(TM) CPU 400MHz
RAM: 249 MB
Compact Flash: 61 MB /dev/hda
USB Flash: not available
Network Card chipset: RealTek RTL8139 Fast Ethernet (rev.0x10)
Network Card chipset: ip175c Ethernet driver (rev.)

;-)

FortiOS 4.0.2

piątek, 10 Kwiecień 2009

Niedługo nacieszyłem się wersją 4.0.1 FortiOS – jest już nowsza! Na FTP właśnie pokazała się wersja 4.0.2, co ciekawe katalogu 4.0.1 nie ma w ogóle, a przecież zawsze historyczne wydania zostawały (w przypadku FortiOS 3 – MRx i patchY).
FSAE nie zmienił się, przez co pewnie nadal nie będzie działać. Nie mam niestety czasu by to zdiagnozować dokładnie i zaraportować, więc tylko narzekam.

Z uwagi na moją wczorajszą wiadomość, zostawię to sobie na po świętach…

Przy okazji – robiąc dziwne kierowanie ruchem poznałem sniffer, którego można użyć na konsoli. Tak czy inaczej, nawet przy jego pomocy nie udało mi się rozwiązać problemu. Wątek na forum się rozwija.

FortiOS 4.0.1

poniedziałek, 6 Kwiecień 2009

Na FTP firmy Fortinet pojawiła się nowa wersja FortiOS – w katalogu 4.0.1 czyli 4.0.0 build 098 (FortiGate) i 4.0.0 build 043 (FortiAnalyzer). Nocna praca przede mną, bo i FSAE też jest nowy (poprzedni działał ‘dziwnie’ i wróciłem do ostatniej wersji dla FortiOS 3).

Przy okazji – FortiAnalyzer jakoś mnie nie powalił możliwościami, ale kilku stron i ładnych wykresów w comiesięcznym raporcie bezpieczeństwa dostarcza :>

FortiGate w ciągu minionego tygodnia zawiesił się trzykrotnie. Zbiegła się aktualizacja FortiOS (ale troszkę wcześniej, więc może nie ma bezpośredniego wpływu), podłączenie do FortiAnalyzer i, co może najistotniejsze, podłączenie się do sieci użytkowników, którzy sami konfigurują sobie sieć i czasem mylą adres IP z domyślną bramą. Dodam, że MAC adres był poprawny w każdej tablicy ARP urządzeń, które były po drodze. Tak czy inaczej, ostatnie dwie sytuacje zdecydowanie nie powinny mieć wpływu na pracę tego urządzenia. Sprawa więc jest ‘rozwojowa’ .