Preparāti
OS iestatīšana
Tīkls
SSH piekļuve
Papildu iestatījumi
Portu pārsūtīšana
Atsevišķi konteineri
LXC konteineri (Linux konteineri) ir operētājsistēmas līdzeklis operētājsistēmā Linux, ko var izmantot, lai vienā resursdatorā darbinātu vairākas izolētas Linux sistēmas.
Šie norādījumi sniegs jums informāciju par servera konfigurācijas pamata darbībām izolētu Linux konteineru mitināšanai. Mēs konfigurēsim šādas funkcijas:
- LXC konteineri ar Ubuntu 14.
- Linux tīkla iestatījumi un portu pāradresācija konteineriem.
- SSH pārsūtīšana konteineru administrēšanai tikpat vienkārša kā
ssh [email protected]
unssh [email protected]
- Nginx starpniekservera konfigurācija, lai piekļūtu vietnēm konteineros (pēc saimniekdatora nosaukuma).
- Papildu drošības uzlabojumi pareizai servera pārvaldībai.
Šajā rokasgrāmatā tiek pieņemts, ka:
- Jums ir konts vietnē Vultr.com .
- Jūs zināt, kā konfigurēt virtuālo mašīnu ar pielāgotu ISO.
- Jūs zināt, kā izmantot SSH atslēgas, un esat jau ģenerējis publiskās un privātās atslēgas.
Apmācības beigās mēs iegūsim divus virtuālos konteinerus, kuriem būs piekļuve internetam, taču tie nevarēs ping viens otru. Mēs arī konfigurēsim portu pārsūtīšanu no example.com
uz konteineriem. Mēs izvietosim drošu konfigurācijas un pārvaldības paneli, izmantojot Proxmox paketes rīkus.
Preparāti
Mēs izmantosim Proxmox tikai LXC konteineru pārvaldībai. Parasti tas atbalsta arī KVM, taču Vultr ir aizliegta ligzdotā virtualizācija. Pirms darba sākšanas no oficiālās vietnes ir jālejupielādē Proxmox ISO. Mēs izmantosim Proxmox VE 5.0 ISO Installer
. Instalējiet OS no attēla ar noklusējuma iestatījumiem un restartējiet virtuālo mašīnu. Varat arī manuāli instalēt proxmox no avotiem, taču vairumā gadījumu tas nav nepieciešams (izpildiet šeit sniegtos norādījumus ).
OS iestatīšana
Izveidojiet savienojumu ar savu resursdatoru, izmantojot SSH, atjauniniet proxmox veidņu sarakstu un lejupielādējiet piemērotu veidni konteineriem.
apt-get update
pveam update
pveam available
pveam download local ubuntu-14.04-standard_14.04-1_amd64.tar.gz
Tagad mums ir jāizveido Linux konteiners ar tīkla interfeisu, kas savienots ar Linux tiltu. Atveriet /etc/network/interfaces
un pievienojiet šādas rindas:
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ēc sistēmas atsāknēšanas no Ubuntu 14.04
veidnes varat izveidot jaunu konteineru .
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
Varat verificēt konteineru, izmantojot pct list
, sāciet konteineru Nr. 200 ar pct start 200
un ievadiet tā apvalku ar pct enter 200
. Varat arī pārbaudīt tīkla iestatījumus un adreses, izmantojot ip addr
.
Tīkls
Lai nodrošinātu interneta savienojumu jūsu konteinerā, mums ir jāiespējo NAT
. Tālākais ļaus pārsūtīt trafiku no konteinera uz internetu, izmantojot NAT tehnoloģiju. vmbr0
Tilts ir savienots ar ārējo interfeisu un vmbr1
tilts ir savienota ar konteineru.
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
Ievadiet konteineru pct enter 200
un konfigurējiet tajā esošo tīmekļa serveri.
apt-get update
apt-get install nginx
service nginx start
exit
Tagad mums ir jākonfigurē Nginx jūsu serverī, lai starpniekservera vietnes ievietotu konteineros.
apt-get update
apt-get install nginx
Izveidojiet jaunu konfigurācijas failu /etc/nginx/sites-available/box200
ar šādu saturu:
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/;
}
}
Tagad Nginx katru HTTP pieprasījumu server200.example.com
no jūsu servera pārsūtīs uz konteineru ar IP 10.100.0.200. Aktivizējiet šo konfigurāciju.
ln -s /etc/nginx/sites-available/box200 /etc/nginx/sites-enabled/
service nginx restart
SSH piekļuve
Ja vēlaties nodrošināt vieglu piekļuvi smilšu kastēm, jums ir jāpārsūta SSH sesijas konteineros. Lai to izdarītu, saknes serverī izveidojiet jaunu lietotāju. Neaizmirstiet ievadīt paroli, citi parametri nav nepieciešami.
adduser box200
su - box200
ssh-keygen
cat .ssh/id_rsa.pub
exit
Kopējiet šo SSH atslēgu un ievadiet konteineru, lai pievienotu atslēgu.
pct enter 200
mkdir .ssh
nano .ssh/authorized_keys
exit
Savā serverī .ssh/authorized_keys
failam pievienojiet šādu rindiņu .
command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>
Neaizmirstiet nomainīt <YOUR SSH KEY>
uz mājas publisko atslēgu. Varat arī palaist tālāk norādīto no komandrindas.
echo 'command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>' >> .ssh/authorized_keys
Pēc tam varat izveidot savienojumu ar savu smilšu kasti, izmantojot ssh.
`ssh box200@<your_server_IP>`
Papildu iestatījumi
Ir pienācis laiks ieviest vairākus drošības uzlabojumus. Pirmkārt, mēs vēlamies mainīt noklusējuma SSH portu. Tad mēs vēlamies aizsargāt mūsu Proxmox pārvaldības lapu ar pamata HTTP autentifikāciju.
nano /etc/ssh/sshd_config
Atceliet komentāru un mainiet līniju
#Port 22
uz
Port 24000
Restartējiet ssh.
service ssh restart
Atkārtoti izveidojiet savienojumu ar ssh, izmantojot jauno portu.
ssh root@<your_IP> -p 24000
Iestatiet Proxmox paroli.
Izveidot failu /etc/default/pveproxy
.
ALLOW_FROM="127.0.0.1"
DENY_FROM="all"
POLICY="allow"
Restartējiet, pveproxy
lai izmaiņas stātos spēkā.
/etc/init.d/pveproxy restart
Konfigurējiet nginx (ja iepriekš to neesat izdarījis).
apt-get install nginx
service nginx restart
Izveidojiet noklusējuma konfigurāciju /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; }
}
Iegūstiet derīgu SSL sertifikātu un atjauniniet savu nginx konfigurāciju. Piemēram, to var izdarīt ar certbox un letsencrypt palīdzību. Lai iegūtu vairāk informācijas, noklikšķiniet šeit .
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
./certbot-auto --nginx
Tagad jūsu nginx konfigurācijai vajadzētu izskatīties šādi (vai arī pēc tam varat to mainīt manuāli). Neaizmirstiet noņemt komentārus ssl, auth un atrašanās vietas rindiņām.
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
}
Izveidojiet /etc/htpasswd
failu, izmantojot Htpasswd ģeneratoru .
nano /etc/nginx/htpasswd
Restartējiet Nginx
service nginx restart
https://example.com
Pēc pamata autentifikācijas tagad varat skatīt pārvaldības konsoli .
Portu pārsūtīšana
Tagad konteineri ir pieejami, izmantojot HTTP pieprasījumus un SSH. Tagad mēs varam konfigurēt portu pārsūtīšanu no ārējā servera uz konteineriem. Piemēram, kartēšanai, example.com:8080
lai 10.100.0.200:3000
ievadītu tālāk norādīto.
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8080 -j DNAT --to 10.100.0.200:3000
Jūs varat apskatīt pašreizējos noteikumus.
`iptables -t nat -v -L PREROUTING -n --line-number`
Varat arī dzēst kārtulu pēc numura, veicot tālāk norādītās darbības.
`iptables -t nat -D PREROUTING <#>`.
Atsevišķi konteineri
Tagad mēs varam piekļūt vienam konteineram no cita.
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
Ja vēlaties ierobežot piekļuvi no 250. konteinera līdz 200. konteiners, jums ir jāsavieno katrs konteiners ar personīgo tiltu un jāatspējo pārsūtīšana starp tiltiem.
Dzēst esošos konteinerus.
pct stop 200
pct stop 250
pct destroy 200
pct destroy 250
Mainīt saturu /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
sistēma
Iespējot pārsūtīšanu
`sysctl -w net.ipv4.ip_forward=1`
Lai padarītu šīs izmaiņas pastāvīgas, varat rediģēt /etc/sysctl.conf
failu un atrast šādu tekstu.
#net.ipv4.ip_forward=1
Atceliet komentārus.
net.ipv4.ip_forward=1
Varat arī palaist, sysctl -p
lai izmaiņas stātos spēkā nekavējoties.
Izveidojiet konteinerus.
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
Sāciet konteinerus ar pct start 200
un pct start 250
.
Iztīriet iptables
noteikumus.
iptables -F
Iespējot NAT.
iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
vmbr0
ir tilts, kas ietver ārējo saskarni.
Atļaut pārsūtīšanu no ārējā interfeisa.
iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
Atļaut pārsūtīšanu no konteineriem uz internetu.
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
Atmetiet citu pārsūtīšanu.
iptables -A FORWARD -i vmbr1 -j DROP
iptables -A FORWARD -i vmbr2 -j DROP
Tagad pārbaudiet, kas 10.100.1.200
var ping, 8.8.8.8
bet nevar, 10.100.2.250
un kas 10.100.2.250
var ping, 8.8.8.8
bet nevar ping 10.100.1.200
.
Svarīga ir ar iptables saistīto komandu secība. Labākais veids, kā izmantot savus noteikumus, ir izmantot iptables-persistent
. Šī pakete palīdz jums ietaupīt iptables noteikumus failiem /etc/iptables/rules.v4
un /etc/iptables/rules.v6
, un tas var automātiski ielādēt tos pēc sistēmas atsāknēšana. Vienkārši instalējiet to ar tālāk norādīto.
apt-get install iptables-persistent
Atlasiet, YES
kad tiek prasīts.