Projekt

Allgemein

Profil

Aktionen

Aufgabe #1988

offen

Aufgabe #1948: evakuierung aller möglicher daten vom havarierten system srs1337

Neues hosting von Plone

Von GoeranHeinemann vor 3 Monaten hinzugefügt. Vor etwa 1 Monat aktualisiert.

Status:
Feedback
Priorität:
Hoch
Zugewiesen an:
Kategorie:
-
Beginn:
06.09.2024
Abgabedatum:
% erledigt:

100%

Geschätzter Aufwand:
10:00 h

Beschreibung

Als der zpool in srs1337 kaputt gegangen ist haben wir einen Desktop PC mit zwei gemirrorten SSDs und FreeBSD 14 als Ersatzsystem installiert. Auf dem Bachup Server hatten wir ein recht aktuelles Backup liegen, welches mit zfs send / receive importiert wurde.


Dateien

Untitled Diagram.drawio (4,86 KB) Untitled Diagram.drawio geplantes setup mit jails und bridges GoeranHeinemann, 06.09.2024 14:39
Screenshot from 2024-09-06 16-42-53.png (31 KB) Screenshot from 2024-09-06 16-42-53.png Diagramm Jails GoeranHeinemann, 06.09.2024 14:43
Aktionen #1

Von GoeranHeinemann vor 3 Monaten aktualisiert

In dem diagramm sind zwei virtuelle bridges zu sehen, an die die jails mit epairs gebunden werden. Das Jail für Plone kann dadurch nur durch nginx erreicht werden.

Aktionen #3

Von GoeranHeinemann vor 3 Monaten aktualisiert

Wir haben den Freebsd Host wie folgt in /etc/rc.confkonfiguriert:

clear_tmp_enable="YES" 
syslogd_flags="-ss" 
keymap="de.kbd" 
sshd_enable="YES" 
ntpd_enable="YES" 
ntpd_sync_on_start="YES" 
powerd_enable="YES" 
moused_nondefault_enable="NO" 
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO" 
zfs_enable="YES" 
auditd_enable="YES" 

gateway_enable="NO" 
hostname="freebsd-test" 
defaultrouter="141.56.51.254" 
cloned_interfaces="bridge0 bridge1" 
ifconfig_bridge0="inet 141.56.51.1/24 addm vtnet0 up name extern" 
ifconfig_bridge1="up name intern" 
ifconfig_vtnet0="up" 
jail_enable="YES" 

Dazu sind folgende Jails konfiguriert:

exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown jail";
exec.clean;
mount.devfs;

path = "/jails/$name";

allow.raw_sockets;
vnet;

host.hostname = "$name";

proxy {
        $id = 1;
        vnet.interface = "epair${id}b";
        vnet.interface += "epair${id}1b";
        exec.prestart = "ifconfig epair${id} create up";
        exec.prestart += "ifconfig epair${id}1 create up";
        exec.prestart += "ifconfig epair${id}a up descr jail:${name}";
        exec.prestart += "ifconfig epair${id}1a up descr jail:${name}";
        exec.prestart += "ifconfig extern addm epair${id}a up";
        exec.prestart += "ifconfig intern addm epair${id}1a up";
        exec.start    += "ifconfig epair${id}b 10.1.1.90/24 up";
        #exec.start    += "ifconfig epair${id}b 141.56.51.5/24 up";
        exec.start    += "ifconfig epair${id}1b 10.0.0.1/24 up";
        exec.start    += "route add default 10.1.1.1";
        #exec.start    += "route add default 141.56.51.254";
        exec.poststop = "ifconfig extern deletem epair${id}a";
        exec.poststop = "ifconfig intern deletem epair${id}1a";
        exec.poststop += "ifconfig epair${id}a destroy";
        exec.poststop += "ifconfig epair${id}1a destroy";
}

website {
        $id = 2;
        vnet.interface = "epair${id}b";
        exec.prestart = "ifconfig epair${id} create up";
        exec.prestart += "ifconfig epair${id}a up descr jail:${name}";
        exec.prestart += "ifconfig intern addm epair${id}a up";
        exec.start    += "ifconfig epair${id}b 10.0.0.2/24 up";
        #exec.start    += "route add default 141.56.51.254";
        exec.poststop = "ifconfig intern deletem epair${id}a";
        exec.poststop += "ifconfig epair${id}a destroy";
}

Das Jail Proxy hat zwei interfaces, eines zu der internen und eins zu der externen Bridge. Nginx soll extern allen traffic entgegen nehmen, SSL-Zertifikate verwalten und allen Traffic zu der internen ip von Plone weiterleiten.

Danach müssen noch alle notwendigens zfs datasets erstellt werden:

zfs create zroot/jails
zfs create zroot/jails/proxy

bsdinstall jail /jails/proxy
pkg -c /jails/proxy install nginx py311-certbot py311-certbot-nginx

Aktionen #4

Von GoeranHeinemann vor 3 Monaten aktualisiert

in der nginx config vom Proxy Server muss zuerst noch folgendes angepasst werden für die weiterleitung:

location / {                                                                  
                # root   /usr/local/www/nginx;
                # index  index.html index.htm;
                proxy_pass http://10.0.0.2/;
        }

Aktionen #5

Von GoeranHeinemann vor 3 Monaten aktualisiert

mit dem Folgenden Command kann letsencrypt eingerichtet werden, es sollte eine IP mit DNS eintrag verwendet werden.

certbot install --nginx

Aktionen #6

Von GoeranHeinemann vor 2 Monaten aktualisiert

nachdem all die schritte erfolgreich waren muss noch der alte container deaktiviert werden, dazu erst stoppen und dann autostart deaktivieren, da sonst IP-Konflikte auftreten. Außerdem habe ich den Container aus dem HA entfernt

Aktionen #7

Von GoeranHeinemann vor 2 Monaten aktualisiert

  • Status wurde von Neu zu Erledigt geändert
  • Geschätzter Aufwand wurde auf 10:00 h gesetzt
Aktionen #8

Von GoeranHeinemann vor 2 Monaten aktualisiert

  • % erledigt wurde von 0 zu 100 geändert
Aktionen #9

Von PaulRiegel vor 2 Monaten aktualisiert

  • Status wurde von Erledigt zu Feedback geändert
  • Zugewiesen an wurde auf PaulRiegel gesetzt
  • Priorität wurde von Normal zu Hoch geändert
Aktionen #10

Von GoeranHeinemann vor etwa 1 Monat aktualisiert · Edited

am 21.10. ist uns aufgefallen, dass die website keine mails mehr versendet.
nach dem oben beschriebenen aufbau konnte das ohne nat und route ins internet konnte das auch nicht gehen

als test habe ich in dem proxy jail nat mit der pf firewall aktiviert, aber die alte routing implementation in dem 9.3 jail kann nich mit dem kernel reden.
deshalb hat das jail jetzt nicht mehr die interne adresse, sondern wieder die 141.56.51.5.
in der pf firewall auf dem host ist aber aller traffic zu dieser ip untersagt, außer von der 141.56.51.1 (proxy), die website kann dadurch aber die 141.56.51.14 zum senden von mails wieder erreichen.

jail config für die website:

website {
        $id = 2;
        vnet.interface = "epair${id}b";
        exec.prestart = "ifconfig epair${id} create up";
        exec.prestart += "ifconfig epair${id}a up descr jail:${name}";
        exec.prestart += "ifconfig extern addm epair${id}a up";
        exec.start    += "ifconfig epair${id}b 141.56.51.5/24 up";
        exec.poststop = "ifconfig extern deletem epair${id}a";
        exec.poststop += "ifconfig epair${id}a destroy";

    allow.raw_sockets;
    vnet;
}

in der jail config hat sich nur der bridge name geändert und die ip

# Define interfaces
# ext_if = "em0" 
# int_if = "em1" 
# bridge_if = "bridge0" 
ext = "extern" 
hosting = "intern" 
testing = "testing" 

set skip on epair*
set skip on lo*

# NAT rule
#nat on $ext from $testing:network to any -> ($ext)
nat on $ext from 10.0.1.0/24 to any -> 141.56.51.122

# Allow all traffic on the bridge
pass quick on extern from 141.56.51.1 to 141.56.51.5
block quick on extern to 141.56.51.5
pass quick on re0 all
pass quick on extern all
pass quick on intern all
pass quick on testing all

# Default deny
block all

# Allow outbound traffic
pass out on $ext all

# Allow established connections
pass in on $ext keep state


die firewall regeln mit expliziten 141... adressen sind hier neu, damit keiner auf die 141.56.51.5 kommt, außer der proxy

in dem proxy musste nur in /usr/local/etc/nginx/nginx.conf die redirect ip wieder auf die 141.56.51.5 geändert werden, sonst bleibt alles gleich

Aktionen

Auch abrufbar als: Atom PDF