UFWはOpenSSHに一致するプロファイルが見つからないと告げ、原因の調査はSSHサーバーへ一直線に向かいます。それは間違った方向です:このメッセージは名前付きのファイアウォール定義についてのもので、sshdが導入されているか、動作しているか、待ち受けているかについては何も述べていません。UFWのアプリプロファイルとは、ラベルを付けたポートとプロトコルのリストです。定義を読むのに必要なのはコマンド一つで、たいていはそこで調査が終わります。

ステップ1:UFWが実際に知っている名前を一覧にする

どれかを許可するよう頼む前に、ファイアウォールが持つ名前を尋ねます。一覧はこのマシンに入っているプロファイルから作られるので、名前がないことはこのシステムについての事実であり、守ろうとしていたソフトウェアについての事実ではありません。名前があれば、誤りはタイプミスか、シェル履歴に残った古い別名から来ています。

ufw app list
ufw app info OpenSSH

標準の導入では一覧は短く、名前はパッケージ名ではありません。openssh-serverパッケージが導入されていてもOpenSSHというプロファイルが無いことはあり、逆もまた起こり得ます。一覧が表示する正確な名前を使ってください:つづりが似たVPNプロファイル名やデスクトップのランチャーはUFWのアプリプロファイルではありません。望む名前が無いなら、それが調査結果であり、次は何がそれを提供すべきかを見ます。

ステップ2:ラベルではなく定義を読む

プロファイルは/etc/ufw/applications.dの下にあるINI形式のファイルで、名前、タイトル、説明、ポートのフィールドを持ちます。ポートのフィールドには複数のポートとトランスポートを並べられるので、ラベルは定義より少ないことしか伝えません。UFWのマニュアルがこれらのフィールドとアプリケーション更新の操作を説明しています。名前が一つの馴染みのポートを意味すると決めつけず、ファイルを読みます。

cat /etc/ufw/applications.d/openssh-server
ufw app info OpenSSH

22/tcpを含む定義が表すのはTCPポート22だけで、それ以外ではありません。このマシンのデーモンがそこで待ち受けている証拠にはならず、後から足した二つ目のポートも対象外です。デーモンが別の場所で動いているなら、名前が製品と一致していてもそのプロファイルは誤った許可です。どちらを許可する前に、リスナーと定義を比べます。

ss -ltnp 'sport = :22'

定義とリスナーが食い違うなら止めます。誰も待ち受けていないポートを名指すプロファイルを許可すると、進展に見えて何も守らないルールが作られます。

ステップ3:プロファイルと稼働中のサービスを切り離す

名前付きプロファイルを許可してもサービスの導入・起動・設定は行われず、稼働中のサービスが到達可能であるためにパッケージ化されたプロファイルは要りません。それらは別々の判断であり、別の道具が持ちます:パッケージマネージャー、サービス管理者、ファイアウォールです。これらを一つと見なすのが、象徴的な名前を出現させるために望まないサーバーを導入するやり方です。

VPNサーバーでは、外側のリスナーを許可した後も切り分けが続きます。暗号化トランスポートのポートの許可はカーネルの転送を有効にせず、NATルールを追加せず、トンネル利用者にLANへのアクセスを与えません。そのどれもが独自の見直しを伴う別々のポリシーです。VPN製品の名を冠したプロファイルが記述するのは列挙されたポートだけで、サーバー設定の残りは依然としてあなたが書くものです。

プロファイルが無く、一つ必要なら、見直し済みの明示的なポートルールかapplications.dの下のローカルプロファイルのどちらも正当です。望まなかったパッケージを導入することは正当ではありません。

ステップ4:ファイアウォールを再読み込みする前に戻り道を確保する

ルールを変える前に、マシンへ入る二つ目の経路があることを確かめます:コンソール、帯域外アドレス、予定した切り戻しです。次にルール集合と既定ポリシーを読みます:SSHルールの無い既定の拒否は、試験中に自分を締め出す古典的な方法だからです。一度に一つのルールだけ変え、UFWが表示する確認を読みます。保存されたルール、有効なルール、到達可能なサービスは三つの別の観察です。

ufw status verbose
ufw allow 22/tcp
ufw app update OpenSSH

変更後、許可した接続と、なお拒否されるべき経路を一つ試します。拒否の試験は許可の試験と同じだけ重要です:意図より広いルールは最初の試験を通り、二つ目で落ちるからです。プロファイル名、それが含んでいたポート、照合したリスナーを記録します。

チェックリストは、名前があるか意図的に置き換えられ、定義が実際のリスナーと一致し、サービスが別に管理され、復旧経路を手元に置いて許可と拒否の両方の経路を試したときに終わります。一覧に名前があることは、そのどれでもありません。

関連記事