GNU/Linux >> Znalost Linux >  >> Linux

25 Nejčastěji používané příklady pravidel Linux IPTables

Na první pohled mohou pravidla IPTables vypadat záhadně.

V tomto článku jsem uvedl 25 praktických pravidel IPTables, která můžete zkopírovat/vložit a použít pro své potřeby.

Tyto příklady budou sloužit jako základní šablony pro úpravu těchto pravidel tak, aby vyhovovala vašim konkrétním požadavkům.

Pro snadnou orientaci je všech těchto 25 pravidel iptables ve formátu skriptu shell:iptables-rules

1. Smazat existující pravidla

Než začnete vytvářet novou sadu pravidel, možná budete chtít vyčistit všechna výchozí pravidla a stávající pravidla. K tomu použijte příkaz iptables flush, jak je ukázáno níže.

iptables -F
(or)
iptables --flush

2. Nastavit výchozí zásady řetězce

Výchozí zásada řetězce je ACCEPT. Změňte toto na DROP pro všechny řetězce INPUT, FORWARD a OUTPUT, jak je znázorněno níže.

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Když nastavíte výchozí zásadu řetězce INPUT i OUTPUT jako DROP, pro každý požadavek na pravidlo brány firewall, který máte, byste měli definovat dvě pravidla. tj. jeden pro příchozí a jeden pro odchozí.

Ve všech níže uvedených příkladech máme pro každý scénář dvě pravidla, protože jsme nastavili DROP jako výchozí zásadu pro INPUT i OUTPUT řetězec.

Pokud důvěřujete svým interním uživatelům, můžete poslední řádek výše vynechat. tj. Ve výchozím nastavení nezahazovat všechny odchozí pakety. V takovém případě pro každý požadavek na pravidlo brány firewall, který máte, stačí definovat pouze jedno pravidlo. tj. definovat pravidlo pouze pro příchozí, protože odchozí je ACCEPT pro všechny pakety.

Poznámka: Pokud nevíte, co řetězec znamená, měli byste se nejprve seznámit se základy IPTables.

3. Blokovat konkrétní ip-adresu

Než budeme pokračovat dále, uvedeme další příklady, pokud chcete zablokovat konkrétní ip-adresu, měli byste to nejprve udělat, jak je uvedeno níže. Změňte „x.x.x.x“ v následujícím příkladu na konkrétní IP adresu, kterou chcete blokovat.

BLOCK_THIS_IP="x.x.x.x"
iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP

To je užitečné, když v souborech protokolu najdete nějaké podivné aktivity z konkrétní IP adresy a chcete tuto IP adresu dočasně zablokovat, zatímco budete provádět další průzkum.

Můžete také použít jednu z následujících variant, která pro tuto IP adresu blokuje pouze TCP provoz na připojení eth0.

iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

4. Povolit VŠECHNY příchozí SSH

Následující pravidla povolují VŠECHNA příchozí ssh připojení na rozhraní eth0.

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Poznámka :Pokud chcete přesně porozumět tomu, co každý z argumentů znamená, měli byste si přečíst Jak přidat pravidla brány firewall IPTables

5. Povolit příchozí SSH pouze z konkrétní sítě

Následující pravidla povolují příchozí připojení ssh pouze ze sítě 192.168.100.X.

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Ve výše uvedeném příkladu můžete místo /24 použít také úplnou masku podsítě. tj. „192.168.100.0/255.255.255.0“.

6. Povolit příchozí HTTP a HTTPS

Následující pravidla povolují veškerý příchozí webový provoz. tj. přenos HTTP na port 80.

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Následující pravidla povolují veškerý příchozí zabezpečený webový provoz. tj. přenos HTTPS na port 443.

iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

7. Kombinujte více pravidel dohromady pomocí MultiPorts

Když povolujete příchozí spojení z vnějšího světa na více portů, místo psaní jednotlivých pravidel pro každý port je můžete zkombinovat pomocí rozšíření pro více portů, jak je uvedeno níže.

Následující příklad umožňuje veškerý příchozí provoz SSH, HTTP a HTTPS.

iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT

8. Povolit odchozí SSH

Následující pravidla povolují odchozí připojení ssh. tj. Když ssh provedete zevnitř na externí server.

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Upozorňujeme, že toto je mírně odlišné od pravidla příchozího příjmu. tj. Povolujeme stav NEW i ESTABLISHED na OUTPUT řetězci a pouze stav ESTABLISHED na INPUT řetězci. U příchozího pravidla je to naopak.

9. Povolit odchozí SSH pouze do určité sítě

Následující pravidla povolují odchozí ssh připojení pouze do určité sítě. tj. zevnitř používáte ssh pouze do sítě 192.168.100.0/24.

iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

10. Povolit odchozí HTTPS

Následující pravidla umožňují odchozí zabezpečený webový provoz. To je užitečné, když chcete svým uživatelům povolit internetový provoz. Na serverech jsou tato pravidla také užitečná, když chcete použít wget ke stažení některých souborů zvenčí.

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

Poznámka:Pro odchozí webový provoz HTTP přidejte dvě další pravidla jako výše a změňte 443 na 80.

11. Vyrovnání zátěže Příchozí webový provoz

Můžete také vyrovnávat zatížení příchozího webového provozu pomocí pravidel brány firewall iptables.

Toto používá n-tou příponu iptables. Následující příklad zatížení vyrovnává provoz HTTPS na tři různé IP adresy. Pro každý 3. paket je zátěž vyvážena na příslušný server (pomocí čítače 0).

iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443

12. Povolit ping zvenku dovnitř

Následující pravidla umožňují externím uživatelům pingnout vaše servery.

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

13. Povolit ping zevnitř ven

Následující pravidla vám umožňují ping zevnitř na kterýkoli z vnějších serverů.

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

14. Povolit Loopback Access

Na svých serverech byste měli povolit úplný přístup zpětné smyčky. tj. přístup pomocí 127.0.0.1

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

15. Povolit z interní sítě na externí síť.

Na firewallovém serveru, kde je jedna ethernetová karta připojena k externímu a další ethernetová karta připojena k interním serverům, použijte následující pravidla, abyste umožnili komunikaci mezi interní sítí a externí sítí.

V tomto příkladu je eth1 připojeno k externí síti (internetu) a eth0 je připojeno k vnitřní síti (například:192.168.1.x).

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

16. Povolit odchozí DNS

Následující pravidla povolují odchozí připojení DNS.

iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

17. Povolit připojení NIS

Pokud používáte NIS ke správě uživatelských účtů, měli byste povolit připojení NIS. I když je povoleno připojení SSH, pokud nepovolíte připojení ypbind související s NIS, uživatelé se nebudou moci přihlásit.

Porty NIS jsou dynamické. tj. když se spustí ypbind, přidělí porty.

Nejprve proveďte rpcinfo -p, jak je ukázáno níže, a získejte čísla portů. V tomto příkladu používal port 853 a 850.

rpcinfo -p | grep ypbind

Nyní povolte příchozí připojení k portu 111 a portům, které používal ypbind.

iptables -A INPUT -p tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp --dport 853 -j ACCEPT
iptables -A INPUT -p udp --dport 853 -j ACCEPT
iptables -A INPUT -p tcp --dport 850 -j ACCEPT
iptables -A INPUT -p udp --dport 850 -j ACCEPT

Výše uvedené nebude fungovat, když restartujete ypbind, protože v té době bude mít jiná čísla portů.

Existují dvě řešení:1) Použijte statickou IP-adresu pro váš NIS, nebo 2) Použijte některé chytré skriptovací techniky shellu k automatickému získání dynamického čísla portu z výstupu příkazu „rpcinfo -p“ a použijte ty, které jsou uvedeny výše. pravidla iptables.

18. Povolit Rsync z konkrétní sítě

Následující pravidla povolují rsync pouze z konkrétní sítě.

iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT

19. Povolit připojení MySQL pouze z konkrétní sítě

Pokud používáte MySQL, obvykle nechcete povolit přímé připojení zvenčí. Ve většině případů můžete mít webový server spuštěný na stejném serveru, kde běží databáze MySQL.

DBA a vývojáři se však možná budou muset přihlásit přímo do MySQL ze svého notebooku a stolního počítače pomocí klienta MySQL. V takovém případě možná budete chtít povolit své interní síti komunikovat s MySQL přímo, jak je uvedeno níže.

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

20. Povolit přenos Sendmail nebo Postfix

Následující pravidla povolují provoz pošty. Může to být sendmail nebo postfix.

iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

21. Povolit IMAP a IMAPS

Následující pravidla povolují provoz IMAP/IMAP2.

iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT

Následující pravidla povolují provoz IMAPS.

iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT

22. Povolit POP3 a POP3S

Následující pravidla umožňují přístup POP3.

iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

Následující pravidla umožňují přístup POP3S.

iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT

23. Zabraňte útoku DoS

Následující pravidlo iptables vám pomůže zabránit útoku Denial of Service (DoS) na váš webový server.

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

Ve výše uvedeném příkladu:

  • -m limit:Používá příponu limit iptables
  • –limit 25/min:Omezuje pouze maximálně 25 připojení za minutu. Změňte tuto hodnotu na základě vašeho konkrétního požadavku
  • –limit-burst 100:Tato hodnota označuje, že limit/minuta bude uplatněna až poté, co celkový počet připojení dosáhne úrovně limit-burst.

24. Přesměrování portů

Následující příklad směruje veškerý provoz, který přichází na port 442 na 22. To znamená, že příchozí připojení ssh může pocházet z portu 22 i 422.

iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22

Pokud provedete výše uvedené, musíte také výslovně povolit příchozí připojení na portu 422.

iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT

25. Zaznamenat zahozené pakety

Můžete také chtít zaznamenat všechny zahozené pakety. Tato pravidla by měla být dole.

Nejprve vytvořte nový řetězec s názvem LOGGING.

iptables -N LOGGING

Dále se ujistěte, že všechna zbývající příchozí připojení skočí do řetězce LOGGING, jak je znázorněno níže.

iptables -A INPUT -j LOGGING

Dále zaprotokolujte tyto pakety zadáním vlastní „předpony protokolu“.

iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7

Nakonec tyto pakety zahoďte.

iptables -A LOGGING -j DROP

Všech výše uvedených 25 pravidel iptables je ve formátu skriptu shell:iptables-rules

Předchozí články ze série iptables:

  • Výukový program brány firewall systému Linux:Tabulky IPTables, řetězce, základy pravidel
  • IPTables Flush:Smazat / odebrat všechna pravidla na RedHat a CentOS Linux
  • Linux IPTables:Jak přidat pravidla brány firewall (s příkladem Allow SSH)
  • Linuxové IPTables:Příklady pravidel příchozí a odchozí pošty (SSH a HTTP)

Linux
  1. 40 Základních často používaných příkazů Linuxu

  2. 80 nejpoužívanějších základních linuxových aplikací roku 2021

  3. 7 Příklady příkazů Linux df

  1. 7 nejpoužívanějších jmenných prostorů Linuxu

  2. [Linux]:15 nejčastěji používaných příkazů YUM s příklady

  3. Nejjednodušší linuxové příkazy s 10 příklady

  1. Jak nakonfigurovat iptables Firewall v Linuxu

  2. Jak najít nejpoužívanější příkazy v Linuxu

  3. lsof :Nejčastěji používané příklady