LXC-Container unter Ubuntu 14.04 sicher bereitstellen und verwalten

LXC-Container (Linux-Container) sind eine Betriebssystemfunktion unter Linux, mit der mehrere isolierte Linux-Systeme auf einem einzigen Host ausgeführt werden können.

Diese Anweisungen führen Sie durch die grundlegenden Schritte der Serverkonfiguration für das Hosting isolierter Linux-Container. Wir werden die folgenden Funktionen konfigurieren:

  • LXC-Container mit Ubuntu 14.
  • Linux-Netzwerkeinstellungen und Portweiterleitung für Container.
  • SSH-Weiterleitung für die Containerverwaltung so einfach wie ssh [email protected]undssh [email protected]
  • Nginx-Proxy-Konfiguration für den Zugriff auf Websites in Containern (nach Hostname).
  • Zusätzliche Sicherheitsverbesserungen für eine ordnungsgemäße Serververwaltung.

In diesem Handbuch wird davon ausgegangen, dass:

  • Sie haben ein Konto bei Vultr.com .
  • Sie wissen, wie Sie eine virtuelle Maschine mit einer benutzerdefinierten ISO konfigurieren.
  • Sie wissen, wie man SSH-Schlüssel verwendet, und Sie haben bereits öffentliche und private Schlüssel generiert.

Am Ende des Tutorials erhalten wir zwei virtuelle Container, die Zugriff auf das Internet haben, sich aber nicht gegenseitig anpingen können. Wir werden auch die Portweiterleitung von example.comzu Containern konfigurieren . Wir werden das sichere Konfigurations- und Verwaltungsfenster mithilfe von Tools aus dem Proxmox-Paket bereitstellen.

Vorbereitungen

Wir werden Proxmox nur für die Verwaltung von LXC-Containern verwenden. Im Allgemeinen wird auch KVM unterstützt, aber verschachtelte Virtualisierung ist in Vultr verboten. Vor dem Start sollte eine Proxmox ISO von der offiziellen Website heruntergeladen werden. Wir werden die verwenden Proxmox VE 5.0 ISO Installer. Installieren Sie das Betriebssystem vom Image mit den Standardeinstellungen und starten Sie die virtuelle Maschine neu. Sie können proxmox auch manuell aus Quellen installieren, dies ist jedoch in den meisten Fällen nicht erforderlich (befolgen Sie die Anweisungen hier ).

Betriebssystem-Setup

Stellen Sie über SSH eine Verbindung zu Ihrem Host her, aktualisieren Sie die Liste der Proxmox-Vorlagen und laden Sie eine geeignete Vorlage für Container herunter.

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

Jetzt müssen wir einen Linux-Container mit einer Netzwerkschnittstelle erstellen, die mit einer Linux-Bridge verbunden ist. Öffnen Sie /etc/network/interfacesdie folgenden Zeilen und hängen Sie sie an:

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

Nach dem Neustart des Systems können Sie aus der Ubuntu 14.04Vorlage einen neuen Container erstellen .

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

Sie können Ihren Container mit überprüfen pct list, Container # 200 mit starten pct start 200und seine Shell mit eingeben pct enter 200. Sie können auch Netzwerkeinstellungen und Adressen mit überprüfen ip addr.

Netzwerk

Um eine Internetverbindung in Ihrem Container bereitzustellen, müssen wir diese aktivieren NAT. Im Folgenden kann der Datenverkehr mithilfe der NAT-Technologie vom Container ins Internet weitergeleitet werden. Die vmbr0Brücke ist mit der externen Schnittstelle verbunden und die vmbr1Brücke ist mit den Containern verbunden.

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

Geben Sie den Container mit ein pct enter 200und konfigurieren Sie den darin enthaltenen Webserver.

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

Jetzt müssen wir Nginx auf Ihrem Server so konfigurieren, dass Websites in Container übertragen werden.

apt-get update
apt-get install nginx

Erstellen Sie eine neue Konfigurationsdatei /etc/nginx/sites-available/box200mit folgendem Inhalt:

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 überträgt nun jede HTTP-Anforderung server200.example.comvon Ihrem Server an den Container mit der IP 10.100.0.200. Aktivieren Sie diese Konfiguration.

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

SSH-Zugriff

Wenn Sie einen einfachen Zugriff auf Sandboxen ermöglichen möchten, müssen Sie SSH-Sitzungen in die Container weiterleiten. Erstellen Sie dazu einen neuen Benutzer auf Ihrem Root-Server. Vergessen Sie nicht, ein Passwort einzugeben, andere Parameter sind nicht erforderlich.

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

Kopieren Sie diesen SSH-Schlüssel und geben Sie den Container ein, um den Schlüssel anzuhängen.

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

Fügen Sie auf Ihrem Server der .ssh/authorized_keysDatei die folgende Zeile hinzu .

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

Vergessen Sie nicht, <YOUR SSH KEY>zu Ihrem öffentlichen Hauptschlüssel zu wechseln . Alternativ können Sie Folgendes über die Befehlszeile ausführen.

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

Anschließend können Sie mit ssh eine Verbindung zu Ihrer Sandbox herstellen.

`ssh box200@<your_server_IP>`

Zusätzliche Einstellungen

Es ist Zeit, mehrere Sicherheitsverbesserungen zu implementieren. Zunächst möchten wir den Standard-SSH-Port ändern. Dann möchten wir unsere Proxmox-Verwaltungsseite mit einer grundlegenden HTTP-Authentifizierung schützen.

nano /etc/ssh/sshd_config

Kommentar entfernen und Zeile ändern

#Port 22 

zu

Port 24000 

Starten Sie ssh neu.

service ssh restart

Stellen Sie mit dem neuen Port erneut eine Verbindung zu ssh her.

ssh root@<your_IP> -p 24000

Legen Sie ein Proxmox-Passwort fest.

Datei erstellen /etc/default/pveproxy.

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

Starten Sie neu, pveproxydamit die Änderungen wirksam werden.

/etc/init.d/pveproxy restart

Konfigurieren Sie nginx (falls Sie dies noch nicht getan haben).

apt-get install nginx
service nginx restart

Erstellen Sie eine Standardkonfiguration in /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; }
}

Besorgen Sie sich ein gültiges SSL-Zertifikat und aktualisieren Sie Ihre Nginx-Konfiguration. Dies kann beispielsweise mit Hilfe von certbox und letsencrypt erfolgen. Weitere Informationen finden Sie hier .

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

Jetzt sollte Ihre Nginx-Konfiguration so aussehen (oder Sie können sie später manuell ändern). Vergessen Sie nicht, die Zeilen ssl, auth und location zu kommentieren.

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
}

Erstellen Sie eine /etc/htpasswdDatei mit dem Htpasswd-Generator .

nano /etc/nginx/htpasswd

Starten Sie Nginx neu

service nginx restart

Sie können die Verwaltungskonsole jetzt https://example.comnach der Standardauthentifizierung aktivieren.

Port-Weiterleitung

Die Container sind jetzt über HTTP-Anforderungen und SSH verfügbar. Jetzt können wir die Portweiterleitung vom externen Server zu den Containern konfigurieren. Zum Beispiel für die Zuordnung example.com:8080zur 10.100.0.200:3000Eingabe der folgenden.

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

Sie können die aktuellen Regeln anzeigen.

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

Sie können eine Regel auch nach Nummer wie folgt löschen.

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

Getrennte Behälter

Wir können jetzt von einem anderen auf einen Container zugreifen.

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

Wenn Sie den Zugriff von Container 250 auf 200 beschränken möchten, müssen Sie jeden Container mit einer persönlichen Bridge verbinden und die Weiterleitung zwischen Bridges deaktivieren.

  1. Löschen Sie vorhandene Container.

    pct stop 200
    pct stop 250
    pct destroy 200
    pct destroy 250
    
  2. Ändern Sie den Inhalt von /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 das System

  4. Weiterleitung aktivieren

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

    Um diese Änderungen dauerhaft zu machen, können Sie die /etc/sysctl.confDatei bearbeiten und den folgenden Text suchen.

    #net.ipv4.ip_forward=1
    

    Kommentieren Sie es aus.

    net.ipv4.ip_forward=1
    

    Sie können auch ausführen sysctl -p, damit die Änderungen sofort wirksam werden.

  5. Erstellen Sie Container.

    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. Starten Sie die Container mit pct start 200und pct start 250.

  7. Spüle die iptablesRegeln.

    iptables -F
    
  8. Aktivieren Sie NAT.

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

    vmbr0 ist die Brücke, die eine externe Schnittstelle enthält.

  9. Weiterleitung von der externen Schnittstelle zulassen.

    iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
    
  10. Weiterleitung von den Containern ins Internet zulassen.

    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. Löschen Sie die andere Weiterleitung.

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

Überprüfen Sie nun, ob 10.100.1.200Ping, 8.8.8.8aber nicht Ping 10.100.2.250und 10.100.2.250Ping, 8.8.8.8aber nicht Ping möglich ist 10.100.1.200.

Die Reihenfolge der Befehle in Bezug auf iptables ist wichtig. Der beste Weg, um Ihre Regeln zu bedienen, ist die Verwendung iptables-persistent. Dieses Paket hilft Ihnen beim Speichern von iptables-Regeln in den Dateien /etc/iptables/rules.v4und /etc/iptables/rules.v6kann diese nach dem Neustart des Systems automatisch laden. Installieren Sie es einfach mit den folgenden.

apt-get install iptables-persistent

Wählen Sie diese Option aus, YESwenn Sie dazu aufgefordert werden.



Installieren von Docker unter Ubuntu 14.04

Installieren von Docker unter Ubuntu 14.04

Verwenden Sie ein anderes System? Docker ist eine Anwendung, mit der Programme bereitgestellt werden können, die als Container ausgeführt werden. Es wurde im beliebten Go-Programm geschrieben

Stellen Sie eine PHP-Anwendung mit Docker-compose bereit

Stellen Sie eine PHP-Anwendung mit Docker-compose bereit

PHP-Anwendungen bestehen normalerweise aus einem Webserver, einem relationalen Datenbanksystem und dem Sprachinterpreter selbst. In diesem Tutorial werden wir Hebel einsetzen

Installieren Sie Rancher Server unter RancherOS

Installieren Sie Rancher Server unter RancherOS

Übersicht RancherOS ist ein unglaublich leichtes Betriebssystem (nur ca. 60 MB), auf dem ein System-Docker-Daemon als PID 0 zum Ausführen von Systemdiensten ausgeführt wird

Sticky Session mit Docker Swarm (CE) auf Debian 9

Sticky Session mit Docker Swarm (CE) auf Debian 9

Verwenden Sie ein anderes System? Einführung Docker Swarm verwandelt Ihre einzelnen Server in einen Computercluster. Erleichterung der Skalierung, Hochverfügbarkeit an

Verwendung von Docker: Erstellen Ihres ersten Docker-Containers

Verwendung von Docker: Erstellen Ihres ersten Docker-Containers

In diesem Tutorial werden die Grundlagen für den Einstieg in Docker erläutert. Ich gehe davon aus, dass Sie Docker bereits installiert haben. Die Schritte in diesem Tutorial funktionieren an einem

Lastausgleich mit Docker

Lastausgleich mit Docker

Wenn Sie eine Webanwendung ausführen, möchten Sie normalerweise Ihre Ressourcen optimal nutzen, ohne Ihre Software für die Verwendung von Multithreading konvertieren zu müssen

Richten Sie unter CoreOS Ihre eigene Docker-Registrierung ein

Richten Sie unter CoreOS Ihre eigene Docker-Registrierung ein

Wir alle kennen und lieben Docker, eine Plattform zum Erstellen, Verwalten und Verteilen von Anwendungscontainern auf mehreren Computern. Docker Inc. bietet einen Service t

Stellen Sie eine Node.js-Anwendung mit Docker bereit

Stellen Sie eine Node.js-Anwendung mit Docker bereit

Dieser Artikel zeigt Ihnen, wie Sie Ihre Knotenanwendung in einem Docker-Container bereitstellen. Hinweis: In diesem Lernprogramm wird davon ausgegangen, dass Docker installiert und gelesen ist

Installieren von Docker unter CentOS 7

Installieren von Docker unter CentOS 7

Verwenden Sie ein anderes System? Docker ist eine Anwendung, die die Bereitstellung von Software in virtuellen Containern ermöglicht. Es wurde im Go-Programm geschrieben

Installieren Sie Rancher OS über iPXE

Installieren Sie Rancher OS über iPXE

Rancher OS ist eine sehr leichte Linux-Distribution, die auf Docker basiert. Das Betriebssystem selbst wiegt etwa 20 MB. Mit diesem Tutorial können Sie loslegen

Richten Sie Sentry über Docker unter Ubuntu 16.04 ein

Richten Sie Sentry über Docker unter Ubuntu 16.04 ein

Verwenden Sie ein anderes System? Einführung Sentry ist eine Open Source-Lösung für die Fehlerverfolgung. Sentry verfolgt Ausnahmen und andere nützliche Nachrichten

Stellen Sie Kubernetes mit Kubeadm unter CentOS 7 bereit

Stellen Sie Kubernetes mit Kubeadm unter CentOS 7 bereit

Übersicht Dieser Artikel soll Ihnen helfen, einen Kubernetes-Cluster in kürzester Zeit mit kubeadm zum Laufen zu bringen. In diesem Handbuch werden zwei Server bereitgestellt

Docker-Compose unter CoreOS installieren

Docker-Compose unter CoreOS installieren

Dieser Artikel erklärt, wie Docker-Compose unter CoreOS installiert wird. In CoreOS ist der Ordner / usr / unveränderlich, sodass der Standardpfad / usr / local / bin für nicht verfügbar ist

So installieren Sie Harbor unter CentOS 7

So installieren Sie Harbor unter CentOS 7

Harbor ist ein Open-Source-Registrierungsserver der Enterprise-Klasse, auf dem Docker-Images gespeichert und verteilt werden. Harbour erweitert die Open Source Docker Distribution b

Installieren Sie Docker CE unter Ubuntu 18.04

Installieren Sie Docker CE unter Ubuntu 18.04

Einführung Docker ist eine Anwendung, mit der wir Programme bereitstellen können, die als Container ausgeführt werden. Es wurde in der beliebten Programmiersprache Go geschrieben

Erste Schritte mit Kubernetes unter CentOS 7

Erste Schritte mit Kubernetes unter CentOS 7

Kubernetes ist eine Open-Source-Plattform, die von Google für die Verwaltung von Containeranwendungen auf einem Servercluster entwickelt wurde. Es baut auf einem Jahrzehnt auf und

Erste Schritte mit SQL Server 2017 (MS-SQL) unter CentOS 7 mit Docker

Erste Schritte mit SQL Server 2017 (MS-SQL) unter CentOS 7 mit Docker

Voraussetzungen Docker Engine 1.8+. Mindestens 4 GB Speicherplatz. Mindestens 4 GB RAM. Schritt 1. Docker installieren Um SQL-Server zu installieren, muss Docker mus

Installieren Sie Rancher unter Ubuntu 16.04

Installieren Sie Rancher unter Ubuntu 16.04

Verwenden Sie ein anderes System? Einführung Rancher ist eine Open Source-Plattform zum Ausführen von Containern und zum Erstellen eines privaten Containerservices. Rancher ist Basis

Erstellen Sie einen Docker Swarm unter Alpine Linux 3.9.0

Erstellen Sie einen Docker Swarm unter Alpine Linux 3.9.0

Einführung In diesem Handbuch erfahren Sie, wie Sie einen Docker-Schwarm mit mehreren Alpine Linux 3.9.0-Servern und Portainer erstellen und konfigurieren. Bitte beachten Sie, dass

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Ransomware-Angriffe nehmen zu, aber kann KI helfen, den neuesten Computervirus zu bekämpfen? Ist KI die Antwort? Lesen Sie hier, ob KI boone oder bane ist

ReactOS: Ist das die Zukunft von Windows?

ReactOS: Ist das die Zukunft von Windows?

ReactOS, ein quelloffenes und kostenloses Betriebssystem, ist hier mit der neuesten Version. Kann es den Anforderungen moderner Windows-Benutzer genügen und Microsoft zu Fall bringen? Lassen Sie uns mehr über dieses alte, aber neuere Betriebssystem erfahren.

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Whatsapp hat endlich die Desktop-App für Mac- und Windows-Benutzer auf den Markt gebracht. Jetzt können Sie ganz einfach von Windows oder Mac auf WhatsApp zugreifen. Verfügbar für Windows 8+ und Mac OS 10.9+

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Lesen Sie dies, um zu erfahren, wie Künstliche Intelligenz bei kleinen Unternehmen beliebt wird und wie sie die Wahrscheinlichkeit erhöht, sie wachsen zu lassen und ihren Konkurrenten einen Vorsprung zu verschaffen.

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

Vor kurzem hat Apple macOS Catalina 10.15.4 als Ergänzungsupdate veröffentlicht, um Probleme zu beheben, aber es scheint, dass das Update mehr Probleme verursacht, die zum Bricking von Mac-Computern führen. Lesen Sie diesen Artikel, um mehr zu erfahren

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Unser Computer speichert alle Daten in einer organisierten Weise, die als Journaling-Dateisystem bekannt ist. Es ist eine effiziente Methode, die es dem Computer ermöglicht, Dateien zu suchen und anzuzeigen, sobald Sie auf die Suche klicken.https://wethegeek.com/?p=94116&preview=true

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Da sich die Wissenschaft schnell weiterentwickelt und einen Großteil unserer Bemühungen übernimmt, steigt auch das Risiko, uns einer unerklärlichen Singularität auszusetzen. Lesen Sie, was Singularität für uns bedeuten könnte.

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

KI im Gesundheitswesen hat in den letzten Jahrzehnten große Fortschritte gemacht. Somit wächst die Zukunft der KI im Gesundheitswesen immer noch von Tag zu Tag.