Vendosni dhe menaxhoni në mënyrë të sigurt kontejnerët LXC në Ubuntu 14.04

Kontejnerët LXC (kontejnerët Linux) janë një veçori e sistemit operativ në Linux që mund të përdoret për të ekzekutuar shumë sisteme të izoluara Linux në një host të vetëm.

Këto udhëzime do t'ju përcjellin hapat bazë të konfigurimit të serverit për hostimin e kontejnerëve të izoluar Linux. Ne do të konfigurojmë karakteristikat e mëposhtme:

  • Kontejnerët LXC me Ubuntu 14.
  • Cilësimet e rrjetit Linux dhe përcjellja e portit për kontejnerët.
  • Përcjellja e SSH për administrimin e kontejnerëve aq e thjeshtë sa ssh [email protected]dhessh [email protected]
  • Konfigurimi i përfaqësuesit Nginx për të hyrë në faqet e internetit brenda kontejnerëve (sipas emrit të hostit).
  • Përmirësime shtesë të sigurisë për menaxhimin e duhur të serverit.

Ky udhëzues supozon se:

  • Ju keni një llogari në Vultr.com .
  • Ju e dini se si të konfiguroni një makinë virtuale me një ISO të personalizuar.
  • Ju dini si të përdorni çelësat SSH dhe tashmë keni gjeneruar çelësa publikë dhe privatë.

Në fund të tutorialit do të marrim dy kontejnerë virtualë që do të kenë akses në internet, por nuk mund të bëjnë ping njëri-tjetrin. Ne gjithashtu do të konfigurojmë përcjelljen e portit nga example.comte kontejnerët. Ne do të vendosim panelin e konfigurimit dhe menaxhimit të sigurt me ndihmën e mjeteve nga paketa Proxmox.

Përgatitjet

Ne do të përdorim Proxmox vetëm për menaxhimin e kontejnerëve LXC. Në përgjithësi, ai gjithashtu mbështet KVM, por virtualizimi i mbivendosur është i ndaluar në Vultr. Para fillimit, një Proxmox ISO duhet të shkarkohet nga faqja zyrtare e internetit. Ne do të përdorim Proxmox VE 5.0 ISO Installer. Instaloni OS nga imazhi me cilësimet e paracaktuara dhe rindizni makinën virtuale. Gjithashtu, mund të instaloni manualisht proxmox nga burimet, por kjo nuk është e nevojshme në shumicën e rasteve (ndiq udhëzimet këtu ).

Konfigurimi i OS

Lidhuni me hostin tuaj me SSH, përditësoni listën e shablloneve të proxmox dhe shkarkoni një shabllon të përshtatshëm për kontejnerët.

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

Tani, ne duhet të krijojmë një enë linux me ndërfaqe rrjeti të lidhur me një urë linux. Hapni /etc/network/interfacesdhe shtoni rreshtat e mëposhtëm:

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

Pas rindezjes së sistemit, mund të krijoni një enë të re nga Ubuntu 14.04shablloni.

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

Mund ta verifikoni kontejnerin tuaj duke përdorur pct list, filloni kontejnerin #200 me pct start 200dhe futni guaskën e tij me pct enter 200. Mund të verifikoni gjithashtu cilësimet dhe adresat e rrjetit me ip addr.

Rrjeti

Për të ofruar lidhje interneti brenda kontejnerit tuaj, duhet të aktivizojmë NAT. Më poshtë do të lejojë që trafiku të përcillet nga kontejneri në internet me ndihmën e teknologjisë NAT. vmbr0Ura është e lidhur me ndërfaqen e jashtme dhe vmbr1ura është e lidhur me kontejnerë.

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

Futni kontejnerin me pct enter 200dhe konfiguroni serverin e uebit brenda.

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

Tani, ne duhet të konfigurojmë Nginx në serverin tuaj për të transmetuar faqet e internetit në kontejnerë.

apt-get update
apt-get install nginx

Krijoni një skedar të ri konfigurimi /etc/nginx/sites-available/box200me përmbajtjen e mëposhtme:

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 tani do të proksojë çdo kërkesë HTTP për server200.example.comnga serveri juaj në kontejnerin me IP 10.100.0.200. Aktivizoni këtë konfigurim.

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

Qasja SSH

Nëse dëshironi të siguroni qasje të lehtë në sandboxet, ju duhet të përcillni seancat SSH në kontejnerë. Për ta bërë këtë, krijoni një përdorues të ri në serverin tuaj rrënjë. Mos harroni të futni një fjalëkalim, parametrat e tjerë nuk janë të nevojshëm.

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

Kopjojeni këtë çelës SSH dhe futni kontejnerin për të shtuar çelësin.

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

Në serverin tuaj, shtoni rreshtin e mëposhtëm në .ssh/authorized_keysskedar.

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

Mos harroni të ndryshoni <YOUR SSH KEY>në çelësin tuaj publik të shtëpisë. Përndryshe, mund të ekzekutoni sa vijon nga vija e komandës.

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

Pastaj, mund të lidheni me sandboxin tuaj me ssh.

`ssh box200@<your_server_IP>`

Cilësimet shtesë

Është koha për të zbatuar disa përmirësime të sigurisë. Së pari, ne duam të ndryshojmë portën e paracaktuar SSH. Pastaj ne duam të mbrojmë faqen tonë të menaxhimit Proxmox me vërtetimin bazë HTTP.

nano /etc/ssh/sshd_config

Zhkomentoni dhe ndryshoni rreshtin

#Port 22 

te

Port 24000 

Rinis ssh.

service ssh restart

Rilidhu me ssh me portin e ri.

ssh root@<your_IP> -p 24000

Vendosni një fjalëkalim Proxmox.

Krijo skedar /etc/default/pveproxy.

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

Rinisni pveproxyqë ndryshimet të hyjnë në fuqi.

/etc/init.d/pveproxy restart

Konfiguro nginx (nëse nuk e keni bërë më parë).

apt-get install nginx
service nginx restart

Krijo një konfigurim të paracaktuar në /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; }
}

Merrni një certifikatë të vlefshme SSL dhe përditësoni konfigurimin tuaj nginx. Për shembull, mund të bëhet me ndihmën e certbox dhe letsencrypt. Për më shumë informacion, klikoni këtu .

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

Tani, konfigurimi juaj nginx duhet të duket kështu (ose mund ta ndryshoni manualisht më pas). Mos harroni të hiqni komentet ssl, auth dhe linjat e vendndodhjes.

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
}

Krijoni një /etc/htpasswdskedar duke përdorur gjeneratorin Htpasswd .

nano /etc/nginx/htpasswd

Rinisni Nginx

service nginx restart

Tani mund ta shikoni konsolën e menaxhimit të ndezur https://example.compas vërtetimit bazë.

Port Forwarding

Kontejnerët janë tani në dispozicion sipas kërkesave HTTP dhe SSH. Tani, ne mund të konfigurojmë përcjelljen e portit nga serveri i jashtëm te kontejnerët. Për shembull, për hartëzimin example.com:8080për të 10.100.0.200:3000futur sa vijon.

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

Ju mund të shikoni rregullat aktuale.

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

Ju gjithashtu mund të fshini një rregull sipas numrit me sa vijon.

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

Kontejnerë të ndara

Tani mund të hyjmë në një kontejner nga një tjetër.

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

Nëse dëshironi të kufizoni aksesin nga kontejneri 250 në 200, duhet të lidhni çdo kontejner me një urë personale dhe të çaktivizoni përcjelljen ndërmjet urave.

  1. Fshi kontejnerët ekzistues.

    pct stop 200
    pct stop 250
    pct destroy 200
    pct destroy 250
    
  2. Ndryshoni përmbajtjen e /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 sistemi

  4. Aktivizo përcjelljen

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

    Për t'i bërë këto ndryshime të përhershme, mund të redaktoni /etc/sysctl.confskedarin dhe të gjeni tekstin e mëposhtëm.

    #net.ipv4.ip_forward=1
    

    Zhkomentojeni.

    net.ipv4.ip_forward=1
    

    Ju gjithashtu mund të vraponi sysctl -ppër të bërë që ndryshimet të hyjnë në fuqi menjëherë.

  5. Krijoni kontejnerë.

    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. Filloni kontejnerët me pct start 200dhe pct start 250.

  7. Pastro iptablesrregullat.

    iptables -F
    
  8. Aktivizo NAT.

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

    vmbr0 është ura që përfshin ndërfaqen e jashtme.

  9. Lejo përcjelljen nga ndërfaqja e jashtme.

    iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
    
  10. Lejoni përcjelljen nga kontejnerët në 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. Hidhni përcjelljen tjetër.

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

Tani, kontrolloni që 10.100.1.200mund të bëjë ping, 8.8.8.8por nuk mund të bëjë ping 10.100.2.250dhe që 10.100.2.250mund të bëjë ping, 8.8.8.8por nuk mund të bëjë ping 10.100.1.200.

Rendi i komandave në lidhje me iptables është i rëndësishëm. Mënyra më e mirë për të funksionuar rregullat tuaja është të përdorni iptables-persistent. Kjo paketë ju ndihmon për të ruajtur rregullat iptables për dosjet /etc/iptables/rules.v4dhe /etc/iptables/rules.v6dhe kjo automatikisht mund të ngarkesës ato pas sistemit reboot. Thjesht instaloni atë me sa vijon.

apt-get install iptables-persistent

Zgjidhni YESkur ju kërkohet.


Ja se si të shikoni kontejnerët Hyper-V në Windows 10 Insider

Ja se si të shikoni kontejnerët Hyper-V në Windows 10 Insider

Microsoft ka shpjeguar në një postim të ri në blog se si Windows Insiders mund të testojë kontejnerët Hyper-V në Windows 10, një zgjidhje e re virtualizimi për të lejuar që aplikacionet të funksionojnë pa ndikuar në pjesën tjetër të sistemit tuaj operativ.

Si të instaloni Harbor në CentOS 7

Si të instaloni Harbor në CentOS 7

Harbor është një server regjistri me burim të hapur të klasës së ndërmarrjes që ruan dhe shpërndan imazhet e Docker. Harbor zgjeron Shpërndarjen Docker me burim të hapur b

Instaloni Rancher OS nëpërmjet iPXE

Instaloni Rancher OS nëpërmjet iPXE

Rancher OS është një shpërndarje Linux shumë e lehtë e ndërtuar rreth Docker. Vetë OS peshon rreth 20 MB. Ky tutorial do t'ju vërë në punë

Në CoreOS, konfiguroni Regjistrin tuaj Docker

Në CoreOS, konfiguroni Regjistrin tuaj Docker

Ne të gjithë e njohim dhe e duam Docker, një platformë për të krijuar, menaxhuar dhe shpërndarë kontejnerë aplikacionesh nëpër makina të shumta. Docker Inc ofron një shërbim t

Instalimi i docker-compose në CoreOS

Instalimi i docker-compose në CoreOS

Ky artikull shpjegon se si të instaloni docker-compose në CoreOS. Në CoreOS, dosja /usr/ është e pandryshueshme kështu që shtegu standard /usr/local/bin nuk është i disponueshëm për

Instaloni Rancher në CentOS 7

Instaloni Rancher në CentOS 7

Përdorimi i një sistemi të ndryshëm? Hyrje Rancher është një platformë me burim të hapur për drejtimin e kontejnerëve dhe ndërtimin e një shërbimi privat të kontejnerëve. Rancher është bazë

Instaloni Docker CE në Ubuntu 18.04

Instaloni Docker CE në Ubuntu 18.04

Hyrje Docker është një aplikacion që na lejon të vendosim programe që ekzekutohen si kontejnerë. Është shkruar në gjuhën popullore të programimit Go

Krijo një Swarm Docker në Alpine Linux 3.9.0

Krijo një Swarm Docker në Alpine Linux 3.9.0

Hyrje Ky udhëzues do t'ju tregojë se si të krijoni dhe konfiguroni një tufë Docker duke përdorur shumë serverë Alpine Linux 3.9.0 dhe Portainer. Ju lutemi kini parasysh se

Vendosni një aplikacion PHP duke përdorur Docker-compose

Vendosni një aplikacion PHP duke përdorur Docker-compose

Aplikacionet PHP zakonisht përbëhen nga një server në internet, një sistem bazë të dhënash relacionale dhe vetë përkthyesi i gjuhës. Në këtë tutorial ne do të jemi leveragin

Ngarkoni balancën me Docker

Ngarkoni balancën me Docker

Kur ekzekutoni një aplikacion ueb, zakonisht dëshironi të përfitoni sa më shumë nga burimet tuaja pa pasur nevojë të konvertoni softuerin tuaj për të përdorur multithreading o

Vendosni një aplikacion Node.js duke përdorur Docker

Vendosni një aplikacion Node.js duke përdorur Docker

Ky artikull do t'ju tregojë se si të vendosni aplikacionin tuaj Node brenda një kontejneri Docker. Shënim: Ky udhëzues supozon që ju keni instaluar dhe lexuar Docker

Instalimi i Docker CE në CentOS 7

Instalimi i Docker CE në CentOS 7

Teknologjia e kontejnerëve Docker ju lejon të ekzekutoni aplikacione në një mjedis specifik dhe të izoluar. Docker Community Edition (CE) është emri i ri për fre

Instalimi i Docker në CentOS 7

Instalimi i Docker në CentOS 7

Përdorimi i një sistemi të ndryshëm? Docker është një aplikacion që lejon vendosjen e softuerit brenda kontejnerëve virtualë. Ishte shkruar në programin Go

Instalimi i Docker CE në Debian 9

Instalimi i Docker CE në Debian 9

Përdorimi i një sistemi të ndryshëm? Hyrje Docker është një aplikacion që lejon vendosjen e softuerit brenda kontejnerëve virtualë. Ishte shkruar në G

Filloni me SQL Server 2017 (MS-SQL) në CentOS 7 me Docker

Filloni me SQL Server 2017 (MS-SQL) në CentOS 7 me Docker

Parakushtet Docker engine 1.8+. Minimumi 4 GB hapësirë ​​në disk. Minimumi 4 GB RAM. Hapi 1. Instalo Docker Për të instaluar SQL-Server, Docker mus

Sesion ngjitës me Docker Swarm (CE) në Debian 9

Sesion ngjitës me Docker Swarm (CE) në Debian 9

Përdorimi i një sistemi të ndryshëm? Hyrje Docker Swarm i kthen serverët tuaj individualë në një grup kompjuterash; lehtësimi i shkallëzimit, disponueshmëria e lartë dhe

Dy Mjete Menaxhimi Grafik Docker: DockerUI dhe Kantieri i anijeve

Dy Mjete Menaxhimi Grafik Docker: DockerUI dhe Kantieri i anijeve

Me ndihmën e aplikacionit Vultr Docker, ju mund të vendosni lehtësisht Docker në shembullin e serverit tuaj Vultr. Ndërkohë, ju mund të lehtësoni detyrën e menaxhimit të Docker

Instaloni serverin Rancher në RancherOS

Instaloni serverin Rancher në RancherOS

Përmbledhje RancherOS është një sistem operativ tepër i lehtë (vetëm rreth 60 MB) që drejton një sistem Docker daemon si PID 0 për ekzekutimin e shërbimeve të sistemit

Fillimi me Kubernetes në CentOS 7

Fillimi me Kubernetes në CentOS 7

Kubernetes është një platformë me burim të hapur e zhvilluar nga Google për menaxhimin e aplikacioneve me kontejnerë nëpër një grup serverësh. Ajo ndërtohet mbi një dekadë dhe

Instaloni Rancher në Ubuntu 16.04

Instaloni Rancher në Ubuntu 16.04

Përdorimi i një sistemi të ndryshëm? Hyrje Rancher është një platformë me burim të hapur për drejtimin e kontejnerëve dhe ndërtimin e një shërbimi privat të kontejnerëve. Rancher është bazë

Ngritja e makinave: Aplikimet në botën reale të AI

Ngritja e makinave: Aplikimet në botën reale të AI

Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.

Sulmet DDOS: Një përmbledhje e shkurtër

Sulmet DDOS: Një përmbledhje e shkurtër

A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.

Evolucioni i ruajtjes së të dhënave - Infografik

Evolucioni i ruajtjes së të dhënave - Infografik

Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Së fundmi Apple lëshoi ​​macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë