Sigurno implementirajte i upravljajte LXC spremnicima na Ubuntu 14.04

LXC spremnici (Linux spremnici) su značajka operacijskog sustava u Linuxu koja se može koristiti za pokretanje više izoliranih Linux sustava na jednom hostu.

Ove upute će vas provesti kroz osnovne korake konfiguracije poslužitelja za izolirani hosting Linux kontejnera. Konfigurirat ćemo sljedeće značajke:

  • LXC kontejneri s Ubuntu 14.
  • Linux mrežne postavke i prosljeđivanje portova za spremnike.
  • SSH prosljeđivanje za administraciju kontejnera jednostavno kao ssh [email protected]issh [email protected]
  • Nginx proxy konfiguracija za pristup web stranicama unutar spremnika (prema imenu hosta).
  • Dodatna sigurnosna poboljšanja za pravilno upravljanje poslužiteljem.

Ovaj vodič pretpostavlja da:

  • Imate račun na Vultr.com .
  • Znate kako konfigurirati virtualni stroj s prilagođenim ISO-om.
  • Znate koristiti SSH ključeve i već ste generirali javne i privatne ključeve.

Na kraju tutoriala dobit ćemo dva virtualna kontejnera koji će imati pristup internetu, ali ne mogu pingati jedan drugog. Također ćemo konfigurirati prosljeđivanje portova od example.comdo kontejnera. Sigurnu konfiguraciju i upravljačku ploču postavit ćemo uz pomoć alata iz Proxmox paketa.

Pripreme

Proxmox ćemo koristiti samo za upravljanje LXC kontejnerima. Općenito, također podržava KVM, ali ugniježđena virtualizacija je zabranjena na Vultru. Prije početka potrebno je preuzeti Proxmox ISO sa službene web stranice. Koristit ćemo Proxmox VE 5.0 ISO Installer. Instalirajte OS sa slike sa zadanim postavkama i ponovno pokrenite virtualni stroj. Također, možete ručno instalirati proxmox iz izvora, ali to u većini slučajeva nije potrebno (slijedite upute ovdje ).

Postavljanje OS-a

Povežite se sa svojim hostom putem SSH-a, ažurirajte popis proxmox predložaka i preuzmite odgovarajući predložak za spremnike.

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

Sada moramo stvoriti linux spremnik s mrežnim sučeljem spojenim na linux most. Otvorite /etc/network/interfacesi dodajte sljedeće retke:

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

Nakon ponovnog pokretanja sustava, možete stvoriti novi spremnik iz Ubuntu 14.04predloška.

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

Možete provjeriti svoj spremnik pomoću pct list, pokrenuti spremnik #200 s pct start 200i unijeti njegovu ljusku s pct enter 200. Također možete provjeriti mrežne postavke i adrese pomoću ip addr.

Mreža

Da bismo omogućili internetsku vezu unutar vašeg spremnika, moramo omogućiti NAT. Sljedeće će omogućiti prosljeđivanje prometa iz kontejnera na internet uz pomoć NAT tehnologije. vmbr0Mosta spojen na vanjski sučelje i vmbr1most povezan s kontejnerima.

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

Unesite spremnik s pct enter 200i konfigurirajte web poslužitelj unutra.

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

Sada moramo konfigurirati Nginx na vašem poslužitelju da proxy web stranice u kontejnere.

apt-get update
apt-get install nginx

Napravite novu konfiguracijsku datoteku /etc/nginx/sites-available/box200sa sljedećim sadržajem:

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 će sada proxy svaki HTTP zahtjev server200.example.coms vašeg poslužitelja u spremnik s IP-om 10.100.0.200. Aktivirajte ovu konfiguraciju.

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

SSH pristup

Ako želite omogućiti lak pristup sandboxovima, morate proslijediti SSH sesije u spremnike. Da biste to učinili, stvorite novog korisnika na svom korijenskom poslužitelju. Ne zaboravite unijeti lozinku, drugi parametri nisu potrebni.

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

Kopirajte ovaj SSH ključ i unesite spremnik da dodate ključ.

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

Na svom poslužitelju dodajte sljedeći redak u .ssh/authorized_keysdatoteku.

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

Ne zaboravite promijeniti <YOUR SSH KEY>svoj kućni javni ključ. Alternativno, možete pokrenuti sljedeće iz naredbenog retka.

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

Zatim se možete povezati sa svojim sandboxom pomoću ssh-a.

`ssh box200@<your_server_IP>`

Dodatne postavke

Vrijeme je za implementaciju nekoliko sigurnosnih poboljšanja. Prvo, želimo promijeniti zadani SSH port. Zatim želimo zaštititi našu stranicu za upravljanje Proxmoxom osnovnom HTTP autentifikacijom.

nano /etc/ssh/sshd_config

Dekomentirajte i promijenite redak

#Port 22 

do

Port 24000 

Ponovno pokrenite ssh.

service ssh restart

Ponovno se povežite na ssh s novim portom.

ssh root@<your_IP> -p 24000

Postavite lozinku za Proxmox.

Napravite datoteku /etc/default/pveproxy.

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

Ponovo pokrenite pveproxykako bi promjene stupile na snagu.

/etc/init.d/pveproxy restart

Konfigurirajte nginx (ako to niste učinili prije).

apt-get install nginx
service nginx restart

Napravite zadanu konfiguraciju u /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; }
}

Nabavite važeći SSL certifikat i ažurirajte svoju nginx konfiguraciju. Na primjer, to se može učiniti uz pomoć certboxa i letsencrypta. Za više informacija kliknite ovdje .

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

Sada bi vaša nginx konfiguracija trebala izgledati ovako (ili je možete promijeniti ručno nakon toga). Nemojte zaboraviti dekomentirati retke ssl, auth i 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
}

Napravite /etc/htpasswddatoteku pomoću Htpasswd generatora .

nano /etc/nginx/htpasswd

Ponovno pokrenite Nginx

service nginx restart

Sada možete vidjeti upravljačku konzolu https://example.comnakon osnovne provjere autentičnosti.

Port Forwarding

Spremnici su sada dostupni putem HTTP zahtjeva i SSH-a. Sada možemo konfigurirati prosljeđivanje portova s ​​vanjskog poslužitelja na spremnike. Na primjer, za mapiranje example.com:8080za 10.100.0.200:3000unos sljedećeg.

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

Možete vidjeti trenutna pravila.

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

Također možete izbrisati pravilo po broju sa sljedećim.

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

Odvojeni kontejneri

Sada možemo pristupiti jednom spremniku iz drugog.

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

Ako želite ograničiti pristup s spremnika 250 na 200, morate svaki spremnik povezati s osobnim mostom i onemogućiti prosljeđivanje između mostova.

  1. Izbrišite postojeće spremnike.

    pct stop 200
    pct stop 250
    pct destroy 200
    pct destroy 250
    
  2. Promijenite sadržaj /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 sustav

  4. Omogući prosljeđivanje

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

    Kako biste ove promjene učinili trajnim, možete urediti /etc/sysctl.confdatoteku i pronaći sljedeći tekst.

    #net.ipv4.ip_forward=1
    

    Odkomentiraj.

    net.ipv4.ip_forward=1
    

    Također možete pokrenuti sysctl -pkako bi promjene odmah stupile na snagu.

  5. Napravite kontejnere.

    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. Započnite spremnike sa pct start 200i pct start 250.

  7. Ispraznite iptablespravila.

    iptables -F
    
  8. Omogućite NAT.

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

    vmbr0 je most koji uključuje vanjsko sučelje.

  9. Dopusti prosljeđivanje s vanjskog sučelja.

    iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
    
  10. Dopustite prosljeđivanje iz kontejnera 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. Odbacite drugo prosljeđivanje.

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

Sada provjerite da 10.100.1.200može pingati, 8.8.8.8ali ne može pingati 10.100.2.250i da 10.100.2.250može pingati, 8.8.8.8ali ne može ping 10.100.1.200.

Redoslijed naredbi povezanih s iptables je važan. Najbolji način upravljanja svojim pravilima je korištenje iptables-persistent. Ovaj paket vam pomaže da spremite iptables pravila u datoteke /etc/iptables/rules.v4i /etc/iptables/rules.v6može ih automatski učitati nakon ponovnog pokretanja sustava. Samo ga instalirajte sa sljedećim.

apt-get install iptables-persistent

Odaberite YESkada se to od vas zatraži.


Instalirajte Rancher OS putem iPXE

Instalirajte Rancher OS putem iPXE

Rancher OS je vrlo lagana distribucija Linuxa izgrađena oko Dockera. Sam OS teži oko 20MB. Ovaj vodič će vas pokrenuti i pokrenuti

Instalacija docker-compose na CoreOS

Instalacija docker-compose na CoreOS

Ovaj članak objašnjava kako instalirati docker-compose na CoreOS. U CoreOS-u, /usr/ mapa je nepromjenjiva pa je standardna /usr/local/bin putanja nedostupna za

Instalirajte Docker CE na Ubuntu 18.04

Instalirajte Docker CE na Ubuntu 18.04

Uvod Docker je aplikacija koja nam omogućuje implementaciju programa koji se pokreću kao spremnici. Napisana je u popularnom programskom jeziku Go

Stvorite Docker Swarm na Alpine Linuxu 3.9.0

Stvorite Docker Swarm na Alpine Linuxu 3.9.0

Uvod Ovaj vodič će vam pokazati kako stvoriti i konfigurirati Docker roj koristeći više Alpine Linux 3.9.0 poslužitelja i Portainera. Imajte na umu da

Postavite PHP aplikaciju pomoću Docker-compose

Postavite PHP aplikaciju pomoću Docker-compose

PHP aplikacije obično se sastoje od web poslužitelja, sustava relacijske baze podataka i samog tumača jezika. U ovom tutorialu bit ćemo poluga

Balans opterećenja s Dockerom

Balans opterećenja s Dockerom

Kada izvodite web-aplikaciju, obično želite maksimalno iskoristiti svoje resurse bez potrebe da konvertirate svoj softver za korištenje višenitnog rada o

Postavite Node.js aplikaciju pomoću Dockera

Postavite Node.js aplikaciju pomoću Dockera

Ovaj članak će vam pokazati kako implementirati svoju Node aplikaciju unutar Docker spremnika. Napomena: Ovaj vodič pretpostavlja da imate instaliran i pročitan Docker

Instaliranje Dockera na CentOS 7

Instaliranje Dockera na CentOS 7

Korištenje drugog sustava? Docker je aplikacija koja omogućuje implementaciju softvera unutar virtualnih spremnika. Napisano je u Go programu

Instalacija Docker CE na Debian 9

Instalacija Docker CE na Debian 9

Korištenje drugog sustava? Uvod Docker je aplikacija koja omogućuje implementaciju softvera unutar virtualnih spremnika. Napisano je u G

Započnite sa SQL Serverom 2017 (MS-SQL) na CentOS 7 uz Docker

Započnite sa SQL Serverom 2017 (MS-SQL) na CentOS 7 uz Docker

Preduvjeti Docker engine 1.8+. Najmanje 4 GB prostora na disku. Minimalno 4 GB RAM-a. Korak 1. Instalirajte Docker Da biste instalirali SQL-Server, potrebno je Docker

Sticky Session with Docker Swarm (CE) na Debianu 9

Sticky Session with Docker Swarm (CE) na Debianu 9

Korištenje drugog sustava? Uvod Docker Swarm pretvara vaše pojedinačne poslužitelje u klaster računala; olakšavanje skaliranja, visoka dostupnost an

Dva Docker grafička alata za upravljanje: DockerUI i Shipyard

Dva Docker grafička alata za upravljanje: DockerUI i Shipyard

Uz pomoć aplikacije Vultr Docker, možete jednostavno postaviti Docker na svoju instancu poslužitelja Vultr. U međuvremenu, možete olakšati zadatak upravljanja Dockerom

Instalirajte Rancher Server na RancherOS

Instalirajte Rancher Server na RancherOS

Pregled RancherOS je nevjerojatno lagan operativni sustav (samo oko 60 MB) koji pokreće sistemski Docker demon kao PID 0 za pokretanje sistemskih usluga

Instalirajte Rancher na Ubuntu 16.04

Instalirajte Rancher na Ubuntu 16.04

Korištenje drugog sustava? Uvod Rancher je platforma otvorenog koda za pokretanje kontejnera i izgradnju privatnog kontejnerskog servisa. Rančer je baza

Postavite Sentry putem Dockera na Ubuntu 16.04

Postavite Sentry putem Dockera na Ubuntu 16.04

Korištenje drugog sustava? Uvod Sentry je rješenje otvorenog koda za praćenje pogrešaka. Sentry prati iznimke i druge korisne poruke

Instaliranje Dockera na Ubuntu 14.04

Instaliranje Dockera na Ubuntu 14.04

Korištenje drugog sustava? Docker je aplikacija koja omogućuje implementaciju programa koji se pokreću kao kontejneri. Napisano je u popularnom Go programu

Sigurno implementirajte i upravljajte LXC spremnicima na Ubuntu 14.04

Sigurno implementirajte i upravljajte LXC spremnicima na Ubuntu 14.04

LXC spremnici (Linux spremnici) su značajka operacijskog sustava u Linuxu koja se može koristiti za pokretanje više izoliranih Linux sustava na jednom hostu. Thes

Uspon strojeva: primjene AI u stvarnom svijetu

Uspon strojeva: primjene AI u stvarnom svijetu

Umjetna inteligencija nije u budućnosti, ovdje je upravo u sadašnjosti. U ovom blogu Pročitajte kako su aplikacije umjetne inteligencije utjecale na različite sektore.

DDOS napadi: kratak pregled

DDOS napadi: kratak pregled

Jeste li i vi žrtva DDOS napada i zbunjeni ste metodama prevencije? Pročitajte ovaj članak kako biste riješili svoje upite.

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Možda ste čuli da hakeri zarađuju mnogo novca, ali jeste li se ikada zapitali kako zarađuju toliki novac? raspravimo.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Želite li vidjeti revolucionarne izume Googlea i kako su ti izumi promijenili život svakog čovjeka danas? Zatim čitajte na blogu kako biste vidjeli Googleove izume.

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Koncept samovozećih automobila koji će krenuti na ceste uz pomoć umjetne inteligencije san je koji već neko vrijeme imamo. No, unatoč nekoliko obećanja, nigdje ih nema. Pročitajte ovaj blog kako biste saznali više…

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Kako se znanost razvija velikom brzinom, preuzimajući mnoge naše napore, raste i rizik da se podvrgnemo neobjašnjivoj Singularnosti. Pročitajte što bi za nas mogla značiti singularnost.

Evolucija pohrane podataka – Infografika

Evolucija pohrane podataka – Infografika

Metode pohrane podataka su se razvijale možda od rođenja podataka. Ovaj blog pokriva evoluciju pohrane podataka na temelju infografike.

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Pročitajte blog kako biste na najjednostavniji način upoznali različite slojeve u arhitekturi velikih podataka i njihove funkcionalnosti.

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

U ovom digitalnom svijetu, pametni kućni uređaji postali su ključni dio života. Evo nekoliko nevjerojatnih prednosti pametnih kućnih uređaja o tome kako naš život čine vrijednim življenja i jednostavnijim.

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Nedavno je Apple izdao macOS Catalina 10.15.4 dodatak ažuriranju kako bi riješio probleme, ali čini se da ažuriranje uzrokuje više problema koji dovode do zalijevanja mac strojeva. Pročitajte ovaj članak da biste saznali više