Desplegueu i gestioneu de manera segura els contenidors LXC a Ubuntu 14.04

Els contenidors LXC (contenidors Linux) són una característica del sistema operatiu a Linux que es pot utilitzar per executar diversos sistemes Linux aïllats en un sol host.

Aquestes instruccions us guiaran a través dels passos bàsics de la configuració del servidor per a l'allotjament de contenidors Linux aïllats. Configurarem les següents característiques:

  • Contenidors LXC amb Ubuntu 14.
  • Configuració de xarxa de Linux i reenviament de ports per a contenidors.
  • Reenviament SSH per a l'administració de contenidors tan senzill com ssh [email protected]issh [email protected]
  • Configuració del servidor intermediari Nginx per accedir a llocs web dins de contenidors (per nom d'amfitrió).
  • Millores addicionals de seguretat per a una correcta gestió del servidor.

Aquesta guia suposa que:

  • Tens un compte a Vultr.com .
  • Saps com configurar una màquina virtual amb una ISO personalitzada.
  • Saps utilitzar les claus SSH i ja has generat claus públiques i privades.

Al final del tutorial obtindrem dos contenidors virtuals que tindran accés a Internet, però que no poden fer ping entre ells. També configurarem el reenviament de ports des example.comdels contenidors. Desplegarem un panell de configuració i gestió segur amb l'ajuda d'eines del paquet Proxmox.

Preparatius

Utilitzarem Proxmox només per a la gestió de contenidors LXC. En general, també admet KVM, però la virtualització imbricada està prohibida a Vultr. Abans de començar, s'ha de descarregar una ISO de Proxmox des del lloc web oficial. Farem servir el Proxmox VE 5.0 ISO Installer. Instal·leu el sistema operatiu des de la imatge amb la configuració predeterminada i reinicieu la màquina virtual. A més, podeu instal·lar manualment proxmox des de fonts, però això no és necessari en la majoria dels casos (seguiu les instruccions aquí ).

Configuració del SO

Connecteu-vos al vostre amfitrió mitjançant SSH, actualitzeu la llista de plantilles de proxmox i descarregueu una plantilla adequada per als contenidors.

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

Ara, hem de crear un contenidor de Linux amb una interfície de xarxa connectada a un pont de Linux. Obriu /etc/network/interfacesi afegiu les línies següents:

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

Després de reiniciar el sistema, podeu crear un contenidor nou a partir de la Ubuntu 14.04plantilla.

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

Podeu verificar el vostre contenidor amb pct list, iniciar el contenidor #200 amb pct start 200i introduir el seu shell amb pct enter 200. També podeu verificar la configuració de la xarxa i les adreces amb ip addr.

Xarxa

Per proporcionar connexió a Internet dins del contenidor, hem d'habilitar NAT. El següent permetrà reenviar el trànsit des del contenidor a Internet amb l'ajuda de la tecnologia NAT. El vmbr0pont està connectat a la interfície externa i el vmbr1pont està connectat als contenidors.

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

Introduïu el contenidor amb pct enter 200i configureu el servidor web dins.

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

Ara, hem de configurar Nginx al vostre servidor per enviar llocs web a contenidors.

apt-get update
apt-get install nginx

Creeu un fitxer de configuració nou /etc/nginx/sites-available/box200amb el contingut següent:

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 enviarà ara cada sol·licitud HTTP server200.example.comdel vostre servidor al contenidor amb IP 10.100.0.200. Activa aquesta configuració.

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

Accés SSH

Si voleu proporcionar un accés fàcil als sandbox, heu de reenviar sessions SSH als contenidors. Per fer-ho, creeu un nou usuari al vostre servidor arrel. No oblideu introduir una contrasenya, no calen altres paràmetres.

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

Copieu aquesta clau SSH i introduïu el contenidor per afegir la clau.

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

Al vostre servidor, afegiu la línia següent al .ssh/authorized_keysfitxer.

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

No oblidis canviar <YOUR SSH KEY>a la clau pública de casa teva. Alternativament, podeu executar el següent des de la línia d'ordres.

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

A continuació, podeu connectar-vos al vostre sandbox amb ssh.

`ssh box200@<your_server_IP>`

Configuració addicional

És hora d'implementar diverses millores de seguretat. Primer, volem canviar el port SSH predeterminat. Aleshores volem protegir la nostra pàgina de gestió de Proxmox amb l'autenticació HTTP bàsica.

nano /etc/ssh/sshd_config

Descomenta i canvia la línia

#Port 22 

a

Port 24000 

Reinicieu ssh.

service ssh restart

Torneu a connectar a ssh amb el nou port.

ssh root@<your_IP> -p 24000

Establiu una contrasenya de Proxmox.

Crea un fitxer /etc/default/pveproxy.

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

Reinicieu pveproxyperquè els canvis tinguin efecte.

/etc/init.d/pveproxy restart

Configura nginx (si no ho has fet abans).

apt-get install nginx
service nginx restart

Creeu una configuració predeterminada a /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; }
}

Obteniu un certificat SSL vàlid i actualitzeu la configuració de nginx. Per exemple, es pot fer amb l'ajuda de certbox i letsencrypt. Per a més informació, feu clic aquí .

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

Ara, la vostra configuració de nginx hauria de tenir aquest aspecte (o podeu canviar-la manualment després). No oblideu deixar de comentar les línies ssl, auth i ubicació.

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
}

Creeu un /etc/htpasswdfitxer amb el generador Htpasswd .

nano /etc/nginx/htpasswd

Reinicieu Nginx

service nginx restart

Ara podeu veure la consola de gestió activada https://example.comdesprés de l'autenticació bàsica.

Reenviament de ports

Els contenidors ja estan disponibles per sol·licituds HTTP i SSH. Ara, podem configurar el reenviament de ports des del servidor extern als contenidors. Per exemple, per al mapatge example.com:8080de 10.100.0.200:3000entrada de la següent.

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

Podeu consultar les regles actuals.

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

També podeu suprimir una regla per número amb el següent.

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

Contenidors separats

Ara podem accedir a un contenidor des d'un altre.

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

Si voleu restringir l'accés del contenidor 250 al 200, heu de connectar cada contenidor a un pont personal i desactivar el reenviament entre ponts.

  1. Elimina els contenidors existents.

    pct stop 200
    pct stop 250
    pct destroy 200
    pct destroy 250
    
  2. Canvia el contingut de /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 el sistema

  4. Activa el reenviament

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

    Per fer que aquests canvis siguin permanents, podeu editar el /etc/sysctl.conffitxer i trobar el text següent.

    #net.ipv4.ip_forward=1
    

    Descomenta-ho.

    net.ipv4.ip_forward=1
    

    També podeu executar sysctl -pper fer que els canvis tinguin efecte immediatament.

  5. Crea contenidors.

    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. Comenceu els contenidors amb pct start 200i pct start 250.

  7. Esborreu les iptablesregles.

    iptables -F
    
  8. Habilita NAT.

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

    vmbr0 és el pont que inclou la interfície externa.

  9. Permet el reenviament des de la interfície externa.

    iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
    
  10. Permet el reenviament des dels contenidors a 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. Elimina l'altre reenviament.

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

Ara, comproveu que 10.100.1.200pot fer ping 8.8.8.8però no pot fer ping 10.100.2.250i que 10.100.2.250pot fer ping 8.8.8.8però no pot fer ping 10.100.1.200.

L'ordre de les ordres relacionades amb iptables és important. La millor manera d'utilitzar les teves regles és utilitzar iptables-persistent. Aquest paquet us ajuda a desar les regles d'iptables als fitxers /etc/iptables/rules.v4i les /etc/iptables/rules.v6pot carregar automàticament després de reiniciar el sistema. Només cal instal·lar-lo amb el següent.

apt-get install iptables-persistent

Seleccioneu YESquan se us demani.


A continuació, es mostra com comprovar els contenidors Hyper-V a Windows 10 Insider

A continuació, es mostra com comprovar els contenidors Hyper-V a Windows 10 Insider

Microsoft ha explicat en una nova publicació al bloc com els Windows Insiders poden provar contenidors Hyper-V a Windows 10, una nova solució de virtualització per permetre que les aplicacions s'executin sense afectar la resta del vostre sistema operatiu.

Com instal·lar Harbour a CentOS 7

Com instal·lar Harbour a CentOS 7

Harbour és un servidor de registre de codi obert de classe empresarial que emmagatzema i distribueix imatges de Docker. Harbour amplia la distribució Docker de codi obert b

Instal·leu Rancher OS mitjançant iPXE

Instal·leu Rancher OS mitjançant iPXE

Rancher OS és una distribució Linux molt lleugera construïda al voltant de Docker. El sistema operatiu en si pesa uns 20 MB. Aquest tutorial us posarà en funcionament

A CoreOS, configureu el vostre propi registre Docker

A CoreOS, configureu el vostre propi registre Docker

Tots coneixem i estimem Docker, una plataforma per crear, gestionar i distribuir contenidors d'aplicacions a diverses màquines. Docker Inc. ofereix un servei t

Instal·lació de docker-compose a CoreOS

Instal·lació de docker-compose a CoreOS

Aquest article explica com instal·lar docker-compose a CoreOS. A CoreOS, la carpeta /usr/ és immutable, de manera que la ruta estàndard /usr/local/bin no està disponible per

Instal·leu Rancher a CentOS 7

Instal·leu Rancher a CentOS 7

Utilitzeu un sistema diferent? Introducció Rancher és una plataforma de codi obert per executar contenidors i crear un servei privat de contenidors. El rancher és la base

Instal·leu Docker CE a Ubuntu 18.04

Instal·leu Docker CE a Ubuntu 18.04

Introducció Docker és una aplicació que ens permet desplegar programes que s'executen com a contenidors. Va ser escrit en el popular llenguatge de programació Go

Creeu un Docker Swarm a Alpine Linux 3.9.0

Creeu un Docker Swarm a Alpine Linux 3.9.0

Introducció Aquesta guia us mostrarà com crear i configurar un eixam Docker utilitzant diversos servidors Alpine Linux 3.9.0 i Portainer. Si us plau, tingueu en compte que

Desplegueu una aplicació PHP amb Docker-compose

Desplegueu una aplicació PHP amb Docker-compose

Les aplicacions PHP solen estar compostes per un servidor web, un sistema de bases de dades relacionals i el propi intèrpret de llenguatge. En aquest tutorial farem palanca

Balanç de càrrega amb Docker

Balanç de càrrega amb Docker

Quan executeu una aplicació web, normalment voleu treure el màxim profit dels vostres recursos sense haver de convertir el vostre programari per utilitzar multithreading o

Desplegueu una aplicació Node.js mitjançant Docker

Desplegueu una aplicació Node.js mitjançant Docker

Aquest article us mostrarà com implementar la vostra aplicació Node dins d'un contenidor Docker. Nota: aquest tutorial suposa que teniu Docker instal·lat i llegit

Instal·lació de Docker CE a CentOS 7

Instal·lació de Docker CE a CentOS 7

La tecnologia de contenidors Docker us permet executar aplicacions en un entorn específic i aïllat. Docker Community Edition (CE) és el nou nom del fre

Desplegueu Kubernetes amb Kubeadm a CentOS 7

Desplegueu Kubernetes amb Kubeadm a CentOS 7

Visió general Aquest article està pensat per ajudar-vos a posar en funcionament un clúster de Kubernetes amb kubeadm en molt poc temps. Aquesta guia desplegarà dos servidors activats

Instal·lació de Docker a CentOS 7

Instal·lació de Docker a CentOS 7

Utilitzeu un sistema diferent? Docker és una aplicació que permet el desplegament de programari dins de contenidors virtuals. Va ser escrit al programa Go

Instal·lació de Docker CE a Debian 9

Instal·lació de Docker CE a Debian 9

Utilitzeu un sistema diferent? Introducció Docker és una aplicació que permet el desplegament de programari dins de contenidors virtuals. Va ser escrit en G

Comenceu amb SQL Server 2017 (MS-SQL) a CentOS 7 amb Docker

Comenceu amb SQL Server 2017 (MS-SQL) a CentOS 7 amb Docker

Requisits previs del motor Docker 1.8+. Mínim de 4 GB d'espai en disc. Mínim de 4 GB de RAM. Pas 1. Instal·leu Docker Per instal·lar SQL-Server, Docker mus

Sessió enganxosa amb Docker Swarm (CE) a Debian 9

Sessió enganxosa amb Docker Swarm (CE) a Debian 9

Utilitzeu un sistema diferent? Introducció Docker Swarm converteix els vostres servidors individuals en un clúster d'ordinadors; facilitant l'escalat, alta disponibilitat an

Dues eines de gestió gràfica de Docker: DockerUI i Shipyard

Dues eines de gestió gràfica de Docker: DockerUI i Shipyard

Amb l'ajuda de l'aplicació Vultr Docker, podeu implementar fàcilment Docker a la vostra instància del servidor Vultr. Mentrestant, podeu facilitar la tasca de gestió de Docker

Instal·leu Rancher Server a RancherOS

Instal·leu Rancher Server a RancherOS

Visió general RancherOS és un sistema operatiu increïblement lleuger (només uns 60 MB) que executa un dimoni Docker del sistema com a PID 0 per executar serveis del sistema

Com començar amb Kubernetes a CentOS 7

Com començar amb Kubernetes a CentOS 7

Kubernetes és una plataforma de codi obert desenvolupada per Google per gestionar aplicacions en contenidors en un clúster de servidors. Es basa en una dècada i

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

La Intel·ligència Artificial no està en el futur, és aquí mateix en el present. En aquest bloc Llegiu com les aplicacions d'Intel·ligència Artificial han afectat diversos sectors.

Atacs DDOS: una breu visió general

Atacs DDOS: una breu visió general

També ets víctima d'atacs DDOS i estàs confós sobre els mètodes de prevenció? Llegiu aquest article per resoldre les vostres consultes.

Us heu preguntat mai com guanyen diners els pirates informàtics?

Us heu preguntat mai com guanyen diners els pirates informàtics?

Potser haureu sentit que els pirates informàtics guanyen molts diners, però us heu preguntat mai com guanyen aquest tipus de diners? anem a discutir.

Invents revolucionaris de Google que us facilitaran la vida.

Invents revolucionaris de Google que us facilitaran la vida.

Vols veure els invents revolucionaris de Google i com aquests invents van canviar la vida de tots els éssers humans actuals? A continuació, llegiu al bloc per veure els invents de Google.

Divendres essencial: què va passar amb els cotxes impulsats per IA?

Divendres essencial: què va passar amb els cotxes impulsats per IA?

El concepte de cotxes autònoms per sortir a les carreteres amb l'ajuda de la intel·ligència artificial és un somni que tenim des de fa temps. Però malgrat les diverses promeses, no es veuen enlloc. Llegeix aquest blog per saber-ne més...

Singularitat tecnològica: un futur llunyà de la civilització humana?

Singularitat tecnològica: un futur llunyà de la civilització humana?

A mesura que la ciència evoluciona a un ritme ràpid, fent-se càrrec de molts dels nostres esforços, també augmenten els riscos de sotmetre'ns a una singularitat inexplicable. Llegeix, què pot significar per a nosaltres la singularitat.

Evolució de lemmagatzematge de dades – Infografia

Evolució de lemmagatzematge de dades – Infografia

Els mètodes d'emmagatzematge de les dades que han anat evolucionant poden ser des del naixement de les dades. Aquest bloc tracta l'evolució de l'emmagatzematge de dades a partir d'una infografia.

Funcionalitats de les capes darquitectura de referència de Big Data

Funcionalitats de les capes darquitectura de referència de Big Data

Llegeix el blog per conèixer de la manera més senzilla les diferents capes de l'Arquitectura Big Data i les seves funcionalitats.

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

En aquest món digital, els dispositius domèstics intel·ligents s'han convertit en una part crucial de les vides. A continuació, es mostren alguns avantatges sorprenents dels dispositius domèstics intel·ligents sobre com fan que la nostra vida valgui la pena i sigui més senzilla.

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Recentment, Apple va llançar macOS Catalina 10.15.4, una actualització de suplements per solucionar problemes, però sembla que l'actualització està causant més problemes que provoquen el bloqueig de les màquines Mac. Llegiu aquest article per obtenir més informació