Sikker distribusjon og administrering av LXC-beholdere på Ubuntu 14.04

LXC-beholdere (Linux-beholdere) er en operativsystemfunksjon i Linux som kan brukes til å kjøre flere isolerte Linux-systemer på en enkelt vert.

Disse instruksjonene vil lede deg gjennom grunnleggende trinn for serverkonfigurasjon for isolerte Linux-beholdere. Vi vil konfigurere følgende funksjoner:

  • LXC-beholdere med Ubuntu 14.
  • Linux-nettverksinnstillinger og portvideresending for containere.
  • SSH videresending for containeradministrasjon så enkelt som ssh [email protected]ogssh [email protected]
  • Nginx proxy-konfigurasjon for tilgang til nettsteder inne i containere (etter vertsnavn).
  • Ytterligere sikkerhetsforbedringer for riktig serveradministrasjon.

Denne veiledningen forutsetter at:

  • Du har en konto på Vultr.com .
  • Du vet hvordan du konfigurerer en virtuell maskin med en tilpasset ISO.
  • Du vet hvordan du bruker SSH-nøkler, og du har allerede generert offentlige og private nøkler.

På slutten av opplæringen får vi to virtuelle beholdere som vil ha tilgang til internett, men som ikke kan pinge hverandre. Vi vil også konfigurere portvideresending fra example.comtil containere. Vi vil distribuere et sikkert konfigurasjons- og administrasjonspanel ved hjelp av verktøy fra Proxmox-pakken.

Forberedelser

Vi vil kun bruke Proxmox for administrasjon av LXC-beholdere. Generelt støtter den også KVM, men nestet virtualisering er forbudt på Vultr. Før start bør en Proxmox ISO lastes ned fra den offisielle nettsiden. Vi vil bruke Proxmox VE 5.0 ISO Installer. Installer OS fra bildet med standardinnstillinger og start den virtuelle maskinen på nytt. Du kan også manuelt installere proxmox fra kilder, men det er ikke nødvendig i de fleste tilfeller (følg instruksjonene her ).

OS-oppsett

Koble til verten din med SSH, oppdater listen over proxmox-maler og last ned en passende mal for containere.

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

Nå må vi lage en linux-beholder med nettverksgrensesnitt koblet til en linux-bro. Åpne /etc/network/interfacesog legg til følgende linjer:

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

Etter omstart av systemet kan du opprette en ny beholder fra Ubuntu 14.04malen.

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

Du kan bekrefte beholderen din ved å bruke pct list, starte beholder #200 med pct start 200og angi skallet med pct enter 200. Du kan også bekrefte nettverksinnstillinger og adresser med ip addr.

Nettverk

For å tilby Internett-tilkobling inne i beholderen din, må vi aktivere NAT. Følgende vil tillate at trafikk videresendes fra containeren til internett ved hjelp av NAT-teknologi. Den vmbr0bro er koblet til det eksterne grensesnittet og vmbr1broen er forbundet med beholderne.

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

Gå inn i beholderen med pct enter 200og konfigurer webserveren inne.

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

Nå må vi konfigurere Nginx på serveren din til å proxy-servere nettsteder til containere.

apt-get update
apt-get install nginx

Opprett en ny konfigurasjonsfil /etc/nginx/sites-available/box200med følgende innhold:

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 vil nå proxy for hver HTTP-forespørsel server200.example.comfra serveren din til beholderen med IP 10.100.0.200. Aktiver denne konfigurasjonen.

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

SSH-tilgang

Hvis du vil gi enkel tilgang til sandkasser, må du videresende SSH-økter til containerne. For å gjøre det, opprett en ny bruker på rotserveren din. Ikke glem å legge inn et passord, andre parametere er ikke nødvendige.

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

Kopier denne SSH-nøkkelen og skriv inn beholderen for å legge til nøkkelen.

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

På serveren din legger du til følgende linje i .ssh/authorized_keysfilen.

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

Ikke glem å bytte <YOUR SSH KEY>til din offentlige hjemmenøkkel. Alternativt kan du kjøre følgende fra kommandolinjen.

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

Deretter kan du koble til sandkassen din med ssh.

`ssh box200@<your_server_IP>`

Tilleggsinnstillinger

Det er på tide å implementere flere sikkerhetsforbedringer. Først vil vi endre standard SSH-port. Da ønsker vi å beskytte vår Proxmox-administrasjonsside med grunnleggende HTTP-autentisering.

nano /etc/ssh/sshd_config

Avkommenter og endre linjen

#Port 22 

til

Port 24000 

Start ssh på nytt.

service ssh restart

Koble til ssh på nytt med den nye porten.

ssh root@<your_IP> -p 24000

Angi et Proxmox-passord.

Opprett fil /etc/default/pveproxy.

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

Start pveproxypå nytt for at endringene skal tre i kraft.

/etc/init.d/pveproxy restart

Konfigurer nginx (hvis du ikke har gjort det før).

apt-get install nginx
service nginx restart

Opprett en standardkonfigurasjon i /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; }
}

Skaff deg et gyldig SSL-sertifikat og oppdater nginx-konfigurasjonen. For eksempel kan det gjøres ved hjelp av certbox og letsencrypt. For mer informasjon, klikk her .

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

Nå skal nginx-konfigurasjonen din se slik ut (eller du kan endre den manuelt etterpå). Ikke glem å avkommentere ssl-, auth- og plasseringslinjer.

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
}

Lag en /etc/htpasswdfil ved hjelp av Htpasswd-generatoren .

nano /etc/nginx/htpasswd

Start Nginx på nytt

service nginx restart

Du kan nå se administrasjonskonsollen på https://example.cometter grunnleggende autentisering.

Port Forwarding

Beholderne er nå tilgjengelige med HTTP-forespørsler og SSH. Nå kan vi konfigurere portvideresending fra den eksterne serveren til containerne. For eksempel for tilordning for example.com:8080å 10.100.0.200:3000legge inn følgende.

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

Du kan se gjeldende regler.

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

Du kan også slette en regel etter nummer med følgende.

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

Separerte beholdere

Vi kan nå få tilgang til en container fra en annen.

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

Hvis du vil begrense tilgangen fra container 250 til 200, må du koble hver container til en personlig bro og deaktivere videresending mellom broer.

  1. Slett eksisterende beholdere.

    pct stop 200
    pct stop 250
    pct destroy 200
    pct destroy 250
    
  2. Endre innholdet i /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 systemet

  4. Aktiver videresending

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

    For å gjøre disse endringene permanente, kan du redigere /etc/sysctl.conffilen og finne følgende tekst.

    #net.ipv4.ip_forward=1
    

    Fjern kommentaren.

    net.ipv4.ip_forward=1
    

    Du kan også løpe for sysctl -på få endringene til å tre i kraft umiddelbart.

  5. Lag containere.

    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. Start beholderne med pct start 200og pct start 250.

  7. Skyll iptablesreglene.

    iptables -F
    
  8. Aktiver NAT.

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

    vmbr0 er broen som inkluderer eksternt grensesnitt.

  9. Tillat videresending fra det eksterne grensesnittet.

    iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
    
  10. Tillat videresending fra containerne til internett.

    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. Slipp den andre videresendingen.

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

Nå, sjekk at 10.100.1.200kan ping 8.8.8.8men kan ikke ping 10.100.2.250og som 10.100.2.250kan ping 8.8.8.8men kan ikke ping 10.100.1.200.

Rekkefølgen på kommandoer relatert til iptables er viktig. Den beste måten å bruke reglene på er å bruke iptables-persistent. Denne pakken hjelper deg med å lagre iptables-regler til filene /etc/iptables/rules.v4, /etc/iptables/rules.v6og den kan laste dem automatisk etter omstart av systemet. Bare installer den med følgende.

apt-get install iptables-persistent

Velg YESnår du blir bedt om det.


Slik sjekker du Hyper-V-beholdere på Windows 10 Insider

Slik sjekker du Hyper-V-beholdere på Windows 10 Insider

Microsoft har forklart i et nytt blogginnlegg hvordan Windows Insiders kan teste Hyper-V-beholdere på Windows 10, en ny virtualiseringsløsning som lar applikasjoner kjøre uten å påvirke resten av operativsystemet ditt.

Installer Rancher OS via iPXE

Installer Rancher OS via iPXE

Rancher OS er en veldig lett Linux-distribusjon bygget rundt Docker. Selve operativsystemet veier rundt 20 MB. Denne opplæringen vil få deg i gang med

På CoreOS, konfigurer ditt eget Docker-register

På CoreOS, konfigurer ditt eget Docker-register

Vi kjenner og elsker alle Docker, en plattform for å lage, administrere og distribuere applikasjonsbeholdere på tvers av flere maskiner. Docker Inc. tilbyr en tjeneste t

Installerer docker-compose på CoreOS

Installerer docker-compose på CoreOS

Denne artikkelen forklarer hvordan du installerer docker-compose på CoreOS. I CoreOS er /usr/-mappen uforanderlig, så standard /usr/local/bin-banen er utilgjengelig for

Installer Docker CE på Ubuntu 18.04

Installer Docker CE på Ubuntu 18.04

Innledning Docker er en applikasjon som lar oss distribuere programmer som kjøres som containere. Den ble skrevet på det populære programmeringsspråket Go

Lag en Docker Swarm på Alpine Linux 3.9.0

Lag en Docker Swarm på Alpine Linux 3.9.0

Introduksjon Denne guiden viser deg hvordan du oppretter og konfigurerer en Docker-sverm ved å bruke flere Alpine Linux 3.9.0-servere og Portainer. Vær oppmerksom på det

Distribuer en PHP-applikasjon ved å bruke Docker-compose

Distribuer en PHP-applikasjon ved å bruke Docker-compose

PHP-applikasjoner er vanligvis sammensatt av en webserver, et relasjonsdatabasesystem og selve språktolken. I denne opplæringen vil vi være leveragin

Lastbalanse med Docker

Lastbalanse med Docker

Når du kjører en nettapplikasjon, vil du vanligvis få mest mulig ut av ressursene dine uten å måtte konvertere programvaren til å bruke multithreading o

Distribuer en Node.js-applikasjon ved hjelp av Docker

Distribuer en Node.js-applikasjon ved hjelp av Docker

Denne artikkelen vil vise deg hvordan du distribuerer Node-applikasjonen din i en Docker-beholder. Merk: Denne opplæringen forutsetter at du har Docker installert og lest

Distribuer Kubernetes med Kubeadm på CentOS 7

Distribuer Kubernetes med Kubeadm på CentOS 7

Oversikt Denne artikkelen er ment å hjelpe deg med å få en Kubernetes-klynge i gang med kubeadm på kort tid. Denne veiledningen vil distribuere to servere på

Installere Docker CE på Debian 9

Installere Docker CE på Debian 9

Bruker du et annet system? Introduksjon Docker er en applikasjon som tillater distribusjon av programvare i virtuelle containere. Det ble skrevet i G

Kom i gang med SQL Server 2017 (MS-SQL) på CentOS 7 med Docker

Kom i gang med SQL Server 2017 (MS-SQL) på CentOS 7 med Docker

Forutsetninger Docker-motor 1.8+. Minimum 4 GB diskplass. Minimum 4 GB RAM. Trinn 1. Installer Docker For å installere SQL-Server må Docker mus

Sticky Session With Docker Swarm (CE) på Debian 9

Sticky Session With Docker Swarm (CE) på Debian 9

Bruker du et annet system? Innledning Docker Swarm gjør dine individuelle servere til en klynge av datamaskiner; lette skalering, høy tilgjengelighet og

Installer Rancher Server på RancherOS

Installer Rancher Server på RancherOS

Oversikt RancherOS er et utrolig lett operativsystem (bare ca. 60 MB) som kjører en system Docker-demon som PID 0 for å kjøre systemtjenester

Installer Rancher på Ubuntu 16.04

Installer Rancher på Ubuntu 16.04

Bruker du et annet system? Introduksjon Rancher er en åpen kildekode-plattform for å kjøre containere og bygge en privat containertjeneste. Rancher er base

Sett opp Sentry via Docker på Ubuntu 16.04

Sett opp Sentry via Docker på Ubuntu 16.04

Bruker du et annet system? Innledning Sentry er en åpen kildekode-løsning for feilsporing. Sentry sporer unntak og andre nyttige meldinger

Slik bruker du Docker: Opprett din første Docker-beholder

Slik bruker du Docker: Opprett din første Docker-beholder

Denne opplæringen forklarer det grunnleggende for å komme i gang med Docker. Jeg antar at du allerede har Docker installert. Trinnene i denne opplæringen vil fungere på en

Installere Docker på Ubuntu 14.04

Installere Docker på Ubuntu 14.04

Bruker du et annet system? Docker er en applikasjon som gjør det mulig å distribuere programmer som kjøres som containere. Det ble skrevet i det populære Go-programmet

Sikker distribusjon og administrering av LXC-beholdere på Ubuntu 14.04

Sikker distribusjon og administrering av LXC-beholdere på Ubuntu 14.04

LXC-beholdere (Linux-beholdere) er en operativsystemfunksjon i Linux som kan brukes til å kjøre flere isolerte Linux-systemer på en enkelt vert. Thes

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer