Bezpiecznie wdrażaj i zarządzaj kontenerami LXC na Ubuntu 14.04

Kontenery LXC (kontenery Linux) to funkcja systemu operacyjnego w systemie Linux, której można używać do uruchamiania wielu izolowanych systemów Linux na jednym hoście.

Te instrukcje przeprowadzą Cię przez podstawowe kroki konfiguracji serwera dla hostingu izolowanych kontenerów Linux. Skonfigurujemy następujące funkcje:

  • Kontenery LXC z Ubuntu 14.
  • Ustawienia sieci Linux i przekierowanie portów dla kontenerów.
  • Przekazywanie SSH do administrowania kontenerem tak proste jak ssh [email protected]issh [email protected]
  • Konfiguracja proxy Nginx do uzyskiwania dostępu do stron internetowych w kontenerach (według nazwy hosta).
  • Dodatkowe ulepszenia bezpieczeństwa dla właściwego zarządzania serwerem.

Niniejszy przewodnik zakłada, że:

  • Masz konto na Vultr.com .
  • Wiesz, jak skonfigurować maszynę wirtualną z niestandardowym ISO.
  • Wiesz, jak używać kluczy SSH i już wygenerowałeś klucze publiczne i prywatne.

Na koniec samouczka otrzymamy dwa wirtualne kontenery, które będą miały dostęp do Internetu, ale nie będą mogły pingować się nawzajem. Skonfigurujemy również przekierowanie portów z example.comdo kontenerów. Wdrożymy bezpieczny panel konfiguracji i zarządzania za pomocą narzędzi z pakietu Proxmox.

Przygotowania

Będziemy używać Proxmox tylko do zarządzania kontenerami LXC. Zasadniczo obsługuje również KVM, ale zagnieżdżanie wirtualizacji jest zabronione w Vultr. Przed rozpoczęciem należy pobrać Proxmox ISO z oficjalnej strony internetowej. Użyjemy Proxmox VE 5.0 ISO Installer. Zainstaluj system operacyjny z obrazu z domyślnymi ustawieniami i uruchom ponownie maszynę wirtualną. Ponadto możesz ręcznie zainstalować proxy ze źródeł, ale w większości przypadków nie jest to konieczne (postępuj zgodnie z instrukcjami tutaj ).

Konfiguracja systemu operacyjnego

Połącz się z hostem przez SSH, zaktualizuj listę szablonów proxy i pobierz odpowiedni szablon dla kontenerów.

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

Teraz musimy utworzyć kontener linux z interfejsem sieciowym podłączonym do mostu linux. Otwórz /etc/network/interfacesi dodaj następujące wiersze:

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

Po ponownym uruchomieniu systemu możesz utworzyć nowy kontener z Ubuntu 14.04szablonu.

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żesz zweryfikować swój kontener za pomocą pct list, uruchomić kontener # 200 za pomocą pct start 200i wprowadzić jego powłokę za pomocą pct enter 200. Możesz także zweryfikować ustawienia sieciowe i adresy za pomocą ip addr.

Sieć

Aby zapewnić połączenie internetowe w twoim kontenerze, musimy je włączyć NAT. Poniższe informacje pozwolą na przesyłanie ruchu z kontenera do Internetu za pomocą technologii NAT. vmbr0Mostek jest połączony z zewnętrznym interfejsem i vmbr1mostek jest połączony z pojemników.

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

Wprowadź kontener za pomocą pct enter 200i skonfiguruj serwer WWW w środku.

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

Teraz musimy skonfigurować Nginx na twoim serwerze, aby proxy stron internetowych do kontenerów.

apt-get update
apt-get install nginx

Utwórz nowy plik konfiguracyjny /etc/nginx/sites-available/box200o następującej treści:

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 będzie teraz proxy dla każdego żądania HTTP server200.example.comz twojego serwera do kontenera o IP 10.100.0.200. Aktywuj tę konfigurację.

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

Dostęp SSH

Jeśli chcesz zapewnić łatwy dostęp do piaskownic, musisz przekazać sesje SSH do kontenerów. Aby to zrobić, utwórz nowego użytkownika na serwerze głównym. Nie zapomnij wprowadzić hasła, inne parametry nie są konieczne.

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

Skopiuj ten klucz SSH i wprowadź kontener, aby dołączyć klucz.

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

Na serwerze dodaj następujący wiersz do .ssh/authorized_keyspliku.

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

Nie zapomnij zmienić <YOUR SSH KEY>na domowy klucz publiczny. Alternatywnie możesz uruchomić następujące polecenie z wiersza poleceń.

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

Następnie możesz połączyć się z piaskownicą za pomocą ssh.

`ssh box200@<your_server_IP>`

Dodatkowe ustawienia

Czas wprowadzić kilka ulepszeń bezpieczeństwa. Najpierw chcemy zmienić domyślny port SSH. Następnie chcemy zabezpieczyć naszą stronę zarządzania Proxmox za pomocą podstawowego uwierzytelniania HTTP.

nano /etc/ssh/sshd_config

Odkomentuj i zmień linię

#Port 22 

do

Port 24000 

Uruchom ponownie ssh.

service ssh restart

Połącz się ponownie z ssh z nowym portem.

ssh root@<your_IP> -p 24000

Ustaw hasło Proxmox.

Utwórz plik /etc/default/pveproxy.

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

Uruchom ponownie, pveproxyaby zmiany zaczęły obowiązywać.

/etc/init.d/pveproxy restart

Skonfiguruj nginx (jeśli nie zrobiłeś tego wcześniej).

apt-get install nginx
service nginx restart

Utwórz domyślną konfigurację w /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; }
}

Uzyskaj prawidłowy certyfikat SSL i zaktualizuj konfigurację nginx. Na przykład można to zrobić za pomocą certbox i letsencrypt. Aby uzyskać więcej informacji, kliknij tutaj .

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

Teraz twoja konfiguracja nginx powinna wyglądać tak (lub możesz ją później zmienić ręcznie). Nie zapomnij odkomentować wierszy 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
}

Utwórz /etc/htpasswdplik za pomocą generatora Htpasswd .

nano /etc/nginx/htpasswd

Uruchom ponownie Nginx

service nginx restart

Możesz teraz wyświetlić konsolę zarządzania https://example.compo podstawowym uwierzytelnieniu.

Przekazywanie portów

Kontenery są teraz dostępne przez żądania HTTP i SSH. Teraz możemy skonfigurować przekierowanie portów z zewnętrznego serwera do kontenerów. Na przykład do mapowania w example.com:8080celu 10.100.0.200:3000wprowadzenia następujących danych.

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

Możesz zobaczyć aktualne zasady.

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

Możesz także usunąć regułę według numeru, korzystając z następujących elementów.

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

Oddzielne pojemniki

Możemy teraz uzyskać dostęp do jednego kontenera z drugiego.

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

Jeśli chcesz ograniczyć dostęp z kontenera 250 do 200, musisz podłączyć każdy kontener do osobistego mostu i wyłączyć przekazywanie między mostami.

  1. Usuń istniejące kontenery.

    pct stop 200
    pct stop 250
    pct destroy 200
    pct destroy 250
    
  2. Zmień zawartość /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 system

  4. Włącz przekazywanie

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

    Aby wprowadzić te zmiany na stałe, możesz edytować /etc/sysctl.confplik i znaleźć następujący tekst.

    #net.ipv4.ip_forward=1
    

    Odkomentuj to.

    net.ipv4.ip_forward=1
    

    Możesz także uruchomić, sysctl -paby zmiany zostały wprowadzone natychmiast.

  5. Utwórz kontenery.

    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. Uruchom pojemniki za pomocą pct start 200i pct start 250.

  7. Opróżnij iptableszasady.

    iptables -F
    
  8. Włącz NAT.

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

    vmbr0 to most, który zawiera interfejs zewnętrzny.

  9. Zezwól na przekazywanie z zewnętrznego interfejsu.

    iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
    
  10. Zezwól na przekazywanie z kontenerów do Internetu.

    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. Upuść inne przekazywanie.

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

Teraz sprawdź, czy 10.100.1.200można pingować, 8.8.8.8ale nie można pingować 10.100.2.250i że 10.100.2.250można pingować, 8.8.8.8ale nie można pingować 10.100.1.200.

Ważna jest kolejność poleceń związanych z iptables. Najlepszym sposobem działania reguł jest użycie iptables-persistent. Ten pakiet pomaga zapisać reguły iptables w plikach /etc/iptables/rules.v4i /etc/iptables/rules.v6może automatycznie załadować je po ponownym uruchomieniu systemu. Po prostu zainstaluj go z następującymi.

apt-get install iptables-persistent

Wybierz, YESgdy pojawi się monit.



Leave a Comment

Wdróż Kubernetes za pomocą Kubeadm na CentOS 7

Wdróż Kubernetes za pomocą Kubeadm na CentOS 7

Omówienie Ten artykuł ma na celu pomóc ci w szybkim uruchomieniu klastra Kubernetes z kubeadm. W tym przewodniku zostaną wdrożone dwa serwery

Zainstaluj Docker CE na Ubuntu 18.04

Zainstaluj Docker CE na Ubuntu 18.04

Wprowadzenie Docker to aplikacja, która pozwala nam wdrażać programy działające jako kontenery. Został napisany w popularnym języku programowania Go

Instalowanie Dockera na CentOS 7

Instalowanie Dockera na CentOS 7

Używasz innego systemu? Docker to aplikacja umożliwiająca wdrażanie oprogramowania w wirtualnych kontenerach. Został napisany w programie Go

Zainstaluj Rancher na Ubuntu 16.04

Zainstaluj Rancher na Ubuntu 16.04

Używasz innego systemu? Wprowadzenie Rancher to platforma typu open source do uruchamiania kontenerów i budowania prywatnej usługi kontenerowej. Ranczer jest podstawą

Instalowanie docker-compose na CoreOS

Instalowanie docker-compose na CoreOS

W tym artykule wyjaśniono, jak zainstalować program dokujący-komponuj w CoreOS. W CoreOS folder / usr / jest niezmienny, więc standardowa ścieżka / usr / local / bin jest niedostępna

W systemie CoreOS skonfiguruj własny rejestr Docker

W systemie CoreOS skonfiguruj własny rejestr Docker

Wszyscy znamy i kochamy Docker, platformę do tworzenia, zarządzania i dystrybucji kontenerów aplikacji na wielu komputerach. Docker Inc. świadczy usługę t

Zainstaluj Rancher na CentOS 7

Zainstaluj Rancher na CentOS 7

Używasz innego systemu? Wprowadzenie Rancher to platforma typu open source do uruchamiania kontenerów i budowania prywatnej usługi kontenerowej. Ranczer jest podstawą

Sentry konfiguracji przez Docker na Ubuntu 16.04

Sentry konfiguracji przez Docker na Ubuntu 16.04

Używasz innego systemu? Wprowadzenie Sentry to rozwiązanie typu open source do śledzenia błędów. Sentry śledzi wyjątki i inne przydatne wiadomości

Jak zainstalować Harbour na CentOS 7

Jak zainstalować Harbour na CentOS 7

Harbor to serwer rejestru klasy korporacyjnej typu open source, który przechowuje i dystrybuuje obrazy Docker. Harbor rozszerza dystrybucję Docker typu open source b

Sticky Session With Docker Swarm (CE) na CentOS 7

Sticky Session With Docker Swarm (CE) na CentOS 7

Używasz innego systemu? Wprowadzenie Docker Swarm zamienia poszczególne serwery w klaster komputerów, ułatwiając skalowanie, wysoką dostępność i

Dwa graficzne narzędzia do zarządzania Docker: DockerUI i Shipyard

Dwa graficzne narzędzia do zarządzania Docker: DockerUI i Shipyard

Za pomocą aplikacji Vultr Docker można łatwo wdrożyć Docker na instancji serwera Vultr. W międzyczasie możesz ułatwić zadanie zarządzania Docker

Zainstaluj Rancher Server na RancherOS

Zainstaluj Rancher Server na RancherOS

Przegląd RancherOS to niezwykle lekki system operacyjny (tylko około 60 MB), który uruchamia demona Docker systemowego jako PID 0 do uruchamiania usług systemowych

Wdróż aplikację PHP za pomocą Docker-compose

Wdróż aplikację PHP za pomocą Docker-compose

Aplikacje PHP zwykle składają się z serwera WWW, systemu relacyjnej bazy danych i samego tłumacza języka. W tym samouczku będziemy korzystać z dźwigni

Rozpoczęcie pracy z Kubernetes na CentOS 7

Rozpoczęcie pracy z Kubernetes na CentOS 7

Kubernetes to platforma open source opracowana przez Google do zarządzania aplikacjami kontenerowymi w klastrze serwerów. Opiera się na dekadzie i

Jak korzystać z Docker: Tworzenie pierwszego kontenera Docker

Jak korzystać z Docker: Tworzenie pierwszego kontenera Docker

W tym samouczku wyjaśniono podstawy rozpoczęcia korzystania z Docker. Zakładam, że masz już zainstalowany Docker. Kroki w tym samouczku będą działać na

Bilans obciążenia z dokerem

Bilans obciążenia z dokerem

Podczas uruchamiania aplikacji sieciowej zwykle chcesz maksymalnie wykorzystać zasoby bez konieczności konwertowania oprogramowania na wielowątkowość

Rozpocznij pracę z SQL Server 2017 (MS-SQL) na CentOS 7 With Docker

Rozpocznij pracę z SQL Server 2017 (MS-SQL) na CentOS 7 With Docker

Wymagania wstępne Silnik Docker 1.8+. Minimum 4 GB miejsca na dysku. Minimum 4 GB pamięci RAM. Krok 1. Zainstaluj Docker Aby zainstalować SQL-Server, Docker mus

Instalowanie Docker CE na Debianie 9

Instalowanie Docker CE na Debianie 9

Używasz innego systemu? Wprowadzenie Docker to aplikacja umożliwiająca wdrażanie oprogramowania w wirtualnych kontenerach. Został napisany w G

Instalowanie Dockera na Ubuntu 14.04

Instalowanie Dockera na Ubuntu 14.04

Używasz innego systemu? Docker to aplikacja umożliwiająca wdrażanie programów uruchamianych jako kontenery. Został napisany w popularnym programie Go

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.