BGP : Configuration Basique

Dans ce tuto on va voir comment configurer une session BGP basique et en prime une vidéo Youtube qui accompagne ce tuto !!!

Lien de la vidéo :

La topologie (très simple) :

Le but de ce tuto établir la relation BGP entre R1 et R2 et annoncer les différents préfixes commençant par 204 et 93. On utilisera le réseau 150.10.10.0/30 pour l’interco IP entre R1 et R2.

1 ère étape : Configuration de l’interco IP

Tout d’abord sur R1 :

R1(config)#interface GigabitEthernet0/0
R1(config-if)#ip address 150.10.10.1 255.255.255.252

On configure l’adresse IP sur R2 :

R2(config)#interface GigabitEthernet0/0
R2(config-if)#ip address 150.10.10.2 255.255.255.252

On vérifie la continuité avec un ping :

2 ème étape : Configuration de la session BGP entre R1 et R2

R1 :

R1(config)#router bgp 100
R1(config-router)#neighbor 150.10.10.2 remote-as 900

R2:

R2(config)#router bgp 900
R2(config-router)#neighbor 150.10.10.1 remote-as 100

Remarque : En BGP contrairement à OSPF et EIGRP on est obligés de déclarer le voisin dans sa configuration.

On peut afficher la table de voisinage BGP :

R1#show ip bgp summary 

3 ème étape : Annonces réseaux

Comme vous pouvez le voir sur la photo au début de la photo au niveau de R1 je vais annoncer les 3 préfixes commençant par 204 et sur R2 les 3 préfixes commençant par 93.


R1(config)#router bgp 100
R1(config-router)#network 204.10.0.0 mask 255.255.0.0
R1(config-router)#network 204.20.0.0 mask 255.255.0.0
R1(config-router)#network 204.30.0.0 mask 255.255.0.0

R2(config)#router bgp 900
R2(config-router)#network 93.50.0.0 mask 255.255.0.0
R2(config-router)#network 93.60.0.0 mask 255.255.0.0
R2(config-router)#network 93.70.0.0 mask 255.255.0.0

Il faut ensuite que fasse une route Null pour chaque préfixes pour que le réseau soit annoncés en BGP car si un réseau n’est pas routé il ne sera pas annoncé en BGP.

Exemple :

ip route 204.10.0.0 255.255.0.0 Null0

Je fais la même chose pour le reste des préfixes.

4ème étape: Vérifier ce que l’on annonce et ce que l’on reçoit.

Pour vérifier ce que l’on annonce :

R1#show ip bgp neighbors 150.10.10.2 advertised-routes

Pour vérifier ce que je reçois il faut au préalable activer le « soft-reconfiguration inbound » sur le voisin BGP

R1(config)#router bgp 100
R1(config-router)#neighbor 150.10.10.2 soft-reconfiguration inbound

Ensuite je peux taper la commande qui me permet de voir les routes reçues :

R1#show ip bgp neighbors 150.10.10.2 received-routes 

Je fait la même chose sur R2.

Tuto terminé 😀 !

J’espère que cela vous a plu nous irons plus loin sur BGP dans de prochains tutos.A la prochaine !

Les ACLs sur CISCO (ACCESS LIST). Partie 2 : Les ACLs ETENDUES

Voici la seconde partie sur les ACLs où nous allons voir comment configurer les ACLs étendues sur un routeur CISCO.

Pour ceux qui n’ont pas vu la première partie voici le lien 🙂 :

https://savoiritetlab.com/index.php/2021/04/11/les-acls-sur-cisco-access-list-partie-1-acls-standard/

LE LAB : Nous allons avoir un réseau très simple pour ce lab. Un réseau admin(192.168.10.0/24), un réseau employés(192.168.40.0/24) et le réseau du serveur(172.16.50.0/24).

But du LAB : Il faut que seul le réseau admin puisse accèder en SSH au routeur. Il faut que le réseau admin puissent accèder à tous les services du serveur WEB (DNS et HTTP). Le réseau EMPLOYES ne pourra que pinguer et accèder au service HTTP du serveur WEB.

1 ère étape : Configuration de l’ACL étendue SSH_ROUTEUR

R1ACL2(config)#ip access-list extended SSH_ROUTEUR
R1ACL2(config-ext-nacl)#permit tcp 192.168.10.0 0.0.0.255 host 192.168.10.1 eq 22

J’aurorise le réseau admin (j’aurais pu aussi mettre que l’ip du PC admin) à accèder en SSH à mon routeur.

Etant donné que c’est une ACL étendu j’applique la règle au plus près de la source en « IN »(en entrée de l’interface):

R1ACL2(config)#interface gigabitEthernet 0/0
R1ACL2(config-if)#ip access-group SSH_ROUTEUR in 

Nous avons terminé pour la partie SSH on va s’occuper de la partie accès au serveur.

2 ème étape : Accès au serveur

Nous allons configurés 2 ACLsétendues car nous avons 2 interfaces.

Au niveau du réseau ADMIN (je vais réutiliser mon ACL SSH_ROUTEUR )

R1ACL2(config)#ip access-list extended SSH_ROUTEUR
R1ACL2(config-ext-nacl)#permit tcp 192.168.10.0 0.0.0.255 host 172.16.50.250 range www domain

J’autorise le réseau admin à interroger le port 53 et le port 80 de mon serveur.

Ensuite sur le réseau EMPLOYES :

R1ACL2(config)#ip access-list extended EMPLOYEStoSERVER
R1ACL2(config-ext-nacl)#permit tcp 192.168.40.0 0.0.0.255  host 172.16.50.250 eq 80

J’autorise le réseau EMPLOYES a interrogé mon serveur uniquement sur le port 80 (HTTP)

J’applique la règle ensuite sur mon interface :

R1ACL2(config)#interface gigabitEthernet 0/1
R1ACL2(config-if)#ip access-group EMPLOYEStoSERVER in

J’affiche la conf de mes ACLs pour vérifier que tout est ok :

R1ACL2#sh ip access-lists 
Extended IP access list SSH_ROUTEUR
    10 permit tcp 192.168.10.0 0.0.0.255 host 192.168.10.1 eq 22
    20 permit tcp 192.168.10.0 0.0.0.255 host 172.16.50.250 range domain www
Extended IP access list EMPLOYEStoSERVER
    10 permit tcp 192.168.40.0 0.0.0.255 host 172.16.50.250 eq www

Je fait aussi un show run pour voir si les règles sont bien appliqués sur les interfaces :

interface GigabitEthernet0/0
 ip address 192.168.10.1 255.255.255.0
 ip access-group ADMINtoSERVER in
 duplex auto
 speed auto
!
interface GigabitEthernet0/1
 ip address 192.168.40.1 255.255.255.0
 ip access-group EMPLOYEStoSERVER in
 duplex auto
 speed auto

Une fois terminé je peux tester mes règles sur mes différents réseaux :

Depuis le réseau ADMIN le DNS est OK :

Et je parviens à accèder en HTTP à mon serveur :

En revanche sur mon réseau EMPLOYES je ne parviens pas à interoogé mon serveur DNS car je ne l’ai pas autorisé :

L’accès WEB lui en revanche est OK car je l’ai explicitement autorisé.

Fin de ce tuto n’hésitez à laisser un commentaire et me dire ce que vous en pensez à bientôt 😀 .

CISCO l’autonégociation, la vitesse, le duplex. Exemple avec 2 routeurs.

1. Qu’est ce que l’autonégociation, la vitesse ou le duplex ?

L’auto négociation se passe au niveau physique (niveau 1 du modèle OSI), c’est ce qui est négocié entre 2 équipements (par exemple switchs ou routeurs) sur quelle vitesse ils communiqueront et sur quel duplex ils communiqueront. En auto-neg les équipements choisiront de préférence le full-duplex et la vitesse la plus élevée.

Vitesse (avec la commande speed):

10 : 10 Mbps

100 : 100 Mbps

1000 : 1000 Mbps

auto : la négociation de la vitesse se fera automatiquement

Duplex :

Half-duplex : L’équipement A envoie des données à l’équipement B qui receptionne ces données. B ne peut pas envoyer pendant que A envoie et vice versa.

Full-duplex : L’équipement A et B peuvent envoyer et recevoir en même temps.

Alors petit LAB sur Cisco Packet Tracer (encore) 🙂 .

Les 2 routeurs cisco sont connectés sur leur ports Gig0/0/0. Les ports sont en rouges car je ne l’ai pas activés (les ports sont shut de bases sur les routeurs cisco).

On commence par le Routeur1 :

On passe en mode privilégié avec « enable ». On tape ensuite la commande suivante :

R1#show interfaces gigabitEthernet 0/0/0
GigabitEthernet0/0/0 is administratively down, line protocol is down (disabled)
  Hardware is ISR4331-3x1GE, address is 0060.5ccb.bd01 (bia 0060.5ccb.bd01)
  MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive not supported
  Full Duplex, 1000Mbps, link type is auto,  media type is Auto Select
  output flow-control is on, input flow-control is on
  ARP type: ARPA, ARP Timeout 04:00:00, 
  Last input 00:00:08, output 00:00:05, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/375/0 (size/max/drops); Total output drops: 0
  Queueing strategy: fifo
  Output queue :0/40 (size/max)
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     0 packets input, 0 bytes, 0 no buffer
     Received 0 broadcasts (0 IP multicasts)
     0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 watchdog, 1017 multicast, 0 pause input
     0 input packets with dribble condition detected
     0 packets output, 0 bytes, 0 underruns
     0 output errors, 0 collisions, 1 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier
     0 output buffer failures, 0 output buffers swapped out

En bleu la commande, en rouge ce qui nous intéresse.

Je vois que le port à négocié avec le routeur en face du Full-Duplex avec comme vitesse 1000 Mbps normal vu que l’on est sur 1 liaison 1 Gbps.

Vérifions sur le routeur 2 :

R2#show interfaces gigabitEthernet 0/0/0
GigabitEthernet0/0/0 is administratively down, line protocol is down (disabled)
  Hardware is ISR4331-3x1GE, address is 00e0.8f81.7c01 (bia 00e0.8f81.7c01)
  MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive not supported
  Full Duplex, 1000Mbps, link type is auto,  media type is Auto Select
  output flow-control is on, input flow-control is on
  ARP type: ARPA, ARP Timeout 04:00:00, 
  Last input 00:00:08, output 00:00:05, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/375/0 (size/max/drops); Total output drops: 0
  Queueing strategy: fifo
  Output queue :0/40 (size/max)
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     0 packets input, 0 bytes, 0 no buffer
     Received 0 broadcasts (0 IP multicasts)
     0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 watchdog, 1017 multicast, 0 pause input
     0 input packets with dribble condition detected
     0 packets output, 0 bytes, 0 underruns
     0 output errors, 0 collisions, 1 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier
     0 output buffer failures, 0 output buffers swapped out

On a exactement la même chose vitesse 1000 Mbps et Full-duplex. Les 2 routeurs pourront communiquer correctement. Il faudra évidemment que « j’unshut » le port avant configure les IPs etc …

PS : unshut le port c’est à dire le rallumer administrativement avec la commande « no shutdown ». D’où « administratively down » (lorsque l’on fait un « show interfaces ») car l’interface est « shutdown ».

Unshut du port sur R1 :

R1#configure terminal 
Enter configuration commands, one per line.  End with CNTL/Z.

R1(config)#interface gigabitEthernet 0/0/0
R1(config-if)#no shutdown 
R1(config-if)#
%LINK-5-CHANGED: Interface GigabitEthernet0/0/0, changed state to up

On fait la même chose sur R2 (on unshut le port) :

R2#configure terminal 
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#interface gigabitEthernet 0/0/0
R2(config-if)#no shutdown 
R2(config-if)#
%LINK-5-CHANGED: Interface GigabitEthernet0/0/0, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0/0, changed state to up

Comme vous pouvez le voir dans le log le port est monté et aussi sur Packet Tracer :

Imaginons maintenant (et cela m’arrive souvent dans mon métier) que 2 équipements ne parviennent pas à négocier correctement, que faire ? Enlever l’autonégociation et forcer la négociation au niveau de la vitesse et du duplex.

Pour forcer le duplex et la vitesse sur le routeur R1 :

R1(config-if)#duplex full
R1(config-if)#speed 1000

Remarque : Pour remettre en autonégociation il suffit après chaque commande « speed » et « duplex » de mettre « auto ».

Maintenant je vais changer la vitesse sur R2 et la mettre à 100 :

R2(config)#interface gigabitEthernet 0/0/0
R2(config-if)#speed 100
R2(config-if)#duplex full

Les 2 ports redeviennent rouge sur les interfaces Visible dans Packet Tracer :

Regardons les interfaces respectives de R1 et R2 :

R1#show interfaces gigabitEthernet 0/0/0
GigabitEthernet0/0/0 is up, line protocol is down (disabled)
  Hardware is ISR4331-3x1GE, address is 0060.2f9a.b901 (bia 0060.2f9a.b901)
  MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive not supported
  Full Duplex, 1000Mbps, link type is auto,  media type is Auto Select
  output flow-control is on, input flow-control is on
  ARP type: ARPA, ARP Timeout 04:00:00, 
  Last input 00:00:08, output 00:00:05, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/375/0 (size/max/drops); Total output drops: 0
  Queueing strategy: fifo
  Output queue :0/40 (size/max)
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     0 packets input, 0 bytes, 0 no buffer
     Received 0 broadcasts (0 IP multicasts)
     0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 watchdog, 1017 multicast, 0 pause input
     0 input packets with dribble condition detected
     0 packets output, 0 bytes, 0 underruns
     0 output errors, 0 collisions, 1 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier
     0 output buffer failures, 0 output buffers swapped out
R2#show interfaces gigabitEthernet 0/0/0
GigabitEthernet0/0/0 is up, line protocol is down (disabled)
  Hardware is ISR4331-3x1GE, address is 0050.0f7e.1201 (bia 0050.0f7e.1201)
  MTU 1500 bytes, BW 1000000 Kbit, DLY 100 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive not supported
  Full Duplex, 100Mbps, link type is auto,  media type is Auto Select
  output flow-control is on, input flow-control is on
  ARP type: ARPA, ARP Timeout 04:00:00, 
  Last input 00:00:08, output 00:00:05, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/375/0 (size/max/drops); Total output drops: 0
  Queueing strategy: fifo
  Output queue :0/40 (size/max)
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     0 packets input, 0 bytes, 0 no buffer
     Received 0 broadcasts (0 IP multicasts)
     0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 watchdog, 1017 multicast, 0 pause input
     0 input packets with dribble condition detected
     0 packets output, 0 bytes, 0 underruns
     0 output errors, 0 collisions, 1 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier
     0 output buffer failures, 0 output buffers swapped out

On voit que le port est UP mais que physiquement il est down : « GigabitEthernet0/0/0 is up, line protocol is down (disabled) » ce qui est normal car sur R1 je communique sur la vitesse 1000 :

Et sur R2 sur la vitesse 100 :

Maintenant je repasse R2 sur la vitesse 1000 :

R2(config)#interface gigabitEthernet 0/0/0
R2(config-if)#speed 1000
R2(config-if)#
%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0/0, changed state to up

Comme vous pouvez le voir dans le log, le lien est passé UP.

On regarde sur R1 :

Fin de ce tuto, j’espère que vous avez compris ce qu’est le duplex, la vitesse et la négociation. Il m’est déjà arrivé de traiter des incidents liés à cela et parfois il faut pas chercher loin … il faut juste que les ports négocie bien entre eux.

Donc pour vos prochains débug reparcourez bien le modèle OSI et commencer au niveau 1 !

A bientôt 😀 !

Authentification par clé SSH sur son serveur DEBIAN

Pour rappel SSH est un protocole de communication sécurisé. Il permet notamment de se connecter sur un serveur distant de manière sécurisé (contrairement à telnet par exemple).

Nous allons voir dans ce petit tuto comment se connecter à sa machine Debian via une authentification par clé. Nous aurons un serveur Debian qui sera POSTFIX et un client (ssh) Debian qui sera DEBIAN_ROUTEUR.

Lorsque vous installer un serveur Debian vous avez la possibilités lors de l’installation d’installer SSH serveur. Si ce n’est pas fait vous pouvez l’installer :

apt install openssh-server

Côté client il est normalement déjà installé sur chaque distribution Debian mais si ce n’est pas le cas :

apt install openssh-client

Une fois que cela est fait nous allons configuré le démon ssh sur POSTFIX :

vim /etc/ssh/sshd_config

Dans le fichier nous allons nous intéresser à l’instruction :

#PermitRootLogin yes

On décommente, on enregistre et on quitte. Je fait cela pour pouvoir me connecter avec un mots de passe en root. Je changerais cela après.

Puis on reload le service :

systemctl reload sshd.service

Dirigeons nous désormais vers le client « DEBIAN-ROUTEUR ».

Nous allons générer une clé publique et privé. La clé privé qui sera gardé précieusement sur notre client. Et la clé publique que l’on enverra sur notre serveur « POSTFIX » ou tous les serveurs où l’on souhaite s’authentifier par clés.

On génère la clé :

root@DEBIAN-ROUTEUR:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:fp2PVClDyfc6J631cqHrzvdtT9CNogYaAmXcTYjtFz4 root@DEBIAN-ROUTEUR
The key's randomart image is:
+---[RSA 2048]----+
|   .o+ +.        |
|   oo + o  . .   |
|  .  . . .  + .  |
|   .  . E  . . =.|
|    . ..S.  + = +|
|     . + . o * = |
|      . . + + = *|
|         o ..+.O=|
|            +==+B|
+----[SHA256]-----+

Explications :

Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.

Il demande où nous souhaiton enregistrés les clés nous allons laissés par défaut et il enregistrera dans « /root/.ssh/id_rsa ». Il créer ensuite le répertoire caché « Created directory ‘/root/.ssh’. »

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

Il demande ensuite une passphrase c’est très bien si vous la mettez ça permet de rajouter une sécurité en plus comme cela il vous faut à la fois la clé privé et la passphrase (qui n’est pas un mot de passe mais qui y ressemble 🙂 ). Pour le lab je n’ai rien mis.

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

id_rsa : ma clé privé

id_rsa.pub : ma clé public

Je vais maintenant envoyé ma clé publique au serveur distant (POSTFIX) avec la commande « ssh-copy-id »

root@DEBIAN-ROUTEUR:~# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.217
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.1.217's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.1.217'"
and check to make sure that only the key(s) you wanted were added.

Je renseigne le mdp root de mon POSTFIX. La clé a bien été ajouté.

Je tente de me connecter à POSTFIX et je m’y connecte sans mots de passe !!! 😀

Restons sur POSTFIX tout à l’heure dans la configuration du démon sshd j’ai mis l’instruction « PermitRootLogin » à yes je vais à la place « without-password » cela veut dire que je pourrais me loguer avec l’user root sans mots de passe et uniquement par clés.

J’édite mon fichier :

vim /etc/ssh/sshd_config

Je change l’instruction

PermitRootLogin without-password

Et j’enregistre mon fichier et je reload ssh :

systemctl reload sshd.service

Si maintenant je tente de me connecté depuis une autre machine :

Impossible de s’y connecter.

Voilà j’ai pu sécuriser mon accès SSH via un système de clés privés/publique.

Pour information les clés publiques de mes clients ssh sont stockés dans le fichier « .ssh/authorized_keys »

C’est la fin de ce tuto ! A Bientôt 😉 .