Menyebarkan dan Mengelola Kontainer LXC dengan Aman di Ubuntu 14.04

Wadah LXC (wadah Linux) adalah fitur sistem operasi di Linux yang dapat digunakan untuk menjalankan beberapa sistem Linux yang terisolasi pada satu host.

Petunjuk ini akan memandu Anda melalui langkah-langkah dasar konfigurasi server untuk hosting wadah Linux yang terisolasi. Kami akan mengonfigurasi fitur berikut:

  • Wadah LXC dengan Ubuntu 14.
  • Pengaturan jaringan Linux dan penerusan port untuk kontainer.
  • Penerusan SSH untuk administrasi kontainer sesederhana ssh [email protected]danssh [email protected]
  • Konfigurasi proxy Nginx untuk mengakses situs web di dalam wadah (dengan nama host).
  • Peningkatan keamanan tambahan untuk manajemen server yang tepat.

Panduan ini mengasumsikan bahwa:

  • Anda memiliki akun di Vultr.com .
  • Anda tahu cara mengkonfigurasi mesin virtual dengan ISO kustom.
  • Anda tahu cara menggunakan kunci SSH dan Anda telah membuat kunci publik dan pribadi.

Di akhir tutorial kita akan mendapatkan dua kontainer virtual yang akan memiliki akses ke internet, tetapi tidak bisa saling ping. Kami juga akan mengonfigurasikan penerusan port dari example.comwadah. Kami akan menggunakan panel konfigurasi dan manajemen yang aman dengan bantuan alat dari paket Proxmox.

Persiapan

Kami akan menggunakan Proxmox hanya untuk pengelolaan kontainer LXC. Secara umum, ini juga mendukung KVM, tetapi virtualisasi bersarang dilarang di Vultr. Sebelum memulai, Proxmox ISO harus diunduh dari situs web resmi. Kami akan menggunakan Proxmox VE 5.0 ISO Installer. Instal OS dari gambar dengan pengaturan default dan reboot mesin virtual. Selain itu, Anda dapat menginstal proxmox dari sumber secara manual, tetapi itu tidak perlu dalam kebanyakan kasus (ikuti petunjuk di sini ).

Pengaturan OS

Hubungkan ke host Anda dengan SSH, perbarui daftar templat proxmox dan unduh templat yang sesuai untuk wadah.

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

Sekarang, kita perlu membuat wadah linux dengan antarmuka jaringan yang terhubung ke jembatan linux. Buka /etc/network/interfacesdan tambahkan baris berikut:

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

Setelah sistem dinyalakan ulang, Anda dapat membuat wadah baru dari Ubuntu 14.04templat.

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

Anda dapat memverifikasi wadah Anda menggunakan pct list, mulai wadah # 200 dengan pct start 200dan masukkan cangkangnya pct enter 200. Anda juga dapat memverifikasi pengaturan dan alamat jaringan dengan ip addr.

Jaringan

Untuk menyediakan koneksi internet di dalam wadah Anda, kami harus mengaktifkannya NAT. Berikut ini akan memungkinkan lalu lintas untuk diteruskan dari wadah ke internet dengan bantuan teknologi NAT. The vmbr0jembatan terhubung ke antarmuka eksternal dan vmbr1jembatan terhubung ke kontainer.

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

Masukkan wadah dengan pct enter 200dan konfigurasikan server web di dalamnya.

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

Sekarang, kita perlu mengkonfigurasi Nginx di server Anda ke situs web proxy ke dalam wadah.

apt-get update
apt-get install nginx

Buat file konfigurasi baru /etc/nginx/sites-available/box200dengan konten berikut:

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 sekarang akan mem-proksi setiap permintaan HTTP untuk server200.example.comdari server Anda ke kontainer dengan IP 10.100.0.200. Aktifkan konfigurasi ini.

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

Akses SSH

Jika Anda ingin memberikan akses mudah ke kotak pasir, Anda perlu meneruskan sesi SSH ke dalam wadah. Untuk melakukannya, buat pengguna baru di server root Anda. Jangan lupa untuk memasukkan kata sandi, parameter lain tidak diperlukan.

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

Salin kunci SSH ini dan masukkan wadah untuk menambahkan kunci.

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

Di server Anda, tambahkan baris berikut ke .ssh/authorized_keysfile.

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

Jangan lupa untuk mengubah <YOUR SSH KEY>kunci publik rumah Anda. Atau, Anda dapat menjalankan yang berikut dari baris perintah.

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

Kemudian, Anda dapat terhubung ke kotak pasir Anda dengan ssh.

`ssh box200@<your_server_IP>`

Pengaturan tambahan

Sudah waktunya untuk mengimplementasikan beberapa peningkatan keamanan. Pertama, kami ingin mengubah port SSH default. Kemudian kami ingin melindungi halaman manajemen Proxmox kami dengan otentikasi HTTP dasar.

nano /etc/ssh/sshd_config

Batalkan komentar dan ubah jalurnya

#Port 22 

untuk

Port 24000 

Mulai kembali ssh.

service ssh restart

Hubungkan kembali ke ssh dengan port baru.

ssh root@<your_IP> -p 24000

Tetapkan kata sandi Proxmox.

Buat file /etc/default/pveproxy.

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

Mulai ulang pveproxyagar perubahan diterapkan.

/etc/init.d/pveproxy restart

Konfigurasikan nginx (jika Anda belum pernah melakukannya).

apt-get install nginx
service nginx restart

Buat konfigurasi default di /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; }
}

Dapatkan sertifikat SSL yang valid dan perbarui konfigurasi nginx Anda. Misalnya, dapat dilakukan dengan bantuan certbox dan letsencrypt. Untuk informasi lebih lanjut, klik di sini .

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

Sekarang, konfigurasi nginx Anda akan terlihat seperti ini (atau Anda dapat mengubahnya secara manual setelah). Jangan lupa untuk menghapus komentar ssl, auth, dan garis lokasi.

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
}

Buat /etc/htpasswdfile menggunakan generator Htpasswd .

nano /etc/nginx/htpasswd

Mulai ulang Nginx

service nginx restart

Anda sekarang dapat melihat konsol manajemen https://example.comsetelah otentikasi dasar.

Penerusan Port

Wadah sekarang tersedia dengan permintaan HTTP dan SSH. Sekarang, kita dapat mengkonfigurasi port forwarding dari server eksternal ke wadah. Misalnya, untuk pemetaan example.com:8080untuk 10.100.0.200:3000memasukkan yang berikut ini.

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

Anda dapat melihat aturan saat ini.

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

Anda juga dapat menghapus aturan berdasarkan angka dengan yang berikut ini.

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

Wadah terpisah

Kami sekarang dapat mengakses satu wadah dari yang lain.

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

Jika Anda ingin membatasi akses dari wadah 250 hingga 200, Anda harus menghubungkan setiap wadah ke jembatan pribadi dan menonaktifkan penerusan antar jembatan.

  1. Hapus wadah yang ada.

    pct stop 200
    pct stop 250
    pct destroy 200
    pct destroy 250
    
  2. Ubah konten /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. Aktifkan penerusan

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

    Untuk membuat perubahan ini permanen, Anda dapat mengedit /etc/sysctl.conffile dan menemukan teks berikut.

    #net.ipv4.ip_forward=1
    

    Batalkan komentar itu.

    net.ipv4.ip_forward=1
    

    Anda juga dapat menjalankan sysctl -puntuk membuat perubahan segera berlaku.

  5. Buat wadah.

    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. Mulai wadah dengan pct start 200dan pct start 250.

  7. Siram iptablesaturannya.

    iptables -F
    
  8. Aktifkan NAT.

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

    vmbr0 adalah jembatan yang mencakup antarmuka eksternal.

  9. Izinkan penerusan dari antarmuka eksternal.

    iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
    
  10. Izinkan penerusan dari wadah ke 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. Jatuhkan penerusan lainnya.

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

Sekarang, periksa apakah 10.100.1.200bisa ping 8.8.8.8tetapi tidak bisa ping 10.100.2.250dan 10.100.2.250bisa ping 8.8.8.8tapi tidak bisa ping 10.100.1.200.

Urutan perintah yang terkait dengan iptables penting. Cara terbaik untuk mengoperasikan aturan Anda adalah menggunakan iptables-persistent. Paket ini membantu Anda menyimpan aturan iptables ke file /etc/iptables/rules.v4dan /etc/iptables/rules.v6dan itu dapat memuatnya secara otomatis setelah sistem dinyalakan ulang. Instal saja dengan yang berikut ini.

apt-get install iptables-persistent

Pilih YESkapan diminta.



Leave a Comment

Menyebarkan Kubernet Dengan Kubeadm di CentOS 7

Menyebarkan Kubernet Dengan Kubeadm di CentOS 7

Ikhtisar Artikel ini dimaksudkan untuk membantu Anda mendapatkan kluster Kubernet dan menjalankan dengan kubeadm dalam waktu singkat. Panduan ini akan menggunakan dua server, pada

Instal OS Rancher melalui iPXE

Instal OS Rancher melalui iPXE

Rancher OS adalah distribusi Linux yang sangat ringan yang dibangun di sekitar Docker. OS itu sendiri berbobot sekitar 20MB. Tutorial ini akan membantu Anda menjalankan dan menjalankannya

Instal Docker CE di Ubuntu 18.04

Instal Docker CE di Ubuntu 18.04

Pendahuluan Docker adalah aplikasi yang memungkinkan kita untuk menyebarkan program yang dijalankan sebagai wadah. Itu ditulis dalam bahasa pemrograman Go populer

Menginstal Docker pada CentOS 7

Menginstal Docker pada CentOS 7

Menggunakan Sistem yang Berbeda? Docker adalah aplikasi yang memungkinkan untuk penyebaran perangkat lunak dalam wadah virtual. Itu ditulis dalam programmin Go

Cara Memasang Harbour pada CentOS 7

Cara Memasang Harbour pada CentOS 7

Harbor adalah server registri sumber terbuka kelas perusahaan yang menyimpan dan mendistribusikan gambar Docker. Harbor memperluas distribusi Docker sumber terbuka b

Menginstal docker-compose di CoreOS

Menginstal docker-compose di CoreOS

Artikel ini menjelaskan cara menginstal docker-compose di CoreOS. Di CoreOS, folder / usr / tidak dapat diubah sehingga jalur standar / usr / local / bin tidak tersedia untuk

Instal Rancher di CentOS 7

Instal Rancher di CentOS 7

Menggunakan Sistem yang Berbeda? Pendahuluan Rancher adalah platform sumber terbuka untuk menjalankan kontainer dan membangun layanan kontainer pribadi. Peternak adalah pangkalan

Instal Rancher di Ubuntu 16.04

Instal Rancher di Ubuntu 16.04

Menggunakan Sistem yang Berbeda? Pendahuluan Rancher adalah platform sumber terbuka untuk menjalankan kontainer dan membangun layanan kontainer pribadi. Peternak adalah pangkalan

Menyebarkan Aplikasi PHP Menggunakan Docker-compose

Menyebarkan Aplikasi PHP Menggunakan Docker-compose

Aplikasi PHP biasanya disusun oleh server web, sistem basis data relasional dan juru bahasa itu sendiri. Dalam tutorial ini kita akan menjadi leveragin

Sticky Session With Docker Swarm (CE) pada Debian 9

Sticky Session With Docker Swarm (CE) pada Debian 9

Menggunakan Sistem yang Berbeda? Pendahuluan Docker Swarm mengubah masing-masing server Anda menjadi sekelompok komputer; memfasilitasi penskalaan, ketersediaan tinggi an

Dua Alat Pengelola Grafis Docker: DockerUI dan Galangan Kapal

Dua Alat Pengelola Grafis Docker: DockerUI dan Galangan Kapal

Dengan bantuan aplikasi Vultr Docker, Anda dapat dengan mudah menggunakan Docker pada instance server Vultr Anda. Sementara itu, Anda dapat memfasilitasi tugas mengelola Docker

Pada CoreOS, Atur Registri Docker Anda Sendiri

Pada CoreOS, Atur Registri Docker Anda Sendiri

Kita semua tahu dan cinta Docker, sebuah platform untuk membuat, mengelola, dan mendistribusikan kontainer aplikasi di beberapa mesin. Docker Inc. menyediakan layanan t

Setup Sentry via Docker di Ubuntu 16.04

Setup Sentry via Docker di Ubuntu 16.04

Menggunakan Sistem yang Berbeda? Pendahuluan Sentry adalah solusi open source untuk pelacakan kesalahan. Sentry melacak pengecualian dan pesan berguna lainnya

Instal Server Rancher di RancherOS

Instal Server Rancher di RancherOS

Ikhtisar RancherOS adalah sistem operasi yang sangat ringan (hanya sekitar 60 MB) yang menjalankan daemon Docker sistem sebagai PID 0 untuk menjalankan layanan sistem

Memulai dengan Kubernetes di CentOS 7

Memulai dengan Kubernetes di CentOS 7

Kubernetes adalah platform sumber terbuka yang dikembangkan oleh Google untuk mengelola aplikasi kemas di sekelompok server. Itu dibangun di atas satu dekade dan

Sticky Session With Docker Swarm (CE) pada CentOS 7

Sticky Session With Docker Swarm (CE) pada CentOS 7

Menggunakan Sistem yang Berbeda? Pendahuluan Docker Swarm mengubah masing-masing server Anda menjadi sekelompok komputer, memfasilitasi penskalaan, ketersediaan tinggi dan

Cara Menggunakan Docker: Membuat Kontainer Docker Pertama Anda

Cara Menggunakan Docker: Membuat Kontainer Docker Pertama Anda

Tutorial ini menjelaskan dasar-dasar memulai Docker. Saya berasumsi bahwa Anda sudah menginstal Docker. Langkah-langkah dalam tutorial ini akan bekerja pada sebuah

Muat Saldo dengan Docker

Muat Saldo dengan Docker

Saat menjalankan aplikasi web, Anda biasanya ingin memaksimalkan sumber daya Anda tanpa harus mengonversi perangkat lunak Anda untuk menggunakan multithreading.

Mulai Dengan SQL Server 2017 (MS-SQL) di CentOS 7 Dengan Docker

Mulai Dengan SQL Server 2017 (MS-SQL) di CentOS 7 Dengan Docker

Prasyarat Mesin Docker 1.8+. Minimal 4GB ruang disk. Minimal RAM 4GB. Langkah 1. Instal Docker Untuk menginstal SQL-Server, Docker mus

Menyebarkan Aplikasi Node.js Menggunakan Docker

Menyebarkan Aplikasi Node.js Menggunakan Docker

Artikel ini akan menunjukkan kepada Anda bagaimana menyebarkan aplikasi Node Anda dalam wadah Docker. Catatan: Tutorial ini mengasumsikan bahwa Anda telah menginstal dan membaca Docker

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Baru-baru ini Apple merilis macOS Catalina 10.15.4 pembaruan suplemen untuk memperbaiki masalah tetapi tampaknya pembaruan menyebabkan lebih banyak masalah yang mengarah ke bricking mesin mac. Baca artikel ini untuk mempelajari lebih lanjut