Biała lista dozwolonych adresów IP (wejścia / wyjścia) przy użyciu iptables

21

Mam kilka zakresów IP, z którymi chcę, aby mój serwer mógł się łączyć, a użytkownicy mogli się łączyć. Cała reszta powinna zostać zablokowana.

Jak mam to zrobić za pomocą iptables?

Mój system operacyjny to dystrybucja linuksowa oparta na Debianie.

Frank Bannister
źródło

Odpowiedzi:

27

Sugeruję złapanie narzędzia do konfiguracji zapory ogniowej, takiego Firestarter , i stamtąd. Oto kilka podstawowych informacji dla Ciebie.

#Flush existing rules
iptables -F
# Set up default DROP rule for eth0
iptables -P INPUT DROP
# Allow existing connections to continue
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Accept everything from the 192.168.1.x network
iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
# Allow connections from this host to 192.168.2.10
iptables -A OUTPUT -o eth0 -d 192.168.2.10 -j ACCEPT
Zenham
źródło
3
Wiesz, że możesz sformatować kod we wpisach o błędach serwera, używając przycisku 101010. W ten sposób twoje komentarze nie wyjdą jako krzyki. Po prostu wybierz (przeciągnij myszą) kod, a następnie kliknij przycisk 101010 nad polem tekstowym.
Jason Tan
2
Achhh dziękuję, nie zdawałem sobie z tego sprawy. Teraz wiem :)
Zenham,
1
+1 za ISTNIEJĄCE, PODOBNE - zbyt wiele osób tego nie robi.
Alnitak
1
Na miłość boską, ustaw domyślną regułę DROP OSTATNIE! Zablokowałem się (i wszystko inne!) Przed maszyną, wykonując tę ​​kolejność operacji.
Bendoh,
1
Okropna odpowiedź. OP nie mówi nic o porzuceniu wszystkich obecnych połączeń. Teraz jestem zablokowany, ponieważ uznałem, że najlepsza odpowiedź ma sens.
omikes,
14
iptables -I INPUT -s <allowed_ip> -j ACCEPT #(repeat this line as needed)
iptables -P INPUT DROP

To zmieni Twój system w nieistniejący system dla niedozwolonych komputerów.

Kevin M.
źródło
7

Jeśli chcesz zezwolić na dowolne zakresy, a nie na całe podsieci, możesz użyć modułu iptables „iprange”:

iptables -P INPUT DROP

iptables -A INPUT -m iprange --src-range 192.168.1.30-50 -j ACCEPT

na przykład zezwoli na ruch przychodzący ze wszystkich komputerów o adresach między 192.168.1.30 a 192.168.1.50.

Jeśli chcesz zezwolić na ruch przychodzący i wychodzący do tego samego zakresu adresów IP, sugeruję utworzenie specjalnego łańcucha, który zezwala na te adresy IP i kieruje do niego wszystkie wejściowe i wyjściowe elementy docelowe:

- zdefiniuj domyślne zasady, aby porzucić:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

- utwórz nowy łańcuch:

iptables -N allowed_ips

- jeśli źródło znajduje się w dozwolonym zakresie, zaakceptuj

iptables -A allowed_ips -m iprange --src-range 192.168.1.30-50 -j ACCEPT

- jeśli nie, wróć do łańcucha rozmówców, aby kontynuować przetwarzanie

iptables -A allowed_ips -j RETURN

- spraw, aby cały ruch wchodzący i wychodzący z maszyny przechodził przez nasz nowy łańcuch

iptables -A INPUT -j allowed_ips

iptables -A OUTPUT -j allowed_ips

i to wszystko! oczywiście mogą być potrzebne dodatkowe reguły, takie jak takie, które zezwalają na cały ruch z / do interfejsu lo itp.

Thiagodrv
źródło
1

Gdy będziesz zadowolony ze swoich zasad, prawdopodobnie chcesz je zapisać . Komentarze w tym linku mają kilka opcji, jak to zrobić.

Łatwy w użyciu generator reguł iptables dla prostych potrzeb to ufw . Pakiet jest dostępny w wersji niestabilnej Debiana.

Spróbuj także Firestarter . Dostępne w Lenny.

Nie teraz
źródło
0

Możesz także użyć ferma, którego używam również przez ostatni rok i bardzo mi pomógł w takich przypadkach, jak reguły warunkowej zapory ogniowej.

giomanda
źródło