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 box1@example.comvessh box2@example.com
  • 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 root@10.100.0.200",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 root@10.100.0.200",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 .

Yorum bırak

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7 üzerinde LibreNMS kullanarak ağ cihazlarınızı etkili bir şekilde izleyin. Ağ izleme için gerekli adımları ve yapılandırmaları öğrenin.

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive sunucusu kurmak için gerekli adımlar. Gerekli araçlar ve yükleme süreci hakkında bilgi.

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

OpenNMS, çok sayıda cihazı izlemek ve yönetmek için kullanılabilen bir açık kaynak ağ yönetim platformudur. Ubuntu 16.04 LTS üzerinde OpenNMS kurulumu için tüm adımları keşfedin.

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Farklı Bir Sistem mi Kullanıyorsunuz? LibreNMS tam özellikli bir açık kaynak ağ izleme sistemidir.

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

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.

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.

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.

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.