<li><strong>Standardowe ACL</strong> - ACL filtruje tylko w warstwie
3, na podstawie adresu źródłowego.</li>
<li><strong>Rozszerzone ACL</strong> - ACL może filtrować w warstwie
- 3 lub 4 na podstawie adresu źródłowego lub docelowego, protokołu
- TCP lub UDP, czy numeru portu.</li>
+ 3 lub 4 na podstawie adresu źródłowego lub docelowego, protokołu,
+ czy numeru portu.</li>
</ul>
<p>
Dla ACL ważny jest również kierunek przesyłanie pakietu. Każdy
<li><strong>Standardowe ACL</strong> - ich kryteria dopasowania
dotyczną jedynie adresów źródłowych (działają w warstwie 3).</li>
<li><strong>Rozszerzone ACL</strong> - działają w warstwie 4, w
- jednej regule możemy zapisać do 5 warunków: protokoł (TCP, UDP),
+ jednej regule możemy zapisać do 5 warunków: protokoł
+ (najczęściej TCP lub UDP),
adres, port - źródłowy, adres, port - docelowy.</li>
</ul>
<p>
dobre praktyki podczas ich tworzenia przypomnieliśmy sobie również
w jaki sposób oblicza się maski blankietowe.
</p>
+ <h1 id="3.5.configurationacllistforipv4">3.5. Konfiguracja list ACL dla IPv4</h1>
+ <p>
+ W poprzednim rodziale dowiedzieliśmy się czym są ACL-ki i w jaki
+ sposób możemy wykorzystać je do kształtowania ruchu. Poznaliśmy
+ również podstawowe polecenie, ale bez ich omawiania. Ten rozdział
+ przedstawi nam w jaki sposób tworzy oraz modyfikować, standardowe i
+ rozszerzone listy ACL oraz dodatkowo jak wykorzystać ACL do kontroli
+ zdalnego dostępu do urządzeń.
+ </p>
+ <h2 id="3.5.1.configurestdaclforipv4">3.5.1. Konfiguracja standardowych ACL dla IPv4</h2>
+ <p>
+ Tworzenie ACL najlepiej rozpocząć od zapisania w edytorze tekstu
+ specyfiki polityki bezpieczeństwa organizacji, następnie musimy
+ przełożyć te zasady na polecenia IOS, w tym momencie warto dołączać
+ komentarze. Kiedy nasza lista jest hipotetycznie gotowa, możemy ją
+ skopiować do środowiska testowego - może to być PT lub fizyczne
+ urządzenie.
+ </p>
+ <p>
+ Chcąc utworzyć standardową numerowaną listę ACL w konfiguracji
+ globalnej wydajemy następujące polecenie:
+ </p>
+<pre class="code-block">
+Router(config)# access-list access-list-number {deny | permit | remark text} source [source-wildcard] [log]
+</pre>
+ <p>
+ Jeśli będziemy chcieli usunąć listę użyjemy polecenia:
+ <code class="code-inline">no access-list access-list-number</code>
+ </p>
+ <p>
+ Poszczególne elementy składni polecenia tworzenia standardowych
+ numerycznych ACL znajduje się poniżej:
+ </p>
+ <ul>
+ <li><code class="code-inline">access-list-number</code> - numer listy
+ ACL, dla standardowych listy jest od 1 do 99 lub 1300 do 1999.</li>
+ <li><code class="code-inline">deny</code> - odmowa dostępu, jeśli
+ warunek został spełniony.</li>
+ <li><code class="code-inline">permit</code> - udzielenie dostępu,
+ jeśli warunek został spełniony.</li>
+ <li><code class="code-inline">remark <em>text</em></code> -
+ opcjonalny komentarz dla celów dokumentacji. Długość komentarza
+ jest ograniczona do 100 znaków.</li>
+ <li><code class="code-inline">source</code> - określa adres sieci
+ hosta źródłowego do filtrowania. Tutaj możemy posłużyć się, słowem
+ kluczowym <em>any</em>, aby określić wszystkie sieci oraz słowem
+ kluczowym <em>host ip-address</em> lub poprostu <em>ip-address</em>,
+ aby zidentyfikować konkretny adres IP.</li>
+ <li><code class="code-inline">source-wildcard</code> - opcjonalna
+ 32-bitowa maska blankietowa stosowana dla adresów źródłowych. Jeśli
+ zostanie pominięta, zakłada się domyślną maskę 0.0.0.0.</li>
+ <li><code class="code-inline">log</code> - opcjonalne słowo kluczowe
+ generujące i wysłające komunikat gdy ACE (wpis w ACL) zostanie
+ dopasowany. Wysyłany komunika zawiera numer ACL, dopasowany
+ warunek (<em>permit</em> or <em>deny</em>), adres źródłowy oraz
+ liczbę pakietów. Komunikat generowany jest dla pierwszego
+ pasującego pakietu. Wysyłanie komunikatów powinno być stosowane
+ wyłączenie w celach diagnostycznych lub ze względów bezpieczeństwa.</li>
+ </ul>
+ <p>
+ Chcąc utworzyć listę ACL standardową nazwaną, w konfiguracji
+ globalnej musimy wydać następujące polecenie:
+ </p>
+<pre class="code-inline">
+Router(config)# ip access-list standard access-list-name
+</pre>
+ <p>
+ <code class="code-inline">access-list-name</code> to unikatowa nazwa
+ dla listy. Zatwierdzenie tego polecenia, spowoduje, że przejedziemy
+ w trybu konfiguracji listy ACL. Wówczas konfiguracja takiej listy
+ skupia się tworzeniu reguł rozpoczynających się od słów kluczowych
+ <code class="code-inline">permit, deny</code> i ewentualnie
+ <code class="code-inline">remark</code>.
+ </p>
+<pre class="code-inline">
+R1(config)# ip access-list standard PERMIT-ACCESS
+R1(config-std-nacl)# remark ACE permits host 192.168.10.10
+R1(config-std-nacl)# permit host 192.168.10.10
+</pre>
+ <p>
+ Chcąc usunąć taką listę poprzedzamy polecenie
+ <code class="code-inline">ip access-list standard PERMIT-ACCESS</code>
+ słowem kluczowym <em>no</em>.
+ </p>
+ <p>
+ Określenie listy nie czyni jej jeszcze działającą. Jak pamiętamy
+ listy są przypisywane do interfejsów i to na określonych kierunkach
+ transmisji, więc chcąc podłączyć listę do interfejsu należy wydać
+ poniższe polecenie:
+ </p>
+<pre class="code-block">
+Router(config-if) # ip access-group {access-list-number | access-list-name} {in | out}
+</pre>
+ <p>
+ Po słowie <code class="code-inline">access-group</code>, podajemy
+ albo numer listy, albo jej nazwę i na koncu podajemy kierunek dla
+ ruchu wychodzącego - <code class="code-inline">out</code> a dla ruchu
+ przychodzącego - <code class="code-inline">in</code>. Aby odwołać
+ listę musimy poprzedzić polecenie
+ <code class="code-inline">ip access-group</code> słowem <em>no</em>
+ oraz podać numer bądź nazwę listy.
+ </p>
+ <h3 id="3.5.1.pka">Zadanie praktyczne - Packet Tracer</h3>
+ <p>
+ <a href="">Konfigurowanie numerowanych standardowych list ACL IPv4 - scenariusz</a><br />
+ <a href="">Konfigurowanie numerowanych standardowych list ACL IPv4 - zadanie</a><br />
+ <a href="">Konfigurowanie nazywanych standardowych list ACL IPv4 - scenariusz</a><br />
+ <a href="">Konfigurowanie nazywanych standardowych list ACL IPv4 - zadanie</a>
+ </p>
+ <h2 id="3.5.2.modifyingaclsforipv4">3.5.2. Modyfikowanie list ACL dla IPv4</h2>
+ <p>
+ Modyfikowanie ACL-ek, nie uchodzi za szczególnie przyjmne zajęcie.
+ To zadanie może zrealizować na dwa sposoby. Możemy użyć albo
+ wcześniej zapisanej w edytorze tekstu listy - tę listę wdrożoną
+ należy usunąć poprzez słowo <em>no</em>, zmieć co trzeba i następnie
+ utworzyć nową listę wklejając jej polecenia z edytora. Drugim
+ sposobem jest użycie <strong>numerów sekwencyjnych</strong>.
+ </p>
+ <p>
+ Numery skwencyjne wyświetlane są gdy używamy polecenia
+ <code class="code-inline">show access-list</code> do wyświetlenia
+ list ACL.
+ </p>
+<pre class="code-block">
+R1# show access-lists
+Standard IP access list 1
+ 10 deny 19.168.10.10
+ 20 permit 192.168.10.0, wildcard bits 0.0.0.255
+R1#
+</pre>
+ <p>
+ Do ich edycji musimy skorzystać z polecenia
+ <code class="code-inline">ip access-list standard</code>, następnie
+ usuwamy wadliwy wpis, w tym przypadku jest
+ <code class="code-inline">10</code> poprzedzając numer sekwencji
+ słowem <em>no</em> i następnie poprawiony wpis rozpoczynamy od numeru
+ sekwencji. Poniżej znajduje się przykład z IOS:
+ </p>
+<pre class="code-block">
+R1# conf t
+R1(config)# ip access-list standard 1
+R1(config-std-nacl)# no 10
+R1(config-std-nacl)# 10 deny host 192.168.10.10
+R1(config-std-nacl)# end
+R1# show access-lists
+Standard IP access list 1
+ 10 deny 192.168.10.10
+ 20 permit 192.168.10.0, wildcard bits 0.0.0.255
+R1#
+</pre>
+ <p>
+ W przypadku nazwanej listy postępujemy podobnie, tylko zamiast numery
+ podajemy nazwę. Użycie numerów sekencyjnych daje nam jeszcze jedną
+ dodatkową nazwę funkcję mianowicie pozwala nam wprowadzać wpisy w
+ konkretne miejsca, na liście. Biorąc pod uwagę poprzedni przykład
+ chcąc dodać host 192.168.10.5, którego ruch ma również zostać
+ zablokowany, to jeśli dopiszemy ją to ta reguła nie będzieć mieć
+ sensu. Druga reguła dopuszcza ruch z całej sieci 192.168.10.0/24.
+ Zatem musimy wstawić regułę zablokowania hosta 192.168.10.5 pomiędzy
+ regułę 10 a 20, na przykład. Możemy ją również wstawić na początku
+ samej listy, również będzie ona miała swoje zastosowanie.
+ </p>
+<pre class="code-inline">
+R1# configure terminal
+R1(config)# ip access-list standard NO-ACCESS
+R1(config-std-nacl)# 15 deny 192.168.10.5
+R1(config-std-nacl)# end
+R1#
+R1# show access-lists
+Standard IP access list NO-ACCESS
+ 15 deny 192.168.10.5
+ 10 deny 192.168.10.10
+ 20 permit 192.168.10.0, wildcard bits 0.0.0.255
+R1#
+</pre>
+ <p>
+ Chcąc wstawić w regułę edytujemy listę za pomocą polecenia
+ <code class="code-inline">ip access-list</code> następnie
+ rozpoczynamy wpis od numer np. 15. Na koniec opuszczamy tryb
+ konfiguracji listy i wyświetlamy zawartość listy. Wydaje mi się, że
+ nie takiego efektu się spodziewaliśmy. Ten efekt jest spowodowany
+ działaniem funkcji mieszaczjącej na standardowych listach ACL dla
+ IPv4.
+ </p>
+ <p>
+ Wyświetlając listę za pomocą polecenia
+ <code class="code-inline">show access-lists</code> możemy zauważyć
+ że IOS zlicza przypasowania do wpisów w ACL, dzięki czemu możemy
+ zauważyć, czy te wpisy mają w ogóle zastosowanie. Czyszcenia
+ liczników możemy dokonać za pomoca polecenia:
+ </p>
+<pre class="code-block">
+R1# clear access-list counters
+</pre>
+ <p>
+ Wydanego w trybie uprzywilejowanym EXEC.
+ </p>
+ <h2 id="3.5.3.securingvtylinesviastdaclsforipv4">3.5.3. Zabezpieczenia linii VTY za pomocą standardowyej ACL IPv4.</h2>
+ <p>
+ Przy użyciu ACL może określić, kto może się podłączyć do naszego
+ urządzenia zdalnie, a kto nie. Cała metoda polega na utworzeniu
+ standardowej listy ACL i następnie na liniach VTY możemy za pomocą
+ polecenia <strong>access-class</strong> wskazać ACL, która będzie
+ zezwalać lub blokować zdalny dostę dla zapisanych w niej sieciach lub
+ hostach. Poniżej znajduej się składania polecenia
+ <em>access-class</em>:
+ </p>
+<pre class="code-block">
+R1(config-line)# access-class {access-list-number | access-list-name} { in | out }
+</pre>
+ <p>
+ Zwróć my uwagę to polecenie pozwala również na ustalenie kierunku.
+ Stosowanym w praktyce kierunkiem jest
+ <code class="code-inline">in</code>, drugi kierunek odfiltrowuje
+ ruch VTY wychodzący i jest on rzadko stosowany.
+ </p>
+<pre class="code-block">
+R1(config)# username ADMIN secret class
+R1(config)# ip access-list standard ADMIN-HOST
+R1(config-std-nacl)# remark This ACL secures incoming vty lines
+R1(config-std-nacl)# permit 192.168.10.10
+R1(config-std-nacl)# deny any
+R1(config-std-nacl)# exit
+R1(config)# line vty 0 4
+R1(config-line)# login local
+R1(config-line)# transport input ssh
+R1(config-line)# access-class ADMIN-HOST in
+R1(config-line)# end
+R1#
+</pre>
+ <p>
+ Przy tak skonfigurowanej liniach VTY, dostęp przez SSH do urządzenia
+ będzie mieć wyłącznie host o adresie 192.168.10.10.
+ </p>
+ <h2 id="3.5.4.extendedacllist">3.5.4. Rozszerzone listy ACL</h2>
+ <p>
+ Rozszerzone listy ACL pozwalają nam na dodanie większej ilości
+ kryteriów dopasowania pakietów. Listy rozszerzone podobnie jak listy
+ standardowe również mogą być numerowane oraz nazwa. Składnia tworząca
+ listę wraz ze wpisem wygląda następująco:
+ </p>
+<pre class="code-inline">
+Router(config)# access-list access-list-number {deny | permit | remark text}
+protocol source source-wildcard [operator {port}] destination destination-wildcard
+[operator {port}] [established] [log]
+</pre>
+ <p>
+ Pierwszą zmianą odnośnie list standardowych jest:
+ <code class="code-inline">protocol</code> - nazwa lub numer protokołu
+ sieci Internet. Typowymi słowami kluczowymi są tutaj:
+ <em>ip, tcp, udp, icmp</em>. Pełną listę możemy wyświetlić za pomocą
+ znaku zapytania (<strong>?</strong>). Słowo kluczowe IP pasuje do
+ wszystkich protokołów IP;
+ <code class="code-inline">destination</code> i
+ <code class="code-inline">destination-wildcard</code> - adres ip oraz
+ maska blankietowa dla sieci bądź hosta docelowego. Mogą tutaj
+ występować słowa kluczowe <em>host</em> oraz <em>any</em>;
+ <code class="code-inline">operator</code> - porównuje porty źródłowe
+ i docelowe. Możliwe argumenty to: <em>lt</em> (mniejsze niż),
+ <em>gt</em> (większe niż), <em>eq</em> (równy), <em>neq</em>
+ (nie równy) oraz <em>range</em> (zakres);
+ <code class="cdoe-inline">port</code> - numer bądź nazwa portu TCP
+ lub UDP. Pod znakiem zapytania (<strong>?</strong>), dostępna jest
+ pełna lista wraz z numerami portów;
+ <code class="code-inline">established</code> - funkcja
+ zapory pierwszej generacji, tylko dla TCP.
+ </p>
+ <p>
+ Włączanie list rozszerzonych wygląda tak samo jak w przypadku list
+ standardowych, oto przykład:
+ </p>
+<pre class="code-inline">
+R1(config)# access-list 110 permit tcp 192.168.10.0 0.0.0.255 any eq www
+R1(config)# access-list 110 permit tcp 192.168.10.0 0.0.0.255 any eq 443
+R1(config)# interface g0/0/0
+R1(config-if)# ip access-group 110 in
+R1(config-if)# exit
+R1(config)#
+</pre>
+ <p>
+ Stosowanie list rozszerzonych umożliwia nam dostęp do bardzo
+ wygodnej funkcji. Jeśli chcemy zabezpieczyć naszą sieć wewnętrzną
+ za pomocą ACL-ek, to utworzyli byśmy dwie listy jedną na ruch
+ wchodzący do interfejsu sieci wewnętrznej, zezwalający np. jej
+ użytkownikom na korzystanie z HTTP/S. Wówczas hosty naszej sieci,
+ nie będą mogły korzystać z innych protokołów, jednak ta pojedyncza
+ lista daje możliwość skomunikowania się z hostami naszej sieci przez
+ hosty z zewnątrz. Potrzebujemy drugiej ACL-ki, która zablokuje taką
+ możliwość. Mogli byś my utworzyć pustą listę i przypisać ją do
+ kierunku wychodzącego naszego interfejsu wewnętrzego i to tyle. Cały
+ ruch zablokowany, w tym odpowiedzi od serwerów WWW dla hostów naszej
+ sieci. Oczywiście przy takiej transmisji moglibyśmy dopuścić ruch
+ na porcie źródłowym TCP/80 lub TCP/443 (HTTP, HTTPS). Co nie jest
+ dobrym rozwiązaniem, ponieważ nie jest problemem wysłanie pakietu
+ o sfałszowanym porcie źródłowym. W tym przypadku z korzystamy z
+ wpisu dopuszczającego cały TCP dla sieci 192.168.10.0/24, ale tylko
+ dla połączeń już nawiązanych, blokując tym samym możliwość nawiązania
+ nowego połączenia z zewnatrz temu służy opcja
+ <strong>established</strong>. Należa zapamiętać, że z tej funkcji
+ może skorzystać <strong>tylko dla protokołu TCP</strong>.
+ </p>
+<pre class="code-inline">
+R1(config)# access-list 120 permit tcp any 192.168.10.0 0.0.0.255 established
+R1(config)# interface g0/0/0
+R1(config-if)# ip access-group 120 out
+R1(config-if)# exit
+R1(config)#
+</pre>
+ <p>
+ Wiele pozostałych czynności dokonywanych na listach rozszerzonych
+ dokonuje się w sposób analogiczny do listy standardowych. Przyczym
+ w przypadku wstawiania zasad do listy, to na listach rozszerzonych
+ nie działa algorytm mieszczający, zatem kolejność wpisów powinna być
+ taka jaką my sobie zadeklarowaliśmy, ale nie jak ustalił to IOS.
+ </p>
+ <p>
+ Do weryfikacji ACL, możemy wykorzystać polecenia:
+ <code class="code-inline">show ip interface<code>, pokaże nam ono
+ jakie listy są przypisane do tego interfejsu;
+ <code class="code-inline">show access-list</code>, zwróci
+ zdeklarowane w systemie listy ACL;
+ <code class="code-inline">show running-config | begin ip access-list</code>,
+ wyświetla listy ACL z bierzącej konfiguracji urządzenia.
+ </p>
+ <h3 id="3.5.4.pka">Zadanie praktyczne - Packet Tracer</h3>
+ <p>
+ <a href="">Konfiguracja rozszerzonych list ACL IPv4 - Scenariusz 1 - scenariusz</a><br />
+ <a href="">Konfiguracja rozszerzonych list ACL IPv4 - Scenariusz 1 - zadanie</a><br />
+ <a href="">Konfiguracja rozszerzonych list ACL IPv4 - Scenariusz 2 - scenariusz</a><br />
+ <a href="">Konfiguracja rozszerzonych list ACL IPv4 - Scenariusz 2 - zadanie</a>
+ </p>
+ <h3 id="3.5.5.pka">Zadanie praktyczne - Packet Tracer</h3>
+ <p>
+ <a href="">Wdrażanie ACL IPv4 - wyzwanie - scenariusz</a><br />
+ <a href="">Wdrażanie ACL IPv4 - wyzwanie - zadanie</a>
+ </p>
+ <h3 id="3.5.5.lab">Laboratorium</h3>
+ <p>
+ <a href="">Konfiguracja i weryfikacja rozszerzonych list ACL IPv4</a>
+ </p>
+ <h2 id="3.5.summary">Podsumowanie</h2>
+ <p>
+ Ten rozdziała pokazał nam w jaki sposób tworzyć oraz modyfikować
+ listy ACL. Poznaliśmy sposób na zabezpieczenie linii VTY za pomocą
+ ACL oraz funkcję <em>established</em> rozszerzonych list dostępu.
+ Na koniec poznaliśmy w jaki sposób możemy weryfikować listy ACL na
+ naszych urządzeniach.
+ </p>
</div>
</body>
</html>