informatique:fortinet:start
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
informatique:fortinet:start [2020/07/28 14:22] – [Routage] pteu | informatique:fortinet:start [2025/02/10 08:58] (current) – [Reset factory] restauration pteu | ||
---|---|---|---|
Line 7: | Line 7: | ||
======Système====== | ======Système====== | ||
- | En sortie d' | + | En sortie d' |
+ | |||
+ | On peut lister toutes les commandes disponibles avec la commande '' | ||
<code bash> | <code bash> | ||
Line 16: | Line 18: | ||
# récupérer la charge du système et son uptime | # récupérer la charge du système et son uptime | ||
- | get system performance status | + | (global) |
# affiche les informations des processus les plus consommateurs en CPU/mem | # affiche les informations des processus les plus consommateurs en CPU/mem | ||
Line 37: | Line 39: | ||
diagnose sys kill 11 <PID> | diagnose sys kill 11 <PID> | ||
</ | </ | ||
+ | |||
+ | =====Redémarrage===== | ||
Pour redémarrer ou éteindre le système : | Pour redémarrer ou éteindre le système : | ||
Line 44: | Line 48: | ||
</ | </ | ||
- | Ordre de traitement d' | + | Il n'est pas possible de planifier |
+ | <code bash> | ||
+ | config global | ||
+ | config sys global | ||
+ | set daily-restart enable | ||
+ | set restart-time 04:13 | ||
+ | end | ||
+ | </ | ||
+ | Attention, il redémarrera donc tous les jours à 4h13 ! | ||
+ | |||
+ | Autre possibilité : configurer une authentification SSH par clé ([[informatique: | ||
+ | <code bash> | ||
+ | ssh admin@firewall " | ||
+ | > execute reboot | ||
+ | > y" | ||
+ | </ | ||
+ | |||
+ | |||
+ | =====Ordre de traitement des paquets===== | ||
<code bash> | <code bash> | ||
Step #1 - Ingress | Step #1 - Ingress | ||
Line 115: | Line 138: | ||
# afficher l' | # afficher l' | ||
diagnose hardware sysinfo shm | diagnose hardware sysinfo shm | ||
+ | </ | ||
+ | |||
+ | ====Power/ | ||
+ | |||
+ | Information sur les alimentations : | ||
+ | <code bash> | ||
+ | diagnose hardware deviceinfo psu | ||
+ | PSU 01: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | PSU 02: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ! | ||
+ | execute sensor detail | ||
</ | </ | ||
Line 138: | Line 184: | ||
set mtu-override enable | set mtu-override enable | ||
set mtu 9000 | set mtu 9000 | ||
+ | next | ||
+ | # modifier la TCP MSS (doit être = MTU - 40 (20 d' | ||
+ | config system interface | ||
+ | edit " | ||
+ | set tcp-mss 8960 | ||
+ | next | ||
+ | </ | ||
+ | <WRAP center round tip 80%> | ||
+ | Rappel: la MTU IP est de 1500 octets par défaut. Pour la vérifier entre 2 machines, il faut lancer un PING en interdisant la fragmentation (bit " | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | # Sous Linux: | ||
+ | ping -M do -s 1473 10.10.10.10 | ||
+ | > ping: local error: Message too long, mtu=1500 | ||
+ | # Sous Windows: | ||
+ | ping -f -l 1473 | ||
+ | > Le paquet doit être fragmenté mais paramétré DF. | ||
+ | # Sous FortiOS : | ||
+ | execute ping-options df-bit yes | ||
+ | execute ping-options data-size 1473 | ||
+ | execute ping 10.10.10.10 | ||
+ | > sendto failed | ||
</ | </ | ||
+ | //A noter que les erreurs affichées ci-dessus sont locales car détectées directement par ma machine cliente, dans la mesure ou l'on dépasse sa propre MTU. En général ce test est réalisé pour détecter la MTU sur le réseau entre 2 machines distantes quand on suspecte une MTU réduite (< 1500).// | ||
Afficher les caractéristiques des modules GBIC/SFP* connectés et reconnus : | Afficher les caractéristiques des modules GBIC/SFP* connectés et reconnus : | ||
Line 288: | Line 358: | ||
edit admin | edit admin | ||
set password < | set password < | ||
- | end | + | |
</ | </ | ||
Line 317: | Line 387: | ||
</ | </ | ||
+ | Pour lister les IPs/logins bloqués (en quarantaine) : dans la GUI, " | ||
+ | <code bash> | ||
+ | diagnose user quarantine list | ||
+ | </ | ||
+ | |||
+ | Et pour débloquer un blocage : | ||
+ | <code bash> | ||
+ | diagnose user quarantine delete src4 x.x.x.x | ||
+ | </ | ||
+ | |||
+ | ====Configurer un serveur Radius==== | ||
+ | |||
+ | Pour centraliser les comptes/ | ||
+ | |||
+ | 1) déclarer le serveur Radius sur le VDOM de management (root par défaut) : en GUI c'est dans "User & Authentication > RADIUS servers" | ||
+ | <code bash> | ||
+ | config user radius | ||
+ | edit " | ||
+ | set server " | ||
+ | set secret blablabla | ||
+ | next | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | 2) créer le groupe "Admin fortis" | ||
+ | <code bash> | ||
+ | config user group | ||
+ | edit "Admin fortis" | ||
+ | set member " | ||
+ | next | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | 3) Créer chaque login en mode global : créer le login dans " | ||
+ | <code bash> | ||
+ | config system admin | ||
+ | edit " | ||
+ | set remote-auth enable | ||
+ | set accprofile " | ||
+ | set vdom " | ||
+ | set remote-group "Admin fortis" | ||
+ | set password ENC MASCARADE | ||
+ | next | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | NB : on pourra définir un mot de passe de secours pour chaque compte, en cas d' | ||
+ | |||
+ | Diagnostique : | ||
+ | <code bash> | ||
+ | diagnose test auth radius pap < | ||
+ | </ | ||
======Configuration====== | ======Configuration====== | ||
Line 386: | Line 508: | ||
config system global | config system global | ||
set hostname mon_forti | set hostname mon_forti | ||
+ | set timezone 28 | ||
+ | #28 (GMT+1:00) Brussels, Copenhagen, Madrid, Paris | ||
| | ||
Line 425: | Line 549: | ||
</ | </ | ||
- | =====Sauvegarde===== | + | =====Enregistrement de la configuration===== |
- | Il existe 3 modes de sauvegarde | + | Il existe 3 modes d' |
* '' | * '' | ||
- | * '' | + | * '' |
- | * '' | + | * '' |
<code bash> | <code bash> | ||
config global | config global | ||
| | ||
- | set cfg-save revert | + | set cfg-save revert |
- | set cfg-revert-timeout 300 | + | set cfg-revert-timeout 300 |
end | end | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
- | il faut bien penser à désactiver le mode revert après la maintenance sinon il redémarrera à chaque modif (et ne la prendra pas en compte) ! | + | //Ça va sans dire, mais ça va mieux en le disant// : il faut bien désactiver le mode revert après la maintenance sinon le firewall |
</ | </ | ||
+ | =====Sauvegarde de la configuration===== | ||
+ | |||
+ | Les fortis peuvent __sauvegarder__ leur configuration (l' | ||
+ | <code bash> | ||
+ | config global | ||
+ | config system global | ||
+ | set revision-backup-on-logout | ||
+ | set revision-image-auto-backup enable # sauvegarde lors d'une mise à jour | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | </ | ||
+ | On retrouvera toutes les versions dans la webUI en cliquant sur l’icône en haut à droite : < | ||
======Routage====== | ======Routage====== | ||
- | Afficher la table de routage courante : | ||
<code bash> | <code bash> | ||
+ | # lister toutes les adresses IP du firewall | ||
+ | diag ip address list | ||
+ | IP=192.168.1.99-> | ||
+ | [..] | ||
+ | |||
+ | # lister les IPs virtuelles : VIPs et NAT-pools | ||
+ | diag firewall iplist list | ||
+ | |||
+ | # Afficher la table de routage : | ||
get router info routing-table details | get router info routing-table details | ||
Line 484: | Line 629: | ||
</ | </ | ||
+ | En webUI on peut voir la table de routage dans le " | ||
+ | |||
+ | {{ : | ||
=====Static===== | =====Static===== | ||
Line 502: | Line 650: | ||
>the " | >the " | ||
source : [[http:// | source : [[http:// | ||
+ | |||
=====OSPF===== | =====OSPF===== | ||
Line 541: | Line 690: | ||
set router-id 10.0.0.15 | set router-id 10.0.0.15 | ||
set passive-interface " | set passive-interface " | ||
+ | # annoncer sa route statique par défaut dans l' | ||
+ | set default-information-originate enable | ||
+ | set default-information-metric-type 1 | ||
end | end | ||
</ | </ | ||
Line 572: | Line 724: | ||
# Debug | # Debug | ||
# | # | ||
+ | #diagnose ip router ospf packet hello enable | ||
diagnose ip router ospf all enable | diagnose ip router ospf all enable | ||
diagnose ip router ospf level info | diagnose ip router ospf level info | ||
+ | diagnose debug cli 0 | ||
+ | diagnose debug console timestamp enable | ||
diagnose debug enable | diagnose debug enable | ||
# nettoyage du debug | # nettoyage du debug | ||
diagnose ip router ospf all disable | diagnose ip router ospf all disable | ||
+ | diagnose debug disable | ||
# redémarrer le processus OSPF | # redémarrer le processus OSPF | ||
Line 591: | Line 747: | ||
====Agrégation de routes==== | ====Agrégation de routes==== | ||
- | Pour simplifier les tables de routage, on peut agréger les routes sur les ABR (Area Border Router) ou les routeurs | + | Pour simplifier les tables de routage, on peut agréger les routes sur les ABR (Area Border Router) ou les ASBR (Autonomous System Border Router). Cela consiste, sur ledit routeur, à fusionner plusieurs annonces en une seule, de préfixe plus court (par exemple 10.0.0.0/24 et 10.0.1.0/24 => 10.0.0.0**/ |
- | L' | + | L' |
* sur un ABR, pour agréger des routes apprises de l'aire 1 (c'est un exemple) : | * sur un ABR, pour agréger des routes apprises de l'aire 1 (c'est un exemple) : | ||
<code bash> | <code bash> | ||
config router ospf | config router ospf | ||
- | | + | |
- | edit 0.0.0.1 | + | edit 0.0.0.1 |
- | config range | + | config range |
- | edit 1 | + | edit 0 |
- | set prefix 10.0.0.0 255.255.254.0 | + | set prefix 10.0.0.0 255.255.254.0 |
- | end | + | |
end | end | ||
+ | end | ||
end | end | ||
</ | </ | ||
- | * sur un ASBR, pour agréger des routes | + | * sur un ASBR, pour agréger des routes redistribuées |
<code bash> | <code bash> | ||
config router ospf | config router ospf | ||
- | | + | |
- | edit 1 | + | edit 0 |
- | set prefix 10.0.0.0 255.255.254.0 | + | set prefix 10.0.0.0 255.255.254.0 |
- | end | + | end |
end | end | ||
</ | </ | ||
- | Ces routes sont visibles dans la table de routage sous la forme : | + | Ces routes sont visibles dans la table de routage |
<code bash> | <code bash> | ||
get router info routing-table ospf | get router info routing-table ospf | ||
Line 624: | Line 780: | ||
</ | </ | ||
- | source | + | On voit les réseaux dans la database |
+ | <code bash> | ||
+ | get router info ospf database brief | ||
+ | [..] | ||
+ | Summary Link States (Area 0.0.0.0) | ||
+ | |||
+ | Link ID ADV Router | ||
+ | 10.0.0.0 | ||
+ | [..] | ||
+ | |||
+ | |||
+ | get router info ospf database summary lsa 10.0.0.0 | ||
+ | [..] | ||
+ | Summary Link States (Area 0.0.0.0) | ||
+ | |||
+ | LS age: 309 | ||
+ | Options: 0x2 (*|-|-|-|-|-|E|-) | ||
+ | LS Type: summary-LSA | ||
+ | Link State ID: 10.0.0.0 (summary Network Number) | ||
+ | Advertising Router: 10.0.10.1 | ||
+ | LS Seq Number: 800002df | ||
+ | Checksum: 0x60e2 | ||
+ | Length: 28 | ||
+ | Network Mask: /23 | ||
+ | TOS: 0 Metric: 11 | ||
+ | </ | ||
+ | |||
+ | sources : | ||
+ | * [[http:// | ||
+ | * https:// | ||
====Redistribution de route==== | ====Redistribution de route==== | ||
Line 653: | Line 838: | ||
# préciser l' | # préciser l' | ||
config router route-map | config router route-map | ||
- | edit " | ||
- | next | ||
edit " | edit " | ||
config rule | config rule | ||
Line 672: | Line 855: | ||
end | end | ||
</ | </ | ||
+ | |||
+ | ====Tips==== | ||
+ | |||
+ | ===MTU mismatch=== | ||
+ | |||
+ | A partir d'une certaine version de fortiOS (v6 peut-être ?), l’algorithme de calcul des MTUs des tunnels IPSec a changé et ne tombe plus sur les mêmes valeurs que les précédentes versions. De ce fait un upgrade ou l' | ||
+ | <code bash> | ||
+ | config router ospf | ||
+ | config ospf-interface | ||
+ | edit interf_X | ||
+ | set mtu-ignore enable | ||
+ | end | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | Il est aussi possible de forcer la MTU sur l' | ||
+ | <code bash> | ||
+ | config router ospf | ||
+ | config ospf-interface | ||
+ | edit interf_X | ||
+ | set mtu 2000 | ||
+ | end | ||
+ | end | ||
+ | </ | ||
+ | Ref : [[https:// | ||
=====BGP===== | =====BGP===== | ||
Line 718: | Line 926: | ||
diagnose debug enable | diagnose debug enable | ||
- | # ré-établir l' | ||
- | configure bgp neighbor 10.0.200.92 soft-reset in | ||
# clearer toutes les connexions BGP | # clearer toutes les connexions BGP | ||
execute router clear bgp all | execute router clear bgp all | ||
</ | </ | ||
+ | |||
+ | Article plus détaillé : [[informatique: | ||
=====PBR===== | =====PBR===== | ||
Line 753: | Line 961: | ||
=======Sessions====== | =======Sessions====== | ||
- | Le terme de session s' | + | Le terme de session s' |
<code bash> | <code bash> | ||
Line 766: | Line 974: | ||
<code bash> | <code bash> | ||
# pour afficher les sessions HTTP ouvertes depuis la machine 10.0.0.2 | # pour afficher les sessions HTTP ouvertes depuis la machine 10.0.0.2 | ||
+ | diagnose sys session filter proto 6 | ||
diagnose sys session filter src 10.0.0.2 | diagnose sys session filter src 10.0.0.2 | ||
diagnose sys session filter dport 80 | diagnose sys session filter dport 80 | ||
Line 777: | Line 986: | ||
diagnose sys session filter | diagnose sys session filter | ||
- | # pour supprimer toutes les sessions **matchant | + | # pour supprimer toutes les sessions **matchant |
diagnose sys session clear | diagnose sys session clear | ||
- | # ! inutile de préciser qu' | + | # ! inutile de préciser qu' |
</ | </ | ||
Les flags : | Les flags : | ||
- | * '' | + | * '' |
* si celle-ci est toujours valide, il supprime le flag '' | * si celle-ci est toujours valide, il supprime le flag '' | ||
* sinon il la flag '' | * sinon il la flag '' | ||
+ | Pour modifier les timeouts par défaut (3600 secondes = 1 heure par défaut) : | ||
+ | <code bash> | ||
+ | config system session-ttl | ||
+ | set default 1800 | ||
+ | end | ||
+ | </ | ||
+ | Modifier le timeout d'un type de session, par exemple des flux HTTP : | ||
+ | <code bash> | ||
+ | config system session-ttl | ||
+ | config port | ||
+ | edit 80 | ||
+ | set protocol 6 | ||
+ | set start-port 80 | ||
+ | set end-port 80 | ||
+ | set timeout 1800 | ||
+ | next | ||
+ | end | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | Enfin, il est aussi possible de personnaliser le TTL de sessions dans les objets service du firewall (ici ports tcp/80 et 8080) : | ||
+ | <code bash> | ||
+ | config firewall service custom | ||
+ | edit " | ||
+ | set tcp-portrange 80 8080 | ||
+ | set session-ttl 1800 | ||
+ | next | ||
+ | end | ||
+ | </ | ||
=======Firewall====== | =======Firewall====== | ||
Line 976: | Line 1214: | ||
</ | </ | ||
- | Normalement l'IP de management du master devient l'IP virtuelle d' | + | Normalement l'IP de management du master devient l'IP virtuelle d' |
<code bash> | <code bash> | ||
- | # se connecter sur le membre d'id=1 du HA à partir du master | + | # se connecter sur le membre d'id=1 du HA à partir du master |
- | execute ha manage 1 | + | execute ha manage 1 < |
</ | </ | ||
Line 1004: | Line 1242: | ||
</ | </ | ||
- | ====Vérifications==== | + | ====Diagnostique==== |
+ | Rappel: pour obtenir un prompt sur le membre passif d'un cluster, il faut se connecter en SSH sur le membre actif, puis : | ||
<code bash> | <code bash> | ||
- | # activer/ | + | c g |
+ | execute ha manage <ID> < | ||
+ | # ex: execute ha manage 1 networkadmin | ||
+ | </code> | ||
+ | |||
+ | //à réaliser en mode global si les VDOMs sont activés.// | ||
+ | <code bash> | ||
+ | # état du HA (état de la configuration et status) | ||
+ | get system ha | ||
+ | get system ha status | ||
+ | |||
+ | # sensiblement identique à la commande précédente | ||
+ | diagnose sys ha status | ||
+ | </ | ||
+ | |||
+ | Si désynchro, détermination de la zone non synchro (également visible en GUI en plaçant le curseur sur "Not Synchronized" | ||
+ | <code bash> | ||
+ | # détermination du VDOM (ou global) non synchro | ||
+ | diagnose sys ha checksum cluster | ||
+ | |||
+ | # pour le VDOM non synchro (ex: global), détermination de la portion de conf non synchro | ||
+ | diagnose sys ha checksum show global | ||
+ | [...] | ||
+ | firewall.internet-service-name: | ||
+ | rule.fmwp: 00000000000000000000000000000000 | ||
+ | </ | ||
+ | à comparer avec la conf du membre désynchro; dans mon cas j'ai 2 portions de conf désynchro. | ||
+ | |||
+ | Plus rapidement, si comme dans l' | ||
+ | <code bash> | ||
+ | config system console | ||
+ | set output standard | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | On peut resynchroniser la conf en saisissant manuellement les commandes manquantes sur le bon member ; si cela ne se fait pas tout seul (attendre quelques minutes quand même...), on relance le process de synchro : | ||
+ | < | ||
+ | # désactiver/ | ||
execute ha synchro stop | execute ha synchro stop | ||
execute ha synchro start | execute ha synchro start | ||
- | # reset l'âge des membres d'un cluster (pour palier certains vieux bug..) | + | diagnose sys ha checksum recalculate |
- | diagnose sys ha reset-uptime | + | |
</ | </ | ||
- | Diagnostique | + | Si toujours KO, remonter le cluster from scratch pour resynchroniser le backup sur le primaire (pas de coupure normalement, |
+ | |||
+ | |||
+ | ====Diag avancé / prise de trace==== | ||
<code bash> | <code bash> | ||
- | # état du HA | + | # sur le primaire |
- | get system | + | execute |
- | # informations détaillées | + | diag debug reset |
- | get system | + | diag debug enable |
+ | diag debug console timestamp enable | ||
+ | diag debug application hasync -1 | ||
+ | diag debug application hatalk -1 | ||
+ | execute | ||
- | # cmdes avancées (tshoot) | + | # sur le backup |
- | diagnose sys ha status | + | diag debug reset |
+ | diag debug enable | ||
+ | execute | ||
+ | diag debug console timestamp enable | ||
+ | diag debug application hasync -1 | ||
+ | diag debug application hatalk -1 | ||
+ | execute ha synchronize start | ||
+ | </ | ||
+ | A la fin du process (10m), désactiver le debug : | ||
+ | <code bash> | ||
+ | diag debug disable | ||
+ | diag debug reset | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | # diag avancé | ||
diagnose sys ha dump 1 | diagnose sys ha dump 1 | ||
diagnose sys ha dump 2 | diagnose sys ha dump 2 | ||
Line 1032: | Line 1329: | ||
diagnose sys ha showcsum 2 | diagnose sys ha showcsum 2 | ||
diagnose sys ha showcsum 3 | diagnose sys ha showcsum 3 | ||
+ | |||
+ | # relancer le HA " | ||
+ | fnsysctl killall hasync | ||
+ | fnsysctl killall hatalk | ||
</ | </ | ||
+ | Liens : | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
======Log / Syslog====== | ======Log / Syslog====== | ||
Line 1064: | Line 1369: | ||
# filtrer sur une certaine catégorie | # filtrer sur une certaine catégorie | ||
execute log filter category event | execute log filter category event | ||
+ | |||
# on peut aussi filtrer sur le contenu du message de log : | # on peut aussi filtrer sur le contenu du message de log : | ||
execute log filter field msg Heartbeat | execute log filter field msg Heartbeat | ||
+ | |||
# défini le nb de ligne affichées | # défini le nb de ligne affichées | ||
execute log filter view-lines 50 | execute log filter view-lines 50 | ||
+ | |||
# en fonction de la date | # en fonction de la date | ||
execute log filter field date 2014-05-06 2014-05-07 | execute log filter field date 2014-05-06 2014-05-07 | ||
+ | |||
# voir les filtres | # voir les filtres | ||
execute log filter dump | execute log filter dump | ||
+ | category: traffic | ||
+ | device: memory | ||
+ | start-line: 11 | ||
+ | view-lines: 10 | ||
+ | max-checklines: | ||
+ | HA member: | ||
+ | log search mode: on-demand | ||
+ | pre-fetch-pages: | ||
+ | Oftp search string: | ||
# afficher les logs : | # afficher les logs : | ||
Line 1125: | Line 1443: | ||
# générer des messages de log pour test : | # générer des messages de log pour test : | ||
diagnose log test | diagnose log test | ||
+ | </ | ||
+ | |||
+ | Pour debugguer le process de gestion des logs, miglogd : | ||
+ | <code bash> | ||
+ | diagnose debug application miglogd -1 | ||
+ | diagnose debug enable | ||
</ | </ | ||
Line 1132: | Line 1456: | ||
</ | </ | ||
+ | =====Docs===== | ||
+ | * [[https:// | ||
======Mail d' | ======Mail d' | ||
Line 1255: | Line 1581: | ||
</ | </ | ||
+ | =====update via webproxy===== | ||
+ | Pour les Fortigate qui n'ont pas un accès direct à Internet, on peut configurer l' | ||
+ | <code bash> | ||
+ | config system autoupdate tunneling | ||
+ | set status enable | ||
+ | set address " | ||
+ | set port 3128 | ||
+ | end | ||
+ | # éventuellement, | ||
+ | config system fortiguard | ||
+ | set source-ip 10.0.178.1 | ||
+ | end | ||
+ | </ | ||
+ | src: https:// | ||
+ | |||
+ | Si le Fortiguard ne se met pas à jour, on peut diagnostiquer avec : | ||
+ | <code bash> | ||
+ | # depuis le VDOM d' | ||
+ | execute ping update.fortiguard.net | ||
+ | |||
+ | diagnose test update info | ||
+ | |||
+ | diagnose debug enable | ||
+ | diagnose debug application update 255 | ||
+ | execute update-ase | ||
+ | execute update-av | ||
+ | execute update-ips | ||
+ | </ | ||
======Diagnostique et debug====== | ======Diagnostique et debug====== | ||
Line 1267: | Line 1621: | ||
# ~get tech : diagnostique complet à envoyer au support aussi | # ~get tech : diagnostique complet à envoyer au support aussi | ||
diagnose debug report | diagnose debug report | ||
+ | execute tac report | ||
# debugguer une fonction (~un process) | # debugguer une fonction (~un process) | ||
Line 1328: | Line 1683: | ||
diagnose debug cli 0 | diagnose debug cli 0 | ||
diagnose debug flow show console enable | diagnose debug flow show console enable | ||
+ | # bonus: encore plus verbeux | ||
+ | diagnose debug flow show function-name enable | ||
+ | diagnose debug flow show iprope enable | ||
# filtrer sur une adresse (source, dest) | # filtrer sur une adresse (source, dest) | ||
Line 1342: | Line 1700: | ||
diagnose debug flow trace stop | diagnose debug flow trace stop | ||
diagnose debug disable | diagnose debug disable | ||
- | |||
- | # bonus | ||
- | diagnose debug flow show function-name enable | ||
- | diagnose debug flow show iprope enable | ||
</ | </ | ||
Line 1441: | Line 1795: | ||
diagnose debug app hatalk 255 | diagnose debug app hatalk 255 | ||
+ | |||
+ | # Afficher les paquets fragmentés seulement (MF=1 ou avec un offset de fragmentation, | ||
+ | diagnose sniffer packet any ' | ||
# Afficher les paquets ICMP de type 3 code 4 | # Afficher les paquets ICMP de type 3 code 4 | ||
- | # (fragmentation nécessaire mais impossible à cause du drapeau (flag) DF) | + | # (fragmentation nécessaire |
diagnose sniffer packet any ' | diagnose sniffer packet any ' | ||
# alternative : | # alternative : | ||
diagnose sniffer packet any ' | diagnose sniffer packet any ' | ||
</ | </ | ||
- | |||
=====Packet capture===== | =====Packet capture===== | ||
Line 1463: | Line 1819: | ||
</ | </ | ||
+ | =====iperf===== | ||
+ | |||
+ | Les Fortigates intègrent un client iperf (accessible à partir du mode global), qui permet de réaliser des tests de débit entre 2 interfaces du même forti, ou avec un serveur externe. | ||
+ | <code bash> | ||
+ | conf global | ||
+ | # test avec un serveur iperf externe | ||
+ | diagnose traffictest client-intf wan1 | ||
+ | diagnose traffictest port 5201 | ||
+ | diagnose traffictest run -c 10.0.1.24 | ||
+ | |||
+ | # test entre l' | ||
+ | diagnose traffictest client-intf wan1 | ||
+ | diagnose traffictest server-intf wan2 | ||
+ | diagnose traffictest run | ||
+ | </ | ||
+ | |||
+ | La plupart des options classiques d' | ||
+ | |||
+ | Depuis les versions 7.0 et 7.2, on peut configurer un Fortigate également en mode serveur : | ||
+ | <code bash> | ||
+ | # activer la fonction en mode global | ||
+ | config system global | ||
+ | set speedtest-server enable | ||
+ | end | ||
+ | # sur l' | ||
+ | config system interface | ||
+ | edit wan1 | ||
+ | append allowaccess speed-test | ||
+ | next | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | Par sécurité il n'est pas recommandé de laisser activé le mode serveur au-delà des tests de qualif/ | ||
+ | |||
+ | |||
+ | |||
+ | =====Mécanismes de protection===== | ||
+ | |||
+ | ====Conserve mode==== | ||
+ | |||
+ | Le **conserve mode** est un mécanisme de protection qui est enclenché lorsque le système n'a plus assez de mémoire partagée disponible. Cela a pour conséquence de désactiver l'AV et les changements de configuration, | ||
+ | |||
+ | On peut configurer l' | ||
+ | <code bash> | ||
+ | config system global | ||
+ | set av-failopen {off | pass | one-shot | idledrop} | ||
+ | </ | ||
+ | * off : les sessions ouvertes continent mais les nouvelles sont bloquées ; si une session ouverte nécessite l' | ||
+ | * pass : bypass l' | ||
+ | * one-shot : pareil que " | ||
+ | * idledrop : le forti va chercher a libérer de la mémoire en coupant les sessions du host qui en a le plus d' | ||
+ | |||
+ | ====Session removal==== | ||
+ | |||
+ | Le **session removal** est un mode qui s' | ||
+ | |||
+ | Commandes de debug: | ||
+ | <code bash> | ||
+ | diagnose hardware sysinfo shm | ||
+ | SHM counter: | ||
+ | SHM allocated: | ||
+ | SHM total: | ||
+ | conservemode: | ||
+ | shm last entered: | ||
+ | system last entered: | ||
+ | SHM FS total: | ||
+ | SHM FS free: | ||
+ | SHM FS avail: | ||
+ | SHM FS alloc: | ||
+ | |||
+ | get sys perf stat | grep Memory | ||
+ | Memory states: 86% used # <- raison du conserve mode | ||
+ | |||
+ | diag sys top | ||
+ | |||
+ | diag hardware sysinfo memory | ||
+ | </ | ||
+ | |||
+ | Tuning pour optimiser la mémoire : | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | < | ||
+ | config system global | ||
+ | set tcp-halfclose-timer 60 | ||
+ | set tcp-halfopen-timer 5 | ||
+ | set tcp-timewait-timer 0 | ||
+ | set udp-idle-timer 60 --> default 180 s | ||
+ | ! | ||
+ | config ips global | ||
+ | set socket-size 4 --> default 32 MB | ||
+ | set engine count 2 | ||
+ | ! | ||
+ | config system dns | ||
+ | set dns-cache-limit 300 --> default 1800 s | ||
+ | ! | ||
+ | config system session-ttl | ||
+ | set default 300 --> default 3600 s | ||
+ | </ | ||
======MAJ du firmware====== | ======MAJ du firmware====== | ||
+ | |||
+ | =====Choisir le bon===== | ||
+ | |||
+ | Ces quelques lignes non contractuelles vous donnerons des pistes pour déterminer la bonne version à installer dans votre environnement. | ||
+ | |||
+ | Il est globalement recommandé, | ||
+ | |||
+ | A la différence d' | ||
+ | |||
+ | Plus une version (majeure = les 2 premier chiffres dans le numéro de version, par exemple 7.2) est récente, plus elle dispose de fonctionnalités mais plus elle risque de comporter des bugs. De ce fait il est officieusement recommandé de ne pas installer en production des versions "trop jeunes", | ||
+ | |||
+ | Pour accéder aux outils Fortinet, on se log sur le portail [[https:// | ||
+ | |||
+ | * " | ||
+ | |||
+ | * " | ||
+ | |||
+ | Les versions **NPI** (New Product Integration) possèdent | ||
+ | |||
+ | Depuis la version 7.2, les versions même mineures sont tagguées en **Feature ou Mature release** ; ces flags sont indiqués dans le nom de l' | ||
+ | |||
+ | Une fois la bonne version trouvée, jetez un œil aux release notes de celle-ci afin d' | ||
+ | |||
+ | |||
+ | =====Mise en œuvre===== | ||
On peut récupérer la version courante en mode global : | On peut récupérer la version courante en mode global : | ||
Line 1545: | Line 2024: | ||
execute usb-disk list | execute usb-disk list | ||
| | ||
+ | </ | ||
+ | |||
+ | Et, si la conf/ | ||
+ | <code bash> | ||
+ | execute restore image usb < | ||
+ | execute restore config usb < | ||
</ | </ | ||
======Métrologie/ | ======Métrologie/ | ||
Line 1630: | Line 2115: | ||
.1.3.6.1.4.1.12356.101.13.2.1.1.10 fnHaStatsAvCount | .1.3.6.1.4.1.12356.101.13.2.1.1.10 fnHaStatsAvCount | ||
.1.3.6.1.4.1.12356.101.13.2.1.1.11 fnHaStatsHostname | .1.3.6.1.4.1.12356.101.13.2.1.1.11 fnHaStatsHostname | ||
+ | # IPSec tunnels names, counters and status | ||
+ | .1.3.6.1.4.1.12356.101.12.2.2.1.2 fgVpnTunEntPhase1Name | ||
+ | .1.3.6.1.4.1.12356.101.12.2.2.1.3 fgVpnTunEntPhase2Name | ||
+ | .1.3.6.1.4.1.12356.101.12.2.2.1.18 fgVpnTunEntInOctets | ||
+ | .1.3.6.1.4.1.12356.101.12.2.2.1.19 fgVpnTunEntOutOctets | ||
+ | .1.3.6.1.4.1.12356.101.12.2.2.1.20 fgVpnTunEntStatus (1=down ; 2=up) | ||
</ | </ | ||
Line 1635: | Line 2126: | ||
* http:// | * http:// | ||
* http:// | * http:// | ||
+ | * [[https:// | ||
Line 1651: | Line 2143: | ||
=====Reset factory===== | =====Reset factory===== | ||
+ | Pour effectuer un restauration d' | ||
<code bash> | <code bash> | ||
execute factoryreset | execute factoryreset | ||
Line 1811: | Line 2304: | ||
set dhcp-relay-ip " | set dhcp-relay-ip " | ||
set dhcp-relay-type ipsec | set dhcp-relay-type ipsec | ||
- | # pour le BetBIOS | + | # pour le NetBIOS |
set netbios-forward enable | set netbios-forward enable | ||
set wins-ip 10.1.16.253 | set wins-ip 10.1.16.253 | ||
Line 1817: | Line 2310: | ||
</ | </ | ||
- | Pour rappel le DHCP permet la découverte et l' | + | Pour rappel le DHCP permet la découverte et l' |
+ | |||
+ | =====Auto filesystem check===== | ||
+ | |||
+ | Après une coupure électrique les Fortigate affichent un message d' | ||
+ | <code bash> | ||
+ | config system global | ||
+ | set autorun-log-fsck enable | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | C'est toutefois non-recommander car 1) ça prend du temps donc il vaut mieux le planifier en heure non ouvrée et 2) en cas d' | ||
+ | |||
+ | =====SSH sortant impossible===== | ||
+ | |||
+ | Contexte : Utiliser le client SSH de la CLI du Forti pour se connecter sur un autre équipement, | ||
+ | <code bash> | ||
+ | forti (root) # execute ssh admin@10.0.0.1 | ||
+ | Unable to negotiate with 10.0.0.1: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1, | ||
+ | </ | ||
+ | |||
+ | Cela signifie que l’équipement cible propose des paramètres SSH non acceptés par le Forti, et que donc la connexion SSH ne peut s' | ||
+ | |||
+ | Pour modifier les paramètres SSH acceptés par le forti, qui ont été durcis avec certaines versions : | ||
+ | <code bash> | ||
+ | config global | ||
+ | | ||
+ | set strong-crypto disable | ||
+ | append ssh-kex-algo diffie-hellman-group14-sha1 | ||
+ | end | ||
+ | end | ||
+ | </ | ||
+ | Cela permet d' | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | NB : tuner ces paramètres impacte les protocoles chiffrés : HTTPS/ | ||
+ | </ | ||
======Liens utiles====== | ======Liens utiles====== | ||
* [[http:// | * [[http:// |
informatique/fortinet/start.1595946138.txt.gz · Last modified: 2020/07/28 14:22 by pteu