Snadná konfigurace a příklady IPTables na Ubuntu 16.04

Úvod

iptablesje výkonný nástroj používaný ke konfiguraci integrovaného firewallu linuxového jádra. Dodává se předinstalovaný na většině distribucí Ubuntu, ale pokud používáte přizpůsobenou verzi Ubuntu nebo běžíte v kontejneru, budete ji s největší pravděpodobností muset nainstalovat ručně.

sudo apt-get install iptables iptables-persistent

Pokud budete po instalaci dotázáni, zda chcete uložit vaše aktuální pravidla, v tuto chvíli nezáleží, protože později se chystáte odstranit nebo vytvořit nová pravidla.

Tipy

Pomocí netcatpříkazu (na jiném počítači, než je váš server) můžete otestovat, které z vašich portů jsou otevřené nebo zavřené.

nc -z -w5 -v SERVER_IP PORT
  • nc je příkaz netcat.
  • -z stačí poslat paket bez užitečného zatížení.
  • -w5 počkejte až 5 sekund na odpověď.
  • -v podrobný režim.
  • Nahraďte SERVER_IPadresu vašeho serveru.
  • Nahraďte PORTportem, který chcete otestovat, zda je otevřený (např. 22).

Na vašem serveru můžete pomocí netstatpříkazu zjistit, které porty aktuálně naslouchají připojení.

sudo netstat -tulpn

Poznámka: Přestože netstatje užitečné najít porty, se kterými chcete pracovat, měli byste si být vědomi aplikací, které máte aktuálně nainstalované na vašem serveru a které porty naslouchají, nemusíte povolit každý port, který najdete ve netstatvýstupu .

Syntax

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTpřidat pravidlo do INPUTřetězce, řetězec je skupina pravidel, která v této příručce používáme nejčastěji INPUT, OUTPUTa PREROUTING.
  • -p tcpnastavit tcpjako protokol, na který se bude toto pravidlo vztahovat, můžete použít i jiné protokoly, jako je udp, icmpnebo all.
  • -m tcppoužijte tcpmodul. iptablespodporuje další funkce prostřednictvím modulů, z nichž některé jsou již předinstalované iptablesa jiné, jako je geoipmodul.
  • --dport 22příkazy začínající na --označují další možnosti pro dříve použitý modul, v tomto případě tcpmodulu řekneme, aby se vztahoval pouze na port 22.
  • -m geoippoužijte geoipmodul. Omezí pakety na základě země (další informace v kroku 5).
  • --src-cc PEřekněte geoipmodulu, aby omezil příchozí pakety na ty, které přicházejí z Peru. Další kódy zemí vyhledejte ISO 3166 country codesna internetu.
  • -j ACCEPT-jparametr říká iptables, co má dělat, když paket odpovídá omezení uvedená v předchozí argumenty. V tomto případě bude ACCEPTtyto pakety, další možnosti REJECT, DROPa další. Další možnosti najdete hledáním iptables jump targetsna internetu.

1. Základy

Seznam všech pravidel.

sudo iptables -L

Seznam všech příkazů, které byly použity k vytvoření aktuálně používaných pravidel, užitečných pro úpravu nebo odstranění pravidel.

sudo iptables -S

Chcete-li odstranit pravidlo specifický zvolit pravidlo sudo iptables -Sa nahradí -Ase -D.

# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Vypište všechna očíslovaná pravidla v INPUTřetězci.

sudo iptables -L INPUT --line-numbers

Odstraňte očíslované pravidlo.

sudo iptables -D INPUT 2

Vymazat všechna pravidla.

sudo iptables -F

Upozornění: Při připojení pomocí SSH můžete ztratit připojení .

Jasná pouze pravidla v OUTPUTřetězci.

sudo iptables -F OUTPUT

2. Vytvořte počáteční pravidla

Povolit SSHna eth0rozhraní

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 aplikovat pravidlo na konkrétní rozhraní, aby bylo možné z libovolného rozhraní tento příkaz odstranit.

Omezení příchozích paketů na konkrétní IP (tj. 10.0.3.1/32).

sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
  • -s 10.0.3.1/32 určuje IP/podsíť, ze které se povolí připojení.

Nastavte výchozí pravidla řetězce.

Upozornění: Než budete pokračovat, ujistěte se, že jste použili správná pravidla SSH, pokud pracujete na vzdáleném serveru .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP zakáže všechny příchozí pakety (tj. nikdo se nebude moci připojit k vašim běžícím serverům, jako je Apache, SQL atd.).
  • -P FORWARD DROP zakáže všechny předávané pakety (tj. když používáte svůj systém jako router).
  • -P OUTPUT ACCEPTumožňuje všechny odchozí pakety (tj. když provedete HTTPpožadavek).

Povolit veškerý provoz na rozhraní zpětné smyčky ( doporučeno ).

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

3. Udělejte pravidla trvalá

Uložte aktuální iptablespravidla.

sudo netfilter-persistent save
sudo netfilter-persistent reload

Pokud běžíte uvnitř kontejneru, netfilter-persistentpříkaz s největší pravděpodobností nebude fungovat, takže musíte překonfigurovat iptables-persistentbalíček.

sudo dpkg-reconfigure iptables-persistent

4. Povolte odchozí připojení

Povolit dotazy DNS.

sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Použijte statemodul k povolení RELATEDa ESTABLISHEDodchozích paketů.

sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Povolte požadované porty; v tomto případě HTTPporty.

sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

Více portů, které budete chtít použít.

  • FTP: tcp na portu 21
  • HTTPS: tcp na portu 443
  • DHCP: udp na portu 67
  • NTP: udp na portu 123

Poznámka: Pokud chcete povolit apt-get, může být nutné povolit FTPaHTTPS .

Povolit vrácený provoz pouze pro RELATEDa již ESTABLISHEDpřipojení ( doporučeno, protože někdy je vyžadována obousměrná komunikace).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Další užitečná pravidla

Povolit požadavky ping zvenčí.

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

Předat provoz na eth0portu 2200na 10.0.3.21:22(užitečné, pokud chcete odhalit server SSH, který běží uvnitř kontejneru).

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22

Pokud se úspěšně přihlásíte na svůj server pomocí SSH, bude vytvořeno trvalé připojení (tj. žádná nová připojení, i když jste připojeni déle než 1 hodinu). Pokud selžete a pokusíte se přihlásit znovu, vytvoří se nové připojení. To zablokuje nepřetržité pokusy o přihlášení k SSH omezením nových připojení za hodinu.

sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP

Přesměrujte všechny požadavky na portu 443na port 4430(užitečné, pokud se chcete svázat s portem 443bez root).

sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
  • ens3 síťové rozhraní.
  • -m geoip modul country block (viz krok 5).

Upozornění: Nepoužívejte lo, OS zahodí všechny pakety přesměrované na rozhraní zpětné smyčky .

5. Povolte nebo zablokujte celé země

5.1 Instalace xtables-addons

xtables-addonsModul můžete nainstalovat různými způsoby, klidně použijte způsob instalace, který vám nejlépe vyhovuje.

  • Nainstalujte pomocí apt-get.

    sudo apt-get install xtables-addons-common
    
  • Nainstalujte pomocí module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • Instalovat ze zdroje.

    sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
    git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
    cd xtables-addons
    ./autogen.sh
    ./configure
    make
    sudo make install
    

Vytvořte databázi „zemí“.

sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv

Restartujte systém.

sudo reboot

Po xtables-addonsúspěšné instalaci po prvním restartu spusťte, depmodjinak nebude blokování země správně fungovat (toto je vyžadováno pouze poprvé).

sudo depmod 

Vytvořte skript na adrese /etc/cron.monthly/geoip-updaterpro aktualizaci geoipdatabáze měsíčně.

#!/usr/bin/env bash
# this script is intended to run with sudo privileges

echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip

echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl

echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater

Udělat /etc/cron.monthly/geoip-updaterspustitelný.

sudo chmod +x /etc/cron.monthly/geoip-updater

5.2 Příklad pravidel

_Poznámka: Pokud se iptables: No chain/target/match by that namepři pokusu o použití geoippravidla zobrazí chyba , je možné, že xtables-addonsnebylo nainstalováno správně. Zkuste jiný způsob instalace.

Blokujte všechny příchozí pakety z Číny, Hongkongu, Ruska a Koreje.

sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP

Povolit příchozí pakety na portu 80odkudkoli kromě zemí výše.

sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Povolit příchozí pakety na ens3rozhraní na portu 22pouze z Peru (neváhejte si vybrat kód země, ze které chcete přijímat pakety, například USpro Spojené státy).

sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT

Povolit příchozí pakety na portu 443pouze z Peru.

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT

Nainstalujte Plesk na CentOS 7

Nainstalujte Plesk na CentOS 7

Používáte jiný systém? Plesk je proprietární ovládací panel webového hostitele, který umožňuje uživatelům spravovat jejich osobní a/nebo klientské webové stránky, databáze

Nainstalujte Lets Encrypt SSL na aplikaci WordPress One-Click

Nainstalujte Lets Encrypt SSL na aplikaci WordPress One-Click

Úvod Lets Encrypt je služba certifikační autority, která nabízí bezplatné certifikáty TLS/SSL. Proces instalace zjednodušil Certbot,

Jak nastavit klasický server Tekkit na Ubuntu 16.10

Jak nastavit klasický server Tekkit na Ubuntu 16.10

Používáte jiný systém? Co je Tekkit Classic? Tekkit Classic je modpack pro hru, kterou každý zná a miluje; Minecraft. Obsahuje některé z ver

Vytvoření blogu Jekyll na Ubuntu 16.04

Vytvoření blogu Jekyll na Ubuntu 16.04

Používáte jiný systém? Jekyll je skvělá alternativa k WordPressu pro blogování nebo sdílení obsahu. Nevyžaduje žádné databáze a je velmi snadné i

Jak nastavit bezobslužné upgrady na Debian 9 (Stretch)

Jak nastavit bezobslužné upgrady na Debian 9 (Stretch)

Používáte jiný systém? Pokud si zakoupíte server Debian, měli byste mít vždy nejnovější bezpečnostní záplaty a aktualizace, ať už spíte nebo ne

Jak nainstalovat a nakonfigurovat PHP 7.0 nebo PHP 7.1 na Ubuntu 16.04

Jak nainstalovat a nakonfigurovat PHP 7.0 nebo PHP 7.1 na Ubuntu 16.04

PHP a související balíčky jsou nejčastěji používané komponenty při nasazování webového serveru. V tomto článku se naučíme, jak nastavit PHP 7.0 nebo PHP 7.1 o

Jak nainstalovat Squid Proxy na CentOS

Jak nainstalovat Squid Proxy na CentOS

Squid je populární bezplatný linuxový program, který vám umožňuje vytvořit webový proxy pro předávání. V této příručce uvidíte, jak nainstalovat Squid na CentOS, aby vás otočil

Jak nainstalovat Lighttpd (LLMP Stack) na CentOS 6

Jak nainstalovat Lighttpd (LLMP Stack) na CentOS 6

Úvod Lighttpd je fork Apache, jehož cílem je být mnohem méně náročný na zdroje. Je lehký, odtud jeho název, a jeho použití je docela jednoduché. Installin

Nastavení aplikace Yii na Ubuntu 14.04

Nastavení aplikace Yii na Ubuntu 14.04

Yii je PHP framework, který vám umožňuje vyvíjet aplikace rychleji a snadněji. Instalace Yii na Ubuntu je přímočará, jak se přesně dozvíte

Použití obrazovky na Ubuntu 14.04

Použití obrazovky na Ubuntu 14.04

Screen je aplikace, která umožňuje vícenásobné použití terminálových relací v rámci jednoho okna. To vám umožňuje simulovat více oken terminálu, kde to má

Nastavte si svůj vlastní DNS server na Debian/Ubuntu

Nastavte si svůj vlastní DNS server na Debian/Ubuntu

Tento tutoriál vysvětluje, jak nastavit DNS server pomocí Bind9 na Debianu nebo Ubuntu. V celém článku nahraďte odpovídajícím způsobem název-vaše-domény.com. Při čt

Konfigurace statické sítě a IPv6 na CentOS 7

Konfigurace statické sítě a IPv6 na CentOS 7

VULTR nedávno provedl změny na jejich konci a vše by nyní mělo fungovat dobře po vybalení s povoleným NetworkManagerem. Pokud si přejete deaktivovat

Úprava Icinga2 pro použití modelu Master/Client na CentOS 6 nebo CentOS 7

Úprava Icinga2 pro použití modelu Master/Client na CentOS 6 nebo CentOS 7

Icinga2 je výkonný monitorovací systém a při použití v modelu master-client může nahradit potřebu monitorovacích kontrol založených na NRPE. Hlavní klient

Nastavte Red5 Media Server na Ubuntu 16.04

Nastavte Red5 Media Server na Ubuntu 16.04

Používáte jiný systém? Red5 je open source mediální server implementovaný v Javě, který vám umožňuje spouštět aplikace Flash pro více uživatelů, jako je živé streamování

Zkompilujte a nainstalujte Nginx pomocí modulu PageSpeed ​​na Debian 8

Zkompilujte a nainstalujte Nginx pomocí modulu PageSpeed ​​na Debian 8

V tomto článku uvidíme, jak zkompilovat a nainstalovat hlavní řadu Nginx z oficiálních zdrojů Nginx pomocí modulu PageSpeed, který vám umožňuje

Jak nainstalovat Apache Cassandra 3.11.x na Ubuntu 16.04 LTS

Jak nainstalovat Apache Cassandra 3.11.x na Ubuntu 16.04 LTS

Používáte jiný systém? Apache Cassandra je bezplatný a otevřený systém pro správu databází NoSQL, který je navržen tak, aby poskytoval škálovatelnost, vysokou

Jak nainstalovat Apache Cassandra 3.11.x na CentOS 7

Jak nainstalovat Apache Cassandra 3.11.x na CentOS 7

Používáte jiný systém? Apache Cassandra je bezplatný a otevřený systém pro správu databází NoSQL, který je navržen tak, aby poskytoval škálovatelnost, vysokou

Jak nainstalovat Vanilla Forum na Ubuntu 16.04

Jak nainstalovat Vanilla Forum na Ubuntu 16.04

Používáte jiný systém? Vanilla forum je open source aplikace fóra napsaná v PHP. Je plně přizpůsobitelný, snadno použitelný a podporuje externí

Jak nainstalovat Kanboard na Ubuntu 18.04 LTS

Jak nainstalovat Kanboard na Ubuntu 18.04 LTS

Používáte jiný systém? Úvod Kanboard je bezplatný a otevřený softwarový program pro správu projektů, který je navržen tak, aby usnadnil a vizualizoval

Jak nainstalovat Kanboard na Debian 9

Jak nainstalovat Kanboard na Debian 9

Používáte jiný systém? Úvod Kanboard je bezplatný a otevřený softwarový program pro správu projektů, který je navržen tak, aby usnadnil a vizualizoval

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Umělá inteligence není v budoucnosti, je zde přímo v současnosti V tomto blogu si přečtěte, jak aplikace umělé inteligence ovlivnily různé sektory.

Útoky DDOS: Stručný přehled

Útoky DDOS: Stručný přehled

Jste také obětí DDOS útoků a nemáte jasno v metodách prevence? Chcete-li vyřešit své dotazy, přečtěte si tento článek.

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Možná jste slyšeli, že hackeři vydělávají spoustu peněz, ale napadlo vás někdy, jak takové peníze vydělávají? Pojďme diskutovat.

Revoluční vynálezy od Googlu, které vám usnadní život.

Revoluční vynálezy od Googlu, které vám usnadní život.

Chcete vidět revoluční vynálezy Google a jak tyto vynálezy změnily život každého dnešního člověka? Pak si přečtěte na blogu a podívejte se na vynálezy od Googlu.

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Koncept aut s vlastním pohonem, která vyrazí na silnice s pomocí umělé inteligence, je snem, který už nějakou dobu máme. Ale přes několik slibů nejsou nikde vidět. Přečtěte si tento blog a dozvíte se více…

Technologická singularita: vzdálená budoucnost lidské civilizace?

Technologická singularita: vzdálená budoucnost lidské civilizace?

Jak se věda vyvíjí rychlým tempem a přebírá mnoho našeho úsilí, stoupá také riziko, že se vystavíme nevysvětlitelné singularitě. Přečtěte si, co pro nás může znamenat singularita.

Evoluce ukládání dat – Infografika

Evoluce ukládání dat – Infografika

Způsoby ukládání dat se mohou vyvíjet od narození dat. Tento blog se zabývá vývojem ukládání dat na základě infografiky.

Funkcionality vrstev referenční architektury velkých dat

Funkcionality vrstev referenční architektury velkých dat

Přečtěte si blog, abyste co nejjednodušším způsobem poznali různé vrstvy v architektuře velkých dat a jejich funkce.

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

V tomto digitálním světě se chytrá domácí zařízení stala klíčovou součástí života. Zde je několik úžasných výhod chytrých domácích zařízení o tom, jak náš život stojí za to žít a zjednodušit jej.

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Apple nedávno vydal doplňkovou aktualizaci macOS Catalina 10.15.4, která opravuje problémy, ale zdá se, že aktualizace způsobuje další problémy, které vedou k zablokování počítačů mac. Přečtěte si tento článek a dozvíte se více