記事検索
月別アーカイブ
アクセスカウンター

    タグ絞り込み検索

    ssh

    2012年02月21日01:52ssh多段接続(2)

    いつのまにかncコマンドの機能がsshにとりこまれて~/.ssh/configにこう書くだけでよくなっていた。

    (以前の記事はこっち

    Host REMOTE
            HostName REMOTE.test.jp
            User YOURNAMEonREMOTE
            ProxyCommand ssh YOURNAMEonGW@GW.test.jp -W %h:%p
    

    コードを斜め読みした感じだとちゃんとTCP_NODELAYオプションも有効になってるみたいだ。



    このエントリーをはてなブックマークに追加
    2011年05月02日18:00ssh多段接続

    単純にsshをカスケードした場合の図:

     % ssh gateway ssh target command args
    
     [localhost]             [gateway]                       [target]
    
                                                             command args
                             _________________________________|______
    
                             ssh target                      sshd
                             ________________________________________
                              |
     stdin/out               stdin/out
     _|_______________________|_____________
    
     ssh gateway             sshd
     _______________________________________
    
    

    gatewayからtargetにログインするのに、targetにprivate keyを置くかAgentForwardingをつかってlocalhostの鍵でtargetの認証を行うか二通りある。

    ncでトンネルをつくって接続した場合の図:

     % ssh -o 'ProxyCommand ssh gateway nc %h %p' target command args
    
     [localhost]             [gateway]                       [target]
    
                                                             command args
     stdin/out                                                |
     _|______________        _________________________________|______
                                       . . . . . . . . . . .
     ssh target              nc %h %p  : . . . . . . . . . . sshd
                                       : :
     ____________: :_        __________: :___________________________
      |          : :          |        : :
     stdin/out   : :         stdin/out : :
     _|__________: :__________|________: :___
                 : : . . . . . . . . . : :
                 : . . . . . . . . . . . :
     ssh gateway             sshd
     ________________________________________
    

    localhostの鍵でgatewayとtargetの両方にログインする。



    このエントリーをはてなブックマークに追加
    2010年08月25日12:58inetdの接続制限でsshの辞書攻撃をあきらめさせる
    sshdのログをみていると、ときどき辞書攻撃(というか名簿攻撃)をくらっているが、 そもそもパスワード認証は許可してないので侵入されるおそれはない。 そうはいっても大量のログが出るのはうっとうしいので、 FreeBSDのinetdには接続制限の機能をつかって同じアドレスから大量のコネクションが来ると 切断するようにしたところ、けっこう効果があった。
    やったこと:
    1. /etc/rc.confを書き換えて sshd をデーモンで起動しない。
       #sshd_enable="YES"
       inetd_enable="YES"
      
    2. /etc/inetd.confを書き換えて inetd 経由で起動するようにする。
       ssh stream tcp nowait/0/6 root /usr/sbin/sshd sshd -i -4
      
      "nowait/0/6"の意味は、「接続がきたらどんどんデーモンを立ち上げる」/「同時接続数の制限はしない」/「同じIPアドレスからの接続は1分間あたり6接続に制限する」。 "sshd -4"はIPv6はつかってないのでIPv4のみでlisten、"sshd -i"はinetd経由でつかうのでstdin/stdoutをつかえという指示。 sshdのmanpageによるとinetd経由だとserver keyを生成する時間だけクライアントが待たされるよと書いてあるが、 試してみるとそんなに時間はかからない。
    設定がおわったらsshdを止めてinetdを(再)起動する。
    /etc/rc.d/sshd onestop
    /etc/rc.d/inetd restart
    
    これで連続して7回つなぎにいくと、7回目でエラーになるはず。
    % ssh server date
    Wed Aug 25 12:55:50 JST 2010
    % ssh server date
    Wed Aug 25 12:55:51 JST 2010
    % ssh server date
    Wed Aug 25 12:55:52 JST 2010
    % ssh server date
    Wed Aug 25 12:55:52 JST 2010
    % ssh server date
    Wed Aug 25 12:55:53 JST 2010
    % ssh server date
    Wed Aug 25 12:55:54 JST 2010
    % ssh server date
    ssh_exchange_identification: Connection closed by remote host
    %
    
    /var/log/messagesには次のようなメッセージが残る
    Aug 25 12:55:55 server inetd[1204]: ssh from xxx.xxx.xxx.xxx exceeded counts/min (limit 6/min)
    


    このエントリーをはてなブックマークに追加
    2010年08月18日16:11NATで外とつながっているゲストOSにホストOSからログインする方法

    VirtualBox/FreeBSDでブリッジネットワークがうまく動かなかったのでネットワークアダプタをNAT接続にしたが、コンソール画面でいじるとコピペが自由にできないのでリモートログインする方法を考えた。

    (step1) ゲストOSからホストOSにログインしてポートフォワーディングを設定する。この端末は放置する。

    guest% ssh -R 2222:localhost:22 HOSTNAME

    (step2) ホストOSからフォワーディングのポートをつかってゲストOSにログインする。

    host% ssh -p 2222 localhost



    このエントリーをはてなブックマークに追加