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).

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 rulesetPokud 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).rulesPokud 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 denyPotvrď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 DROPProblé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 ACCEPTProblé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 ACCEPTKrok 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 ACCEPTKrok 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-persistentRHEL/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/iptablesTaké č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-allUFW (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 verbosePokroč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 rulesetTechniky ř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 DROPSada 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 DROPNejlepší 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.
