原則として、SSHを介した接続の確立中の標準設定では、サーバー側にアラートは表示されません。 攻撃者はこれを利用できます-Habrを静かに読んでいる間に、機密データが既にコンピューターから転送されている可能性があります。 上記の問題は簡単に修正できます。
接続が確立されると、スクリプト/ etc / ssh / sshrcが実行され 、クライアント側からこれを防ぐことはできません。 別のアラートスクリプトを作成し、それを実行するコマンドを/ etc / ssh / sshrcに配置します。
/usr/local/alert/start.sh
スクリプトは、notify-osdパッケージを通じて重要な情報を含むメッセージを表示し、注意を引くサイレンを含めます。
#!/bin/bash export DISPLAY=:0 notify-send "Security Warning" "SSH Connection Established with \"$USER\" $(echo $SSH_CONNECTION | sed 's/\(.*\) \(.*\) \(.*\) \(.*\)/from \1:\2 to \3:\4/')" -u critical -i /usr/local/alert/icon.png play /usr/local/alert/sound.wav > /dev/null 2>&1
ここでは、まずnotify-osdの正しい操作のために現在のディスプレイを設定し、次にシステム変数$ USER (現在のユーザー)および$ SSH_CONNECTION (接続データ、通常のビューを使用して読みやすいビューに変換する) sed式)。 その後、私たちはサイレンを失います。
ここでは、電子メール( sendmailを使用)またはJabber( sendxmppを使用)へのメッセージ送信を追加することもできます。
インストールの場合、 このアーカイブの内容をファイルシステムのルートに単純に解凍できます(この操作により、sshrcの以前の内容が消去されます!)。
必要なライブラリもインストールすることを忘れないでください。Ubuntuでは次のように行われます。
sudo apt-get install libnotify-bin sox
UPD#1: bliznezzとInflameのユーザーの提案で、スクリプトを変更できます。
#!/bin/sh export DISPLAY=:0 notify-send "Security Warning" "Occured Login as user \"$USER\" $(echo $SSH_CONNECTION $SSH_TTY | sed 's/\(.*\) \(.*\) \(.*\) \(.*\) \(.*\)/using SSH connection at \5 from \1:\2 to \3:\4/')" -u critical -i /usr/local/alert/icon.png aplay -q /usr/local/alert/sound.wav
また、コードを/root/.bashrcに追加します。
unset SSH_CONNECTION /usr/local/alert/start.sh
これで、シェルがルートとして起動したときに、スクリプトがシグナルを送信します。
UPD#2:ユーザーneperapは、サーバーのユーザーのホームディレクトリに〜/ .ssh / rcファイルがある場合、それが実行され、警告システムが機能しないことにも気付きました。 また、正しく実行するために、これらのスクリプトはコンソールにテキストを出力しないでください。