Iperf – Test przepustowości

Badanie przepustowości sieci pomiędzy dwoma linuksami.

Testowanie TCP

# Linux 1 - uruchomienie serwera ipref
$ iperf -s

# Linux 2 - uruchomienie klienta ipref
$ iperf -c <IP serwera ipref>

Testowanie UDP

# Linux 1 - uruchomienie serwera ipref
$ iperf -s -u

# Linux 2 - uruchomienie klienta ipref
$ iperf -c <IP serwera ipref> -u -b 1000M

Fortigate – diagnozowanie problemów SSL VPN

$ diagnose debug disable 

$ diagnose debug reset 

$ diagnose debug console timestamp enable

$ diagnose vpn ssl debug-filter src-addr4 < Source ip>

$ diagnose debug application sslvpn -1 

$ diagnose debug application fnbamd -1 

$ diagnose debug enable 


# Po zakończeniu

$ post log collection disable the debug

$ diagnose debug disable 

$ diagnose debug reset 

Fortigate – Firewall dla połączeń przychodzących

Firewall Policy filtruje ruch przechodzący przez Fortigate np. z sieci Lan do Wan i z Wan do Lan. Jeżeli chcemy sprawdzać ruch adresowany do Fortigate np: połączenia ipsec, musimy skonfigurować Local in policy

Przykład pozwalający na połączenia ipsec tylko ze znanego nam adresu Oddzial.

Tworzymy obiekt adresu naszego hosta Oddzial.

config firewall address
    edit "Oddzial"
         set subnet X.X.X.X 255.255.255.255
    next

Tworzymy obiekt adresu naszego WAN IP

edit "WAN"
    set subnet Y.Y.Y.Y 255.255.255.255
next
end

Przygotowujemy dwie polityki lokalne. Pierwsza zezwoli na połączenia przychodzące ipsec z adresu IP „Oddzial”, druga zablokuje pozostałe adresy.

config firewall local-in-policy
    edit 1
        set intf "wan"
        set srcaddr "Oddzial"
        set dstaddr "WAN"
        set action accept
        set service "IKE"
        set schedule "always"
    next
    edit 2
        set intf "wan"
        set srcaddr "all"
        set dstaddr "WAN"
        set action deny
        set service "IKE"
        set schedule "always"
    next
end

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.

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

iDrac6 KVM problem z połączeniem

Starsze wersje iDrac KVM wykorzystują SSLv3, który uznawany jest za niebezpieczny. Aby uruchomić zdalny dostęp KVM musi na czas połączenia uznać SSLv3 jako bezpieczny.

W katalogu instalacji javy w pliku lib\security\java.security komentujemy linijkę zawierającą jdk.tls.disabledAlgorithms=SSLv3

Tutel przez ssh

Aby ustawić tunel ssh do zdalnego portu lokalnego na Linuxie lub Windowsie w konsoli zestawiamy połączenie ssh poleceniem:

# ssh -L <port>:<host>:<hostport> -N -f <user@host_lub_ip> [-i <sciezka_do_klucza_prywatnego>]

Np. zostanie zestawione połączenie z adresem X.X.X.X i powiązany port 5901 z portem 5600 na naszej maszynie z której zestawiamy tunel

$ ssh -L 5600:localhost:5901 -N -f user@X.X.X.X -i e:\keys\user.pem

W Windowsie uprawnienia do klucza prywatnego powinien posiadać tylko właściciel, można to ustawić za pomocą gui lub terminala

$ icacls .\user.pem /inheritance:r
$ icacls .\user.pem /grant:r "%username%":"(R)"

Konfiguracja oprogramowania NUT do zarządzania upsem w systemie Linux Debian.

Nie wystarczy podłączyć upsa do naszych urządzeń. Gdy brak prądy będzie trwał dłużej to po wyczerpaniu akumulatorów wszystkie nasze urządzenia się wyłączą, narażając nas na utratę danych.

Podłączymy nasz ups z komputerem z zainstalowanym Debianem i programem do monitorowania zasilania NUT.

Instalacja:

# apt install nut

Konfiguracja Serwera NUT

Lista obsługiwanych UPS’ów dostępna https://networkupstools.org/stable-hcl.html

# nano /etc/nut/ups.conf

w pliku na końcu dodajemy konfigurację upsa ręcznie

#Konfiguracja dla APC BACK-UPS PRO 650
[ups]
  driver = apcsmart # odpowiedni sterownik z listy obsługiwanych UPS
  port = /dev/ttyS0 # port do którego podłączony jest UPS
  desc = "Server UPS Back-Ups PRO 650"
  ignorelb # Nie będzie brał pod uwagę flagi upsa o rozładowaniu 'ups.status'
  default.battery.charge.low = 30 # Ten ups nie podaje dolnej granicy rozładowania. Definiuje ją ręcznie
  battery.charge < battery.charge.low # Rozpocznie wyłączanie gdy będzie rozładowany poniżej limitu
  battery.runtime < battery.runtime.low # Jeżeli pozostały czas spadnie poniżej zadanej wartości  

lub wyszukujemy automatycznie, np. dla ups na USB uruchamiamy i wynik polecenia wstawiamy do /etc/nut/ups.conf (https://networkupstools.org/docs/man/nut-scanner.html)

# nut-scanner -U
Scanning USB bus.
[nutdev1]
	driver = "blazer_usb"
	port = "auto"
	vendorid = "FFFF"
	productid = "0000"
	product = "SMV1000CAI"
	serial = ""
	vendor = "APC by S.E."
	bus = "001"

Gdy ups podaje jakąś wartość a chcemy ją zmienić to wpisujemy np:

override.battery.charge.low = 30
override.battery.runtime.low =240

W przypadku UPSA podłączonego przez port szeregowy na Debianie trzeba zmienić dodać jeszcze użytkownika nut do grupy dialout:

# usermod -aG dialout nut

W pliku nut.conf ustawiamy MODE

# nano /etc/nut/nut.conf
MODE=standalone # Ten tryb jest przeznaczony do konfiguracji tylko lokalnej, z 1 zasilaczem UPS.
MODE=netserver # Tryb podobny do powyższego ale umożliwia dostęp do serwera nut z ze sieci

Dla MODE=netserver ustawiamy dodatkowo adres i port na którym ma nasłuchiwać

# nano /etc/nut/upsd.conf
LISTEN 127.0.0.1 3493
LISTEN x.x.x.x 3493 # Adres ip karty sieciowej na której będzie nasłuchiwał NUT

Konfiguracja hasła dla użytkowników (klientów serwera)

# nano /etc/nut/upsd.users
[monitor-master] 
password = haslo
upsmon master # dla klienta (monitora) który ma być masterem. Master to ten który wyłącza się ostatni po wyłączeniu wszystkich klientów slave

[monitor-slave]
password = HasloDlaKlientowSlave
upsmon slave # dla klientów (monitorów) slave

Teraz możemy uruchomić serwer nut

# systemctl enable nut-server
# systemctl start nut-server

p.s. Po zmianach w konfiguracji upsa w pliku /etc/ups.conf najlepiej uruchomić

# systemctl stop nut-server
# systemctl start nut-server
// zamiast
# systemctl restart nut-server

Aby odczytać dane z upsa uruchamiamy upsc podając jako parametr nazwe upsa wpisaną w pliku ups.conf

# upsc ups
battery.alarm.threshold: 0
battery.charge: 100.0
battery.charge.restart: 00
battery.date: 04/19/00
battery.runtime: 1020
battery.runtime.low: 120
battery.voltage: 13.85
battery.voltage.nominal: 012
device.mfr: APC
device.model: Back-UPS Pro 650
device.serial: NB0017242493
device.type: ups
driver.name: apcsmart
driver.parameter.cable: 940-0095B
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.parameter.sdtype: 2
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.internal: 3.1
input.frequency: 50.00
input.quality: FF
input.sensitivity: H
input.transfer.high: 253
input.transfer.low: 208
input.transfer.reason: line voltage notch or spike
input.voltage: 233.2
input.voltage.maximum: 233.2
input.voltage.minimum: 233.2
output.voltage: 233.2
output.voltage.nominal: 230
ups.delay.shutdown: 020
ups.delay.start: 000
ups.firmware: 12.5.I
ups.id: UPS_IDEN
ups.load: 047.4
ups.mfr: APC
ups.mfr.date: 04/19/00
ups.model: Back-UPS Pro 650
ups.serial: NB0017242493
ups.status: OL
ups.test.interval: 1209600
ups.test.result: NO

Konfiguracja klienta (monitora) nut

Na każdym urządzeniu które ma być podtrzymywane przez UPS musi być zainstalowany klient nut (monitor). Na komputerze do którego jest fizycznie podpięty ups oprócz serwera Nut musi być zainstalowany klient w trybie MASTER. Na pozostałych urządzeniach tylko klient w wersji SLAVE. Klient skonfigurowany jako MASTER zostanie wyłączony jako ostatni.

Na serwerze wraz z instalacją Nut zainstalował się również klient. Na pozostałych urządzeniach musimy go doinstalować.

# apt install nut-client

Konfiguracja klienta (monitora)

# nano /etc/nut/upsmon.conf

Dodajemy autentykacje do serwera nut

# MONITOR nazwa_ups_z_ups.conf@server_ip 1 uzytkownik_z_upsd.users PASSWORD [master|slave]
MONITOR ups@localhost 1 monitor-master haslo master # Wpis dla urządzenia master
MONITOR ups@x.x.x.x 1 monitor-slave HasloDlaKlientowSlave slave # Wpis dla urządzenia slave

Dodatkowo na urządzeniach SLAVE ustawiamy MODE

# nano /etc/nut/nut.conf
MODE=netclient

Teraz możemy uruchomić klienta Nut

# systemctl enable nut-client
# systemctl start nut-client

Testowanie

Aby wstępnie przetestować czy wszystko nam się wyłączy bez odłączania upsa od zasilania, na komputerze z podłączonym upsem uruchamiamy:

# usbmon -c fsd

System zostanie automatycznie zamknięty.

Jeżeli chcemy mieć pewność jak się zachowa po odłączeniu zasilania, nie czekając na rozładowanie upsa to w pliku /etc/nut/ups.conf zmieniamy

# nano /etc/nut/nut.conf 
override.battery.charge.low = 90

i uruchamiamy ponownie nut serwer

# systemctl stop nut-server
# systemctl start nut-server

Teraz możemy już odłączyć zasilanie od upsa i czekać na wyłączenie komputera lub komputerów, jeżeli mamy podłączonych więcej klientów (monitorów).