Skip to content

Podman & nftables

Linux
1 1 268
  • Ich habe ja hier berichtet, wie man einen Forgejo Server aufsetzen kann.

    Da ich da sehr lange dran rum gewerkelt habe, habe ich am Anfang mal die Firewall in der Hetzner Cloud Software aktiviert mit den Standard Ports, die man so braucht.

    • 22
    • 80
    • 443

    Eine Kontrolle mit nmap ergibt dann auch nur folgende Ports.

    PORT    STATE SERVICE
    22/tcp  open  ssh
    80/tcp  open  http
    443/tcp open  https
    

    Ich hatte am Anfang ziemlich viele Probleme mit meinen Podman Containern, bis ich gelernt hatte, das mit nftables sich vieles von alleine erledigt. Warum? Es gibt auf einer Debian Trixie Installation folgendes Paket.

    root@forgejo:/etc/containers/systemd# apt search netavark
    aardvark-dns/testing 1.14.0-3 amd64
      Container-focused DNS server
    
    netavark/testing,now 1.14.0-2 amd64 [installed,automatic]
      Rust based network stack for containers
    
    podman/testing,now 5.4.2+ds1-1+b3 amd64 [installed]
      tool to manage containers and pods
    
    podman-docker/testing 5.4.2+ds1-1+b3 amd64
      tool to manage containers and pods (Docker CLI)
    
    podman-remote/testing 5.4.2+ds1-1+b3 amd64
      tool to manage containers and pods (remote CLI)
    

    Ich spreche von netavark. Dieses Paket ist auf Debian Trixie 13 eine Abhängigkeit von Podman, wird also mitinstalliert.

    Netavark is a rust based network stack for containers. It is being designed to work with Podman but is also applicable for other OCI container management applications.

    Und dieses Tool trägt dann in Zusammenhang alle Regeln die man braucht, in nftables ein. Vollautomatisch! ♥

    Ein Beispiel ist DNAT

    chain NETAVARK-HOSTPORT-DNAT {
                    tcp dport 80 jump nv_1126fa6c_10_89_0_0_nm16_dnat
                    tcp dport 222 jump nv_1126fa6c_10_89_0_0_nm16_dnat
                    tcp dport 443 jump nv_1126fa6c_10_89_0_0_nm16_dnat
                    tcp dport 3000 jump nv_1126fa6c_10_89_0_0_nm16_dnat
            }
    

    Nachdem ich das alles wusste, war es auch relativ simpel, die Container dazu bewegen sinnvolles zu machen 😉

    Für die Installation von nftables macht man wie gewohnt

    apt install nftables
    

    systemd Kontrolle

    systemd enable nftables # Erst einschalten, wenn ihr wisst das ihr noch auf die Kiste kommt!
    systemctl start nftables
    systemctl status nftables
    

    Wann man was standardmäßig in die Konfiguration eintragen möchte, geht das mit

    nano /etc/nftables.conf
    

    Konfiguration testen

    nft -f /etc/nftables.conf
    

    Die Liste, der Regeln, kann man sich so anschauen

    nft list ruleset
    

    Ausgabe (gekürzt)

    table inet filter {
            chain input {
                    type filter hook input priority filter; policy accept;
            }
    
            chain forward {
                    type filter hook forward priority filter; policy accept;
            }
    
            chain output {
                    type filter hook output priority filter; policy accept;
            }
    }
    table inet netavark {
            chain INPUT {
                    type filter hook input priority filter; policy accept;
                    ip saddr 10.92.0.0/16 meta l4proto { tcp, udp } th dport 53 accept
            }
    

    Das schöne ist, das man nun auch fail2ban dazu bewegen kann seine Bans vollautomatisch in diese Liste einzutragen, dazu gibt es einen eigene Beitrag.

    table inet f2b-table {
            set addr-set-sshd {
                    type ipv4_addr
                    elements = { 13.67.94.200, 14.22.88.255,
                                 14.103.119.118, 14.103.123.75,
                                 14.103.236.35, 36.133.184.250,
                                 36.134.2.209, 41.58.186.132,
                                 46.101.8.63, 64.226.119.233,
                                 64.227.110.144, 94.182.227.191,
                                 101.126.135.80, 103.56.114.54,
                                 117.149.247.143, 119.45.128.125,
                                 125.124.106.113, 125.164.14.241,
                                 128.199.33.46, 142.93.204.139,
                                 157.245.71.30, 157.245.144.151,
                                 161.132.43.198, 180.76.105.165,
                                 185.93.89.118, 185.213.165.36,
                                 193.32.162.146, 193.168.173.177,
                                 199.188.103.179, 202.179.66.26,
                                 220.80.197.180 }
            }
    

    Man, da sind aber schon wieder viele Script Kiddies unterwegs 🙂

  • Forgejo Installation mit Podman Quadlet auf Hetzner VM

    Podman forgejo podman quadlet linux
    2
    0 Stimmen
    2 Beiträge
    342 Aufrufe
    FrankMF
    Schauen wir uns mal an, wie man die Container aktuell hält. In der postgres.container steht das hier (als Beispiel) [Container] Image=docker.io/library/postgres:17 AutoUpdate=registry Das AutoUpdate=registry ist die Voraussetzung, dass der Container aktualisiert werden darf. Mit diesem Befehl kann man sich anschauen, wie der Stand der DInge ist. root@debian-4gb-nbg1-2-forgejo:~# podman auto-update --dry-run UNIT CONTAINER IMAGE POLICY UPDATED forgejo-pod.service 6486189fb10c (postgres) docker.io/library/postgres:17 registry false forgejo-pod.service 7d5627e2d434 (forgejo) codeberg.org/forgejo/forgejo:11.0.1 registry false forgejo-pod.service 7fb26d4f8b58 (nginx) docker.io/library/nginx:latest registry false Podman hat aber standardmäßig einen systemd Dienst, der sich darum kümmert root@forgejo:/etc/containers/systemd# systemctl status podman-auto-update.service ○ podman-auto-update.service - Podman auto-update service Loaded: loaded (/usr/lib/systemd/system/podman-auto-update.service; enabled; preset: enabled) Active: inactive (dead) since Mon 2025-06-09 00:02:57 UTC; 12h ago Invocation: a098f0054b254a0888ee789200ac9507 TriggeredBy: ● podman-auto-update.timer Docs: man:podman-auto-update(1) Process: 68939 ExecStart=/usr/bin/podman auto-update (code=exited, status=0/SUCCESS) Process: 68947 ExecStartPost=/usr/bin/podman image prune -f (code=exited, status=0/SUCCESS) Main PID: 68939 (code=exited, status=0/SUCCESS) Mem peak: 14.4M CPU: 292ms Jun 09 00:02:55 forgejo systemd[1]: Starting podman-auto-update.service - Podman auto-update service... Jun 09 00:02:55 forgejo podman[68939]: 2025-06-09 00:02:55.368941 +0000 UTC m=+0.059687227 system auto-update Jun 09 00:02:57 forgejo podman[68939]: UNIT CONTAINER IMAGE POLICY UPDATED Jun 09 00:02:57 forgejo podman[68939]: forgejo-pod.service 6486189fb10c (postgres) docker.io/library/postgres:17 registry false Jun 09 00:02:57 forgejo podman[68939]: forgejo-pod.service 7d5627e2d434 (forgejo) codeberg.org/forgejo/forgejo:11.0.1 registry false Jun 09 00:02:57 forgejo podman[68939]: forgejo-pod.service f2e9eee72017 (nginx) docker.io/library/nginx:latest registry false Jun 09 00:02:57 forgejo systemd[1]: podman-auto-update.service: Deactivated successfully. Jun 09 00:02:57 forgejo systemd[1]: Finished podman-auto-update.service - Podman auto-update service. postgres Ok, die Container sollten automatisch aktualisiert werden. docker.io/library/postgres:17 Die Postgres DB ist auf die Version 17 festgezurrt. Aktuell ist root@forgejo:/etc/containers/systemd# podman exec postgres postgres --version postgres (PostgreSQL) 17.5 (Debian 17.5-1.pgdg120+1) Eine Version 17.6 wird jetzt automatisch installiert, eine Version 18 aber nicht. nginx docker.io/library/nginx:latest NGINX zieht sich also immer die letzte "latest" Version, die zur Verfügung gestellt wird. root@forgejo:/etc/containers/systemd# podman exec nginx nginx -v nginx version: nginx/1.27.5 Gerade mal gecheckt, 1.27.5 ist die letzte Mainline Version. Also sind wir aktuell. forgejo Der Eintrag codeberg.org/forgejo/forgejo:11.0.1 aktuelle Version, die installiert ist. root@forgejo:/etc/containers/systemd# podman exec forgejo forgejo -v Forgejo version 11.0.1+gitea-1.22.0 (release name 11.0.1) built with GNU Make 4.4.1, go1.24.2 : bindata, timetzdata, sqlite, sqlite_unlock_notify Ok, wir sind auf Version 11.0.1 Wenn jetzt die Version 11.0.2 herauskommt, wird diese nicht installiert, da wir im forgejo.container folgendes stehen haben. [Container] Image=codeberg.org/forgejo/forgejo:11.0.1 Das ist aber erst mal nicht so schlimm, ich lese da mit und bekomme das mit. Das mache ich auch lieber von Hand, dann kann ich besser sehen wo es klemmt
  • RockPro64 - Mainline Kernel 6.8.0-rc3

    ROCKPro64 rockpro64 linux mainline
    2
    0 Stimmen
    2 Beiträge
    598 Aufrufe
    FrankMF
    https://github.com/ayufan-rock64/linux-mainline-kernel/releases/tag/6.8.0-1190-ayufan
  • Ansible - Hetzner Server erstellen

    Verschoben Ansible ansible linux hcloud
    1
    3
    0 Stimmen
    1 Beiträge
    378 Aufrufe
    Niemand hat geantwortet
  • NAS 2023 - Software Teil 1

    Angeheftet Verschoben Linux nas linux
    1
    4
    0 Stimmen
    1 Beiträge
    299 Aufrufe
    Niemand hat geantwortet
  • Linux Mint "Una" Cinnamon 20.3

    Linux linuxmint 20.3 linux
    7
    0 Stimmen
    7 Beiträge
    601 Aufrufe
    FrankMF
    Heute drüber gestolpert, man hat sich auch der alten Version des Thunderbirds angenommen. [image: 1643042911134-0aa9e265-95b3-4de6-a8c8-b23c5b980f09-grafik.png] Damit sind zwei wichtige Programme jetzt hoffentlich immer auf dem aktuellsten Stand.
  • checkmk - Debian Bullseye Release

    checkmk checkmk bullseye linux
    1
    0 Stimmen
    1 Beiträge
    693 Aufrufe
    Niemand hat geantwortet
  • Linux Mint 20 & Scannen mit HP LaserJet Pro MFP M28a

    Linux linuxmint linux
    2
    1
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    FrankMF
    Nachdem ich jetzt ja wieder auf Linux Mint Cinnamon in Version 20.2 unterwegs bin, hatte ich wieder das Problem das der Drucker ohne Probleme druckt aber nicht scannt. Ich habe dann mal dieses Tool installiert apt install hplip-gui [image: 1625908296630-0918fea1-0edf-43c1-aa29-9d79efda177c-grafik.png] Dann auf Scan geklickt, dann meckerte er über ein fehlendes Plugin. Ok, installiert, danach kamen Verbindungsfehler beim Scannen. Einmal den USB-Stecker entfernt, danach ging alles. Bitte nicht fragen warum, hplip hasse ich noch mehr als WLAN Ok, nicht mehr anfassen.... [image: 1625908444519-79d636b7-2b49-4152-b158-e65cebabf148-grafik.png] In der Linux Mint Hilfe findet man dazu folgendes -> Klick
  • Linux Befehle - ls & tail

    Linux linux
    1
    0 Stimmen
    1 Beiträge
    506 Aufrufe
    Niemand hat geantwortet