Pouze pro návštěvníky našeho blogu Získejte další 3 měsíce zdarma + 10% slevu na tříletý plán YSBLOG10
Chyťte dohodu

Jak opravit IPTables na Linuxovém serveru v roce 2026? – Snadný průvodce

Poslední aktualizace: 7. září 2026 9 min čtení Sanjeet Chauhan
Oprava IPTables na Linuxovém serveru

Oprava iptables na Linuxovém serveru, připojení přes konzoli, identifikace vašeho firewallového stacku (iptables-legacy, iptables-nft, firewalld nebo UFW), zobrazení a zálohování aktuálních pravidel, nastavení bezpečných výchozích zásad, povolení nezbytných portů (SSH/HTTP/HTTPS), vyprázdnit nebo opravit chybná pravidla, uložit a nastavit pravidla jako trvalá a poté ověřit připojení a protokoly.

Pokud je váš server nedostupný nebo služby selhávají, je často příčinou špatně nakonfigurovaný firewall. Tato příručka krok za krokem vysvětluje, jak opravit iptables na linuxovém serveru, ať už používáte Ubuntu/Debian, CentOS/RHEL/AlmaLinux nebo deriváty.

Naučíte se bezpečné kroky pro obnovení, jak diagnostikovat problémy a jak zajistit trvalé řešení problémů.


Co je IPTables a proč selhává?

IPTables je nástroj pro uživatelský prostor linuxového firewallu Netfilter. Filtruje provoz pomocí tabulek (filter, nat, mangle, raw) a řetězců (INPUT, FORWARD, OUTPUT).

Oprava IPTables na Linuxovém serveru

Problémy obvykle pramení z nesprávných výchozích politik, chybějících pravidel pro povolení, nesprávného NAT/přeposílání nebo konfliktů s front-endy, jako jsou UFW a firewalld.


Kontrolní seznam pro rychlé opravy (v případě zablokování použijte konzoli/KVM)

  • Připojení přes konzoli mimo pásmo (KVM/IPMI/virtuální konzole) vyhnout se SSH výluky.
  • Detekce firewallového stacku: iptables legacy vs. iptables-nft, firewalld nebo UFW.
  • Seznam a zálohovací pravidla s ukládáním pomocí iptables.
  • Dočasně nastavit výchozí zásady na PŘIJMOUT, povolit SSH, poté použijte minimální pravidla.
  • Ověřte konektivitu a poté postupně zpřísňujte pravidla.
  • Uložit a povolit perzistenci.

Krok 1: Identifikace vašeho firewallu

Moderní distribuce často dodávají iptables jako ochranu kompatibility pro nftables (nazývanou iptables-nft). Jiné používají firewalld (založený na RHEL) nebo UFW (Ubuntu). Musíte vědět, co opravujete.

# Check which iptables backend
update-alternatives --display iptables 2>/dev/null
iptables --version

# Detect firewalld or UFW
systemctl is-active firewalld
ufw status 2>&1 | head -n1

# Show nftables (if in use)
nft list ruleset

Pokud je aktivní firewalld nebo UFW, upřednostňujte opravu pomocí těchto nástrojů, nikoli pomocí nezpracovaných iptables, abyste předešli konfliktům.

Krok 2: Seznam a záloha aktuálních pravidel

Než cokoli změníte, vytvořte snímek aktuálního firewallu. To vám v případě potřeby umožní vrátit se k předchozím nastavením.

# Human-readable listing
iptables -L -n -v --line-numbers
iptables -S

# Save to file (backup)
iptables-save > /root/iptables-$(date +%F-%H%M).rules

Pokud používáte IPv6, opakujte s příkazy ip6tables.

Krok 3: Bezpečné obnovení přístupu

Vždy se ujistěte, že máte přístup ke konzoli. Pokud pracujete na dálku SSH, použijte bezpečnostní okno tím, že povolíte SSH nejprve a v případě potřeby v jiné relaci aplikovat časované vrácení zpět pomocí funkce at nebo sleep.

# Temporarily set permissive defaults
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# Flush rules and non-default chains
iptables -F
iptables -X
iptables -t nat -F
iptables -t mangle -F

# Allow essential traffic explicitly before tightening
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT   # SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT   # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT  # HTTPS
iptables -A INPUT -i lo -j ACCEPT               # Loopback
iptables -A INPUT -p icmp -j ACCEPT             # Ping (optional)
iptables -A INPUT -j DROP                       # Default deny

Potvrďte, že se můžete znovu připojit přes SSH před ukončením relace. Poté pokračujte v úpravě portů specifických pro danou službu.

Krok 4: Oprava běžných problémů s IPTables

Problém: Zablokován/a jsem SSH

Zajistěte povolení pravidla pro port 22 (nebo váš vlastní SSH Pokud používáte nestandardní port, upravte jej odpovídajícím způsobem a zvažte omezení rychlosti, abyste omezili útoky hrubou silou.

# If SSH runs on 2222
iptables -A INPUT -p tcp --dport 2222 -m conntrack --ctstate NEW -j ACCEPT

# Simple rate limiting example
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP

Problém: Webová stránka nebo API nejsou dostupné

Otevřete HTTP/HTTPS a zkontrolujte, zda váš webový server naslouchá. Někdy pravidla OUTPUT blokují výstupní protokol (pro načítání balíčků, API nebo OCSP).

# Allow inbound web
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# Verify process listening
ss -tulpn | grep -E ':(80|443)s'

Problém: Bloky databáze nebo interní služby

Pro MySQL (3306), PostgreSQL (5432), Redis (6379) atd. povolují pouze důvěryhodné IP adresy. Veřejné otevírání databází je riskantní.

# Allow MySQL from a trusted app server
iptables -A INPUT -p tcp -s 203.0.113.10 --dport 3306 -j ACCEPT

Problém: NAT nebo přesměrování portů nefunguje

Pro NAT/forwarding (brány, Kubernetes, VPN) potřebujete správná pravidla tabulky NAT a povolené IP forwarding.

# Enable forwarding at runtime and persist
sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf

# Masquerade outbound via eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Port forward 8080 on WAN to 10.0.0.10:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 10.0.0.10:80
iptables -A FORWARD -p tcp -d 10.0.0.10 --dport 80 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Krok 5: Správné nastavení výchozích zásad

Bezpečná základní hodnota je DROP na INPUT a FORWARD, ACCEPT na OUTPUT s explicitními povoleními. K mnoha výpadkům dochází, protože výchozí politika je DROP, ale požadované služby nejsou na bílé listině.

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

Krok 6: Zajistěte trvalost pravidel

Pravidla nastavená pomocí iptables se neukládají po restartu, pokud nejsou uložena. Metoda závisí na distribuci.

Ubuntu/Debian (iptables-persistent)

apt update && apt install -y iptables-persistent
# Save IPv4 and IPv6
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
systemctl enable netfilter-persistent
systemctl restart netfilter-persistent

RHEL/CentOS/AlmaLinux (iptables-services)

V RHEL 7/8/9 je výchozí firewalld. Pokud dáváte přednost neprogramovanému iptables, nainstalujte si služby iptables a vypněte firewalld , abyste předešli konfliktům.

yum install -y iptables-services
systemctl stop firewalld && systemctl disable firewalld
systemctl enable iptables
systemctl start iptables
# Save current rules
service iptables save   # or: iptables-save > /etc/sysconfig/iptables

Také čtení: Opravit FTP na Linuxovém serveru – pasivní režim, TLS a SELinux


Práce s firewalld a UFW

firewalld (RHEL, CentOS, AlmaLinux)

firewalld je nadřazený kontrolér nad nftables. Používejte ho, pokud nemáte specifickou potřebu používat raw iptables.

# Open common services
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

# Open a custom port
firewall-cmd --permanent --add-port=2222/tcp

# Apply changes and verify
firewall-cmd --reload
firewall-cmd --list-all

UFW (Ubuntu)

UFW zjednodušuje firewall management. To manageSiptables pod kapotou. Uchovávejte SSH otevřeno před povolením.

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status verbose

Pokročilé: iptables vs. nftables a back-endy

Mnoho moderních jader používá nftables. Distribuce mapují příkazy iptables na nftables prostřednictvím back-endu iptables-nft. Pokud zaznamenáte neočekávané chování, ověřte, zda používáte iptables legacy nebo iptables-nft, a udržujte zásobník konzistentní v celém systému.

# Switch backend on Debian/Ubuntu if needed (requires installed alternatives)
update-alternatives --config iptables
update-alternatives --config ip6tables

# Inspect nft ruleset directly
nft list ruleset

Techniky řešení problémů, které šetří hodiny

  • Zkontrolujte čítače: iptables -L -n -v, abyste zjistili, které pravidlo odpovídá (počet paketů/bajtů).
  • Test z jiného hostitele: curl -I http://server, nc -zv server 80,443.
  • Ověřte posluchače: ss -tulpn, abyste se ujistili, že se služby vážou na správnou IP adresu.
  • Prohlédněte logy: dmesg a journalctl -k, zda neobsahují zahozené pakety (pomůže LOG target).
  • Vyhněte se dvojitémumanageUpozornění: Nespouštějte UFW a firewalld současně, ani s nimi nepracujte s iptables, pokud neznáte jejich prioritu.
# Example logging rule before DROP
iptables -A INPUT -m limit --limit 10/min -j LOG --log-prefix "IPT DROP: " --log-level 4
iptables -A INPUT -j DROP

Sada pravidel pro bezpečné základní linie (IPv4)

Použijte tuto kompaktní základní linii a poté přidejte pravidla specifická pro danou službu. Přizpůsobte SSH port a rozhraní dle potřeby.

# Flush
iptables -F
iptables -X
iptables -t nat -F
iptables -t mangle -F

# Policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Allow loopback
iptables -A INPUT -i lo -j ACCEPT

# Allow established/related
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# SSH/HTTP/HTTPS
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# Optional: ping
iptables -A INPUT -p icmp -j ACCEPT

# Log and drop everything else (optional log)
# iptables -A INPUT -m limit --limit 10/min -j LOG --log-prefix "DROP: " --log-level 4
iptables -A INPUT -j DROP

Nejlepší postupy pro prevenci budoucích zlomení

  • Při změně pravidel firewallu na vzdálených serverech vždy zachovejte přístup ke konzoli.
  • Před úpravami zálohujte pomocí iptables; pro soubory pravidel používejte správu verzí.
  • Změny aplikujte postupně a testujte je ze samostatného hostitele.
  • Pro jednoduchost upřednostňujte služby a zóny (firewalld) nebo profily UFW.
  • Dokumentace nestandardních portů a IP adres peerů (VPN, klienti databází, monitorování).
  • Automatizujte s konfigurací management (Ansible, Salt, Puppet), aby se zabránilo driftu.
  • Pokud vaše distribuce ukončuje používání staršího iptables, naplánujte si migraci na nftables.

Když potřebujete odbornou pomoc

jestli ty manage V produkčních prostředích nebo na serverech s více klienty může malá chyba firewallu způsobit velké výpadky. YouStableJe managed Linuxový hosting a server managemůže auditovat váš firewall, posílit zabezpečení iptables nebo firewalld a implementovat bezpečná a trvalá pravidla, abyste se mohli soustředit na své aplikace. Požádejte náš tým o bezpečnostní kontrolu přizpůsobenou vašemu stacku.


Nejčastější dotazy

Jak rychle resetuju iptables, abych povolil veškerý provoz?

Používejte permisivní zásady a pravidla pro vyprázdnění a poté je znovu povolte. SSH a základní služby. Spusťte: iptables -P INPUT ACCEPT; iptables -P FORWARD ACCEPT; iptables -P OUTPUT ACCEPT; iptables -F. Toto je pouze pro obnovení. Po obnovení přístupu znovu použijte zabezpečenou sadu pravidel a nastavte ji trvalou.

Proč mi změny v souboru iptables po restartu zmizí?

Pravidla iptables nejsou ve výchozím nastavení trvalá. V systémech Debian/Ubuntu nainstalujte iptables-persistent (netfilter-persistent) a uložte je do /etc/iptables/rules.v4 a rules.v6. V systémech založených na RHEL použijte iptables-services a uložte je do /etc/sysconfig/iptables. U firewalld nebo UFW jsou pravidla trvalá díky vlastním nástrojům.

Mám použít iptables nebo nftables?

nftables je moderní backend s čistší sémantikou a lepším výkonem. Mnoho distribucí mapuje iptables na nftables (iptables-nft). Pokud začínáte znovu, zvažte použití nftables nebo firewalld/UFW. Pokud máte starší automatizaci kolem iptables, zachovávejte konzistenci a naplánujte postupnou migraci.

Jak mohu zkontrolovat, které pravidlo blokuje můj provoz?

Spusťte příkaz iptables -L -n -v pro kontrolu čítačů paketů pro každé pravidlo, přidejte pravidlo LOG před DROP pro zobrazení zásahů v journalctl -k a otestujte z klienta pomocí curl nebo nc. Zúžte řetězec (INPUT/FORWARD/OUTPUT) a tabulku (filter/nat) zapojené do vaší datové cesty.

Jaké porty bych měl na webovém serveru vždy povolit?

Minimálně: SSH (váš zvolený port), HTTP (80) a HTTPS (443). Přidat DNS (53) pokud server běží na resolveru, a všechny aplikační porty (např. 8080, 9000) dle potřeby. Omezte databázové porty (3306, 5432) na důvěryhodné IP adresy, nikoli na veřejný internet, a povolte provoz zpětné smyčky.

Zanechat komentář

Vaše e-mailová adresa nebude zveřejněna. Povinná pole jsou označena *.

Přejděte na začátek