giovedì 26 settembre 2024

Debug traffic VOIP su Fortigate

Se all'interno della vostra LAN avete un centralino VOIP e ha problemi con il provider, questi sono i passaggi per un corretto troubleshooting
Dopo aver individuato le policy di traffico tra il centralino e provider, provare a cambiarle da Flow a Proxy
Provate a disabilitare la funzione ALG, di default è impostata in proxy, provare a metterla in kernel.
FW# config system settings
FW(settings)# set default-voip-alg-mode proxy-based/kernel-helper-based
Provate a cancellare il SIP helper
FW# config system session-helper
FW(session-helper)# show
FW(session-helper)# edit 13
        set name sip
        set protocol 17
        set port 5060
FW(session-helper)# delete 13 
Se queste soluzioni non dovessero funzionare, ripristinare come prima e procedere con il debug 
Verificare se la sessione viene correttamente instaurata:
FW# diagnose system session filter src <IP centralino>
FW# diagnose system session filter dst <IP provider>
FW# diagnose system session list
L'output che dovreste trovare è il seguente:
session info: proto=17 proto_state=01 duration=142250 expire=3596 timeout=3600 flags=00000000 sockflag=00000000 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ helper=rsh vlan_cos=255/255
state=local
statistic(bytes/packets/allow_err): org=9376719/61304/1 reply=3930213/32743/1 tuples=2
tx speed(Bps/kbps): 65/0 rx speed(Bps/kbps): 27/0
orgin->sink: org out->post, reply pre->in dev=13->0/0->13 gwy=0.0.0.0/10.5.27.238
hook=out dir=org act=noop 10.5.27.238:16844->173.243.132.165:514(0.0.0.0:0)
hook=in dir=reply act=noop 173.243.132.165:514->10.5.27.238:16844(0.0.0.0:0)
pos/(before,after) 0/(0,0), 0/(0,0)
misc=0 policy_id=0 auth_info=0 chk_client_info=0 vd=0
serial=0161f3cf tos=ff/ff app_list=0 app=0 url_cat=0
rpdb_link_id = 00000000
dd_type=0 dd_mode=0
Prestate attenzione al protocollo utilizzato e alla policy che viene usata. 
Se la sessione viene instaurata, vedere le chiamate attive
FW#diagnose sys sip-proxy calls list | grep -B7 -A3 <numero di telefono da filtrare>
  vdom 0 (root) vrf 0 call 7f5a40ed9600
    call-id: 9017997241972024165753@<IP provider>
    txn 7f5a40efa300 (INVITE)
      cseq 102 dir 1 state 11 status 200 expiry 143 HA 1
      i_session: 7f5a40e35000  r_session: 7f5a40e35000
      register: not-present
      from: sip:<numero sorgente>@10.39.31.123;user=phone
      to: sip:<numero destinazione>@10.39.31.20;user=phone
      src: <IP centralino>:5060
      dst: <IP provider>:5060
Se ancora ci sono problemi, provate a tracciare il flusso.
FW#  diagnose debug console timestamp enable
FW#  diagnose debug flow filter saddr <IP centralino>
FW#  diagnose debug flow show function-name enable
FW#  diagnose debug flow show iprope enable
FW#  diagnose debug enable
FW# diagnose debug flow trace start 1000
Prestare attenzione se nel debug compare un messaggio del genere
msg="iprope_in_check() check failed on policy 0, drop
potrebbe voler dire che l'IP che sta usando il centralino per uscire è usato da un VIP che ha l'ARP reply abilitato, la soluzione è disabilitare l'arp replay al VIP 

 

 

 

 

venerdì 9 dicembre 2022

Script Python per accesso agli switch Cisco

Di seguito uno script Python che esegue l'accesso a due switch (possibile estendere la lista aggiungendo più IP) e fa lo show version

Lo script è stato testato su ambiente Debian con Python 3.10

$python -m pip install netmiko   -> importare la libreria netmiko

$touch script_ssh_cisco.py         -> creare il file

$vi script_ssh_cisco.py

import netmiko
from netmiko import ConnectHandler
device = ["10.5.1.13", "10.5.1.11"]
for x in device:
    cisco = {
        'device_type': 'cisco_ios',
        'ip':   x,
        'username': 'admin',
        'password': 'password',
        'secret': 'password',
    }
    print(' ')
    print(x)
    net_connect =ConnectHandler(**cisco)
    net_connect.enable()
    output =net_connect.send_command('show version | include IOS')
    print(output)

alla sezione password sostituire "password" con la password dell'utente admin, sempre tra " "
alla sezione secret sostituire "password" con la password di enable, sempre tra " "

$chmod u+x script_ssh_cisco.py   -> dare i permessi di esecuzione
$python script_ssh_cisco.py          -> lanciare lo script
 
10.5.1.13
Cisco IOS Software, C2960L Software (C2960L-UNIVERSALK9-M), Version 15.2(6)E2b, RELEASE SOFTWARE (fc3)
 
10.5.1.11
IOS (tm) C2950 Software (C2950-I6K2L2Q4-M), Version 12.1(22)EA13, RELEASE SOFTWARE (fc2)

Autenticazione Radius su Cisco Catalyst

(config)# radius server Test

(config)# address ipv4 10.7.1.20 auth-port 1645 acct-port 1646 -> andiamo a definire IP e porte

 (config)# timeout 5- -> andiamo a definire quanti sec. attendere prima della ritrasmissione

 (config)# retransmit 2 -> andiamo a definire quanti tentativi deve fare verso il radius

 (config)# key *******


adesso andiamo a creare un gruppo dove metteremo all'interno il nostro server Radius, per resilienza si consiglia di configurare due server e aggiungerli entrambi al gruppo.

Io ho creato solo la parte di "authentication" in quanto la password di enable preferisco metterla di volta in volta. E' stato configurato l'account locale admin, in modo che se il radius non dovesse essere disponibile è possibile collegarsi in locale, dopo GRP-TEST è stato definito il metedo di backup che è local-case

(config)# username admin secret 5 $1$VRx0$divcXTBZeAQVN2IJSGV7n.

(config)# aaa new-model

!

(config)# aaa group server radius GRP-TEST

 server name Test

!

aaa authentication login default group GRP-TEST local-case

Successivamente è necessario configurare il servizio sul Server Windows, impostare le policy con gli IP autorizzati e la key, per la configurazione della parte Windows potete fare riferimento al post:

Authentication Fortinet with Radius

!!Attenzione" l'autenticazione tra switch e Radius avviene in PAP, quando si configura la policy è necessario inserire il flag su PAP

Autenticazione LDAP su server CentOS 7

La guida è per sistemi CentOS 7, ma credo che non ci siano problemi su CentOS 8 o derivate Debian
installare i pacchetti:
yum install openldap-clients nss-pam-ldapd

Procedere con l'autoconfigurazione:
authconfig --enableldap \
--enableldapauth \
--ldapserver=test.local o indirizzo IP \
--ldapbasedn="dc=test,dc=local" \
--enablemkhomedir \
--update

Il comando "enablemkhomedir" farà in modo che all'accesso verrà creata la /home directory.
Creare su active directory un utente di servizio per l'integrazione e copiare il "distinguishedName"


Modificare il file /etc/nslcd.conf
# The distinguished name of the search base.
base dc=test,dc=local
# The distinguished name to bind to the server with.
# Optional: default is to bind anonymously.

binddn inserire il distinguishedName precedentemente copiato
binddn cn=ldaplinux,ou=Servizio,dc=test,dc=local
# The credentials to bind with.
# Optional: default is no credentials.
# Note that if you set a bindpw you should check the permissions of this file.
bindpw "inserire la password dell'account di servizio"
bindpw passwd

deccomentare tutta la parte riferita a Active Directory
# Mappings for Active Directory
pagesize 1000
referrals off
idle_timelimit 800
filter passwd (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))
map    passwd uid              sAMAccountName
map    passwd homeDirectory    unixHomeDirectory
map    passwd gecos            displayName
filter shadow (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))
map    shadow uid              sAMAccountName
map    shadow shadowLastChange pwdLastSet
filter group  (objectClass=group)

Salvare e uscire
Riavviare il servizio:
#systemctl restart nslcd

A questo punto è necessario modificare gli attributi per l'account che dovrà autenticarsi.





Sulla macchina Linux verificare l'account modiificato su Active Directory
#id adm_ep_test
uid=5000(adm_ep_test) gid=100(users) gruppi=100(users)

Fare un test d'accesso:
#ssh adm_ep_test@localhost
adm_ep_test@localhost's password: 
Creating directory '/home/adm_ep_test'.
Last login: Mon May  9 15:17:42 2022 from ::1









 

giovedì 5 maggio 2022

Backup Switch HP e Aruba

Una soluzione a costo zero per il backup degli switch HP e Aruba, sta nell'usare SFTP. Per fare ciò è necessaria una macchina Windows che possa raggiungere gli switch.

Nel mio caso, ho installato una VM con Windows Server 2019 Datacenter

I programmi necessari sono:

WinSCPNotepad ++Backup_Switch

Scaricare tutti e tre, installare WinSCP e Notepad ++, estrarre il file zip e salvarlo possibilmente su un percorso differente da C:\ (nel mio caso, ho aggiunto un secondo disco e messo sotto E:\)

Per prima cosa è necessario preparare lo switch alla esportazione della configurazione in SFTP

entrare in config

(config)# crypto key generate ssh

(config)# ip ssh

(config)# ip ssh filetransfer

!!!Attenzione!!! abilitando ip ssh file transfer verrà abilitato SFTP ma verrà disabilitato TFTP, quindi per aggiornare i firmware bisognerà utilizzare un SFTP Server.

(config)# exit

# write memory

Visto che è stato abilitato l'SSH si consiglia di disabilitare il telnet:

(config)# no telnet-server

in quanto è un protocollo non sicuro

A questo punto accedere tramite WinSCP allo switch


Andare su Sessione e cliccare su Informazione server/protocollo


Copiare il Fingerprint SHA-256 e l'Algoritmo, cliccare su Sessione e terminarla.
Aprire successivamente il file .csv che era presente nel file ZIP che è stato precedentemente estratto e compilare come nella figura qui sotto, sarà necessario inserire hostname o IP address, user, password, algoritmo e chiave SHA

E' necessario modificare i file Backup Network Switches.cmd e Backup Network Switches.ps1 inserendo i percorsi corretti dove sono presenti il file switches.csv e la cartella Backups.

A questo punto lanciando il file Backup Network Switches.cmd, lo script si collegherà allo switch e salverà la configurazione nella cartella Backup.
A completamente di tutto, si può impostare uno schedular per lanciare lo script ogni giorno o come meglio si vuole schedulare il backup.

Esempio:



















mercoledì 4 maggio 2022

Vecchie connessioni samba con Linux

 Se ci si connette a vecchie connessioni samba è necessario abilitare smb1

modificare il file:

/etc/samba/smb.conf

aggiungere sotto [global]

server min protocol = NT1
client min protocol = NT1
allow insecure wide links = yes

Se invece si cerca di accedere da un server/pc Windows a una condivisione samba su Linux e l'autenticazione non dovesse funzionare, è necessario fare un troubleshooting del problema. Nel mio caso sulla macchina linux ho eseguito un tcpdump per poi analizzarlo con wireshark.

Il comando da dare è:

tcpdump -i "nome interfaccia" -w /home/emy/sniffer.pcap

provare a fare l'autenticazione e poi analizzarlo aprendo il file con Wireshark


Nel mio caso ho visto che il server Windows faceva una richiesta NTLMSSP ma il pc linux la rifiutava, restituendo il messaggio "Error: STATUS_MORE_PROCESSING_REQUIRED"

per risolvere il problema, nel file smb.conf aggiungere sempre sotto [global]

ntlm auth = yes



Resize dischi VM



se il disco è in xfs il resize può essere fatto a caldo

con il comando "blkid" vedo se è in xfs

verificare il disco a quale storage domain appartiene

verificare lo spazio libero

andare sulla VM -> disco -> modificare -> Estendi la dimensione di > estendere di quanti giga vogliamo

andare in ssh sulla macchina

[root@test]# fdisk -l

Disk /dev/sdb: 171.8 GB, 171798691840 bytes, 335544320 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x559918b3


Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048   335544319   167771136   83  Linux


Disk /dev/sda: 80.5 GB, 80530636800 bytes, 157286400 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x00035d0f


Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *        2048     2099199     1048576   83  Linux

/dev/sda2         2099200   157286366    77593583+  8e  Linux LVM


estendere con growpart

growpart /dev/ sda 2


a questo punto abbiamo il Volume Group esteso e possiamo estendere il Logical Volume

lvextend -r -L +10G /dev/mapper/centos-root  -> estensione del Logical Volume

esempio di un estensione di un disco di boot xfs in LVM:

estendere il disco sul Virtual Manager

vgs

growpart /dev/sda 2

pvresize /dev/sda2

vgs

lvextend -r -L +10G /dev/mapper/centos-root


Se la partizione non è LVM:

xfs_growfs /home/jboss/


Estensione dei dischi ext4

aumentare lo spazio del disco sull'hypervisor

fdisk -lc /dev/vdb

resize2fs  -p /dev/vdb

Estensione disco Ubuntu con partizione LVM su dischi iscsi

nel mio caso ho voluto estendere la partizione di / che era in LVM

prima di tutto fare:

fdisk -l

copiare l'output

Esteso il disco sull'hyp di VMware

ls /sys/class/scsi_device/

echo 1 > /sys/class/scsi_device/32\:0\:0\:0/device/rescan

a questo punto se faccio:

fdisk -l /dev/sda  -> otterrò un errore sulla tabella delle partizioni

parted -l

Fix

Creare la nuova partizione

fdisk /dev/sda

n

p

inserire il nuovo numero partizione, che dovrebbe già assegnarlo lui automaticamente

inserire il primo valore del settore, che corrisponde al''ultimo +1

root@zabbix:~# fdisk -l /dev/sda

Device               Start                End         Sectors     Size     Type

/dev/sda1           2048             4095           2048        1M      BIOS boot

/dev/sda2           4096       2101247      2097152       1G       Linux filesystem

/dev/sda3      2101248    31455231    29353984       14G     Linux filesystem


ad esempio, se sto creando la partizione 4 il primo settore sarà 31455232 (ma verrà comunque suggerito di default), inserire l'ultimo settore

t  -> tipo partizione

8e -> LVM

w → salvare


ls -ltra /dev/sd*  -> vediamo la nuova partizione creata (/dev/sda4)

pvcreate /dev/sda4   ->  creiamo il volume fisico

vgextended "nome volume" /dev/sda4   -> estendiamo il volume group

lvextend -r -L +5G /dev/mapper/ubuntu--vg-ubuntu--lv   -> estendiamo il logical volume

Debug traffic VOIP su Fortigate

Se all'interno della vostra LAN avete un centralino VOIP e ha problemi con il provider, questi sono i passaggi per un corretto troublesh...