La formation F5 BIG-IP Local Traffic Manager a été conçue pour permettre aux administrateurs BIG-IP d’appréhender la plupart des fonctionnalités directement ou indirectement liées au Load Balancing.
Au cours de cette formation, vous allez, entre autres, apprendre comment choisir l’algorithme de Load Balancing qui correspond le mieux à votre environnement, pourquoi utiliser un type spécifique de Virtual Server et pas un autre type, quand est-ce et comment utiliser les profils de persistance avancés, comment utiliser les iRules comme un pro… etc.
Les thèmes suivants seront abordés dans cette formation :
Traitement du trafic sur F5 BIG-IP
Comprendre le Load Balancing sur F5 BIG-IP LTM
Maîtriser le Monitoring et les statuts des serveurs
Utiliser la persistance avancée
Faire du Tuning de trafic sur F5 LTM
Maîtriser les iRules et les Local Traffic Policies
Administrer BIG-IP
Faire du Troubleshooting de trafic sur F5 BIG-IP
Utiliser les iApps
Sécuriser le trafic sur F5 LTM
3. Plan de la formation
Une formation
1. Traitement du trafic sur F5 BIG-IP
2. Comprendre et configurer le Load Balancing
3. Comprendre et utiliser le Monitoring avancé
4. Utiliser les options de persistance avancées
5. Tuning du Trafic
6. Utiliser les iRules et les Local Traffic Policies
7. Administration du BIG-IP
8. Troubleshooting du traffic
9. Utiliser les iApps
10. Implémenter la sécurité sur F5 BIG-IP
13. Plan
Rappel de l’architecture Full-Proxy
Les objets (Node, Member, Pool, VS)
Revoir les profils
Rappeler les notions de NAT/SNAT
Revoir les bases du Monitoring
Cheminement des paquets en réseau
Une formation
18. Une formation
NAT/SNAT
NAT
• Mapping One-to-One bidirectionnel
• Pas de load balancing
• Pas de notions de ports
SNAT
• Mapping Many-to-One unidirectionnel
• Translate l’adresse IP source
• Résout les problèmes de routage
21. Comment F5 Big-IP traite
le trafic entrant
Une formation
Mohamed Amine KADIMI
22. Plan
Comprendre l’action de F5 sur le trafic
entrant
Découvrir l’ordre de traitement du
trafic entrant
Une formation
23. Une formation
Action par défaut
172.16.10.1 172.16.10.2 172.16.10.3
172.16.10.1:80 172.16.10.2:80 172.16.10.3:80
10.10.10.10:80
Default Deny
Trafic non “explicitement
autorisé” est rejeté
24. Une formation
Actions Accept et Deny
Accept
• Si et seulement si le trafic est explicitement autorisé
• VS, (S)NAT, Self IP …
Deny
• Action par défaut
• BIG-IP Firewall
25. Une formation
Ordre de traitement du trafic
1
3
2
4
5
6
7
1. Le trafic
correspond-il a une
connexion existante
dans la table de
connexion?
2. Le trafic
correspond-il a une
règle du Packet
Filter?
3. Est-il a destination
d’un Virtual Server?
4. Le trafic
correspond-il a une
configuration SNAT?
5. Le trafic
correspond-il a une
configuration NAT?
6. Est-il a destination
d’une Self IP en
écoute pour ce
trafic?
7. Si rien ne match,
l’action par défaut est
de rejeter le trafic
27. Plan
Pourquoi appréhender l’ordre de
priorité des VS
Comprendre l’ordre de priorité des VS
Comprendre l’impact de la désactivation
d’un VS sur l’ordre de priorité
Une formation
28. Une formation
Pourquoi l’ordre de priorité
Un VS est défini par
• Son adresse IP et son port de destination
• Et par l’adresse IP source (càd celle du client)
Exemple: (src: 0.0.0.0/0; dst: 10.10.100.10:80)
Les adresses IP et ports peuvent être
des sous-réseau ou des « wildcard »
• Pour élargir la plage du trafic correspondant au VS
• Pour filtrer par adresse source
Exemple: (src: 172.16.10.0/24; dst: 0.0.0.0:*)
29. Une formation
Pourquoi l’ordre de priorité
Risque de collision
• Lorsqu’un trafic à destination du BIG-IP correspond à
plusieurs VS
Exemple:
Trafic entrant: (src: 10.10.10.11; dst 1.2.3.4:80)
Quel VS prendra en charge?
Source Destination
VS 1 0.0.0.0 10.10.100.10:80
VS 2 10.10.10.0/24 0.0.0.0:80
VS 3 10.10.10.0/24 0.0.0.0:0
30. Une formation
L’ordre de priorité des VS
F5 détermine le VS en vérifiant dans l’ordre:
• L’adresse de destination du VS
• La plus spécifique d’abord (LPF)
• L’adresse source du VS
• La plus spécifique d’abord (LPF)
• Le port d’écoute du VS
Deux VS ne peuvent avoir les trois identiques
31. Une formation
L’ordre de priorité des VS
Trafic entrant: (src: 10.10.10.11; dst 1.2.3.4:80)
Quel VS prendra en charge?
VS 2
Source Destination
VS 1 0.0.0.0 10.10.10.10:80
VS 2 10.10.10.0/24 0.0.0.0/0:80
VS 3 10.10.10.0/24 0.0.0.0/0:0
32. Une formation
L’ordre de priorité des VS
src: 10.10.10.11 dst 10.10.10.10:80
src: 10.10.10.11 dst 1.2.3.4:80
src: 52.2.52.2 dst 10.10.10.10:443
src: 52.2.52.2 dst 10.10.10.10:80
src: 10.10.10.100 dst 10.10.10.11:443
Source Destination
VS 1 0.0.0.0/0 10.10.10.10/32:80
VS 2 0.0.0.0/0 10.10.10.0/24:80
VS 3 10.10.10.0/24 0.0.0.0/0:*
VS 4 10.10.10.0/28 0.0.0.0/0:*
VS 5 0.0.0.0/0 0.0.0.0/0:*
VS 1
VS 4
VS 5
VS 1
VS 3
K14800
33. Une formation
Impact de la désactivation
d’un VS sur la priorité
Par défaut, un VS désactivé continue à matcher
• Il continue à être prioritaire s’il est le plus spécifique
• Il est donc sélectionné pour traiter le trafic
• Le système envoie des RESET au lieu de traiter le trafic
Impossible de le bypasser vers un VS moins spécifique
Pour pouvoir bypasser un VS désactivé:
• Il faut changer la variable tm.continuematching
modify /sys db tm.continuematching value true
35. Plan
Redécouvrir le VS Standard
Comprendre le VS Forwarding
Comprendre les VS Performance
Découvrir les autres types de VS
Une formation
36. Une formation
Le Standard VS
Il est le type de VS par défaut en mode GUI
Il permet de faire du load balancing vers un pool de serveurs
Il fonctionne en mode Full-Proxy
Il permet le maximum de fonctionnalités et de profils
Optimisation TCP
Contrôle et optimisation L7 (http, ftp, sip…)
Offloading SSL
…
A utiliser lorsqu’on veut profiter du max d’optimisations
37. Une formation
Le Forwarding (IP) VS
Il permet d’utiliser le BIG-IP en tant que routeur
Pas de Load-Balancing
Pas de mode Full-Proxy
Il permet très peu de fonctionnalités et de profils
Optimisation TCP, QoS, NAT64
Pas de contrôle ni d’optimisation L7
Pas d’offloading SSL
A utiliser si on souhaite uniquement router le trafic
38. Une formation
Le Performance (Layer 4) VS
Il permet de faire du Load-Balancing
Il est associé à un profil d’accélération FastL4
Qui optimise les performances au niveau de la couche 4
En faveur des fonctionnalités de couches supérieures
Pour les plateformes disposant du chipset ePVA, l’accélération
L4 se fait au niveau hardware
A utiliser si on n’a pas besoin de fonctionnalités L7 pour
profiter du maximum de vitesse de traitement
39. Une formation
Le Performance (HTTP) VS
Il permet de faire du Load-Balancing
Il est associé à un profil d’accélération FastHTTP
Ce profil combine certaines options du profil HTTP à d’autres
options d’accélération
Il optimise le temps de traitement des requêtes HTTP
Mais les fonctionnalités possible restent très limitées (pas de
compression, ni de cache, ni d’offloading SSL)
Ne doit être utilisé que lorsque les conditions de trafic sont
idéales (pas d’erreur ou de paquets en désordre)
40. Une formation
Les autres types de VS
Forwarding (Layer 2)
• Permet de « bridger » deux réseaux sans changer l’adressage
Stateless
• N’utilise pas de table de sessions, utile pour le trafic UDP
Internal
• VS qui sert à communiquer avec un serveur ICAP
DHCP
Message Routing
Reject
41. Configurer le Load Balancing
avec les algorithmes statiques
Une formation
Mohamed Amine KADIMI
42. Plan
Comprendre les algorithmes de LB
statiques
Comprendre l’algorithme Round Robin
Comprendre l’algorithme Ratio
Une formation
43. Une formation
Algorithmes statiques de LB
Les algorithmes statiques distribuent le trafic
selon un pattern fixe et prédictible
Deux algorithmes statiques sur BIG-IP
1. Round Robin
2. Ratio
44. Une formation
Round Robin LB
Les requêtes sont distribuées dans l’ordre
équitablement
Utiliser si les serveurs ont les mêmes capacités
654321
45. 7
Une formation
Le Ratio Load Balancing
Les requêtes sont distribuées selon des
coefficients fixes attribués aux pool members
Utiliser si les serveurs ont des capacités différentes
654321 141312111098
4 2 1
46. Configurer le Load Balancing
avec les algorithmes
dynamiques
Une formation
Mohamed Amine KADIMI
47. Plan
Comprendre le fonctionnement des
algorithmes de LB dynamique
Comprendre les principaux
algorithmes de LB dynamique
Une formation
48. Une formation
Algorithmes dynamiques de LB
Ils se basent sur des métriques en temps
réel pour distribuer le trafic :
• Nombre de connexions
• Performance
• …
Plusieurs algorithmes selon les
métriques
49. Une formation
Least Connections
Le serveur ayant le moins de connexions (L4)
reçoit la requête
Utiliser pour les connexions de longue durée si les
serveurs ont les mêmes capacités
654321
75 78 77767778 78626364 64
50. Une formation
Fastest
Le serveur ayant le moins de requêtes (L7) en
suspens reçoit la prochaine requête
Utile quand les serveurs n’ont pas les mêmes temps de
réponse (latence)
Un profil L7 est obligatoire pour fonctionner correctement
654321
75 78 77767778 78626364 64
51. Une formation
Observed
BIG-IP assigne des ratios dynamiques selon le
nombre de connexions observées sur une
seconde
Utile pour des petits pools dont les serveurs n’ont pas les
mêmes capacités
90 25 604050 709852 20
0 1 2 3 seconds
R=3 R=2R=1R=3 R=2R=1R=2 R=2 R=3
52. Une formation
Predictive
BIG-IP assigne des ratios dynamiques (1 à 4)
en observant la tendance des connexions
Les ratios sont ajustés plus agressivement que Observed, le
résultat peut être meilleur pour certaines applications
90 25 60
70 6055
0 1 2 seconds
R R R
53. Une formation
Weighted Least Connections
Basé sur la capacité du serveur déterminée
par la formule
Utile quand les serveurs n’ont pas la même capacité et
qu’on peut déterminer la limite de connexion
200 150 100300 60 40
CL=500 CL=200CL=1000
20% 30% 50%30% 12% 20%
54. Une formation
Least Sessions
Le serveur ayant le moins d’entrées dans la
table de persistance est sélectionné
Nécessite un profil utilisant la table de persistance
(persistance par IP source ou Universal)
654321
75 78 77767778 78626364 64
55. Une formation
Autres algorithmes
Ratio Least Connections
Least Connections mais proportionnel aux ratios définis
Dynamic Ratio
Ratios assignés et mis à jour en temps réel en se basant sur des
métriques collectées par des monitors SNMP, WMI, ou
RealServer
57. Plan
Différencier entre le Load Balancing
par Node et par Member
Assimiler par l’exemple la différence
entre les deux modes
Une formation
58. Une formation
Node vs Member LB
Baser la décision de Load Balancing sur des
éléments du Member ou du Node parent?
Exemples:
• Ratio du Member (spécifique) ou du Node (global)
• Nombre de connexions actives du Member ou du Node
Notion importante si des Nodes sont utilisés
dans plusieurs pool
59. Une formation
Node vs Member : Exemple 1
Algorithme de LB : Ratio (Member)
Distribution de 100 requêtes?
172.16.10.1 172.16.10.2 172.16.10.3
172.16.10.1:80 172.16.10.2:80 172.16.10.3:80R=3 R=6R=1
R=2 R=2R=1
30 6010
60. Une formation
Node vs Member: Exemple 2
Algorithme de LB: Ratio (Node)
Distribution de 100 requêtes?
172.16.10.1 172.16.10.2 172.16.10.3
172.16.10.1:80 172.16.10.2:80 172.16.10.3:80R=3 R=6R=1
R=2 R=2R=1
40 4020
61. Une formation
Node vs Member : Exemple 3
Algorithme de LB: Least Connections (Member)
Distribution de 5 requêtes HTTP? Puis 5 autres?
172.16.10.1 172.16.10.2 172.16.10.3
172.16.10.1:80 172.16.10.2:80 172.16.10.3:80
172.16.10.1:443 172.16.10.2:443 172.16.10.3:844355 4020
15 2038
54321
HTTP
HTTPS
20
62. Une formation
Node vs Member : Exemple 4
Algorithme de LB : Least Connections (Node)
Distribution de la prochaine requête HTTP?
172.16.10.1 172.16.10.2 172.16.10.3
172.16.10.1:80 172.16.10.2:80 172.16.10.3:80
172.16.10.1:443 172.16.10.2:443 172.16.10.3:844355 4020
15 2038
1
HTTP
HTTPS 58 70 60
63. Utiliser les Priority Group
Activation et Fallback Host
Une formation
Mohamed Amine KADIMI
65. Une formation
Priority Group Activation
L’algorithme de LB décide quel membre du pool
recevra le trafic…
Mais comment diviser les membres d’un même
pool en sous-groupes :
• Membres actifs (éligibles à recevoir du trafic)
• Membres standby (prêts à recevoir le trafic en cas de besoin)
Priority Group Activation
66. Une formation
Priority Group Activation
PG=10 PG=10 PG=10 PG=5 PG=5
• Assigner les priorités aux membres
• Utiliser la Priority Group Activation avec le « Less than »
68. Une formation
Fallback Host
Mécanisme de dernier recours lorsqu’aucun
pool membre n’est disponible
• Envoie un HTTP REDIRECT au client
• Fonctionne avec les VS avec profil HTTP uniquement
70. Plan
Configurer les options avancées des
Interval et Timeout
Utiliser les Alias Address et Alias
Service Port
Une formation
71. Une formation
Options d’Interval et Timeout
Interval : fréquence
Timeout : délai avant
down
Up Interval
• Fréquence différente quand le Member est Up
Time Until Up
• Délai d’attente avant de passer de Down à Up
• Sinon, le serveur est déclaré Up dès la première réponse.
72. Permet de monitorer un objet
différent du Node/Member
L’état de l’objet monitoré est
remonté au Node/Member
Par défaut, un Monitor utilise l’IP et le port du
Node/Member auquel il est associé
Il est possible de spécifier explicitement l’IP ou
le port à monitorer
Une formation
Alias Address et Port
172.16.10.1:80 172.16.10.2:80 172.17.17.31
73. Monitorer des Pool Members dont le
fonctionnement dépend d’autres serveurs(ices)
• Application e-commerce avec des pages en HTTP et
d’autres en HTTPS. Si le Member en HTTPS est down,
on souhaiterait également rendre indisponible le
Member HTTP
• Monitorer une adresse publique sur internet pour
déterminer le statut d’un routeur local
Une formation
Alias Address et Port – Use Cases
74. Une formation
Alias Address et Port – Récap
Alias Address Alias
Service Port
Member/Node
associé
Objet Monitoré
* * 172.16.10.1 172.16.10.1
* * 172.16.10.1:80 172.16.10.1:80
* 443 172.16.10.1:80 172.16.10.1:443
172.16.20.1 * 172.16.10.1:80 172.16.20.1:80
172.16.20.1 443 172.16.10.1:80 172.16.20.1:443
Alias Address Alias
Service Port
Member/Node
associé
Objet Monitoré
* * 172.16.10.1
* * 172.16.10.1:80
* 443 172.16.10.1:80
172.16.20.1 * 172.16.10.1:80
172.16.20.1 443 172.16.10.1:80
76. Plan
Pourquoi utiliser un Monitor externe
Configurer un Monitor externe
Développer un Monitor
Une formation
77. Une formation
Pourquoi utiliser un Monitor externe
Utiliser un Monitor externe
• Quand aucun Monitor ne peut satisfaire le besoin
Ne jamais utiliser un Monitor externe quand
on peut utiliser un Monitor intégré
• Impacte la performance, pour chaque instance du Monitor
un shell est « forké »
78. Une formation
Configurer un Monitor externe
1. Importer le script externe (shell, perl …)
2. Créer un Monitor de type External
• Référencer le script externe
• Passer des arguments et des variables au script
3. Associer le monitor
79. Une formation
Développer un Monitor
externe – Notes
Les arguments du scripts sont
• $arg0 : nom du script
• $arg1 : ip du membre
• $arg2 : port du membre
• $arg3 … $argN : les arguments passés aux scripts
Attention, l’IP du Node est représentée en
notation IPv6 transitionnelle
• "::ffff:10.0.0.1" correspond au nœud 10.0.0.1
80. Une formation
Développer un Monitor
externe – Output
L’output du script indique le statut du membre
• Si le script ne retourne aucune output Membre down
• Si le script retourne n’importe quelle output Membre up
Attention, toutes ces outputs indiquent que le
Member est UP
• Server Up
• Server Down
• « Si tu dors et que tu rêves que tu dors, il faut que tu te
réveilles deux fois pour te lever »
82. Plan
Distinguer entre la table de
connexions et la table de persistance
Comprendre la différence entre les
actions « Disable » et « Force Offline »
Une formation
83. Une formation
Table de connexions
Contient toutes les connexions actives
identifiées par leurs propriétés uniques
Une entrée expire après la fin normale de la
connexion ou l’écoulement du IDLE_TIMEOUT
84. Une formation
Table de persistance
Contient les entrées persistantes lorsque la
persistance est configurée (uniquement pour
certains types de persistance)
Une entrée expire après l’écoulement du
Timeout de persistance
85. Force Offline: Aucune nouvelle connexion. Uniquement les
connexions en cours sont traitées
Disable: connexions en cours + les nouvelles connexions si
elles correspondent à une entrée persistante
Aucune, BIG-IP continue à traiter les connexions actives
Une formation
Disable vs Force Offline
Quelles connexions existantes terminer?
Quelles nouvelles connexions accepter?
88. Une formation
Type de persistance basée sur la SSL Session ID
• “An arbitrary byte sequence chosen by the server to identify
an active or resumable session state” (rfc5246)
• Indispensable au succès d’une session SSL
• Transmis en clair
Possibilité d’utiliser ce type même si BIG-IP ne déchiffre pas
le traffic SSL
• Le plus souvent utilisé sur un VS en SSL pass-through
• Peut-être combiné à une autre persistance pour plus de fiabilité
Définition de la persistance SSL
90. Une formation
Configurer la persistance SSL
Utiliser le profil SSL préexistant ou créer
un nouveau profil
Associer le profil au VS
• Possible d’associer un profil de fallback
92. Plan
Définir la persistance Universal
Configurer la persistance Universal
Étudier un exemple de persistance
Universal
Une formation
93. Une formation
Type de persistance utilisant les iRules
• La clé de persistance peut être n’importe quelle chaîne de
caractères du paquet
• Appelée également la persistance UIE
A utiliser lorsqu’on souhaite persister en se basant sur une
clé (ou plusieurs) non fournie par les profils standards
• Header HTTP (exemple: X-Forwarded-For)
• Cookie de session inséré par le serveur (exemple: JSESSIONID)
• …
Définition de la persistance Universal
94. Une formation
Identifier la clé à utiliser pour persister
Créer une iRule pour exécuter l’action de
persistance
Créer un profil de persistance de type Universal
référençant l’iRule créée
Associer le profil au VS
• Possible d’associer un profil de fallback
Configurer la persistance Universal
95. Une formation
when HTTP_REQUEST {
set xff {[HTTP::header X-Forwarded-For]
if { $xff != "" } {
persist uie $xff
}
}
Exemple de persistance Universal
97. Plan
L’intérêt d’utiliser les options Match
Across
Utiliser Match Across Services
Utiliser Match Across Virtual Servers
Utiliser Match Across Pools
Une formation
98. Une formation
La persistance est par défaut strictement
liée au VS auquel le profil est associé
Intérêt des options Match Across
99. Une formation
TMM 0
Mode source-address
Value 10.10.10.50
Age (sec.) 5
Virtual Name /Common/HTTP_vs
Virtual Addr 10.10.10.1:80
Node Addr 172.16.10.1:80
Pool Name /Common/HTTP_pool
Client Addr 10.10.10.50
Intérêt des options Match Across
100. Une formation
172.16.10.1 172.16.10.2 172.16.10.3
172.16.10.1:80 172.16.10.2:80 172.16.10.3:80
172.16.10.1:443 172.16.10.2:443 172.16.10.3:8443
HTTP
HTTPS
10.10.10.1:80 10.10.10.1:443
Intérêt des options Match Across
101. Une formation
La persistance est par défaut strictement
liée au VS auquel le profil est associé
Certaines situations requièrent de
persister l’utilisateur même s’il ne
sollicite pas le même VS
• Exemple : site utilisant HTTP et HTTPS
Intérêt des options Match Across
102. Une formation
Match Across permet de partager et
réutiliser la persistence entre VS
différents
• Match Across Services
• Match Across Virtual Servers
• Match Across Pools
Intérêt des options Match Across
103. Même IP virtuelle
Services differents
Une formation
Match Across Services
172.16.10.1 172.16.10.2 172.16.10.3
172.16.10.1:80 172.16.10.2:80 172.16.10.3:80
172.16.10.1:443 172.16.10.2:443 172.16.10.3:8443
HTTP
HTTPS
10.10.10.1:80 10.10.10.1:443
104. Peu importe l’IP ou
le service des VS
Une formation
Match Across Virtual Servers
172.16.10.1 172.16.10.2 172.16.10.3
172.16.10.1:80 172.16.10.2:80 172.16.10.3:80
172.16.10.1:443 172.16.10.2:443 172.16.10.3:8443
HTTP
HTTPS
10.10.10.1:80 10.10.10.2:443
105. Une formation
Match Across Pools
Réutilisation du pool associé à l’entrée
de persistance
Quand un VS est associé à plusieurs
pools
Même si les conditions de sélection du pool
ne sont pas satisfaites
106. Une formation
Match Across Pools
if { [HTTP::host] eq "abc.fr" } {
pool FR_pool
}
elseif { [HTTP::host] eq "abc.de" } {
pool DE_pool
}
VS = 10.10.10.1:80
Client 1.2.3.4 demande abc.fr
pool FR_pool
Client 1.2.3.4 demande abc.de
pool FR_pool
107. Une formation
Match Across Pools
if { [HTTP::host] eq "abc.fr" } {
pool FR_pool
}
elseif { [HTTP::host] eq "abc.de" } {
pool DE_pool
} 10.10.10.1:80
FR_pool DE_pool
108. Optimiser le trafic avec
les profils TCP et OneConnect
Une formation
Mohamed Amine KADIMI
109. Plan
Découvrir les différentes options
d’optimisation du trafic sur LTM
Optimiser le protocole TCP
Optimiser les connexions TCP avec le
profil OneConnect
Une formation
110. Compressé
Une formation
Optimisation du trafic sur LTM
Non compressé
RAM Cache
Chiffré Clair
TCP Client TCP Server
Multiple
Optimisation
HTTP
SSL
Optimisation
TCP
OneConnect
(Connexion
Reuse)
Single
111. Une formation
Optimisation du protocole
TCP – TCP Express
Chaque système implémente la pile TCP/IP de
sa propre manière
La pile TCP/IP de F5 s’appelle TCP Express
• Fait partie du TMOS
• Fournit une multitude d’optimisations natives
• S’adapte au contexte du trafic (client/serveur)
• Automatique (aucune configuration requise)
112. Une formation
Optimisation du protocole
TCP – Profils TCP
Permet de personnaliser certaines options
d’optimisation TCP
Applicable par VS
Contextuelle (Client/Server)
Les profils fournis conviennent à la majorité
des situations
113. Une formation
Optimisation avec le profil
OneConnect
OneConnect permet de minimiser les
connexions TCP côté serveur
• En agrégeant plusieurs connexions clients sur
une même connexion serveur
• Utilise les HTTP Keep-Alive
• Un profil HTTP est fortement recommandé
115. Modifier le contenu des
payload TCP/HTTP avec
le profil Stream
Une formation
Mohamed Amine KADIMI
116. Plan
Définir le profil Stream
Configurer un profil Stream
Utiliser une iRule avec un profil
Stream
Une formation
117. Une formation
Définition du Stream Profile
Effectue un rechercher/remplacer de
toutes les occurrences d’une chaîne
• S’exécute sur les requêtes et les réponses
• Dans le payload TCP
• Ou dans le payload HTTP uniquement
• Fonctionne même si la chaîne à remplacer
est transmise sur plusieurs segments TCP
• Peut être contrôlé par une iRule pour
s’exécuter selon une logique
119. Une formation
Utiliser une iRule avec un
profil Stream
when HTTP_REQUEST {
STREAM::disable
}
when HTTP_RESPONSE {
if { SOME_CONDITION } {
STREAM::expression {@origStr@newStr@}
STREAM::enable
}
}
121. Plan
Utiliser ou pas plusieurs iRules
Comprendre l’exécution des iRules
Modifier l’ordre d’exécution des iRules
Une formation
122. Une formation
Utiliser ou pas plusieurs iRules
Segmenter les fonctionnalités
Réduire la taille du code
Réutiliser les iRules sélectivement
Risque d’altérer la logique souhaitée
• Duplication d’événements
• Exécuter toutes les instructions?
• Dans quel ordre?
Oui, si besoin, mais avec modération
123. Une formation
Comprendre l’exécution des
iRules
Quand une iRule est créée
• Elle est validée et précompilée en « Bytecode »
• Puis mise à disposition des TMM
L’iRule est exécutée lorsqu’un événement
qu’elle appelle se produit
• Que se passe-t-il si plusieurs iRules sont
associés aux VS?
124. Une formation
Comprendre l’exécution des
iRules
• Normalisation et réorganisation
• Gestion des événements dupliqués
When HTTP_
if {…} {
…
}
When HTTP_
if {…} {
…
}
When HTTP_
if {…} {
…
}
0 PUSH
2 JUMP 6
6 IT
15 POP
Compilation
125. Une formation
Modifier l’ordre d’exécution
des iRules
Pour garantir le résultat souhaité
• Il est recommandé de définir explicitement
l’ordre d’exécution des événements dupliqués
Commande « priority »
priority XXX
when EVENT priority YYY {
…
}
126. Une formation
Modifier l’ordre d’exécution
des iRules
when HTTP_RESPONSE priority 10 {
if { [HTTP::status] equals "404" } {
HTTP::redirect "/404.php"
}
}
when HTTP_RESPONSE priority 100 {
if { [HTTP::status] starts_with "4" } {
HTTP::redirect "/error.php"
}
}
127. Une formation
Modifier l’ordre d’exécution
des iRules
priority 100
when CLIENT_ACCEPTED {
...
}
when HTTP_RESPONSE {
...
}
priority 10
when HTTP_RESPONSE {
...
}
128. Une formation
Modifier l’ordre d’exécution
des iRules
La priorité par défaut est 500
Les valeurs possibles : de 1 à 1000
Un nombre plus bas indique une
priorité plus haute
La priorité ne change pas l’ordre
d’exécution d’événements distincts
130. Plan
Découvrir les Local Traffic Policies
Découvrir les principaux composants
des Local Traffic Policies
Configurer et modifier un Traffic Policy
Une formation
131. Une formation
Découvrir les Local Traffic
Policies
Manipulent le trafic transitant par un VS
Basées sur des conditions-actions
Ne requièrent pas de connaissances TCL
Supportées nativement
Plus performantes que les iRules, mais
moins riches
132. Policy 1
Une formation
Découvrir les Local Traffic
Policies
Conditions
Actions
Rule 1
Conditions
Actions
Rule 2
Conditions
Actions
Rule N
Une Policy est composée de Rules
• Les Rules définissent les conditions et les
actions
133. Une formation
Configurer une Policy
Pour modifier une Policy existante
• Créer un Draft de celle-ci, le configurer, puis le
publier
Créer la
Policy
Publier la
Policy
Associer la
Policy au VS
En tant que Draft
Configurer Rules
Devient utilisable
et non configurable
134. Utiliser les Data Group
et les iFiles
Une formation
Mohamed Amine KADIMI
135. Plan
Découvrir les Local Traffic Policies
Découvrir et utiliser les Data Groups
Découvrir et utiliser les iFiles
Une formation
136. Une formation
Découvrir les Data Group
Listes <clé = valeur> enregistrées sur le
disque
Utilisées par les iRules
• Plus de flexibilité
• Meilleure performance
• Read-Only
137. Une formation
Découvrir les Data Group
Trois types, plusieurs usages :
1. Address
• Exemples : IP Blacklist, IP Whitelist
2. String
• Exemples : extensions, chemins
3. Integer
• Exemples : ports, statuts HTTP
138. Une formation
Utiliser les Data Group
Les opérations sur les Data Groups sont
effectuées via la commande « class »
• Plusieurs options
class match
class search
…
• class match suffit pour la plupart des cas
• http://tiny.cc/f5class
139. Une formation
Utiliser les Data Group
if {[class match [HTTP::host] ends_with tld_dg]} {
set uri [class match -value [HTTP::host] ends_with tld_dg]
HTTP::redirect "http://www.example.com$uri"
}
1. Créer le Data Group
2. L’utiliser dans une iRule
tld_dg
140. Une formation
Utiliser les Data Group
when HTTP_RESPONSE {
if {[string match {4??} [HTTP::status]]} {
if {[class match [HTTP::status] equals errors_dg]}{
HTTP::redirect [class lookup [HTTP::status] errors_dg]
}
}
}
Que fait cette iRule?
errors_dg
141. Une formation
Découvrir les iFiles
Fichiers statiques uploadés sur F5 et
qu’on peut utiliser dans les iRules
• Distribuer aux clients une page d’erreur ou de
maintenance
• Distribuer une ou des images à la place du
serveur
• Offrir le téléchargement de fichiers statiques
• Syntaxe : http://tiny.cc/f5ifiles
142. Une formation
Utiliser les iFiles
when HTTP_REQUEST {
if {[HTTP::uri] eq "/wpad.dat" } {
HTTP::respond 200 content [ifile get wpad-file]
}
else if {[active_members [LB::server pool]] < 1}
HTTP::respond 200 content [ifile get sorry-file]
}
}
1. Uploader le fichier sur F5
2. L’utiliser dans une iRule
144. Plan
Découvrir la gestion des utilisateurs
sur F5 BIG-IP
Définir et configurer des utilisateurs
Définir les rôles des utilisateurs
Définir et configurer des partitions
Une formation
145. Une formation
La gestion des utilisateurs
La gestion des utilisateurs répond à
• Qui a accès?
• À quoi?
• Avec quelles permissions?
Ceci en définissant
• Des utilisateurs
• Ayant des rôles
• Sur des partitions
146. Une formation
Les utilisateurs (Qui a accès?)
Un utilisateur est un compte défini par
• Username
• Password
• Partition Access
• Accès à quelles partitions avec quels rôles?
• Un rôle par partition
• Terminal Access
• Disabled, Advanced Shell, ou TMSH
147. Une formation
Les rôles (avec quelles
permissions?)
Les rôles permettent de définir un niveau
d’autorisations accordé à l’utilisateur
Un rôle contrôle :
• Les types de ressources que l’utilisateur peut
gérer
• Les actions qu’il peut effectuer dessus
Les rôle disponibles sont prédéfinis sur F5
148. Une formation
Les rôles (avec quelles
permissions?)
Des niveaux d’accès de « Guest » jusqu’à
« Administrator »
149. Une formation
Les partitions (accès à quoi?)
Les partitions administratives sont des
conteneurs logiques d’objets BIG-IP
• Nodes, pools, VS, profils, certificats…
Un utilisateur ayant accès à une partition
a donc :
• Accès aux objets de la partition
• Avec le rôle associé à cette partition
151. Une formation
Les partitions (accès à quoi?)
La partition par défaut est Common
• Si aucune autre partition n’est définie, tous
les objets sont créés dans Common
• Tous les utilisateurs y ont accès, sauf si leur
rôle est « No Access »
• Une partition utilisateur peut référencer des
objets résidant dans Common
152. Une formation
Les partitions (accès à quoi?)
/Common
Pool http_pool
Profile client_ssl
/PartProd
VS_PROD (10.1.1.10)
Pool http_pool
Profile client_ssl
/PartDev
VS_DEV (10.1.1.20)
Pool http_pool
Profile client_ssl
154. Plan
Introduction au logging sur F5 BIG-IP
Passer en revue le logging local
Configurer le logging syslog classique
Configurer le High-Speed Logging (HSL)
Configurer la supervision SNMP
Une formation
155. Une formation
Le logging sur F5 BIG-IP
Plusieurs types de Logs :
• Événements système
• Événements trafic (LTM, DNS, Packet filter…)
• Audit (actions utilisateurs sur la config)
Deux méthodes :
1. Logging syslog classique
2. High-Speed Logging (HSL)
156. Une formation
Le logging sur F5 BIG-IP
Plusieurs destinations
• Syslog local
• Syslog distant
• DB Mysql local
• Autres (Splunk, HP Arcsight…)
157. Une formation
Le logging local
Activé par défaut
Utilise syslog-ng du système Linux
Fichiers de Logs dans /var/log/
• /var/log/ltm
• /var/log/asm
• /var/log/gtm
• /var/log/pktfilter
• /var/log/audit
• ...
158. Une formation
Le logging local
Chaque jour, les logs du jour précédent sont
archivés
8 archives compressées sont conservées
• ltm
• ltm.1
• ltm.2.gz ltm.3.gz … ltm.9.gz
• Pour les afficher:
zcat /var/log/ltm.1.gz
159. Une formation
Logging Syslog classique
• Configuration simplifiée
• Un ou plusieurs serveurs Syslog
• Pas de Load Balancing
• UDP/514 par défaut
• Niveau de log configurable
• Utilise l’interface MGMT ou
TMM (RD 0)
• Non recommandé pour les gros
volumes de Logs
Syslog Servers
160. Une formation
High Speed Logging
Méthode de logging recommandée
Supporte plusieurs formats :
• Syslog
• Splunk
• Arcsight
Supporte l’envoi à plusieurs serveurs
Supporte un filtrage plus avancé
Utilise une interface TMM
161. Une formation
High Speed Logging
Quatre types d’objets à définir
1. Log Filter
2. Log Publisher
3. Log Destination (optionnellement un Log Formatter)
4. Pool (Log Servers)
Log Filter Log Publisher
Log
Destination
(HSL)
Pool of
Servers
Log
Destination
(Formatter)
164. Plan
Présenter les sauvegardes SCF
Découvrir le contenu des fichiers SCF
Créer un fichier SCF
Déployer un fichier SCF
Une formation
165. Une formation
Présentation des SCF (Single
Configuration File)
Sauvegarde de la configuration BIG-IP en un
seul fichier texte
• Non destinés à la sauvegarde/restauration du
système
• Utilisés pour répliquer une config sur plusieurs BIG-IP
• Utiles pour migrer d’une plateforme à une autre
166. Une formation
Présentation des SCF (Single
Configuration File)
ltm pool /Common/HTTP_pool {
load-balancing-mode ratio-node
members {
/Common/172.16.10.1:80 {
address 172.16.10.1
}
/Common/172.16.10.2:80 {
address 172.16.10.2
}
}
monitor /Common/http
}
167. Une formation
Contenu des SCF
Tous les objets de la configuration BIG-IP
• bigip_base.conf (Self IP, Vlans, Routes…)
• bigip.conf (Nodes, Pools, VS, Profiles,
Monitors, iRules, Traffic Policies...)
• bigip_user.conf (comptes utilisateurs)
• La config des modules (APM, ASM…)
• Certains fichiers de config Linux
168. Une formation
Contenu des SCF
Les fichiers SCF ne contiennent pas
• Le contenu du dossier /config/filestore/
• Notamment les certificats/clés SSL
• Mais les fichiers référencés par le SCF sont
exportés dans une archive TAR séparée
• La licence du BIG-IP
169. Une formation
Création d’un fichier SCF
La création du SCF se fait exclusivement
à partir de la CLI
save sys config file conf1.scf passphrase PA$$W0rD
ou
save sys config file conf1.scf no-passphrase
L’output est créée dans /var/local/scf
• /var/local/scf/conf1.scf
• /var/loca/scf/conf1.tar
170. Une formation
Déploiement d’un fichier SCF
Le déploiement du SCF se fait également
exclusivement à partir de la CLI
load sys config file conf1.scf passphrase PA$$W0rD
ou
load sys config file conf1.scf
Option « merge » pour fusionner avec la
config actuelle
load sys config file conf1.scf merge
171. Mettre en place
la Multitenancy avec
les Route Domains
Une formation
Mohamed Amine KADIMI
173. Une formation
Présentation des Route Domains
Moyen de BIG-IP d’isoler le traffic entre
plusieurs tenants
Chaque RD a son propre espace IP
• Une même IP peut être utilisée par plusieurs
tenants
Chaque RD a sa propre table de routage
• Avec possibilité de router vers un autre RD
174. Recommandation : Mettre chaque RD dans sa partition administrative
Présentation des Route Domains
175. Une formation
Configuration des Route Domains
Configurer un nouveau Route Domain
• Créer le(s) VLAN(s) isolé(s)
• Créer le Route Domain
Pour utiliser le Route Domain
• Créer les Self IP dans les VLANs isolés
• Créer les objets (VS, Pool Members, Nodes)
avec l’ID du RD. Exemple: 10.10.1.1%2
• Créer les routes si nécessaires
177. Plan
Déchiffrer une capture de trafic SSL
Utiliser l’outil ssldump
Examiner une capture SSL avec
ssldump
Une formation
178. Une formation
Déchiffrer une capture de trafic SSL
Un échange SSL/TLS
est composé de
• SSL Handshake
• Échange de données
applicatives
On distingue entre les
deux lors du diagnostic
179. Une formation
Utiliser l’outil ssldump
Équivalent de TCPDUMP pour le trafic SSL
Deux méthodes pour analyser le trafic:
• Caputre en temps réel
• Analyse d’un fichier généré par TCPDUMP
• Méthode recommandée
K10209
180. Une formation
Utiliser l’outil ssldump
Exemple:
1. Capture avec TCPDUMP :
tcpdump -vvv -s0 -nni external -w /var/tmp/SSL.cap host
10.10.10.1 and port 443
2. Déchiffrement du SSL Handshake :
ssldump -nr /var/tmp/SSL.cap
3. Déchiffrement données applicatives :
ssldump -nr /var/tmp/SSL.cap –k /config/path/to/ssl.key -d
181. Une formation
Examiner une capture SSL
avec ssldump
Handshake
ClientHello
ServerHello
Échange de certificats
Génération PMS
ChangeCipherSpec
application_data
185. Une formation
Découvrir cURL?
Outil en CLI pour retrouver des
ressources par leurs URL
Disponible sous plusieurs architectures
• Linux, Windows, BSD, AIX…
Supporte plusieurs protocoles
• HTTP, FTP, SMB, LDAP…
Disponible d’office sous F5 BIG-IP
• Utile pour tester les monitors par exemple
186. Une formation
Utiliser cURL?
curl -v http://www.alphorm.com
Options courantes:
-I headers HTTP uniquement
-i headers + contenu
-v output verbose
-L suivre les redirections
-H envoyer des headers
-k accepter du SSL non sécurisé
-X specifier la méthode HTTP
man curl
191. Une formation
Rappel du TCP RESET
TCP RST est un flag TCP dû à plusieurs causes
• Service filtré ou pas en écoute
• VS désactivé
• Aucun membre disponible
• Timeout
• …
SYN
RSTSYN-ACK
ACK
RST
193. Une formation
Diagnostiquer les TCP RESET
Par défaut, la cause des RST n’est pas loguée
• Deux méthodes permettent d’avoir la cause :
Activer le logging vers /var/log/ltm
modify /sys db tm.rstcause.log value enable
Inclure la cause dans le payload du paquet RST
modify /sys db tm.rstcause.pkt value enable
194. Utiliser les iApps pour
déployer des applications
sur BIG-IP
Une formation
Mohamed Amine KADIMI
195. Plan
Définir les iApps et leurs composants
Utiliser les templates d’iApps
Configurer une iApp
Une formation
196. Une formation
Définition des iApps
La technologie iApps est un Framework
de déploiement et de gestion
d’applications
• Facilite le déploiement d’applications complexes,
en se basant sur des templates
• Automatise la création des objets (VS, pools,
monitors, iRules…)
• Encapsule les objets et les protège contre toute
modification externe (mode Strict Update)
197. Une formation
Deux composants principaux:
1. iApp Templates
2. iApp Application Services
Les Templates décrivent (en TCL) les
règles de déploiement d’une application
L’Application Service est le déploiement
unitaire d’une application via iApp
Définition des iApps
198. Une formation
Les iApps Templates
Des Templates prédéfinis
Des Templates téléchargeables
• Templates officiels
downloads.f5.com
• Templates communautaires
devcentral.f5.com
199. Une formation
Configurer une iApp
Le déploiement se fait en répondant à
des questions qui définissent la business
logic
La reconfiguration se fait en répondant
une nouvelle fois aux questions
Par défaut, la modification des objets
n’est pas autorisée en dehors de l’iApp
202. Une formation
Sécuriser l’administration de BIG-IP
• Modifier les mots de passe par défaut
• Utiliser les rôles/partitions efficacement
• Exiger la complexité des mots de passe
• Limiter les accès SSH/GUI aux IP sources
autorisées
• Externaliser les logs vers un serveur de
supervision
203. Une formation
Sécuriser le trafic des données
• Configurer le Port Lockdown sur les Self IP
• Limiter les VLANs autorisés sur un VS
• Configurer les limites de connexions pour
faire de l’anti-DoS basique
204. Mot de la fin
Une formation
Mohamed Amine KADIMI
207. Une formation
Les Virtual Servers
Un VS est défini par une IP et un port de
destination et une IP source
Si plusieurs VS matchent un trafic
entrant, le plus spécifique est utilisé
• Par défaut, le plus spécifique est sélectionné
même s’il est désactivé
208. Une formation
Les types de Virtual Servers
Standard
• Le plus commun, le plus riche en options
Forwarding (IP)
• Mode routeur, pas de Load Balancing
Performance (Layer4)
• Favorise l’optimisation au niveau 4
Performance (HTTP)
• Optimise le temps de traitement des requêtes HTTP
…
209. Une formation
Les algorithmes de LB
Statiques
• Distribution prédéterminée et prédictible
• Round Robin, Ratio
Dynamiques
• Distribution basée sur des métriques temps réel
• Least Connections, Fastest, Least Sessions…
Load Balancing par Node ou par Member
• Exemple: Least Connections (Member) vs Least
Connections (Node)
210. Une formation
Mécanismes de fallback
Priority Group Activation
PG=10 PG=10 PG=10 PG=5 PG=5
Fallback Host
Less than 2
211. Une formation
Monitoring et statuts des
Nodes/Members
Monitors
• Utilité des Alias Address et Alias Port
• Monitors externe (scripts)
Statuts
• Disable vs Force Offline
212. Une formation
Persistance
Persistance SSL
• Basée sur le SSL Session ID
• Fonctionne même quand BIG-IP ne déchiffre
pas le trafic
Persistance Universal
• Utilise les iRules
Fonctionnement des options Match
Across
213. Une formation
Optimisation et tuning du trafic
TCP Express
• Nom donné par F5 à la pile TCP/IP du BIG-IP
Optimisation par profils
• Profils TCP et OneConnect
Manipulation des payloads avec le profil
Stream
214. Une formation
iRules et Traffic Policies
iRules mulitiples et ordre d’exécution
• Priorité par défaut = 500
• Nombre plus bas = priorité plus haute
Data Groups et iFiles
Local Traffic Policies
• Alternative en mode graphique aux iRules
• Plus performantes mais moins riches
• Créer un draft d’une policy pour la modifier
216. Une formation
Troubleshooting
Outils de diagnostic
• TCPDUMP + SSLDUMP
• curl
• Fiddler
Troubleshooting des TCP RESET
• Bonne pratique: le logging des causes doit
être limité dans le temps pour le debugging
217. Une formation
Utilisation des iApps
iApps pour contrôler le déploiement
d’applications +ou- complexes
Déploiement basés sur Templates
• Officiels embarqués sur BIG-IP
• Officiels à télécharger et importer
• Communautaires à télécharger et importer
218. Une formation
Options de sécurité
Sécuriser le plan d’administration
• Utiliser les bonnes pratiques communes à
tous les équipements
Sécuriser le plan de trafic
• F5 BIG-IP est un default deny
• Autoriser uniquement le strict minimum
• Dans la mesure du possible, configurer les
limites de connexions