macOS Sierraでのポートノッキング


3

誰もがmacOS Sierraでポートノッキングを動作させる方法を知っていますか?検索しても役に立つ情報が見つかりませんでした。

これで動作します。すべての助けに感謝します。@klanomath @jksoegaard。あなたの幸せを祈ります。

構成は次のとおりです。

  1. 構成:/usr/local/etc/ssh-access.txtは最初は空です

  2. 構成:/etc/pf.conf

    scrub-anchor "com.apple/*"
    nat-anchor "com.apple/*"
    rdr-anchor "com.apple/*"
    dummynet-anchor "com.apple/*"
    anchor "com.apple/*"
    load anchor "com.apple" from "/etc/pf.anchors/com.apple"
    table <ssh-access> persist file "/usr/local/etc/ssh-access.txt"
    pass in quick proto tcp from <ssh-access> to port 22
    
  3. 構成:/usr/local/etc/knockd.conf

    [options]
            logfile = /var/log/knockd.log
    [openSSH]
            sequence    = 7000,8000,9000
            seq_timeout = 5
            command     = echo %IP% > /usr/local/etc/ssh-access.txt
            tcpflags    = syn
    [commitFW]
            sequence    = 9000,8000,7000
            seq_timeout = 5
            command     = pfctl -t ssh-access -T replace -f /usr/local/etc/ssh-access.txt
            tcpflags    = syn
    [closeSSH]
            sequence    = 5000,4000,6000
            seq_timeout = 5
            command     = echo '' > /usr/local/etc/ssh-access.txt
            tcpflags    = syn
    
  4. 起動ノック時の出力:

    config: new section: 'options'
    config: log file: /var/log/knockd.log
    config: new section: 'openSSH'
    config: openSSH: sequence: 7000:tcp,8000:tcp,9000:tcp
    config: openSSH: seq_timeout: 5
    config: openSSH: start_command: echo %IP% > /usr/local/etc/ssh-access.txt
    config: tcp flag: SYN
    config: new section: 'commitFW'
    config: commitFW: sequence: 9000:tcp,8000:tcp,7000:tcp
    config: commitFW: seq_timeout: 5
    config: commitFW: start_command: pfctl -t ssh-access -T replace -f /usr/local/etc/ssh-access.txt
    config: tcp flag: SYN
    config: new section: 'closeSSH'
    config: closeSSH: sequence: 5000:tcp,4000:tcp,6000:tcp
    config: closeSSH: seq_timeout: 5
    config: closeSSH: start_command: echo '' > /usr/local/etc/ssh-access.txt
    config: tcp flag: SYN
    ethernet interface detected
    Local IP: 192.168.8.101
    Adding pcap expression for door 'openSSH': (dst host 192.168.8.101 and (((tcp dst port 7000 or 8000 or 9000) and tcp[tcpflags] & tcp-syn != 0)))
    Adding pcap expression for door 'commitFW': (dst host 192.168.8.101 and (((tcp dst port 9000 or 8000 or 7000) and tcp[tcpflags] & tcp-syn != 0)))
    Adding pcap expression for door 'closeSSH': (dst host 192.168.8.101 and (((tcp dst port 5000 or 4000 or 6000) and tcp[tcpflags] & tcp-syn != 0)))
    
  5. クライアントMacからノックする

    192:~ vincent-st$ knock -v 192.168.8.101 7000,8000,9000
    hitting tcp 192.168.8.101:7000
    192:~ vincent-st$ knock -v 192.168.8.101 9000,8000,7000
    hitting tcp 192.168.8.101:9000
    192:~ vincent-st$ ssh vincent-st@192.168.8.101
    ssh: connect to host  port 22: connection refused
    

適切なノックコマンドを使用すると、sshが機能します。

  1. クライアントMacからノックする

    192:~ vincent-st$ knock -v 192.168.8.101 7000 8000 9000
    hitting tcp 192.168.8.101:7000
    hitting tcp 192.168.8.101:8000
    hitting tcp 192.168.8.101:9000
    
    192:~ vincent-st$ knock -v 192.168.8.101 9000 8000 7000
    hitting tcp 192.168.8.101:9000
    hitting tcp 192.168.8.101:8000
    hitting tcp 192.168.8.101:7000
    
    192:~ vincent-st$ ssh vincent-st@192.168.8.101
    The authenticity of host '192.168.8.101 (192.168.8.101)' can't be established.
    
    RSA key fingerprint is SHA256:6AlMpQmxODOueRS+faoODOueRS+ODOueRS+fa.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.8.101' (RSA) to the list of known hosts.
    
    Password:
    
    Last login: Tue Jul 11 01:14:56 2017 `
    

質問を繰り返し編集して、質問をゆっくりと質問の回答変換することは、元の問題が失われるため、あまり意味がありません。通常、すべてのハードル、不適切な設定、または作成したエラーなどを記載した2番目の回答を作成する方が適切です(適切な回答が既に投稿されている場合でも)。
クラノマス

回答:


9

ポートノッキングをクライアントとして動作させる必要がある場合(ポートノッキングによって保護されているリモートサービスにアクセスする場合)-Homebrewから次のようにノックプログラムをインストールします。

brew install knock

事前にHomebrewをインストールする必要があります。

次に、Terminal.appのプログラムを次のように使用できます。

knock myserver 1234 5678 9012

ここで、数字はノックするポートです。

ポートノッキングをサーバーとして機能させる必要がある場合(つまり、リモートアクセスがポートノッキングによって知識のあるユーザーに制限されるようにローカルリソースを保護する場合)-同様にHomebrewからknockをインストールします。

インストール後、要件(つまり、保護するサービスの種類、使用するポートなど)に合わせてカスタマイズされたknockd.conf構成を作成し、最終的にlaunchdを使用してknockdを起動する必要があります。

これを行う方法の例はここにあります:

ノック設定の例


すべての入力をありがとう、先生。私は助けを求める前にこれを試しました。homebrewをインストールし、brew install knockを実行してサーバーにknockをインストールします。次に、空のファイル/usr/local/etc/ssh-access.txtを作成し、リンクが示すようにファイル/usr/local/etc/knockd.confを編集してから、コマンド/ usr / local /を実行しますsbin / knockd -dDv -i en0 -c /usr/local/etc/knockd.conf ポートをノックすることなくサーバーにsshすることができます。
ビンセント

これは、私の投稿のリンクでpf ​​skipをスキップしたためです。ポート22(ssh)へのアクセスがssh-access.txtファイルにリストされているものにのみ許可されることをpf.conf(ファイアウォール構成)に追加する必要があります。これは、knockdによって更新されるファイルです。
jksoegaard

はい、それは私を混乱させる部分です。ポート22にアクセスするpf.confをssh-access.txtファイルに追加する方法がわかりません。サーバーのIPとポートを/usr/local/etc/ssh-access.txtに追加しようとしましたが、正しいかどうかわかりません。結局これが行われました。クライアントMacからノックしようとしました。外観は次のとおりです(写真は質問で示しています)。
ビンセント

私があなたに与えたリンクの指示に従ってください。pf.confファイルに書き込む内容を示しています。ssh-access.txtには手動で何も追加しないでください。そのため、そのファイルを削除して、指示に従って空のファイルを再作成してください。
-jksoegaard

@jksoegaardの最新パッケージも必要/usr/local/sbinです。私の場合、作成されていないため、作成して権限を付与しました。答えを広げていただけますか、これは他の人に役立つかもしれません。
ラファエルアギラール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.