Bezpečně nasazujte a spravujte kontejnery LXC na Ubuntu 14.04

Kontejnery LXC (kontejnery Linux) jsou funkcí operačního systému v Linuxu, kterou lze použít ke spuštění více izolovaných systémů Linux na jednom hostiteli.

Tyto pokyny vás provedou základními kroky konfigurace serveru pro izolovaný hosting linuxových kontejnerů. Nakonfigurujeme následující funkce:

  • Kontejnery LXC s Ubuntu 14.
  • Nastavení sítě Linux a přesměrování portů pro kontejnery.
  • SSH forwarding pro správu kontejnerů stejně jednoduchý jako ssh [email protected]assh [email protected]
  • Konfigurace proxy Nginx pro přístup k webovým stránkám uvnitř kontejnerů (podle názvu hostitele).
  • Další vylepšení zabezpečení pro správnou správu serveru.

Tato příručka předpokládá, že:

  • Máte účet na Vultr.com .
  • Víte, jak nakonfigurovat virtuální počítač s vlastním ISO.
  • Víte, jak používat SSH klíče a máte již vygenerované veřejné a soukromé klíče.

Na konci tutoriálu získáme dva virtuální kontejnery, které budou mít přístup k internetu, ale nemohou si navzájem pingnout. Nakonfigurujeme také přesměrování portů z example.comdo kontejnerů. Nasadíme bezpečný konfigurační a řídící panel pomocí nástrojů z Proxmox packetu.

Přípravky

Proxmox budeme používat pouze pro správu kontejnerů LXC. Obecně také podporuje KVM, ale vnořená virtualizace je na Vultr zakázána. Před zahájením je třeba stáhnout Proxmox ISO z oficiálních stránek. Budeme používat Proxmox VE 5.0 ISO Installer. Nainstalujte OS z bitové kopie s výchozím nastavením a restartujte virtuální počítač. Proxmox můžete také nainstalovat ručně ze zdrojů, ale to ve většině případů není nutné (postupujte podle pokynů zde ).

Nastavení OS

Připojte se k hostiteli pomocí SSH, aktualizujte seznam šablon proxmox a stáhněte si vhodnou šablonu pro kontejnery.

apt-get update
pveam update
pveam available
pveam download local ubuntu-14.04-standard_14.04-1_amd64.tar.gz

Nyní musíme vytvořit linuxový kontejner se síťovým rozhraním připojeným k linuxovému mostu. Otevřete /etc/network/interfacesa připojte následující řádky:

auto vmbr1
iface vmbr1 inet static
    address  10.100.0.1
    netmask  255.255.255.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0

Po restartu systému můžete ze Ubuntu 14.04šablony vytvořit nový kontejner .

pct create 200 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.0.200/24,gw=10.100.0.1

Svůj kontejner můžete ověřit pomocí pct list, spustit kontejner #200 pomocí pct start 200a zadat jeho shell pomocí pct enter 200. Síťová nastavení a adresy můžete také ověřit pomocí ip addr.

Síť

Aby bylo možné ve vašem kontejneru poskytovat internetové připojení, musíme povolit NAT. Následující umožní přesměrovat provoz z kontejneru na internet pomocí technologie NAT. vmbr0Můstek je připojen k externí rozhraní a vmbr1můstek je spojen s kontejnery.

sysctl -w net.ipv4.ip_forward=1
iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
iptables --append FORWARD --in-interface vmbr1 -j ACCEPT

Zadejte kontejner s pct enter 200a nakonfigurujte webový server uvnitř.

apt-get update
apt-get install nginx
service nginx start
exit

Nyní musíme nakonfigurovat Nginx na vašem serveru pro proxy weby do kontejnerů.

apt-get update
apt-get install nginx

Vytvořte nový konfigurační soubor /etc/nginx/sites-available/box200s následujícím obsahem:

server {
    listen 80;
    server_name server200.example.com;

    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;

    location / {
        proxy_pass http://10.100.0.200/;
    }
}

Nginx nyní bude proxy každý požadavek HTTP pro server200.example.comz vašeho serveru do kontejneru s IP 10.100.0.200. Aktivujte tuto konfiguraci.

ln -s /etc/nginx/sites-available/box200 /etc/nginx/sites-enabled/
service nginx restart

Přístup SSH

Pokud chcete poskytnout snadný přístup k sandboxům, musíte relace SSH přeposílat do kontejnerů. Chcete-li tak učinit, vytvořte nového uživatele na kořenovém serveru. Nezapomeňte zadat heslo, další parametry nejsou nutné.

adduser box200
su - box200
ssh-keygen
cat .ssh/id_rsa.pub
exit

Zkopírujte tento klíč SSH a zadejte kontejner pro připojení klíče.

pct enter 200
mkdir .ssh
nano .ssh/authorized_keys
exit

Na serveru přidejte do .ssh/authorized_keyssouboru následující řádek .

command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>

Nezapomeňte změnit <YOUR SSH KEY>svůj domácí veřejný klíč. Případně můžete z příkazového řádku spustit následující.

echo 'command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>' >> .ssh/authorized_keys

Poté se můžete připojit ke svému sandboxu pomocí ssh.

`ssh box200@<your_server_IP>`

Další nastavení

Nastal čas implementovat několik vylepšení zabezpečení. Nejprve chceme změnit výchozí port SSH. Potom chceme chránit naši stránku pro správu Proxmox pomocí základní HTTP autentizace.

nano /etc/ssh/sshd_config

Odkomentujte a změňte řádek

#Port 22 

na

Port 24000 

Restartujte ssh.

service ssh restart

Znovu se připojte k ssh s novým portem.

ssh root@<your_IP> -p 24000

Nastavte heslo Proxmox.

Vytvořit soubor /etc/default/pveproxy.

ALLOW_FROM="127.0.0.1"
DENY_FROM="all"
POLICY="allow"

Restartujte, pveproxyaby se změny projevily.

/etc/init.d/pveproxy restart

Nakonfigurujte nginx (pokud jste to ještě neudělali).

apt-get install nginx
service nginx restart

Vytvořte výchozí konfiguraci v /etc/nginx/site-available/default.

server {
        listen          80;
        server_name     example.com;
        rewrite         ^ https://$hostname.example.com$request_uri? permanent;
}
server {
        listen                   443 ssl;
        server_name              example.com;
        #auth_basic              "Restricted";
        #auth_basic_user_file    htpasswd;
        #location / { proxy_pass https://127.0.0.1:8006; }
}

Získejte platný certifikát SSL a aktualizujte svou konfiguraci nginx. Lze to například provést pomocí certbox a letsencrypt. Pro více informací klikněte zde .

wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
./certbot-auto --nginx

Nyní by vaše konfigurace nginx měla vypadat takto (nebo ji můžete později změnit ručně). Nezapomeňte odkomentovat řádky ssl, auth a location.

server {
    listen          80;
    server_name     example.com;
    rewrite         ^ https://$hostname.example.com$request_uri? permanent;
}

server {
        listen                  443 ssl;
        server_name             example.com;
        ssl on;
        auth_basic              "Restricted";
        auth_basic_user_file    htpasswd;
        location / { proxy_pass https://127.0.0.1:8006; }        

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
}

Vytvořte /etc/htpasswdsoubor pomocí generátoru Htpasswd .

nano /etc/nginx/htpasswd

Restartujte Nginx

service nginx restart

Nyní můžete https://example.compo základním ověření zobrazit konzolu pro správu .

Přesměrování portů

Kontejnery jsou nyní dostupné prostřednictvím požadavků HTTP a SSH. Nyní můžeme nakonfigurovat předávání portů z externího serveru do kontejnerů. Například, pro mapování example.com:8080na 10.100.0.200:3000vstup následujícího.

iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8080 -j DNAT --to 10.100.0.200:3000

Můžete si prohlédnout aktuální pravidla.

`iptables -t nat -v -L PREROUTING -n --line-number`

Pravidlo můžete také odstranit podle čísla pomocí následujícího.

`iptables -t nat -D PREROUTING <#>`.

Oddělené nádoby

Nyní můžeme přistupovat k jednomu kontejneru z druhého.

pct create 250 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.0.250/24,gw=10.100.0.1
pct start 250
pct enter 250
ping 10.100.0.200

Pokud chcete omezit přístup z kontejneru 250 na 200, musíte každý kontejner připojit k osobnímu mostu a zakázat předávání mezi mosty.

  1. Smazat stávající kontejnery.

    pct stop 200
    pct stop 250
    pct destroy 200
    pct destroy 250
    
  2. Změňte obsah /etc/network/interfaces.

    auto vmbr1
    iface vmbr1 inet static
        address  10.100.1.1
        netmask  255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
    
    auto vmbr2
    iface vmbr2 inet static
        address  10.100.2.1
        netmask  255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
    
  3. reboot systém

  4. Povolit přeposílání

    `sysctl -w net.ipv4.ip_forward=1`
    

    Aby byly tyto změny trvalé, můžete /etc/sysctl.confsoubor upravit a najít následující text.

    #net.ipv4.ip_forward=1
    

    Odkomentujte to.

    net.ipv4.ip_forward=1
    

    Můžete také spustit sysctl -p, aby se změny projevily okamžitě.

  5. Vytvořte kontejnery.

    pct create 200 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.1.200/24,gw=10.100.1.1
    pct create 250 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr2,ip=10.100.2.250/24,gw=10.100.2.1
    
  6. Spusťte kontejnery pomocí pct start 200a pct start 250.

  7. Propláchněte iptablespravidla.

    iptables -F
    
  8. Povolit NAT.

    iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
    

    vmbr0 je most, který obsahuje externí rozhraní.

  9. Povolit přeposílání z externího rozhraní.

    iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
    
  10. Povolit přeposílání z kontejnerů na internet.

    iptables -A FORWARD -i vmbr1 -o vmbr0 -s 10.100.1.0/24 -j ACCEPT
    iptables -A FORWARD -i vmbr2 -o vmbr0 -s 10.100.2.0/24 -j ACCEPT
    
  11. Pusťte další přesměrování.

    iptables -A FORWARD -i vmbr1 -j DROP
    iptables -A FORWARD -i vmbr2 -j DROP
    

Nyní zkontrolujte, že 10.100.1.200může ping, 8.8.8.8ale nemůže ping 10.100.2.250a že 10.100.2.250může ping, 8.8.8.8ale nemůže ping 10.100.1.200.

Důležité je pořadí příkazů souvisejících s iptables. Nejlepší způsob, jak provozovat svá pravidla, je použít iptables-persistent. Tento balíček vám pomůže uložit pravidla iptables do souborů /etc/iptables/rules.v4a /etc/iptables/rules.v6může je automaticky načíst po restartu systému. Stačí jej nainstalovat pomocí následujícího.

apt-get install iptables-persistent

YESPo zobrazení výzvy vyberte .


Zde je návod, jak zkontrolovat kontejnery Hyper-V na Windows 10 Insider

Zde je návod, jak zkontrolovat kontejnery Hyper-V na Windows 10 Insider

Společnost Microsoft v novém příspěvku na blogu vysvětlila, jak mohou Windows Insiders testovat kontejnery Hyper-V na Windows 10, nové virtualizační řešení, které umožňuje běh aplikací bez ovlivnění zbytku operačního systému.

Jak nainstalovat Harbor na CentOS 7

Jak nainstalovat Harbor na CentOS 7

Harbor je open source server registru podnikové třídy, který ukládá a distribuuje obrazy Docker. Harbor rozšiřuje open source Docker Distribution b

Nainstalujte Rancher OS přes iPXE

Nainstalujte Rancher OS přes iPXE

Rancher OS je velmi lehká linuxová distribuce postavená na Dockeru. Samotný OS váží kolem 20 MB. Tento tutoriál vám pomůže začít

V systému CoreOS nastavte svůj vlastní registr Docker

V systému CoreOS nastavte svůj vlastní registr Docker

Všichni známe a milujeme Docker, platformu pro vytváření, správu a distribuci aplikačních kontejnerů na více počítačích. Společnost Docker Inc. poskytuje službu t

Instalace docker-compose na CoreOS

Instalace docker-compose na CoreOS

Tento článek vysvětluje, jak nainstalovat docker-compose na CoreOS. V CoreOS je složka /usr/ neměnná, takže standardní cesta /usr/local/bin není k dispozici pro

Nainstalujte Docker CE na Ubuntu 18.04

Nainstalujte Docker CE na Ubuntu 18.04

Úvod Docker je aplikace, která nám umožňuje nasazovat programy, které jsou spouštěny jako kontejnery. Byl napsán v populárním programovacím jazyce Go

Vytvořte Docker Swarm na Alpine Linux 3.9.0

Vytvořte Docker Swarm na Alpine Linux 3.9.0

Úvod Tato příručka vám ukáže, jak vytvořit a nakonfigurovat Docker swarm pomocí několika serverů Alpine Linux 3.9.0 a Porttaineru. Prosím, uvědomte si to

Nasaďte aplikaci PHP pomocí Docker-compose

Nasaďte aplikaci PHP pomocí Docker-compose

PHP aplikace jsou obvykle tvořeny webovým serverem, relačním databázovým systémem a samotným jazykovým interpretem. V tomto tutoriálu budeme využívat

Vyvážení zatížení pomocí Dockeru

Vyvážení zatížení pomocí Dockeru

Když spouštíte webovou aplikaci, obvykle chcete ze svých zdrojů vytěžit maximum, aniž byste museli převádět software, aby používal více vláken nebo

Nasaďte aplikaci Node.js pomocí Dockeru

Nasaďte aplikaci Node.js pomocí Dockeru

Tento článek vám ukáže, jak nasadit aplikaci Node v kontejneru Docker. Poznámka: Tento kurz předpokládá, že máte nainstalovaný a přečtený Docker

Instalace Docker CE na CentOS 7

Instalace Docker CE na CentOS 7

Technologie kontejnerů Docker umožňuje spouštět aplikace ve specifickém a izolovaném prostředí. Docker Community Edition (CE) je nový název pro free

Nasaďte Kubernetes s Kubeadm na CentOS 7

Nasaďte Kubernetes s Kubeadm na CentOS 7

Přehled Tento článek vám má pomoci během okamžiku zprovoznit a spustit cluster Kubernetes s kubeadm. Tato příručka bude nasazovat dva servery, na

Instalace Dockeru na CentOS 7

Instalace Dockeru na CentOS 7

Používáte jiný systém? Docker je aplikace, která umožňuje nasazení softwaru v rámci virtuálních kontejnerů. Bylo to napsáno v programu Go

Instalace Docker CE na Debian 9

Instalace Docker CE na Debian 9

Používáte jiný systém? Úvod Docker je aplikace, která umožňuje nasazení softwaru ve virtuálních kontejnerech. Bylo to napsáno v G

Sticky Session With Docker Swarm (CE) na Debianu 9

Sticky Session With Docker Swarm (CE) na Debianu 9

Používáte jiný systém? Úvod Docker Swarm promění vaše jednotlivé servery na shluk počítačů; usnadnění škálování, vysoká dostupnost an

Dva nástroje pro správu grafiky Docker: DockerUI a Shipyard

Dva nástroje pro správu grafiky Docker: DockerUI a Shipyard

Pomocí aplikace Vultr Docker můžete snadno nasadit Docker na instanci serveru Vultr. Mezitím můžete usnadnit správu Dockeru

Nainstalujte Rancher Server na RancherOS

Nainstalujte Rancher Server na RancherOS

Přehled RancherOS je neuvěřitelně lehký operační systém (jen asi 60 MB), který spouští systémového démona Docker jako PID 0 pro spouštění systémových služeb.

Začínáme s Kubernetes na CentOS 7

Začínáme s Kubernetes na CentOS 7

Kubernetes je platforma s otevřeným zdrojovým kódem vyvinutá společností Google pro správu kontejnerových aplikací napříč clusterem serverů. Staví na desetiletí a

Nastavte Sentry přes Docker na Ubuntu 16.04

Nastavte Sentry přes Docker na Ubuntu 16.04

Používáte jiný systém? Úvod Sentry je open source řešení pro sledování chyb. Sentry sleduje výjimky a další užitečné zprávy

Sticky Session With Docker Swarm (CE) na CentOS 7

Sticky Session With Docker Swarm (CE) na CentOS 7

Používáte jiný systém? Úvod Docker Swarm promění vaše jednotlivé servery na shluk počítačů, což usnadňuje škálování, vysokou dostupnost a

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