Administrera jails via bastille i FreeBSD: Difference between revisions

From Peters wiki
Jump to navigation Jump to search
Tag: Reverted
 
(12 intermediate revisions by the same user not shown)
Line 26: Line 26:
Vi kommer köra jails i privata nätverk och öppna upp access till nginx genom att göra port-forwarding av port 8080 på host:en till nginx. Kör följande kommandon:
Vi kommer köra jails i privata nätverk och öppna upp access till nginx genom att göra port-forwarding av port 8080 på host:en till nginx. Kör följande kommandon:


{{RootCmd|<nowiki>sysrc cloned_interfaces+=lo1</nowiki>|sysrc ifconfig_lo1_name="bastille0"|service netif cloneup}}
{{RootCmd|<nowiki>sysrc cloned_interfaces+=lo1</nowiki>|<nowiki>sysrc ifconfig_lo1_name="bastille0"</nowiki>|service netif cloneup}}
 
Editera filen /etc/pf.conf:
 
{{bc|1=
ext_if="igb0"
 
set block-policy return
scrub in on $ext_if all fragment reassemble
set skip on lo
 
table <jails> persist
nat on $ext_if from <jails> to any -> ($ext_if:0)
rdr-anchor "rdr/*"
 
block in all
pass out quick keep state
antispoof for $ext_if inet
pass in inet proto tcp from any to any port ssh flags S/SA keep state
}}
 
{{Note|Dessa regler kommer blocka all trafik till host:en utom SSH (port 22). Om du vill komma åt tjänster som körs direkt på host:en måste du addera regler för dessa.}}
 
Starta pf genom att köra:
 
{{RootCmd|<nowiki>sysrc pf_enable=YES</nowiki>|service pf start}}
 
== Skapa ett jail med nginx ==
 
Hämta FreeBSD 13.2-RELEASE och även alla patchar:
 
{{RootCmd|bastille bootstrap 13.2-RELEASE update}}
 
Skapa ett jail som heter jail1 med IP adress 10.0.0.1:
 
{{RootCmd|bastille create jail1 13.2-RELEASE 10.0.0.1}}
 
Installera sen nginx och se till att servicen startar när jailet startar:
 
{{RootCmd|bastille pkg jail1 install -y nginx|<nowiki>bastille sysrc jail1 nginx_enable=YES</nowiki>|bastille service jail1 nginx start}}
 
Verifiera att webservern är uppe:
 
{{Cmd|curl 10.0.0.1}}
{{bc|1=
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
...
}}
 
== Port-forwarding ==
 
För att kunna accessa webservern utifrån, så kan vi sätta upp port-forwarding av inkommande trafik på port 8080 och skicka det till jailets port 80 via kommandot:
 
{{RootCmd|bastille rdr jail1 tcp 8080 80}}
 
Verifiera att du nu kan nå webservern utifrån genom att accessa <host>:8080.
 
== Starta jailet automatiskt vid boot ==
 
För att starta jailet automatiskt då maskinen bootar, kör kommandona:
 
{{RootCmd|<nowiki>sysrc bastille_enable=YES</nowiki>|<nowiki>sysrc bastille_list+=jail1</nowiki>}}


[[Category:Guide]]
[[Category:Guide]]

Latest revision as of 21:21, 12 August 2023


Denna guide visar hur man kan köra nginx i ett jail via bastille i FreeBSD 13.2.

Installation

Installera bastille genom kommandot:

root # pkg install bastille


Konfiguration

Vi kommer köra bastille på en ZFS pool som heter trunk och vår router har IP adress 192.168.0.1. Editera filen /usr/local/etc/bastille/bastille.conf och se till att följande är konfigurerat:

bastille_tzdata="Europe/Stockholm"
bastille_zfs_enable="YES"
bastille_zfs_zpool="trunk"
bastille_network_gateway="192.168.0.1"

Nätverk

Vi kommer köra jails i privata nätverk och öppna upp access till nginx genom att göra port-forwarding av port 8080 på host:en till nginx. Kör följande kommandon:

root # sysrc cloned_interfaces+=lo1
root #
sysrc ifconfig_lo1_name="bastille0"
root #
service netif cloneup

Editera filen /etc/pf.conf:

ext_if="igb0"

set block-policy return
scrub in on $ext_if all fragment reassemble
set skip on lo

table <jails> persist
nat on $ext_if from <jails> to any -> ($ext_if:0)
rdr-anchor "rdr/*"

block in all
pass out quick keep state
antispoof for $ext_if inet
pass in inet proto tcp from any to any port ssh flags S/SA keep state


Notering: Dessa regler kommer blocka all trafik till host:en utom SSH (port 22). Om du vill komma åt tjänster som körs direkt på host:en måste du addera regler för dessa.


Starta pf genom att köra:

root # sysrc pf_enable=YES
root #
service pf start

Skapa ett jail med nginx

Hämta FreeBSD 13.2-RELEASE och även alla patchar:

root # bastille bootstrap 13.2-RELEASE update

Skapa ett jail som heter jail1 med IP adress 10.0.0.1:

root # bastille create jail1 13.2-RELEASE 10.0.0.1

Installera sen nginx och se till att servicen startar när jailet startar:

root # bastille pkg jail1 install -y nginx
root #
bastille sysrc jail1 nginx_enable=YES
root #
bastille service jail1 nginx start

Verifiera att webservern är uppe:

user $ curl 10.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
...

Port-forwarding

För att kunna accessa webservern utifrån, så kan vi sätta upp port-forwarding av inkommande trafik på port 8080 och skicka det till jailets port 80 via kommandot:

root # bastille rdr jail1 tcp 8080 80

Verifiera att du nu kan nå webservern utifrån genom att accessa <host>:8080.

Starta jailet automatiskt vid boot

För att starta jailet automatiskt då maskinen bootar, kör kommandona:

root # sysrc bastille_enable=YES
root #
sysrc bastille_list+=jail1