Ubuntu 14.04 Üzerinde LXC Kapsayıcılarını Güvenli Bir Şekilde Dağıtın ve Yönetin

LXC kapsayıcılar (Linux kapsayıcılar), Linux'ta tek bir ana bilgisayarda birden çok yalıtılmış Linux sistemini çalıştırmak için kullanılabilen bir işletim sistemi özelliğidir.

Bu talimatlar, yalıtılmış Linux kapsayıcılarının barındırılması için sunucu yapılandırmasının temel adımlarında size yol gösterecektir. Aşağıdaki özellikleri yapılandıracağız:

  • Ubuntu 14 ile LXC kapları.
  • Linux ağ ayarları ve kapsayıcılar için bağlantı noktası yönlendirme.
  • Konteyner yönetimi için SSH iletme kadar basit ssh [email protected]vessh [email protected]
  • Kapsayıcılar içindeki web sitelerine erişmek için Nginx proxy yapılandırması (ana bilgisayar adına göre).
  • Doğru sunucu yönetimi için ek güvenlik geliştirmeleri.

Bu kılavuzda:

  • Vultr.com'da bir hesabınız var .
  • Sanal makineyi özel bir ISO ile nasıl yapılandıracağınızı biliyorsunuz.
  • SSH anahtarlarını nasıl kullanacağınızı biliyorsunuz ve zaten ortak ve özel anahtarlar oluşturdunuz.

Eğitimin sonunda internete erişebilecek, ancak birbirlerine ping atamayan iki sanal kapsayıcı elde edeceğiz. Ayrıca, bağlantı example.comnoktalarından konteynerlere bağlantı noktası iletmeyi de yapılandıracağız . Proxmox paketindeki araçların yardımıyla güvenli yapılandırma ve yönetim paneli dağıtacağız.

Hazırlıklar

Proxmox'u yalnızca LXC kaplarının yönetimi için kullanacağız. Genellikle, KVM'yi de destekler, ancak Vultr'da iç içe sanallaştırma yasaktır. Başlamadan önce, bir Proxmox ISO resmi web sitesinden indirilmelidir. Biz kullanacağız Proxmox VE 5.0 ISO Installer. İşletim sistemini varsayılan ayarlarla görüntüden yükleyin ve sanal makineyi yeniden başlatın. Ayrıca, el kaynaklardan proxmox yükleyebilirsiniz, ancak bu çoğu durumda gerekli değildir (talimatları takip buraya ).

İşletim Sistemi Kurulumu

SSH ile sunucunuza bağlanın, proxy şablonları şablonunu güncelleyin ve kapsayıcılar için uygun bir şablon indirin.

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

Şimdi, bir linux köprüsüne bağlı ağ arayüzü ile bir linux konteyner oluşturmamız gerekiyor. /etc/network/interfacesAşağıdaki satırları açın ve ekleyin:

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

Sistem yeniden başlatıldıktan sonra, Ubuntu 14.04şablondan yeni bir kapsayıcı oluşturabilirsiniz.

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

Kapsayıcıyı kullanarak pct list# 200 kapsayıcısını ile başlatabilir pct start 200ve kabuğunu ile girebilirsiniz pct enter 200. Ağ ayarlarını ve adreslerini ile de doğrulayabilirsiniz ip addr.

Konteynerinizin içinde internet bağlantısı sağlamak için etkinleştirmemiz gerekir NAT. Aşağıdakiler, NAT teknolojisinin yardımıyla trafiğin konteynırdan internete iletilmesine izin verecektir. vmbr0Köprü dış arabirim bağlanır ve vmbr1köprü kaplar bağlanır.

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

Kapsayıcıyı girin ve pct enter 200içindeki web sunucusunu yapılandırın.

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

Şimdi, web sitelerini kapsayıcılara proxy yapmak için sunucunuzdaki Nginx'i yapılandırmamız gerekiyor.

apt-get update
apt-get install nginx

/etc/nginx/sites-available/box200Aşağıdaki içeriğe sahip yeni bir yapılandırma dosyası oluşturun :

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 artık server200.example.comsunucunuzdan konteynere her HTTP isteğini IP 10.100.0.200 ile proxy yapacak. Bu yapılandırmayı etkinleştirin.

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

SSH Erişimi

Korumalı alanlara kolay erişim sağlamak istiyorsanız, SSH oturumlarını kapsayıcılara iletmeniz gerekir. Bunu yapmak için kök sunucunuzda yeni bir kullanıcı oluşturun. Bir şifre girmeyi unutmayın, diğer parametreler gerekli değildir.

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

Bu SSH anahtarını kopyalayın ve anahtarı eklemek için kapsayıcıyı girin.

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

Sunucunuzda, aşağıdaki satırı .ssh/authorized_keysdosyaya ekleyin .

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

<YOUR SSH KEY>Ev genel anahtarınıza geçmeyi unutmayın . Alternatif olarak, komut satırından aşağıdakileri çalıştırabilirsiniz.

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

Ardından, sandbox'ınıza ssh ile bağlanabilirsiniz.

`ssh box200@<your_server_IP>`

Ek ayarlar

Çeşitli güvenlik iyileştirmeleri uygulama zamanı. İlk olarak, varsayılan SSH portunu değiştirmek istiyoruz. Ardından Proxmox yönetim sayfamızı temel HTTP kimlik doğrulaması ile korumak istiyoruz.

nano /etc/ssh/sshd_config

Açma ve değiştirme çizgisi

#Port 22 

için

Port 24000 

Ssh'yi yeniden başlatın.

service ssh restart

Yeni bağlantı noktasıyla ssh'ye yeniden bağlanın.

ssh root@<your_IP> -p 24000

Bir Proxmox şifresi belirleyin.

Dosya oluştur /etc/default/pveproxy.

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

pveproxyDeğişikliklerin etkili olması için yeniden başlatın .

/etc/init.d/pveproxy restart

Nginx'i yapılandırın (daha önce yapmadıysanız).

apt-get install nginx
service nginx restart

Konumunda varsayılan bir yapılandırma oluşturun /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; }
}

Geçerli bir SSL sertifikası alın ve nginx yapılandırmanızı güncelleyin. Örneğin, certbox ve letsencrypt yardımıyla yapılabilir. Daha fazla bilgi için buraya tıklayın .

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

Şimdi, nginx yapılandırmanız böyle görünmelidir (veya daha sonra manuel olarak değiştirebilirsiniz). SSL, yetkilendirme ve konum satırlarını rahatsız etmeyi unutmayın.

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
}

Htpasswd oluşturucuyu /etc/htpasswdkullanarak bir dosya oluşturun .

nano /etc/nginx/htpasswd

Nginx'i yeniden başlat

service nginx restart

Artık, https://example.comtemel kimlik doğrulamasından sonra yönetim konsolunu görüntüleyebilirsiniz .

Liman Yönlendirme

Kapsayıcılar artık HTTP istekleri ve SSH tarafından kullanılabilir. Artık harici sunucudan kapsayıcılara bağlantı noktası iletmeyi yapılandırabiliriz. Örneğin , aşağıdakileri example.com:8080girmek için eşleme için 10.100.0.200:3000.

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

Mevcut kuralları görüntüleyebilirsiniz.

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

Bir kuralı aşağıdakilerle numarasına göre de silebilirsiniz.

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

Ayrılmış Konteynerler

Artık bir konteynerden diğerine erişebiliyoruz.

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

Konteyner 250'den 200'e erişimi kısıtlamak istiyorsanız, her konteyneri kişisel bir köprüye bağlamanız ve köprüler arasında iletmeyi devre dışı bırakmanız gerekir.

  1. Mevcut kapsayıcıları silin.

    pct stop 200
    pct stop 250
    pct destroy 200
    pct destroy 250
    
  2. İçeriğini değiştirin /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 sistem

  4. Yönlendirmeyi etkinleştir

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

    Bu değişiklikleri kalıcı yapmak için /etc/sysctl.confdosyayı düzenleyebilir ve aşağıdaki metni bulabilirsiniz.

    #net.ipv4.ip_forward=1
    

    Rahatsız et.

    net.ipv4.ip_forward=1
    

    sysctl -pDeğişikliklerin hemen yürürlüğe girmesi için de çalışabilirsiniz .

  5. Kapsayıcılar oluşturun.

    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. Kapları pct start 200ve ile başlatın pct start 250.

  7. iptablesKuralları yıkayın .

    iptables -F
    
  8. NAT'ı etkinleştirin.

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

    vmbr0 dış arabirimi içeren köprüdür.

  9. Harici arayüzden iletmeye izin ver.

    iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
    
  10. Konteynerlerden internete yönlendirmeye izin verin.

    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. Diğer yönlendirmeyi bırakın.

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

Şimdi, bu kontrol 10.100.1.200kutu ping 8.8.8.8ama ping olamaz 10.100.2.250ve bu 10.100.2.250kutu ping 8.8.8.8ama ping olamaz 10.100.1.200.

İptables ile ilgili komutların sırası önemlidir. Kurallarınızı çalıştırmanın en iyi yolu kullanmaktır iptables-persistent. Bu paket dosyalara iptables kuralları kaydetmek için yardımcı olur /etc/iptables/rules.v4ve /etc/iptables/rules.v6ve otomatik olarak sistem yeniden başlatma sonrasında bunları yükleyebilirsiniz. Sadece aşağıdakileri yükleyin.

apt-get install iptables-persistent

YESİstendiğinde seçin .



Leave a Comment

KubOSM ile Kubernetesi CentOS 7de dağıtın

KubOSM ile Kubernetesi CentOS 7de dağıtın

Genel Bakış Bu makale, bir Kubernetes kümesini hemen kurup kubeadm ile çalıştırmanıza yardımcı olmak içindir. Bu kılavuz iki sunucuyu

Rancher OSyi iPXE üzerinden yükleme

Rancher OSyi iPXE üzerinden yükleme

Rancher OS, Docker etrafında inşa edilmiş çok hafif bir Linux dağıtımıdır. İşletim sisteminin kendisi yaklaşık 20 MB ağırlığında. Bu eğitici ile birlikte çalışmaya başlayacaksınız

Ubuntu 18.04e Docker CEyi yükleyin

Ubuntu 18.04e Docker CEyi yükleyin

Giriş Docker, kapsayıcı olarak çalıştırılan programları dağıtmamızı sağlayan bir uygulamadır. Popüler Go programlama dilinde yazılmıştır

Alpine Linux 3.9.0da bir Docker Sürüsü oluşturma

Alpine Linux 3.9.0da bir Docker Sürüsü oluşturma

Giriş Bu kılavuz, birden fazla Alpine Linux 3.9.0 sunucusu ve Portainer kullanarak bir Docker sürüsü oluşturmayı ve yapılandırmayı gösterecektir. Lütfen unutmayın

Docker-compose Kullanarak PHP Uygulaması Dağıtma

Docker-compose Kullanarak PHP Uygulaması Dağıtma

PHP uygulamaları genellikle bir web sunucusu, ilişkisel veritabanı sistemi ve dil yorumlayıcısının kendisinden oluşur. Bu derste leveragin olacağız

Dockerı CentOS 7ye yükleme

Dockerı CentOS 7ye yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Docker, sanal kapsayıcılara yazılım dağıtımına izin veren bir uygulamadır. Go programında yazıldı

CentOS 7 Üzerinde Liman Kurulumu

CentOS 7 Üzerinde Liman Kurulumu

Harbor, Docker görüntülerini depolayan ve dağıtan açık kaynaklı, kurumsal sınıf bir kayıt defteri sunucusudur. Liman, açık kaynaklı Docker Dağıtımını genişletiyor b

CoreOSa docker-compose kurulumu

CoreOSa docker-compose kurulumu

Bu makalede, docker-composeun CoreOSa nasıl yükleneceği açıklanmaktadır. CoreOSta / usr / klasörü değiştirilemez, bu nedenle standart / usr / local / bin yolu kullanılamaz.

Rancherı CentOS 7ye yükleyin

Rancherı CentOS 7ye yükleyin

Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Rancher, konteynerleri çalıştırmak ve özel bir konteyner servisi oluşturmak için açık kaynaklı bir platformdur. Çiftlik temelidir

Rancherı Ubuntu 16.04e yükleyin

Rancherı Ubuntu 16.04e yükleyin

Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Rancher, konteynerleri çalıştırmak ve özel bir konteyner servisi oluşturmak için açık kaynaklı bir platformdur. Çiftlik temelidir

Debian 9 Docker Swarm (CE) ile Yapışkan Oturum

Debian 9 Docker Swarm (CE) ile Yapışkan Oturum

Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Docker Swarm, bireysel sunucularınızı bir bilgisayar kümesine dönüştürür; ölçeklendirme, yüksek kullanılabilirlik ve

İki Docker Grafik Yönetim Aracı: DockerUI ve Tersane

İki Docker Grafik Yönetim Aracı: DockerUI ve Tersane

Vultr Docker uygulamasının yardımıyla Dockerı Vultr sunucu örneğinize kolayca dağıtabilirsiniz. Bu arada, Docker yönetim görevini kolaylaştırabilirsiniz

CoreOSta Kendi Docker Kayıt Defterinizi Kurun

CoreOSta Kendi Docker Kayıt Defterinizi Kurun

Hepimiz uygulama kaplarını birden çok makineye oluşturmak, yönetmek ve dağıtmak için bir platform olan Dockerı biliyoruz ve seviyoruz. Docker Inc.

Ubuntu 16.04te Docker ile Sentry Kurulumu

Ubuntu 16.04te Docker ile Sentry Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Sentry, hata izleme için açık kaynaklı bir çözümdür. Nöbetçi istisnaları ve diğer yararlı mesajları izler

RancherOS üzerine Rancher Server kurun

RancherOS üzerine Rancher Server kurun

Genel Bakış RancherOS, sistem hizmetlerini çalıştırmak için bir Docker arka plan programı PID 0 olarak çalıştıran inanılmaz derecede hafif bir işletim sistemidir (yalnızca yaklaşık 60 MB).

CentOS 7de Docker Sürüsü (CE) ile Yapışkan Oturum

CentOS 7de Docker Sürüsü (CE) ile Yapışkan Oturum

Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Docker Swarm, bireysel sunucularınızı bir bilgisayar kümesine dönüştürerek ölçeklendirmeyi, yüksek kullanılabilirliği ve

Docker Nasıl Kullanılır: İlk Docker Kapsayıcısını Oluşturma

Docker Nasıl Kullanılır: İlk Docker Kapsayıcısını Oluşturma

Bu eğitimde Dockerı kullanmaya başlamanın temelleri açıklanmaktadır. Dockerın kurulu olduğunu varsayıyorum. Bu öğreticideki adımlar,

Docker ile Yük Dengesi

Docker ile Yük Dengesi

Bir web uygulaması çalıştırırken, yazılımınızı çoklu iş parçacığını kullanmak için dönüştürmek zorunda kalmadan normalde kaynaklarınızdan en iyi şekilde yararlanmak istersiniz.

Docker ile CentOS 7de SQL Server 2017ye (MS-SQL) Başlarken

Docker ile CentOS 7de SQL Server 2017ye (MS-SQL) Başlarken

Önkoşullar Docker motoru 1.8+. Minimum 4GB disk alanı. Minimum 4GB RAM. Adım 1. Dockerı yükleyin SQL-Serverı yüklemek için Docker mus

Docker Kullanarak Bir Node.js Uygulaması Dağıtma

Docker Kullanarak Bir Node.js Uygulaması Dağıtma

Bu makalede, Düğüm uygulamanızı bir Docker kapsayıcısında nasıl dağıtacağınız gösterilecektir. Not: Bu eğiticide Dockerın yüklü ve okunmuş olduğu varsayılmaktadır

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.

Hala Teslim Edilmeyen Teknoloji Sözleri

Hala Teslim Edilmeyen Teknoloji Sözleri

Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun