Instrukcja zestawienia połączeń sieciowych celem wykorzystania programów Lefthand.
LHMK to młody choć dobrze zapowiadający się produkt do obsługi MSP autorstwa warszawskiej firmy Lefthand.
Jego głównym atutem jest oparcie engine'u bazy danych o opensource'owy projekt Firebird oraz wieloplatformowość (całość spokojnie można określić mianem "platform independent"). Z punktu widzenia operatora w zakresie obsługi wersja linuksowa i windowsowa nie różnią się niczym. Także serwer bazy danych może być hostowany na dowolnej maszynie *nix'owej bądź windowsowej. Nie sprawia problemu praca wg. dowolnego schematu:
- serwer *nix klient *unix
- serwer *nix klient windows
- serwer windows klient windows
- serwer windows klient *unix
- serwer i klient na localhoście dowolnej platformy
... czyli z technicznego punktu widzenia - bajka (choć doceniana jedynie przez administratorów i wdrożeniowców).
Ale nie do końca niestety.
Firebird jak każda poważna baza proponuje usermanagement z modelem ról. Użytkownik SYSDBA (jak sa w MSSQL'u) ma pełne uprawnienia i inicjalnie domyślne hasło które zna każdy kto bazę instalował i które zmienia każdy kto chce z bazy korzystać u siebie.
Parę: user=SYSDBA + pass=masterkey program Lefthand niestety ma hardkodowaną w bibliotekach i zmiana hasła masterkey powoduje brak dostępu do baz lh*.gdb.
Dodatkowo jeśli nie możemy zmienić hasła dla konta administracyjnego bazy - nie możemy jej także wystawić w sieci (tzn. port 3050 musi być filtrowany).
Znakomicie uniemożliwia to zastosowanie projektu w modelu wielooddziałowym (a nawet w LAN'ie jeśli mamy użytkownika potrafiącego obsłużyć sniffer, wywołać isql i zapodać komendę drop).
Do czasu gdy w programie Lefthand użytkownik i hasło będzie parametryzowalne (w stylu user=lefthand + pass=nasze_haslo) podpierać się trzeba rozwiązaniami okrężnymi:
- Startować bazę z Firebird'em na hoście siedzącym za bramką prowadzącą serwer ssh
- Dopuszczać połączenia na 3050 jedynie z bramki
- Forwardować klienckie 3050 do hosta z Firebird'em przy użyciu ssh
Step by step:
- Host z Firebirdem: iptables -A INPUT -i adres_bramki -p tcp --dport 3050 -j ACCEPT + iptables -A INPUT -p tcp --dport 3050 -j DROP
- Stacja kliencka: ssh -C -L 3050:adres_firebirda:3050 adres_bramki + w ustawieniach dostępu do bazy w LHMK: localhost:lh.gdb
Punkt 2 w środowisku Windows robi się trywialnie przy pomocy PUTTY'ego (dodatkowo można do tej sesji wyrzucić "Pani Ziucie" skrót na pulpit z podpisem w stylu "Zanim uruchomisz Lefthand".
O czym trzeba pamiętać ?
- o aliasie lh.gdb na hoście z Firebirdem
- o parametrze -C dla ssh lub zaznaczeniu "use compression" w PUTTY'm jeśli wychodzimy poza LAN (na DSL'u 512 całkiem przyzwoita wydajność)
- o puszczeniu Firebirda na dedykowanym koncie (instalator na Linuksie sam zakłada usera firebird i nadaje odpowiednie uprawnienia w /opt - pod Windowsem trzeba o tym pamiętać samemu: instsvc -i -s -a -g -l firebird firebird_password)
- o wygenerowaniu kluczy i puszczaniu tunelu ssh przy ich użyciu ("Pani Ziuta" zblednie jak zobaczy w oknie PUTTY'ego *nix'owy prompt o login i oczywiście co 3 dni będzie zapominała hasła)
Po zastosowaniu się do tej instrukcji układ hula bez problemu. Jeśli tak nie jest - wróć do jej początku.