Përgatitjet
Konfigurimi i OS
Rrjeti
Qasja SSH
Cilësimet shtesë
Port Forwarding
Kontejnerë të ndara
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.com
te 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/interfaces
dhe 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.04
shablloni.
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 200
dhe 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. vmbr0
Ura është e lidhur me ndërfaqen e jashtme dhe vmbr1
ura ë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 200
dhe 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/box200
me 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.com
nga 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_keys
skedar.
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 pveproxy
që 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/htpasswd
skedar 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.com
pas 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:8080
për të 10.100.0.200:3000
futur 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.
Fshi kontejnerët ekzistues.
pct stop 200
pct stop 250
pct destroy 200
pct destroy 250
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
reboot
sistemi
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.conf
skedarin 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 -p
për të bërë që ndryshimet të hyjnë në fuqi menjëherë.
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
Filloni kontejnerët me pct start 200
dhe pct start 250
.
Pastro iptables
rregullat.
iptables -F
Aktivizo NAT.
iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
vmbr0
është ura që përfshin ndërfaqen e jashtme.
Lejo përcjelljen nga ndërfaqja e jashtme.
iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
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
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.200
mund të bëjë ping, 8.8.8.8
por nuk mund të bëjë ping 10.100.2.250
dhe që 10.100.2.250
mund të bëjë ping, 8.8.8.8
por 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.v4
dhe /etc/iptables/rules.v6
dhe kjo automatikisht mund të ngarkesës ato pas sistemit reboot. Thjesht instaloni atë me sa vijon.
apt-get install iptables-persistent
Zgjidhni YES
kur ju kërkohet.