ポートノッキングでSSHを隠す
開いているSSHポートには、インターネット中からログイン試行が集まります。ポートノッキングでは、秘密を知っていることを証明するまでポートを閉じたままにし、その後数秒間だけ、あなたのアドレスに対して開きます。
knockdとnftablesを使う
SSHをデフォルトでドロップし、タイムアウト付きセット内のアドレスからのみ受け入れます。knockdがノックしたアドレスをそのセットに追加し、nftablesがタイムアウト時に削除します。確立済みのSSHセッションはそのまま動作します。
table inet filter {
set knocked4 {
type ipv4_addr
flags timeout
}
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
iif "lo" accept
tcp dport 22 ip saddr @knocked4 accept
}
} セットにアドレスを追加するknockdのセクション:
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/nft add element inet filter knocked4 { %IP% timeout 30s } 恒久的なアクセスは分けて管理する
一部のアドレスを恒久的に許可する場合は、タイムアウトなしの別のセットに保持してください。すでにタイムアウト付きセットにあるアドレスを追加してもタイムアウトはリセットされないため、両方の種類のエントリを1つのセットに混在させると、タイマーの終了時にアクセスできなくなる可能性があります。
またはfwknopを使う
fwknop SPAはシーケンスよりも強力です。暗号化および認証された1つのパケットであり、リプレイできません。fwknopガイドをご覧ください。
iPhoneからSSHへ
- 1真鍮のドアノッカーを長押しします。Secret Knockがポート22に応答があるか確認し、開いている残り時間を表示します。
- 2SSHを開くをタップすると、サーバー用のssh://リンクでSSHアプリを開きます。
- 3「画面表示中はドアを開いたままにする」は、ドアが画面に表示されている間、開放時間が終わる少し前に自動でもう一度ノックします。
GitHubですべての例を見る → このページのすべての設定をコピーしてすぐに使えます:github.com/mobilcomm/secretknock-examples(パブリックドメイン)。
よくある質問
SSHキーの代わりになりますか?
いいえ。ポートノッキングはサービスを隠すものです。強力なSSHキーを使用し、パスワードログインも無効にしてください。