Stwórz własną zaporę ogniową za pomocą iptables, używając tego prostego skryptu, część 2

Firewall_ (sieć)

Witam wszystkich, dziś przynoszę wam drugą część tej serii samouczków na temat zapory ogniowej z iptables, bardzo prostą, aby można było kopiować i wklejać, myślę, że na koniec dnia tego szukają wszyscy początkujący, a nawet najbardziej doświadczeni, dlaczego musimy 100 razy wymyślać koło na nowo, prawda?

Tym razem mówię im, aby spróbowali skupić się na bardzo konkretnym przypadku, czy chcemy, aby nasz firewall był znacznie bardziej agresywny z polityką OUTPUT DROP. Ten post jest również na prośbę czytelnika tej strony i mojego postu. (W moim umyśle wiiiiiiiiiiiii)

Porozmawiajmy trochę o „zaletach i wadach” ustanawiania zasad usuwania danych wyjściowych. Mogę wam powiedzieć, że to sprawia, że ​​praca jest o wiele bardziej żmudna i pracochłonna, jednak zaletą jest to, że na poziomie sieci będziecie mieć zabezpieczenia niż gdybyś usiadł. Aby dobrze przemyśleć, zaprojektować i zaplanować zasady, będziesz mieć znacznie bezpieczniejszy serwer.

Aby nie błądzić i nie zbaczać z tematu, szybko wyjaśnię na przykładzie, jak mniej więcej powinny być Twoje zasady

iptables -A WYJŚCIE -o eth0 -p tcp -sport 80 -m stan -stan USTANOWIONO -j AKCEPTUJ
-A ponieważ dodaliśmy regułę
-o odnosi się do ruchu wychodzącego, wówczas interfejs jest umieszczany, jeśli nie został określony, ponieważ pasuje do wszystkich.
-sport port pochodzenia, odgrywa ważną rolę, ponieważ w większości przypadków nie wiemy, z którego portu będą wysyłali żądanie, jeśli tak, moglibyśmy użyć dport
–Dport port docelowy, gdy z góry wiemy, że połączenie wychodzące musi iść tylko do określonego portu. Musi dotyczyć czegoś bardzo konkretnego, na przykład zdalnego serwera mysql.
-m stan –stan USTANOWIONY To już jest ozdobę utrzymywania już nawiązanych połączeń, moglibyśmy to pogłębić w kolejnym poście
-d mówić o miejscu docelowym, gdyby można go było określić, na przykład ssh do określonej maszyny przez jej IP

#!/bin/bash

# Czyścimy tabele iptables -F iptables -X # Czyścimy NAT iptables -t nat -F iptables -t nat -X # mangle table dla rzeczy takich jak PPPoE, PPP i ATM iptables -t mangle -F iptables -t mangle -X # Zasady Myślę, że jest to najlepszy sposób dla początkujących i # nadal nie jest zły, wyjaśnię wyjście (wyjście) wszystko, ponieważ są to połączenia wychodzące. iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Zachowaj stan. Wszystko, co jest już podłączone (ustanowione), zostawiamy w ten sposób iptables -A INPUT -m stan - stan USTANOWIONY, ZWIĄZANY -j AKCEPTUJ
iptables -A WYJŚCIE -m stan - stan USTANOWIONY, ZWIĄZANY -j AKCEPTUJ
# Urządzenie pętlowe. iptables -A INPUT -i lo -j AKCEPTUJ
# Wyjście pętli zwrotnej Iptables -A OUTPUT -o lo -j ACCEPT

# http, https, nie określamy interfejsu, ponieważ # chcemy, aby był to cały iptables -A INPUT -p tcp --dport 80 -j AKCEPTUJ iptables -A INPUT -p tcp --dport 443 -j AKCEPTUJ
# Wyjście
# http, https, nie określamy interfejsu, ponieważ
# chcemy, aby dotyczyło to wszystkich, ale jeśli określimy port wyjściowy
iptables -A WYJŚCIE -p tcp --sport 80 -j AKCEPTUJ iptables -A WYJŚCIE -p tcp --sport 443 -j AKCEPTUJ

# ssh tylko wewnętrznie iz tego zakresu iptables iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j AKCEPTUJ
# wyjście # ssh tylko wewnętrznie iz tego zakresu adresów IP
iptables -A WYJŚCIE -p tcp -d 192.168.xx / 24 -o $ intranet --sport 7659 -j AKCEPTUJ
# monitorowanie, na przykład, czy mają one zabbix lub inną usługę snmp iptables -A INPUT -p tcp -s 192.168.1.1 -i $ intranet --dport 10050 -j AKCEPTUJ
# Wyjście
# monitorowanie, na przykład czy mają zabbix lub jakąś inną usługę snmp
iptables -A WYJŚCIE -p tcp -d 192.168.1.1 -o $ intranet --dport 10050 -j AKCEPTUJ

# icmp, ping dobra to twoja decyzja iptables -A INPUT -p icmp -s 192.168.xx / 24 -i $ intranet -j AKCEPTUJ
# Wyjście
# icmp, ping dobry to Twoja decyzja
iptables -A WYJŚCIE -p icmp -d 192.168.xx / 24 -o $ intranet -j AKCEPTUJ

#mysql z postgres to port 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j AKCEPTUJ
# wyjście - pytanie zadane również przez użytkownika, aby utworzyć bardzo konkretny # serwer reguł: 192.168.1.2 mysql: 192.168.1.3
#mysql z postgres to port 5432
iptables -A WYJŚCIE -p tcp -s 192.168.1.2 -d 192.168.1.3 --dport 3306 -o $ intranet -j AKCEPTUJ

#sendmail bueeeh jeśli chcesz wysłać pocztę #iptables -A WYJŚCIE -p tcp --dport 25 -j AKCEPTUJ # Anti-SPOOFING 09 # SERVER_IP = "07.xxx" # IP serwera - prawdziwy wan ip twojego serwera LAN_RANGE = "2014.xx / 190" # Zakres sieci LAN twojej sieci lub twojego vlan # IP, które nigdy nie powinny wchodzić do Extranetu, to jest użycie trochę logiki #, jeśli mamy wyłącznie interfejs WAN, nigdy nie powinno wpisz # typ ruchu LAN przez ten interfejs SPOOF_IPS = "192.168/21 0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12" # Akcja domyślna - wykonywana, gdy jakakolwiek reguła pasuje do ACTION = "DROP" # Pakiety z tym samym adresem IP co mój serwer przez wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION
iptables -A WYJŚCIE -o $ extranet -s $ ADRES_SERWERA -j $ DZIAŁANIE

# Pakiety z zakresem LAN dla wan, umieściłem to w ten sposób na wypadek, gdybyś # miała jakąś konkretną sieć, ale jest to zbędne z następującą regułą # wewnątrz pętli "for" iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION
iptables -A WYJŚCIE -o $ extranet -s $ ZAKRES_LANGE -j $ DZIAŁANIE

## Wszystkie sieci SPOOF niedozwolone przez wan dla ip w $ SPOOF_IPS do iptables -A INPUT -i $ extranet -s $ ip -j $ DZIAŁANIE
iptables -A WYJŚCIE -o $ extranet -s $ ip -j $ DZIAŁANIE
zrobić

W następnym przeglądzie zajmiemy się zakresem portów, a także ustalimy polityki uporządkowane według nazw, między innymi ... Czekam na Wasze komentarze i prośby.


Bądź pierwszym który skomentuje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.