W tym samouczku będziemy rozmawiać iptables, firewall lub firewall, który mamy w Linuksie. To narzędzie pozwoli nam filtrować pakiety (z czym zajmie się samouczek), wygenerować rekord logu, wykonać translację NAT.
Dzięki iptables możemy w prosty sposób generować reguły do filtrowania pakietów, chociaż przy pierwszym użyciu może to wydawać się nieco mylące, zobaczysz, że po kilku dniach korzystania z niego nie ma żadnych komplikacji.
Korzystanie z tego narzędzia wymaga wysokich uprawnień, to znaczy, że będziemy musieli być superużytkownikami, aby je uruchomić. Mamy wiele funkcji w iptables, celem samouczka jest przybliżenie jego użycia na przykładach. Ważne jest, aby po ukończeniu samouczka kopać dalej, ponieważ jest to bardzo przydatne.
Następnie opuszczamy oficjalną stronę internetową w przypadku zainteresowania:
NotatkaDla IPv6 mamy ip6tables.
Jeśli chcemy zobaczyć informacje o iptables, wykonamy w terminalu:
człowiek iptablesZobaczymy następujące informacje:
Na obrazku możesz zobaczyć część informacji dostarczonych przez polecenie, aby zobaczyć je wszystkie, przewiń w dół w terminalu. Jak widzieliśmy na początku samouczka, jednym z zadań, które pozwoli nam iptables, jest tworzenie reguł lub filtrów, aby wiedzieć, co zrobić z pakietami, których źródłem / miejscem docelowym jest nasza maszyna. W tym zadaniu będziemy chcieli wiedzieć, dlaczego używamy następujących pojęć:
Tablice
Iptables ma kilka tabel, ale w naszym samouczku skupiamy się tylko na filtruj tabelę, który odpowiada za filtrowanie, jest domyślnie używany w iptables.
Więzy
Ciągi, które zamierzam tutaj umieścić, to te, które należą do wcześniej skomentowanej tabeli.
- Wejście: Opakowania przeznaczone do naszej maszyny.
- Wyjście: Pakiety pochodzące z naszego systemu.
- Do przodu: Paczki, które przechodzą przez naszą maszynę, aby zostać przekierowanym do innej.
Zasady
Zamierzamy wskazać 2, które zostaną użyte w samouczku, ale jest ich więcej.
- Zaakceptować: Pakiety są akceptowane.
- Upuszczać: Pakiety są odrzucane.
Parametry
Niektóre parametry, których możemy użyć, są następujące.
- -Zasada: Aby dodać regułę
- -D zasada: Aby usunąć wskazaną przez nas regułę.
- -L: Pozwala nam wymienić reguły.
- -F: Usuń wszystkie istniejące reguły.
- -j cel: Ustaw typ reguły (Akceptuj, Odrzuć).
- -t stół: Wskazuje używaną tabelę (domyślnie filtruj tabelę).
- -p protokół: Używany do wskazania protokołu.
- -i interfejs: Ustalamy interfejs dla reguły.
- -s: Aby wskazać pochodzenie.
- -D: Wskazuje miejsce docelowe.
- -h: Wyświetla pomoc.
Jest ich znacznie więcej, ponieważ mogą być --Port docelowy lub --Port źródłowy. Aby zobaczyć je wszystkie, możesz uruchomić polecenie, które omówiliśmy powyżej:
człowiek iptablesMożesz też uruchomić:
iptables -hNotatkaTrzeba dokładnie przyjrzeć się opcjom oferowanym przez narzędzie, ponieważ rozróżnia ono małe i wielkie litery i możemy się pomylić (nie będzie tak samo wstawiać -P że -P).
Zacznijmy od przykładów, w sumie zostanie wstawionych 10, dzięki czemu będzie lepiej zrozumiane i możemy zobaczyć, jak działa iptables w trybie zapory. W przykładach nie zobaczysz sudo, nie będzie to konieczne, jeśli jesteś rootem, w przeciwnym razie będziesz musiał dodać słowo sudo na początku każdego przykładu.
1. Zakaz wyjazdu do dowolnego miejsca przeznaczeniaNa początek podamy prosty przykład, nigdzie nie zostawiaj wyjścia.
iptables -A WYJŚCIE -j DROPTen jest bardzo łatwy, jak widać, następny jest jeszcze prostszy.
2. Wyczyść wszystkie zasadyKontynuujemy bardzo prosty przykład, zostawiamy nasze iptables bez reguł, w tym celu wykonamy:
iptables -FCóż, skomplikujmy to nieco bardziej w następnym.
3. Zakaz wyjazdu przez port 80Teraz zadbamy o zamknięcie wyjścia przez określony port, w tym przypadku jest to 80, dlatego nie będziemy mieli przeglądania stron internetowych przez protokół http (jeśli przejdziemy do strony https, możemy nawigować, chociaż moglibyśmy zrobić to samo jak 80) .
iptables -A WYJŚCIE -p tcp --destination-port 80 -j DROPNotatkaUżywając portu docelowego lub źródłowego, będziemy musieli umieścić parametr -p, aby wskazać protokół.
Przechodzimy do czwartego przykładu.
4. Zabroń nawigacji do stronyPrzy tej okazji jesteśmy zainteresowani zakazem dostępu do strony X z naszego systemu, wyobraźmy sobie, że ta strona to solvetic.com, w tym celu poznajemy jej adres IP, bardzo łatwo wykonując ping, który ją uzyskamy.
A teraz wykonamy:
iptables -A WYJŚCIE -d 178.33.118.246 -j DROPJak widzimy, po parametrze wystarczy podać swój adres IP -D.
5. Wymień istniejące zasadyW tym przykładzie spróbujemy wyświetlić listę reguł filtrowania, które obecnie zdefiniowaliśmy:
iptables -LWidzimy obraz, mamy zdefiniowane tylko dwie reguły, jak widać poniżej:
Przejdźmy do szóstego przykładu, w którym ponownie wykorzystamy listę reguł.
6. Usuń określoną regułęTutaj, zaczynając od reguł, które mieliśmy w poprzednim przykładzie, usuniemy jedną z reguł wyjścia, w tym przypadku pierwszą, która się pojawi, wykonujemy co następuje:
iptables -D WYJŚCIE 1Aby sprawdzić, czy został skutecznie usunięty, posługujemy się przykładem 5:
Kontynuujmy więcej.
7. Unikaj pingowaniaNie chcemy, aby nas pingowali, w tym celu zablokujemy wpis dla protokołu ICMP.
iptables -A INPUT -p ICMP -j DROPPoniżej zostawiam obraz pingowania przed wykonaniem powyższego polecenia i po:
Widzimy, że nasza maszyna nie odpowiada, ponieważ odrzuca pakiety ICMP. Jeśli zablokujemy wyjście zamiast wejścia, wykonalibyśmy:
iptables -A WYJŚCIE -p ICMP -j DROPTo samo, co na poprzednim obrazie, powtórzy się. Aby przetestować wykonałem 3 razy ping, jeśli wykonamy możemy zobaczyć ilość pakietów:
iptables -L -v
Widzimy, że skutecznie umieszcza 3 na poprzednim obrazku.
8. Zapobiegaj wysyłaniu nam danych przez IPZamierzamy zastosować jeden wejściowy, nie chcemy, aby konkretny adres IP nas łączył, więc wykonamy:
iptables -A WEJŚCIE -s 192.168.66.1 -j DROPSpójrzmy na nieco dłuższy przykład.
9. Zezwól na wyjścia z zakresu adresów IPWyobraź sobie, że chcesz akceptować tylko wyjścia z zakresu adresów IP, ale odrzucać pozostałe wyjścia, musimy wykonać:
Iptables -A WYJŚCIE -d 192.168.0.0/24 -j AKCEPTUJ Iptables -A WYJŚCIE -j DROPNotatkaKolejność wykonywania reguł ma znaczenie, wypróbuj ten przykład z siecią, na którą chcesz zezwolić i nawiąż połączenie, zobaczysz, że działa, a następnie usuń wszystkie reguły i wykonaj 2 zdania w odwrotnej kolejności, teraz odrzuci połączenia .
Przejdźmy do dziesiątego i ostatniego przykładu.
10. Otwórz port 143 (imap)Otworzymy port do wprowadzania wszystkich pakietów tcp, w tym przypadku 143 (tak samo będzie z resztą).
iptables -A INPUT -m stan --state NOWY -p tcp --dport 143 -j AKCEPTUJW tym przykładzie chcieliśmy użyć --dport, więc widać, że możemy użyć tego lub --Port docelowy, moglibyśmy również użyć --sport zamiast --Port źródłowy.
Samouczek kończy się tutaj, teraz spróbujesz zastosować inne zasady, im więcej ćwiczysz, tym szybciej będziesz miał ich stosowanie i tym mniej będzie cię to kosztować. Na koniec zostawiamy samouczek, który może Cię zainteresować, otwierając i zamykając porty w systemie Windows 10.