在預置安裝期間新增 ufw 規則

在預置安裝期間新增 ufw 規則

我一直在嘗試自動新增 UFW 規則,以允許在使用預置檔案安裝 16.04 期間進行 SSH 存取。但是,所記錄的方法都不會導致連接埠 22 在首次引導後開啟。

具體來說,我嘗試了以下幾行的變體:

ufw     ufw/enable      boolean true
ufw     ufw/allow_custom_ports  string 22/tcp
ufw     ufw/allow_known_ports  string 22/tcp
ufw     ufw/allow_known_ports   string  SSH

但他們似乎都沒有改變。此外,我嘗試在安裝後部分添加規則失敗,因為未載入 iptables 核心模組,從而導致錯誤。

這可以在預置文件中完成嗎?或者我應該放棄並透過駭客在啟動時啟用防火牆?

答案1

我也一直在努力讓它發揮作用一段時間。似乎什麼都不起作用。直到我最終放棄,我用一個簡單的 rc.local 解決方法修復了它:

d-i preseed/late_command string \
    mv /target/etc/rc.local /target/etc/rc.local.orig; \
    echo '#!/bin/sh -e' > /target/etc/rc.local; \
    echo '/usr/sbin/ufw allow ssh' >> /target/etc/rc.local; \
    echo 'mv -f /etc/rc.local.orig /etc/rc.local' >> /target/etc/rc.local; \
    echo 'test -x /etc/rc.local && /etc/rc.local' >> /target/etc/rc.local; \
    echo 'exit 0' >> /target/etc/rc.local; \
    chmod +x /target/etc/rc.local

該解決方法將添加一個自訂rc.local腳本,使用preseed/late_command該腳本將:

  1. 將原始檔案備份rc.localrc.local.orig(使用mv

  2. 然後rc.local創建新的——這是一個將在系統第一次啟動時執行的腳本

  3. 新腳本將:

    1. 使用啟用 SSH 訪問ufw
    2. 恢復原來的rc.local(透過移動rc.local.origrc.local,刪除自身)
    3. 測試原始檔案是否rc.local可執行並運行它
    4. 退出成功

相關內容