iPhone、iPad、Mac 用の knockd クライアント
knockd は、1 つのアドレスが秘密のポートシーケンスを時間内に実行するとポートを開きます。Secret Knock は、そのシーケンスを iPhone、iPad、Mac、または Apple Watch から送信し、ポートに応答があることを確認して SSH アプリを開きます。
Secret Knock が送信する内容
ドアの各ステップは 1 つのポートへの TCP または UDP ノックです。ノックの前に任意で遅延を設定でき、UDP ではテキストまたは 16 進数の任意のペイロードも指定できます。TCP ノックは 1 回の接続試行です。アプリは SYN を 1 つだけ送信して直ちに試行を閉じるため、オペレーティングシステムによる再送信は行われません。knockd 0.8 は SYN が繰り返されるとシーケンスをリセットします。
ワンタイムシーケンス(knockd の one_time_sequences)にも対応しています。「ノックの種類」›「ワンタイムシーケンス(knockd)」を選び、リストを入力してください。ノックでドアが開いた後、Secret Knock は次のシーケンスに進みます。knockd.conf を読み込んでもシーケンスファイルは読み込まれません。読み込み時にもその旨が表示されるため、リストは手動で入力してください。
サーバを設定する
ノックを送信したアドレスに対して SSH を 10 秒間開く、最小限の knockd セクションです。ポートは独自のものを選んでください。公開されている例を再利用しないでください。
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT アプリにドアを追加する
- 1「新しいドア」›「テンプレートから開始」›「knockd(例: 7000、8000、9000)」では、3 ポートの TCP シーケンスと確認するポートとして SSH が入力されます。ポートをご自身のものに置き換えてください。
- 2または、「+」›「ファイルから読み込む」を選び、knockd.conf を指定します。シーケンスを含む各セクションがドアになります。
- 3サーバの knockd が一方のアドレスファミリーでのみ待ち受けている場合は、ドアの IPv4 または IPv6 を固定してください。
- 4真ちゅう製のノッカーを長押しします。ポート 22 に応答があると、ドアには「ドアが少し開いています」と表示され、「SSHを開く」で SSH アプリに移動できます。
GitHubですべての例を見る → このページのすべての設定をコピーしてすぐに使えます:github.com/mobilcomm/secretknock-examples(パブリックドメイン)。
よくある質問
knockd の tcpflags = syn でも動作しますか?
はい。各 TCP ノックは 1 つの SYN であり、tcpflags = syn が数えるものと完全に一致します。
同じノックをコマンドとして確認できますか?
はい。ドアエディタには、ターミナルにすぐペーストできるknockコマンドとして表示されます。