Tabele IP zezwalają tylko na dostęp do hosta lokalnego

58

Przez lata walczyłem o dobre zrozumienie iptables. Za każdym razem, gdy próbuję czytać strony podręcznika, moje oczy zaczynają się płonąć.

Mam usługę, do której chcę jedynie zezwolić lokalnemu hostowi na dostęp.

Jakie warunki (lub konfigurację, jeśli ktoś czuje się hojny) powinienem wezwać Google, aby zezwolić tylko hostowi localhost na dostęp do danego portu?

iptablessuck
źródło
2
Na jakim porcie działa ta usługa?
Bart De Vos
44344, jest to usługa napisana wewnętrznie
iptablessuck
1
Chciałbym tymczasowo zmienić swój nick na „iptablesrules”, ale nie mogę
Art Shayderov
@ Sztuka, ssą tylko dlatego, że ich nie rozumiem :)
iptablessuck
@iptablessuck faktycznie wygląda tak, jak mogę. Ale nie chcę, bo nie jestem pewien, czy uda mi się to zmienić :)
Art Shayderov

Odpowiedzi:

65

Jeśli przez usługę rozumiesz konkretny port, powinny działać następujące dwie linie. Zmień „25” na dowolny port, który próbujesz ograniczyć.

iptables -A INPUT -p tcp -s localhost --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j DROP
Hippy
źródło
1
„Wszystko, co przychodzi z hosta lokalnego do portu 25, zaakceptuj”, a druga reguła mówi „Usuń wszystko, co przychodzi do portu 25”. Pierwszy wiersz jest przetwarzany jako pierwszy, umożliwiając localhost, a wszystko inne zostanie usunięte przez drugi wiersz. Tak?
iptablessuck
To jest poprawne!
Hyppy
4
@Hypy, jak byś to „cofnął”?
tester
10
@tester wpisać te polecenia ponownie, lecz wymienić -Az-D
pepoluan
1
@Astronauta wpisz „usługa sudo iptables save”, aby zapisać zmiany. następnie uruchom ponownie. możesz sprawdzić, czy zmiany zostały zapisane, wpisując „sudo iptables -L”
Vinayak
30

Poleciłbym:

iptables -A INPUT -i lo -p tcp --dport $APP_PORT -j ACCEPT
iptables -A INPUT -p tcp --dport $APP_PORT -j DROP

Ponieważ pakiety zaadresowane niekoniecznie mają źródło 127.0.0.1, ale wszystkie „wchodzą” z lointerfejsu.

Teraz, jeśli naprawdę chcesz zrozumieć, iptablespierwszą rzeczą, którą powinieneś zrobić, to pobrać i wydrukować dobre diagramy wyjaśniające relacje między netfiltertabelami. Oto dwa świetne:

Na koniec przeczytaj dużo iptablesHOWTO. Praktyczne przykłady pomogłyby Ci naprawdę szybko uzyskać szybkość :)

pepoluan
źródło
ty! lopojawia się dla mnie po użyciu tych poleceń z ostatnim poleceniem z tego linku cyberciti.biz/faq/howto-display-linux-iptables-loaded-rules iptables -L -v -n --line-numbers
2
@Gracchus Uważam, że jest o wiele łatwiejszy w użyciu iptables-save, zapisuję dane wyjściowe w pliku, vimemacsiptables-apply
edytuję
Myślę, że w zależności od przypadku użycia druga reguła powinna wyraźnie ODRZUĆ zamiast porzucić w ciszy. Czy jest to porzucane po cichu jako najlepsza praktyka? Czy korzystanie z REJECT jest bezpieczne?
Pan Doomsbuster
1
@ tech-pro Tak, REJECT jest bezpieczny w użyciu. To zależy od tego, co próbujesz osiągnąć i czy chcesz być uprzejmy dla osób próbujących skorzystać z portu. REJECT odeśle z powrotem pakiet TCP RST informujący klienta, że ​​komputer jest włączony, ale port jest zamknięty. Jeśli zamykasz port, z którego ludzie mogą korzystać, to REJECT jest dobry. Jeśli oczekujesz tylko skanerów portów, DROP jest lepszy.
Law29
1
@ x-yuri Na przykład działam unboundjako pamięć podręczna DNS przed dnscrypt-proxy. unboundwiąże się 127.0.53.1:53i dnscrypt-proxywiąże się z 127.0.53.2:53. Gdy aplikacja żąda niezwiązanego lub dnscrypt-proxy do rozpoznania nazwy FQDN, zgadnij, z którego adresu źródłowego odpowie niezwiązany / dnscrypt-proxy?
pepoluan