Valmistelut
Käyttöjärjestelmän asennus
Verkko
SSH pääsy
Lisäasetukset
Portin uudelleenohjaus
Erilliset säiliöt
LXC-säilöt (Linux-säilöt) ovat Linuxin käyttöjärjestelmäominaisuus, jota voidaan käyttää useiden erillisten Linux-järjestelmien ajamiseen yhdellä isännällä.
Nämä ohjeet opastavat sinut yksittäisten Linux-säilöjen isännöinnin palvelimen määrittämisen perusvaiheiden läpi. Määritämme seuraavat ominaisuudet:
- LXC-säiliöt Ubuntu 14:llä.
- Linux-verkkoasetukset ja portin edelleenohjaus säilöille.
- SSH-edelleenlähetys kontin hallintaan yhtä helppoa kuin
ssh [email protected]
jassh [email protected]
- Nginx-välityspalvelinmääritykset säilöissä olevien verkkosivustojen käyttämiseen (isäntänimen mukaan).
- Muita suojausparannuksia kunnolliseen palvelimen hallintaan.
Tässä oppaassa oletetaan, että:
- Sinulla on tili osoitteessa Vultr.com .
- Tiedät kuinka määrittää virtuaalikoneen mukautetulla ISO:lla.
- Osaat käyttää SSH-avaimia ja olet jo luonut julkiset ja yksityiset avaimet.
Opetusohjelman lopussa saamme kaksi virtuaalikonttia, joilla on pääsy Internetiin, mutta jotka eivät voi pingata toisiaan. Konfiguroimme myös porttiohjauksen kohteesta example.com
konteihin. Otamme käyttöön suojatun konfiguroinnin ja hallintapaneelin Proxmox-paketin työkalujen avulla.
Valmistelut
Käytämme Proxmoxia vain LXC-konttien hallintaan. Yleensä se tukee myös KVM:ää, mutta sisäkkäinen virtualisointi on kielletty Vultrissa. Ennen aloittamista Proxmox ISO tulee ladata viralliselta verkkosivustolta. Käytämme Proxmox VE 5.0 ISO Installer
. Asenna käyttöjärjestelmä kuvasta oletusasetuksilla ja käynnistä virtuaalikone uudelleen. Voit myös asentaa proxmoxin manuaalisesti lähteistä, mutta se ei ole useimmissa tapauksissa välttämätöntä (noudata ohjeita täällä ).
Käyttöjärjestelmän asennus
Yhdistä isäntään SSH:lla, päivitä proxmox-malliluettelo ja lataa sopiva malli säilöille.
apt-get update
pveam update
pveam available
pveam download local ubuntu-14.04-standard_14.04-1_amd64.tar.gz
Nyt meidän on luotava linux-säilö, jossa on verkkoliitäntä, joka on kytketty linux-sillalle. Avaa /etc/network/interfaces
ja liitä seuraavat rivit:
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
Järjestelmän uudelleenkäynnistyksen jälkeen voit luoda uuden säilön Ubuntu 14.04
mallista.
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
Voit vahvistaa säilön käyttämällä pct list
, aloita säilön #200 kentällä pct start 200
ja syötä sen kuori painikkeella pct enter 200
. Voit myös tarkistaa verkkoasetukset ja osoitteet -painikkeella ip addr
.
Verkko
Jotta voimme tarjota Internet-yhteyden säilösi sisällä, meidän on otettava käyttöön NAT
. Seuraava mahdollistaa liikenteen välittämisen kontista Internetiin NAT-tekniikan avulla. vmbr0
Silta on yhdistetty ulkoisen liitännän ja vmbr1
silta on yhdistetty säiliöihin.
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
Syötä säilö pct enter 200
ja määritä verkkopalvelin sisällä.
apt-get update
apt-get install nginx
service nginx start
exit
Nyt meidän on määritettävä Nginx palvelimellasi välittämään verkkosivustot säilöihin.
apt-get update
apt-get install nginx
Luo uusi konfiguraatiotiedosto /etc/nginx/sites-available/box200
seuraavalla sisällöllä:
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 server200.example.com
välittää nyt jokaisen HTTP-pyynnön palvelimeltasi säilöön, jonka IP-osoite on 10.100.0.200. Aktivoi tämä kokoonpano.
ln -s /etc/nginx/sites-available/box200 /etc/nginx/sites-enabled/
service nginx restart
SSH pääsy
Jos haluat tarjota helpon pääsyn hiekkalaatikoihin, sinun on välitettävä SSH-istunnot säilöihin. Luo uusi käyttäjä juuripalvelimellesi. Älä unohda syöttää salasanaa, muut parametrit eivät ole välttämättömiä.
adduser box200
su - box200
ssh-keygen
cat .ssh/id_rsa.pub
exit
Kopioi tämä SSH-avain ja lisää avain kirjoittamalla säilö.
pct enter 200
mkdir .ssh
nano .ssh/authorized_keys
exit
Lisää palvelimellasi .ssh/authorized_keys
tiedostoon seuraava rivi .
command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>
Älä unohda vaihtaa <YOUR SSH KEY>
kotisi julkiseen avaimeen. Vaihtoehtoisesti voit suorittaa seuraavan komentoriviltä.
echo 'command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>' >> .ssh/authorized_keys
Sitten voit muodostaa yhteyden hiekkalaatikkoosi ssh:lla.
`ssh box200@<your_server_IP>`
Lisäasetukset
On aika toteuttaa useita tietoturvaparannuksia. Ensinnäkin haluamme muuttaa oletusarvoista SSH-porttia. Sitten haluamme suojata Proxmox-hallintasivumme HTTP-perustodennuksen avulla.
nano /etc/ssh/sshd_config
Poista kommentti ja muuta riviä
#Port 22
kohtaan
Port 24000
Käynnistä ssh uudelleen.
service ssh restart
Yhdistä uudelleen ssh-verkkoon uudella portilla.
ssh root@<your_IP> -p 24000
Aseta Proxmox-salasana.
Luo tiedosto /etc/default/pveproxy
.
ALLOW_FROM="127.0.0.1"
DENY_FROM="all"
POLICY="allow"
Käynnistä uudelleen pveproxy
, jotta muutokset tulevat voimaan.
/etc/init.d/pveproxy restart
Määritä nginx (jos et ole tehnyt sitä aiemmin).
apt-get install nginx
service nginx restart
Luo oletusmääritys kohteessa /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; }
}
Hanki kelvollinen SSL-varmenne ja päivitä nginx-kokoonpanosi. Se voidaan tehdä esimerkiksi certboxin ja letsencryptin avulla. Saat lisätietoja napsauttamalla tätä .
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
./certbot-auto --nginx
Nyt nginx-kokoonpanosi pitäisi näyttää tältä (tai voit muuttaa sen manuaalisesti sen jälkeen). Älä unohda poistaa kommentteja ssl-, auth- ja sijaintiriveistä.
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
}
Luo /etc/htpasswd
tiedosto käyttämällä Htpasswd-generaattoria .
nano /etc/nginx/htpasswd
Käynnistä Nginx uudelleen
service nginx restart
Voit nyt tarkastella hallintakonsolia https://example.com
perustodennuksen jälkeen.
Portin uudelleenohjaus
Säilöt ovat nyt saatavilla HTTP-pyynnöillä ja SSH:lla. Nyt voimme määrittää portin edelleenlähetyksen ulkoisesta palvelimesta säilöihin. Esimerkiksi kartoittaaksesi example.com:8080
seuraavan 10.100.0.200:3000
syötteen.
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8080 -j DNAT --to 10.100.0.200:3000
Voit tarkastella voimassa olevia sääntöjä.
`iptables -t nat -v -L PREROUTING -n --line-number`
Voit myös poistaa säännön numeron mukaan seuraavilla tavoilla.
`iptables -t nat -D PREROUTING <#>`.
Erilliset säiliöt
Voimme nyt käyttää yhtä konttia toisesta.
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
Jos haluat rajoittaa pääsyä säiliöstä 250 200:een, sinun on yhdistettävä jokainen kontti henkilökohtaiseen siltaan ja poistettava edelleenlähetys siltojen välillä.
Poista olemassa olevat säilöt.
pct stop 200
pct stop 250
pct destroy 200
pct destroy 250
Muuta sisällön /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
systeemi
Ota edelleenlähetys käyttöön
`sysctl -w net.ipv4.ip_forward=1`
Voit tehdä näistä muutoksista pysyviä muokkaamalla /etc/sysctl.conf
tiedostoa ja etsimällä seuraavan tekstin.
#net.ipv4.ip_forward=1
Peruuta kommentti.
net.ipv4.ip_forward=1
Voit myös suorittaa sysctl -p
muutokset, jotta muutokset tulevat voimaan välittömästi.
Luo säiliöitä.
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äynnistä säiliöt painikkeilla pct start 200
ja pct start 250
.
Huuhtele iptables
säännöt.
iptables -F
Ota NAT käyttöön.
iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
vmbr0
on silta, joka sisältää ulkoisen liitännän.
Salli edelleenlähetys ulkoisesta käyttöliittymästä.
iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
Salli edelleenlähetys säilöistä Internetiin.
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
Jätä toinen edelleenlähetys.
iptables -A FORWARD -i vmbr1 -j DROP
iptables -A FORWARD -i vmbr2 -j DROP
Tarkista nyt, että 10.100.1.200
voi ping, 8.8.8.8
mutta ei voi ping 10.100.2.250
ja että 10.100.2.250
voi ping, 8.8.8.8
mutta ei voi ping 10.100.1.200
.
Iptablesiin liittyvien komentojen järjestys on tärkeä. Paras tapa käyttää sääntöjäsi on käyttää iptables-persistent
. Tämä paketti auttaa säästämään iptables sääntöjä tiedostot /etc/iptables/rules.v4
ja /etc/iptables/rules.v6
ja se voi automaattisesti ladata niitä jälkeen järjestelmän uudelleenkäynnistyksen. Asenna se vain seuraavilla tavoilla.
apt-get install iptables-persistent
Valitse YES
pyydettäessä.