Fortigate – Routing asymetryczny

W sieciach, w których jest więcej niż jeden router może się zdarzyć, że niektóre hosty nie mogą połączyć się z innymi sieciami. Taki problem występuje gdy pakiety żądań i odpowiedzi podążają różnymi ścieżkami i nie przechodzą przez ten sam router. To zachowanie jest znane jako routing asymetryczny. Jeśli FortiGate odbiera pakiety odpowiedzi, ale nie żądania, (lub żądania ale nie odpowiedzi) domyślnie blokuje pakiety jako nieprawidłowe.

Jeśli z jakiegoś powodu wymagane jest, aby jednostka FortiGate umożliwiała routing asymetryczny, można ją skonfigurować za pomocą następujących poleceń CLI na VDOM:

config vdom
    edit <vdom_name>
    config system settings
        set asymroute enable
    end
end

Takie ustawienie nie jest jednak zalecane gdyż Fortigate nie może w pełni używać filtrów zapory.

PostgreSQL – Debian instalacja

Instalacja serwera z repozytoriów PostgreSQL

# Przygotowanie pliku z repozytorium
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# Import klucza repozytorium
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -


$ sudo apt-get update


# Instalacja najnowszej wersji posgresql
$ sudo apt-get -y install postgresql

Instalacja pgAdmin

# Przygotowanie pliku z repozytorium
$ sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

# Import klucza repozytorium
$ sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add

# Instalacja pgAdmin w wersji web
$ sudo apt install pgadmin4-web 

# Konfiguracja
$ sudo /usr/pgadmin4/bin/setup-web.sh

Aby uruchomić pgAdmin w przeglądarce wpisujemy adres: http://<adres_ip_do serwera_pgAdmin>/pgadmin4

Dodajemy bazę danych i użytkownika.

$ sudo postgres
$ psql
postgres=# create database mojaBaza;
postgres=# create user witek with encrypted password '123456';
postgres=# grant all privileges on database mojaBaza to witek;

Trunas Scale – Brak internetu dla kontenerów docker

Truenas Scale obsługuje kontenery Dockera używając Kubernetes. Czasem jednak potrzebujemy uruchomić kontener poza Kubernates np. przy budowaniu własnego obrazu. Tutaj jednak pojawia się problem, gdyż domyślnie kontenery uruchamiane przez Dockera nie mają dostępu do internetu, aby rozwiązać ten problem musimy wskazać sieć Dockera, którą chcemy użyć np:

$ docker build --network=host --tag=mojobraz . 

Fortigate – długi czas dostępu do serwerów oceny filtrów

Często możemy zaobserwować, że czas dostępu do serwerów oceny filtrów jest bardzo długi i mamy problemy z dostępem do stron internetowych. Czas ten możemy sprawdzić w fortigate System > FortiGuard tabelka FortiGuard Filter Rating Servers.

Powodem tego może być, że domyślnie Fotigate korzysta z serwera Anycast. Jednym z rozwiązań może być wyłączenie anycast i pobranie serwerów unicat np. z adresu 208.91.112.220

config system fortiguard
set fortiguard-anycast disable
set protocol udp
set port 8888
set sdns-server-ip 208.91.112.220
end

Raspbery Pi – UBUNTU GPIO problem

Jeżeli chcemy się dostać do GPIO za pomocą Python i biblioteki RPi.GPIO, jako zwykły użytkownik, może pokazać się nam błąd „RuntimeError: Not running on a RPi!”. Ten błąd wynika z braku uprawnień do /dev/gpiomem.

# dodajemy użytkownika na którym pracujemy do grupy dialout
$ sudo usermod -aG dialout tomeks
# ustawiamy na stałe uprawnienia do /dev/gpiomem dla grupy dialout
sudo nano /etc/udev/rules.d/99-gpiomem.rules

KERNEL=="gpiomem", OWNER="root", GROUP="dialout"

# uruchamiamy ponownie
$ sudo reboot

Fortigate – Śledzenie przepływu pakietów w jądrze

$ diagnose debug reset #reset wszystkich wcześniejszych ustawień debug
$ diagnose debug enable #włączenie debug
$ diagnose debug flow filter clear #czyszczenie filtrów przepływów 
$ diagnose debug flow filter addr 192.168.128.100 #ustawienie śledzonego ip
$ diagnose debug flow filter proto 1 #id protokołu.Tutaj ICMP
$ diagnose debug flow show fun enable #włącz pokazywanie funkcji
$ diagnose debug flow show iprope enable #włącz komunikaty śladu dotyczące iprope
$ diagnose debug flow trace start 20 #rozpoczęcie śledzenia 20 sesji

id=20085 trace_id=126 func=print_pkt_detail line=5783 msg="vd-root:0 received a packet(proto=1, 192.168.100.99:1->192.168.128.100:2048) from internal5. type=8, code=0, id=1, seq=224."
id=20085 trace_id=126 func=init_ip_session_common line=5955 msg="allocate a new session-00657adf"
id=20085 trace_id=126 func=rpdb_srv_match_input line=1030 msg="Match policy routing id=2141519874: to 192.168.128.100 via ifindex-40"
id=20085 trace_id=126 func=vf_ip_route_input_common line=2605 msg="find a route: flag=04000000 gw-XX.XX.XX.XX via IPSEC"
id=20085 trace_id=126 func=fw_forward_handler line=869 msg="Allowed by Policy-1:"
id=20085 trace_id=126 func=ipsecdev_hard_start_xmit line=625 msg="enter IPSec interface IPSEC"
id=20085 trace_id=126 func=_do_ipsecdev_hard_start_xmit line=229 msg="output to IPSec tunnel IPSEC"
id=20085 trace_id=126 func=esp_output4 line=867 msg="IPsec encrypt/auth"
id=20085 trace_id=126 func=ipsec_output_finish line=546 msg="send to XX.XX.XX.XX via wan2"


$ diagnose debug flow trace stop #zatrzymanie
$ diagnose debug disable #wyłączenie debug


Fortigate – zarządzanie procesami

Lista procesów.

# diagnose sys top

lub wyszukanie konkretnego procesu np proxyd

# diag sys process pidof proxyd

Ubicie procesu

# diagnose sys kill 11 <process_id>

lub 

# fnsysctl killall <process name>

np 

# fnsysctl killall proxyd

DIRB to skaner treści internetowych

DIRB wyszukuje istniejące obiekty sieciowe. Działa poprzez uruchomienie ataku słownikowego na serwer sieciowy i analizę odpowiedzi. Wraz z dirb instalowany jest zestaw wstępnie skonfigurowanych list słownikowych pomocnych w skanowaniu. Słowniki znajdują się w katalogu /usr/share/wordlists/dirb/. Możemy skorzystać z innych otwarto źródłowych słowników np: SecList

DIRB jest pomocny w audycie aplikacji internetowych podczas testów bezpieczeństwa wykorzystujących „Fuzzing”. Fuzzing to technika testowania oprogramowania, w której wysyłamy do programu różne losowe, prawidłowe i nieprawidłowe dane, następnie obserwujemy działanie programu.

Instalacja

$ sudo apt install dirb

Przykład użycia

$ dirb https://adres.strony/ /usr/share/wordlists/dirb/common.txt

-----------------
DIRB v2.22
By The Dark Raver
-----------------

START_TIME: Sat Dec  4 20:30:41 2021
URL_BASE: https://adres.strony/
WORDLIST_FILES: /usr/share/wordlists/dirb/small.txt

-----------------

GENERATED WORDS: 959

---- Scanning URL: https://adres.strony/ ----
+ https://adres.strony/0 (CODE:301|SIZE:0)
+ https://adres.strony/admin (CODE:302|SIZE:0)

Tutaj znalazł 2 obiekty „0” i „admin”

Systemd – usługi użytkownika

Systemd umożliwia zarządzania usługami przez użytkownika.

Aby konto mogło korzystać z usług systemd bez konieczności logowania musimy włączyć funkcję „linger”

$ loginctl enable-linger nazwa_użytkownika

Logujemy się na użytkownika i w katalogu domowym tworzymy katalog i plik usługi. Przy konfiguracji nie podajemy User w sekcji [Service]

$ mkdir -p ~/.config/systemd/user/
$ vi ~/.config/systemd/user/myapp.service

[Unit]
Description=My demo application

[Service]
ExecStart=plikUslugi
WorkingDirectory=/home/myapp/html

[Install]
WantedBy=default.target

Najpierw musisz przeładować systemd, aby mógł pobrać plik jednostki.

$ systemctl --user daemon-reload

Uruchamiamy usługę i włączamy aby uruchamiała się przy starcie sytemu

$ systemctl --user start myapp.service
$ systemctl --user enable myapp.service