Udrul og administrer LXC-containere sikkert på Ubuntu 14.04

LXC-containere (Linux-containere) er en operativsystemfunktion i Linux, der kan bruges til at køre flere isolerede Linux-systemer på en enkelt vært.

Disse instruktioner vil lede dig gennem de grundlæggende trin i serverkonfigurationen for hosting af isolerede Linux-containere. Vi konfigurerer følgende funktioner:

  • LXC containere med Ubuntu 14.
  • Linux netværksindstillinger og portvideresendelse til containere.
  • SSH videresendelse til containeradministration så simpelt som ssh [email protected]ogssh [email protected]
  • Nginx proxy-konfiguration til at få adgang til websteder inde i containere (efter værtsnavn).
  • Yderligere sikkerhedsforbedringer for korrekt serverstyring.

Denne vejledning antager, at:

  • Du har en konto hos Vultr.com .
  • Du ved, hvordan du konfigurerer en virtuel maskine med en brugerdefineret ISO.
  • Du ved, hvordan du bruger SSH-nøgler, og du har allerede genereret offentlige og private nøgler.

I slutningen af ​​selvstudiet får vi to virtuelle containere, der vil have adgang til internettet, men som ikke kan pinge hinanden. Vi vil også konfigurere port forwarding fra example.comtil containere. Vi vil implementere et sikkert konfigurations- og administrationspanel ved hjælp af værktøjer fra Proxmox-pakken.

Forberedelser

Vi vil kun bruge Proxmox til håndtering af LXC-containere. Generelt understøtter den også KVM, men indlejret virtualisering er forbudt på Vultr. Før start skal en Proxmox ISO downloades fra den officielle hjemmeside. Vi vil bruge Proxmox VE 5.0 ISO Installer. Installer OS fra billedet med standardindstillinger og genstart den virtuelle maskine. Du kan også manuelt installere proxmox fra kilder, men det er ikke nødvendigt i de fleste tilfælde (følg instruktionerne her ).

OS opsætning

Opret forbindelse til din vært via SSH, opdater listen over proxmox-skabeloner og download en passende skabelon til containere.

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

Nu skal vi oprette en linux-beholder med netværksgrænseflade forbundet til en linux-bro. Åbn /etc/network/interfacesog tilføj 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

Efter systemgenstart kan du oprette en ny container fra Ubuntu 14.04skabelonen.

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 verificere din container ved at bruge pct list, start container #200 med pct start 200og indtast dens shell med pct enter 200. Du kan også bekræfte netværksindstillinger og adresser med ip addr.

Netværk

For at give internetforbindelse inde i din container skal vi aktivere NAT. Følgende vil tillade, at trafik videresendes fra containeren til internettet ved hjælp af NAT-teknologi. Den vmbr0bro er forbundet til den eksterne grænseflade og vmbr1broen er forbundet til 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å ind i containeren med pct enter 200og konfigurer webserveren inde.

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

Nu skal vi konfigurere Nginx på din server til at proxy-websteder til containere.

apt-get update
apt-get install nginx

Opret en ny konfigurationsfil /etc/nginx/sites-available/box200med følgende indhold:

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 nu proxy for hver HTTP-anmodning server200.example.comfra din server til containeren med IP 10.100.0.200. Aktiver denne konfiguration.

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

SSH adgang

Hvis du vil give nem adgang til sandkasser, skal du videresende SSH-sessioner til containerne. For at gøre det skal du oprette en ny bruger på din rodserver. Glem ikke at indtaste en adgangskode, andre parametre er ikke nødvendige.

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

Kopiér denne SSH-nøgle og indtast beholderen for at tilføje nøglen.

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

På din server skal du tilføje følgende linje til .ssh/authorized_keysfilen.

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

Glem ikke at skifte <YOUR SSH KEY>til din offentlige hjemmenøgle. Alternativt kan du kø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

Derefter kan du oprette forbindelse til din sandbox med ssh.

`ssh box200@<your_server_IP>`

Yderligere indstillinger

Det er på tide at implementere adskillige sikkerhedsforbedringer. Først vil vi ændre standard SSH-porten. Så vil vi beskytte vores Proxmox-administrationsside med grundlæggende HTTP-godkendelse.

nano /etc/ssh/sshd_config

Fjern kommentarer og skift linje

#Port 22 

til

Port 24000 

Genstart ssh.

service ssh restart

Genopret forbindelse til ssh med den nye port.

ssh root@<your_IP> -p 24000

Indstil en Proxmox-adgangskode.

Opret fil /etc/default/pveproxy.

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

Genstart pveproxyfor at ændringerne træder i kraft.

/etc/init.d/pveproxy restart

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

apt-get install nginx
service nginx restart

Opret en standardkonfiguration 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; }
}

Få et gyldigt SSL-certifikat og opdater din nginx-konfiguration. Det kan for eksempel gøres ved hjælp af certbox og letsencrypt. For mere information, klik her .

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

Nu skulle din nginx-konfiguration se sådan ud (eller du kan ændre den manuelt efter). Glem ikke at fjerne kommentarer til ssl-, auth- og lokationslinjer.

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
}

Opret en /etc/htpasswdfil ved hjælp af Htpasswd-generatoren .

nano /etc/nginx/htpasswd

Genstart Nginx

service nginx restart

Du kan nu se administrationskonsollen på https://example.comefter grundlæggende godkendelse.

Portvideresendelse

Containerne er nu tilgængelige via HTTP-anmodninger og SSH. Nu kan vi konfigurere portvideresendelse fra den eksterne server til containerne. For eksempel til kortlægning for example.com:8080at 10.100.0.200:3000indtaste følgende.

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

Du kan se de aktuelle regler.

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

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

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

Separerede beholdere

Vi kan nu få adgang til en container fra en anden.

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 begrænse adgangen fra container 250 til 200, skal du forbinde hver container til en personlig bro og deaktivere videresendelse mellem broer.

  1. Slet eksisterende containere.

    pct stop 200
    pct stop 250
    pct destroy 200
    pct destroy 250
    
  2. Skift indholdet af /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 videresendelse

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

    For at gøre disse ændringer permanente, kan du redigere /etc/sysctl.conffilen og finde følgende tekst.

    #net.ipv4.ip_forward=1
    

    Fjern kommentarer.

    net.ipv4.ip_forward=1
    

    Du kan også løbe for sysctl -pat få ændringerne til at træde i kraft med det samme.

  5. Opret 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. Skyl iptablesreglerne.

    iptables -F
    
  8. Aktiver NAT.

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

    vmbr0 er broen, som inkluderer ekstern grænseflade.

  9. Tillad videresendelse fra den eksterne grænseflade.

    iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
    
  10. Tillad videresendelse fra containerne til internettet.

    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. Drop den anden viderestilling.

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

Tjek nu, at 10.100.1.200kan ping 8.8.8.8men ikke ping, 10.100.2.250og at 10.100.2.250kan ping 8.8.8.8men ikke ping 10.100.1.200.

Rækkefølgen af ​​kommandoer relateret til iptables er vigtig. Den bedste måde at betjene dine regler på er at bruge iptables-persistent. Denne pakke hjælper dig med at spare iptables regler til filerne /etc/iptables/rules.v4og /etc/iptables/rules.v6og det kan automatisk indlæse dem efter genstart af systemet. Bare installer det med følgende.

apt-get install iptables-persistent

Vælg, YESnår du bliver bedt om det.


Sådan tjekker du Hyper-V-containere på Windows 10 Insider

Sådan tjekker du Hyper-V-containere på Windows 10 Insider

Microsoft har i et nyt blogindlæg forklaret, hvordan Windows Insiders kan teste Hyper-V-containere på Windows 10, en ny virtualiseringsløsning, der giver applikationer mulighed for at køre uden at påvirke resten af ​​dit operativsystem.

Sådan installeres Harbor på CentOS 7

Sådan installeres Harbor på CentOS 7

Harbor er en open source-registreringsserver i virksomhedsklassen, der gemmer og distribuerer Docker-billeder. Harbor udvider open source Docker Distribution b

Installer Rancher OS via iPXE

Installer Rancher OS via iPXE

Rancher OS er en meget let Linux-distribution bygget op omkring Docker. Selve operativsystemet vejer omkring 20 MB. Denne tutorial får dig op at køre med

På CoreOS skal du konfigurere dit eget Docker-register

På CoreOS skal du konfigurere dit eget Docker-register

Vi kender og elsker alle Docker, en platform til at skabe, administrere og distribuere applikationscontainere på tværs af flere maskiner. Docker Inc. leverer en service t

Installation af docker-compose på CoreOS

Installation af docker-compose på CoreOS

Denne artikel forklarer, hvordan du installerer docker-compose på CoreOS. I CoreOS er mappen /usr/ uforanderlig, så standardstien /usr/local/bin er ikke tilgængelig for

Installer Rancher på CentOS 7

Installer Rancher på CentOS 7

Bruger du et andet system? Introduktion Rancher er en open source-platform til at køre containere og bygge en privat containerservice. Rancher er base

Installer Docker CE på Ubuntu 18.04

Installer Docker CE på Ubuntu 18.04

Introduktion Docker er et program, der giver os mulighed for at implementere programmer, der køres som containere. Det er skrevet i det populære Go-programmeringssprog

Opret en Docker Swarm på Alpine Linux 3.9.0

Opret en Docker Swarm på Alpine Linux 3.9.0

Introduktion Denne guide viser dig, hvordan du opretter og konfigurerer en Docker-sværm ved hjælp af flere Alpine Linux 3.9.0-servere og Portainer. Vær venligst opmærksom på det

Implementer en PHP-applikation ved hjælp af Docker-compose

Implementer en PHP-applikation ved hjælp af Docker-compose

PHP-applikationer er normalt sammensat af en webserver, et relationsdatabasesystem og selve sprogfortolkeren. I denne tutorial vil vi være gearing

Load Balance med Docker

Load Balance med Docker

Når du kører en webapplikation, vil du normalt få mest muligt ud af dine ressourcer uden at skulle konvertere din software til at bruge multithreading o

Implementer en Node.js-applikation ved hjælp af Docker

Implementer en Node.js-applikation ved hjælp af Docker

Denne artikel viser dig, hvordan du implementerer din Node-applikation i en Docker-container. Bemærk: Denne vejledning forudsætter, at du har Docker installeret og læst

Installation af Docker CE på CentOS 7

Installation af Docker CE på CentOS 7

Docker container teknologi giver dig mulighed for at køre applikationer i et specifikt og isoleret miljø. Docker Community Edition (CE) er det nye navn for fre

Implementer Kubernetes med Kubeadm på CentOS 7

Implementer Kubernetes med Kubeadm på CentOS 7

Oversigt Denne artikel er beregnet til at hjælpe dig med at få en Kubernetes-klynge op at køre med kubeadm på ingen tid. Denne vejledning vil implementere to servere på

Installation af Docker på CentOS 7

Installation af Docker på CentOS 7

Bruger du et andet system? Docker er et program, der giver mulighed for implementering af software i virtuelle containere. Det blev skrevet i Go-programmet

Installation af Docker CE på Debian 9

Installation af Docker CE på Debian 9

Bruger du et andet system? Introduktion Docker er et program, der giver mulighed for udrulning af software i virtuelle containere. Det blev skrevet i G

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

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

Forudsætninger Docker-motor 1.8+. Minimum 4 GB diskplads. Minimum 4 GB RAM. Trin 1. Installer Docker For at installere SQL-Server skal Docker mus

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

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

Bruger du et andet system? Introduktion Docker Swarm forvandler dine individuelle servere til en klynge af computere; letter skalering, høj tilgængelighed og

To Docker grafiske styringsværktøjer: DockerUI og Shipyard

To Docker grafiske styringsværktøjer: DockerUI og Shipyard

Ved hjælp af Vultr Docker-applikationen kan du nemt implementere Docker på din Vultr-serverinstans. I mellemtiden kan du lette Docker-administrationsopgaven

Installer Rancher Server på RancherOS

Installer Rancher Server på RancherOS

Oversigt RancherOS er et utroligt let operativsystem (kun omkring 60 MB), der kører en system Docker-dæmon som PID 0 til at køre systemtjenester

Kom godt i gang med Kubernetes på CentOS 7

Kom godt i gang med Kubernetes på CentOS 7

Kubernetes er en open source-platform udviklet af Google til styring af containeriserede applikationer på tværs af en klynge af servere. Det bygger på et årti og

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 lige i nuet I denne blog Læs, hvordan kunstig intelligens-applikationer har påvirket forskellige sektorer.

DDOS-angreb: et kort overblik

DDOS-angreb: et kort overblik

Er du også et offer for DDOS-angreb og forvirret over forebyggelsesmetoderne? Læs denne artikel for at løse dine spørgsmål.

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Du har måske hørt, at hackere tjener mange penge, men har du nogensinde spekuleret på, hvordan tjener de den slags penge? lad os diskutere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Vil du se revolutionerende opfindelser fra Google, og hvordan disse opfindelser ændrede livet for ethvert menneske i dag? Læs derefter til bloggen for at se opfindelser fra Google.

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Konceptet med selvkørende biler til at køre på vejene ved hjælp af kunstig intelligens er en drøm, vi har haft i et stykke tid nu. Men på trods af flere løfter er de ingen steder at se. Læs denne blog for at lære mere...

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Efterhånden som videnskaben udvikler sig i et hurtigt tempo og overtager en stor del af vores indsats, stiger risikoen for at udsætte os selv for en uforklarlig Singularitet. Læs, hvad singularitet kunne betyde for os.

Udvikling af datalagring – Infografik

Udvikling af datalagring – Infografik

Opbevaringsmetoderne for dataene har været under udvikling, kan være siden fødslen af ​​dataene. Denne blog dækker udviklingen af ​​datalagring på basis af en infografik.

Funktioner af Big Data Reference Architecture Layers

Funktioner af Big Data Reference Architecture Layers

Læs bloggen for at kende forskellige lag i Big Data-arkitekturen og deres funktionaliteter på den enkleste måde.

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

I denne digitalt drevne verden er smarte hjemmeenheder blevet en afgørende del af livet. Her er et par fantastiske fordele ved smarte hjemmeenheder om, hvordan de gør vores liv værd at leve og enklere.

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

For nylig udgav Apple macOS Catalina 10.15.4 en supplerende opdatering for at løse problemer, men det ser ud til, at opdateringen forårsager flere problemer, hvilket fører til mursten af ​​mac-maskiner. Læs denne artikel for at lære mere