Moja sieć jest całkowicie zablokowana, z wyjątkiem kilku witryn znajdujących się na białej liście. Wszystko to odbywa się za pomocą iptables, które wyglądają mniej więcej tak:
# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 101.102.103.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 101.102.103.0/24 -j ACCEPT
...
Oczywiście adresy te są hipotetyczne, ale masz pomysł. Mój firewall staje się ogromny. Byłoby o wiele łatwiej utrzymać, gdybym mógł to zrobić:
# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d google.com -j ACCEPT
iptables -A zone_lan_forward -p udp -d google.com -j ACCEPT
Wierzę, że jest to możliwe, ponieważ man iptables
mówi:
Adres może być albo nazwą sieci, nazwą hosta (pamiętaj, że określenie dowolnej nazwy, która ma zostać rozwiązana za pomocą zdalnego zapytania, takiego jak DNS, to naprawdę zły pomysł), sieciowego adresu IP (z / mask) lub zwykłego adresu IP.
Ale martwię się o to, że „określenie jakiejkolwiek nazwy do rozwiązania ... DNS to naprawdę zły pomysł”. Dlaczego to zły pomysł? Czy to wszystko spowalnia?
Jeśli naprawdę nie powinienem używać nazw hostów w regułach iptables, to co powinienem zrobić, aby uprościć mój firewall?
źródło
Odpowiedzi:
Jeśli Twoim celem jest zablokowanie dostępu HTTP, zwykle znacznie lepiej jest skonfigurować oprogramowanie zaprojektowane do filtrowania na tym poziomie (np. Squid + squidquard).
źródło
Jeśli używasz nazw hostów w swojej zaporze, twoja zapora jest teraz zależna od DNS. Otwiera to zaporę ogniową na szereg problemów:
Jeśli używasz nazw hostów i nie kontrolujesz DNS, to ktoś inny skutecznie kontroluje twoje reguły IPtables. Błędy, błędy lub problemy związane z bezpieczeństwem stają się dla Ciebie problemami.
Jedyne razy, kiedy widziałem, jak dobrze używane są nazwy hostów, są operacje wewnętrzne. Pracowałem w biurze, w którym adresy IP i nazwy hostów były przypisywane przez DHCP. Zapory wykorzystywały nazwy hostów do stawiania barier między różnymi grupami. Ponieważ wszystko to było kontrolowane wewnętrznie, działało dobrze.
źródło
Możesz użyć otoki wokół iptables, takiej jak ściana brzegowa, aby ułatwić utrzymanie reguł.
źródło
Jak już powiedzieli inni, nie powinieneś używać nazw rozpoznawalnych DNS w regułach iptables. Są one niedokładne, kontrolowane przez osoby trzecie i generalnie są złą rzeczą (tm). Dodam również, że twój DNS może zawieść lub być niedostępny podczas uruchamiania usługi iptables. W takim przypadku reguła nie zostanie w ogóle dodana i może wystąpić zupełnie nowy rodzaj problemów (takich jak utrata dostępu ssh po ponownym uruchomieniu).
Co możesz zrobić to:
ipset
s, aby pogrupować adresy i oddzielić je od regułNikt też nie powiedział nic złego na temat nazw hostów, które nie są rozwiązywane przez DNS (tj. Są określone w
hosts
. Możesz ich użyć, jeśli naprawdę potrzebujesz.źródło
ipset
są odpowiedzią. Ze skryptem uruchamianym z crontab, aby zaktualizować ipset.Osobiście przypisuję nazwę hosta do adresu IP ręcznie w / etc / hosts, a następnie używam go w iptables.
W ten sposób ty
źródło