Ettevalmistused
OS-i seadistamine
Võrk
SSH juurdepääs
Lisaseaded
Pordi edastamine
Eraldatud konteinerid
LXC konteinerid (Linux konteinerid) on Linuxi operatsioonisüsteemi funktsioon, mida saab kasutada mitme isoleeritud Linuxi süsteemi käitamiseks ühes hostis.
Need juhised juhendavad teid isoleeritud Linuxi konteinerite hostimise serveri konfigureerimise põhietapid. Konfigureerime järgmised funktsioonid:
- LXC konteinerid Ubuntu 14-ga.
- Linuxi võrguseaded ja konteinerite pordiedastus.
- SSH edastamine konteineri haldamiseks nii lihtne kui
ssh [email protected]
jassh [email protected]
- Nginxi puhverserveri konfiguratsioon konteinerites asuvatele veebisaitidele juurdepääsuks (hostinime järgi).
- Täiendavad turvatäiustused serveri nõuetekohaseks haldamiseks.
See juhend eeldab, et:
- Teil on konto aadressil Vultr.com .
- Teate, kuidas virtuaalset masinat kohandatud ISO-ga konfigureerida.
- Teate, kuidas SSH-võtmeid kasutada ja olete avalikud ja privaatvõtmed juba genereerinud.
Õpetuse lõpus saame kaks virtuaalset konteinerit, millel on juurdepääs Internetile, kuid mis ei saa üksteist pingida. Samuti konfigureerime pordi suunamise asukohast example.com
konteineritesse. Me juurutame turvalise konfiguratsiooni ja halduspaneeli Proxmoxi paketi tööriistade abil.
Ettevalmistused
Me kasutame Proxmoxi ainult LXC konteinerite haldamiseks. Üldiselt toetab see ka KVM-i, kuid pesastatud virtualiseerimine on Vultris keelatud. Enne alustamist tuleks ametlikult veebisaidilt alla laadida Proxmoxi ISO. Me kasutame Proxmox VE 5.0 ISO Installer
. Installige OS pildilt vaikesätetega ja taaskäivitage virtuaalmasin. Samuti saate proxmoxi käsitsi installida allikatest, kuid see pole enamikul juhtudel vajalik (järgige juhiseid siin ).
OS-i seadistamine
Ühendage oma hostiga SSH kaudu, värskendage proxmoxi mallide loendit ja laadige alla konteinerite jaoks sobiv mall.
apt-get update
pveam update
pveam available
pveam download local ubuntu-14.04-standard_14.04-1_amd64.tar.gz
Nüüd peame looma Linuxi sillaga ühendatud võrguliidesega linuxi konteineri. Avage /etc/network/interfaces
ja lisage järgmised read:
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
Pärast süsteemi taaskäivitamist saate Ubuntu 14.04
mallist luua uue konteineri .
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
Saate oma konteinerit kinnitada, kasutades pct list
, alustage konteinerit #200 pct start 200
ja sisestage selle kest nupuga pct enter 200
. Võrguseadeid ja aadresse saate kontrollida ka nupuga ip addr
.
Võrk
Teie konteineris Interneti-ühenduse pakkumiseks peame lubama NAT
. Alljärgnev võimaldab NAT-tehnoloogia abil liiklust konteinerist internetti suunata. vmbr0
Sild on ühendatud välist liidest ja vmbr1
silla on ühendatud anumate.
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
Sisestage konteiner pct enter 200
ja konfigureerige sees olev veebiserver.
apt-get update
apt-get install nginx
service nginx start
exit
Nüüd peame teie serveris konfigureerima Nginxi veebisaitide puhverserveriks konteineritesse.
apt-get update
apt-get install nginx
Looge uus /etc/nginx/sites-available/box200
järgmise sisuga konfiguratsioonifail :
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 puhverserveerib nüüd iga HTTP-päringu server200.example.com
teie serverist konteinerisse IP 10.100.0.200. Aktiveerige see konfiguratsioon.
ln -s /etc/nginx/sites-available/box200 /etc/nginx/sites-enabled/
service nginx restart
SSH juurdepääs
Kui soovite pakkuda lihtsat juurdepääsu liivakastidele, peate SSH-seansid konteineritesse edastama. Selleks looge oma juurserveris uus kasutaja. Ärge unustage parooli sisestada, muud parameetrid pole vajalikud.
adduser box200
su - box200
ssh-keygen
cat .ssh/id_rsa.pub
exit
Kopeerige see SSH-võti ja sisestage võtme lisamiseks konteiner.
pct enter 200
mkdir .ssh
nano .ssh/authorized_keys
exit
Lisage oma serveris .ssh/authorized_keys
failile järgmine rida .
command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>
Ärge unustage vahetada <YOUR SSH KEY>
oma kodu avalikku võtit. Teise võimalusena saate käsurealt käivitada järgmise.
echo 'command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>' >> .ssh/authorized_keys
Seejärel saate ssh-ga liivakastiga ühenduse luua.
`ssh box200@<your_server_IP>`
Lisaseaded
On aeg rakendada mitmeid turvatäiustusi. Esiteks tahame muuta vaike-SSH-porti. Seejärel tahame oma Proxmoxi halduslehte kaitsta lihtsa HTTP-autentimisega.
nano /etc/ssh/sshd_config
Tühista kommentaarid ja muuda rida
#Port 22
juurde
Port 24000
Taaskäivitage ssh.
service ssh restart
Ühendage uuesti ssh-ga uue pordiga.
ssh root@<your_IP> -p 24000
Määrake Proxmoxi parool.
Loo fail /etc/default/pveproxy
.
ALLOW_FROM="127.0.0.1"
DENY_FROM="all"
POLICY="allow"
pveproxy
Muudatuste jõustumiseks taaskäivitage .
/etc/init.d/pveproxy restart
Seadistage nginx (kui te pole seda varem teinud).
apt-get install nginx
service nginx restart
Looge vaikekonfiguratsioon rakenduses /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; }
}
Hankige kehtiv SSL-sertifikaat ja värskendage oma nginxi konfiguratsiooni. Näiteks saab seda teha certboxi ja letsencrypti abil. Lisateabe saamiseks klõpsake siin .
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
./certbot-auto --nginx
Nüüd peaks teie nginxi konfiguratsioon välja nägema selline (või saate seda hiljem käsitsi muuta). Ärge unustage ssl-, auth- ja asukoharidade kommentaare tühistada.
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
}
Looge /etc/htpasswd
fail Htpasswd generaatori abil .
nano /etc/nginx/htpasswd
Taaskäivitage Nginx
service nginx restart
Nüüd saate https://example.com
pärast põhiautentimist vaadata halduskonsooli .
Pordi edastamine
Konteinerid on nüüd saadaval HTTP-päringute ja SSH kaudu. Nüüd saame konfigureerida pordi edastamise välisest serverist konteineritesse. Näiteks kaardistamiseks example.com:8080
järgmise 10.100.0.200:3000
sisestamiseks.
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8080 -j DNAT --to 10.100.0.200:3000
Saate vaadata kehtivaid reegleid.
`iptables -t nat -v -L PREROUTING -n --line-number`
Reegli numbri järgi saate kustutada ka järgmisega.
`iptables -t nat -D PREROUTING <#>`.
Eraldatud konteinerid
Nüüd pääseme ühele konteinerile teisest juurde.
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
Kui soovite piirata juurdepääsu konteinerilt 250 kuni 200, peate ühendama iga konteineri isikliku sillaga ja keelama sildadevahelise edastamise.
Kustutage olemasolevad konteinerid.
pct stop 200
pct stop 250
pct destroy 200
pct destroy 250
Muuda sisu /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
reboot
süsteem
Luba edastamine
`sysctl -w net.ipv4.ip_forward=1`
Nende muudatuste püsivaks muutmiseks saate /etc/sysctl.conf
faili redigeerida ja leida järgmise teksti.
#net.ipv4.ip_forward=1
Tühista see kommentaar.
net.ipv4.ip_forward=1
Saate ka käivitada, sysctl -p
et muudatused kohe jõustuksid.
Loo konteinerid.
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
Käivitage konteinerid nupuga pct start 200
ja pct start 250
.
Loputage iptables
reegleid.
iptables -F
Luba NAT.
iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
vmbr0
on sild, mis sisaldab välist liidest.
Luba edastamine välisest liidesest.
iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
Lubage konteineritest internetti edastada.
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
Loobuge muust edastamisest.
iptables -A FORWARD -i vmbr1 -j DROP
iptables -A FORWARD -i vmbr2 -j DROP
Nüüd kontrollige, kas 10.100.1.200
saab pingida, 8.8.8.8
kuid ei saa pingida 10.100.2.250
ja mis 10.100.2.250
saab pingida, 8.8.8.8
kuid ei saa pingida 10.100.1.200
.
Oluline on iptablesiga seotud käskude järjekord. Parim viis reeglite kasutamiseks on kasutada iptables-persistent
. See pakett aitab säästa iptables reeglid failid /etc/iptables/rules.v4
ja /etc/iptables/rules.v6
ja see võib automaatselt laadima neid pärast süsteemi taaskäivitamist. Installige see lihtsalt järgmisega.
apt-get install iptables-persistent
Valige, YES
kui seda küsitakse.