Ssh

堅持執行 OpenVPN 的 SSH 防火牆規則

  • November 28, 2020

我有一台伺服器(Ubuntu 20.04),我可以通過 SSH正常訪問。我在這台伺服器上設置了 OpenVPN,效果很好……

除非我啟動 OpenVPN,否則我失去了通過 SSH 連接到伺服器的能力。

我發現這個關於設置防火牆規則的答案在一定程度上解決了這個問題:

https://serverfault.com/a/918441/602437

我將這些規則放在腳本中,然後執行:sudo ./set-ssh-rules.sh && sudo service openvpn start並且按預期工作。

問題是,這是一個手動步驟,因為在我重新啟動後規則似乎消失了,我必須再次完成整個舞蹈。

我如何讓這些規則持續存在?或者在 OpenVPN 服務已“啟用”的更現實的情況下,在啟動時但init 系統(systemd?)啟動 OpenVPN 服務之前設置規則。

我確信這個問題的答案散佈在網際網路上,但我無法將它拼湊在一起——抱歉。

提前謝謝了。

我發現最簡單的方法是創建這樣的服務:

# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.service.html

[Unit]
Description=Setup Firewall on each reboot
Before=network.target

[Service]
Type=oneshot
WorkingDirectory=~
RemainAfterExit=yes
ExecStart=/usr/sbin/set-ssh-rules.sh
User=root
Group=root

[Install]
WantedBy=multi-user.target

# vim: syntax=dosini

您的腳本必須放置在您可以使用完整路徑引用的位置,如上所示。

要安裝該文件,您可以在此處複製它:

/lib/systemd/system/my-firewall.service

當您手動添加新文件時,您需要通過以下方式輕推系統以將其喚醒:

systemctl daemon-reload

如果您編輯 .service 文件,systemd 命令還將告訴您執行該命令,以便它可以在嘗試執行其他命令之前根據需要進行自我更新。這在您安裝/解除安裝軟體包時會自動完成,但在您手動執行此操作時不會。

然後您可以啟用它,它會在每次重新啟動時啟動。

systemctl enable my-firewall

要查看它是否有效,請檢查狀態:

systemctl status my-firewall

您還可以手動啟動/停止以驗證腳本是否按預期執行:

systemctl start my-firewall
systemctl stop my-firewall

由於我沒有腳本來停止我的防火牆stopstart所以. (你也可以使用)stop``start``restart

引用自:https://serverfault.com/questions/1044245