Ten post próbuje trochę wyjaśnić, jak działają sieci i jak zamienić nasz sprzęt linuksowy w router, który sprawia, że nasza sieć jest trochę bardziej bezpieczna, czy to w domu, czy nawet w firmie. A więc przejdźmy do rzeczy:
Routing i filtrowanie
Aby porozmawiać i zrozumieć routing, możemy najpierw zdefiniować rolę routera? Do tego możemy powiedzieć, że router oprócz stworzenia sieci i umożliwienia połączenia z innym sprzętem (wiedząc, że możemy to zrobić z AP, Switch, Hubem lub innymi) ma możliwość połączenia ze sobą dwóch różnych sieci.
Jak widać na obrazku, istnieje sieć lokalna „10.0.1.0” utworzona przez router i docierająca do jednego z jego dwóch interfejsów. Wtedy router na swoim drugim interfejsie ma inną sieć z publicznym adresem IP, za pomocą której może łączyć się z Internetem. Funkcja routingu ma zasadniczo służyć jako pośrednik między tymi dwiema sieciami, aby mogły się komunikować.
Linux jako router.
Oczywiście jądro Linuksa ma już możliwość „przekazywania”, ale domyślnie jest ono wyłączone, więc jeśli chcemy, aby nasz Linux wykonał tę pracę, musimy przejść do pliku.
/proc/sys/net/ipv4/ip_forward
Tam stwierdzimy, że jest to plik, który zawiera tylko zero „0”, co musimy zrobić, to zmienić go na jeden „1”, aby aktywować to zachowanie. To niestety jest usuwane po ponownym uruchomieniu komputera, aby pozostawić go domyślnie aktywowanym, musimy użyć polecenia:
sysctl net.ipv4.ip_forward=1
Lub edytuj go bezpośrednio w pliku /etc/sysctl.conf. W zależności od dystrybucji ta konfiguracja może również znajdować się w pliku w formacie /etc/sysctl.d/.
Domyślnie nasz Linux musi mieć tablicę routingu, która jest ogólnie konfiguracją naszej sieci LAN i połączeniem z routerem. Jeśli chcemy zobaczyć ten routing, możemy użyć dwóch poleceń:
route -n
o
netstat -nr
Obie komendy powinny zwrócić to samo.
Ogólnie ta konfiguracja jest wystarczająca, aby Twój Linux służył jako brama, a inne komputery mogą nawigować po naszym komputerze. Teraz, jeśli chcemy, aby nasz Linux łączył dwie lub więcej sieci, lokalną lub nie, możemy skorzystać z tras statycznych.
Załóżmy, że mój Linux ma dwa interfejsy sieciowe, pierwszy ma połączenie z Internetem, którego sieć to 172.26.0.0, a drugi (10.0.0.0) ma kilka komputerów z innej sieci lokalnej. Jeśli chcemy skierować pakiety do tej innej sieci, możemy użyć:
route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8
Ogólnie jest to:
route add -net REDDESTINO netmask MASCARA gw IPDELLINUX
jeśli damy route -n niezależnie od tego, czy ta sieć istnieje, czy nie, ten routing zostanie ustalony w naszej tabeli.
Jeśli chcemy wyeliminować wspomniany routing, możemy użyć
route del -net 10.0.0.0 netmask 255.0.0.0
iptables.
Zasadniczo iptables służy do filtrowania pakietów, wychodzących, przychodzących lub innych, co czyni go doskonałym narzędziem do zarządzania ruchem w sieci. Cóż, iptables, tak jak pozwala nam filtrować ruch z tego samego komputera, pozwala nam również filtrować ruch, który przez niego przechodzi. (Przekierowanie). Iptables można podzielić na tabele, łańcuchy i akcje.
- Tablice: w zasadzie mogą być dwa stoły, filtr, do filtrowania pakietów i nat tłumaczyć adresy, czyli przenosić się z jednej sieci do drugiej.
- Więzy: Łańcuch odnosi się do typu ruchu, który chcemy filtrować lub pływać, to znaczy do jakiego ruchu będziemy stosować tabele? i mogą to być: WEJŚCIE: Ruch przychodzący, WYDAJNOŚĆ: ruch wychodzący lub NAPRZÓD: Ruch, który przez nią przechodzi, ale nie jest to prawidłowe połączenie.
- Może się również pojawić POCZĄTEK, który jest używany do traktowania pakietu w określony sposób po jego trasowaniu.
- Działania: Akcje to w zasadzie akcja, która ma być wykonana z łańcuchem. Ta akcja może być DROP który po prostu niszczy ten ruch lub ZAAKCEPTOWAĆ. która umożliwia ruchowi wykonanie takiej czynności.
Reguły IPTABLES są zapisywane i wykonywane w kolejności, w jakiej zostały utworzone, a jeśli reguła usuwa poprzednią regułę, zawsze stosowana jest ostatnia reguła w kolejności.
Zasady zapory.
Ogólnie rzecz biorąc, zapory działają naturalnie na dwa sposoby:
- Zezwalaj na cały ruch z wyjątkiem lub
- Nie zezwalaj na żaden ruch z wyjątkiem ...
Aby zastosować zasady, użyj IPTABLES - P ŁAŃCUCH AKCJI
Gdzie łańcuch reprezentuje typ ruchu (INPUT, OUTPUT, FORWARD, POSTROUTING ...), a akcja to DROP OR ACCEPT.
Spójrzmy na przykład.
Tutaj widzimy, że na początku byłem w stanie pingować, a następnie powiedziałem IPTABLES, że cały ruch WYJŚCIOWY jest DROP lub niedozwolony. Następnie powiedziałem IPTABLES, aby to zaakceptował.
Jeśli mamy zamiar zbudować zaporę od podstaw, zawsze musimy stosować zasady (Nie zezwalaj na żaden ruch oprócz ... W tym celu stosujemy reguły
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Aby powrócić, piszemy to samo i zamieniamy DROP na ACCEPT.
W tym momencie, ponieważ cały ruch jest odrzucany, zaczynamy mówić naszym IPTABLES, jaki ruch może mieć.
Składnia jest następująca:
iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción
Gdzie:
Ciąg = INPUT, OUTPUT lub FORWARD
origin_ip = Pochodzenie pakietów, może to być pojedynczy adres IP lub sieć iw tym przypadku musimy określić maskę).
Docelowy adres IP = gdzie idą pakiety. może to być pojedynczy adres IP lub sieć iw tym przypadku musimy określić maskę).
Protokół = wskazuje protokół używany przez pakiety (icmp, tcp, udp ...)
port = docelowy port ruchu.
akcja = DROP lub ACCEPT.
przykład:
Obowiązują wszystkie zasady ograniczone.
Następnie dodajemy reguły, aby móc mieć ruch przez port 80 HTTP i 443 HTTPS, z protokołem TCP. Następnie port 53 Jest stosowany do klienta DNS w celu rozwiązania domen, w przeciwnym razie nie będziesz nawigować. Działa to z protokołem UDP.
Linia:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Dzieje się tak z następujących powodów: Kiedy na przykład wysyłasz żądanie HTTP, łączysz się z portem 80 serwera, ale serwer, aby zwrócić informacje, musi łączyć się z tobą przez dowolny port. (Ogólnie więcej niż 1024).
Ponieważ wszystkie nasze porty są zamknięte, nie zostanie to osiągnięte, chyba że otworzymy wszystkie porty wyższe niż 1024 (zły pomysł). Oznacza to, że cały ruch przychodzący pochodzący z połączenia, które sam ustanowiłem, jest akceptowany. Mam na myśli połączenie, które w zasadzie zacząłem.
Mam nadzieję, że spodobała Ci się ta informacja. W następnym opowiem o NAT, proxy i skryptach dla Firewal.
To podstawa, którą wielu przedsiębiorców przyjmuje do produkcji własnych zapór ogniowych, dlatego na rynku jest tak wiele marek zapór ogniowych z wbudowanym linuxem, jedne dobre, a inne mniej.
Świetny artykuł. Nie mogę się doczekać drugiej części.
Bardzo dobre wyjaśnienie, pomogło mi zrozumieć proxy mojej pracy. Dziękuję Ci
Cześć Jlcmux,
Świetnie, bardzo mi się podobało, kiedy druga strona będzie dostępna?
Pozdrowienia i podziękowania za udostępnienie
Dziękuję za komentarz.
Wczoraj wysłałem drugą część, w ciągu dnia myślę, że będą ją publikować.
Pozdrowienia.
Bardzo dobry przyjaciel artykułu @ Jlcmux, naprawdę nauczyłem się z nim, ponieważ wyjaśnił pewne wątpliwości, które miałem przez jakiś czas, przy okazji nie miałbyś nic przeciwko udostępnieniu książki źródła artykułu, Sébastiena BOBILLIERA, dobrze slau2s i teraz aby zobaczyć drugą część, salu2s.
Witam Dziękuję za komentarz Izraela.
Okazuje się, że mam książkę w formie fizycznej. Ale znalazłem ten link w Książkach Google. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=
Myślę, że jest kompletny.
Bardzo dobry artykuł, dodam pytanie: Jaka byłaby korzyść z używania linuxa jako routera, jeśli taki istnieje, w stosunku do dedykowanego mu sprzętu? Czy to tylko do ćwiczeń? Wiem, że istnieją dedykowane dystrybucje, ale nie wiem, czy mają one uratować stare komputery PC, czy zapewnić większą elastyczność w konfiguracji.
Cóż, myślę, że zalety i wady zależą od scenariusza, w którym zamierzasz to wdrożyć. Dlaczego na pewno nie zamierzasz kupić UTM lub czegoś podobnego do swojego domu? A może dla małej firmy, której też na to nie stać. Jest to również dobre jako ćwiczenie, ponieważ pomaga zrozumieć całą logikę tego procesu i można lepiej skonfigurować dedykowany FWall. Poza tym prawie wszystkie te urządzenia naprawdę mają wbudowany Linux.
Pozdrowienia.
Witam, pytanie, czy możesz wygenerować "sztuczny" interfejs w Linuksie dla podobnego routingu między sieciami? (styl śledzenia pakietów) do pracy z maszynami wirtualnymi? np. jeśli mam eth0 (ponieważ mam oczywiście jedną kartę), czy mogę stworzyć eth1, aby stworzyć inną sieć? Bardzo dobry nauczyciel!
Oczywiście w Linuksie można tworzyć wirtualne interfejsy. Jeśli masz eth0, możesz mieć eth0: 0, eth0: 1, eth0: 2 ... itd
Tak dobrze, dzięki za udostępnienie