私のサーバーでいくつかのセキュリティ上の問題がありました。いくつかのSSHユーザーが問題を引き起こしているファイアを設定しています。
私はしたいと思います:
私はシステム管理者ではないので、この問題についてはかなり経験が浅いので、どんな種類のアドバイスも大歓迎で非常に役立つでしょう。 :)
SSHサーバーについて説明しているので、コマンドラインソリューションを紹介します。
ユーザーのログインとログアウトを追跡します。それは簡単です、ファイル/var/log/auth.log
にはこの情報が含まれているはずです。
それらのユーザーのアクティビティを追跡する:かなり無害な場合は、ホームディレクトリの.bash_history
ファイルを確認できます。実行したコマンドのリストが表示されます。問題はもちろん、このファイルを削除または編集できることです。
ユーザーがログを削除できないようにする:ユーザーがauth.log
に触れないようにする必要があります。それらが.bash_history
で遊ぶのを止めるために、あなたはいくつかの トリック をする必要があります。
ユーザーがルートアクセスを取得できた場合はどうなりますか? :あなたはめちゃくちゃです。間違えない限り、彼らはすべての足跡を隠すことができます。
[免責事項]私はパーティーに遅れていることに気づきましたが、私が与えた答えを貼り付けたいと思います 別の質問に =、読者に良い洞察を提供できると感じているので、この質問は基本的なssh情報の入手先のようです。
this AskAbuntuの質問を読んでVPSを確認した後、同様の問題が発生しました。それは私が行動を起こすことにしたときです。
さて、私がリンクした質問によると、sshを介したマシンでのログイン試行の失敗(ブルートフォースの試行など)を確認したい場合は、次のように入力してください。
grep sshd.\*Failed /var/log/auth.log | less
出力が複数の行で構成されている場合、つまりブルートフォースが多数試行されている場合、特に短い間隔で発生した場合は、次のアクションを実行することをお勧めします。
これを行うには、このvim /etc/ssh/sshd_config
のように、/ etc/ssh/sshd_configにあるファイルをお気に入りのエディターで開きます。
1。ポート22からsshを移動してみてください:次の行を見つけます:
# What ports, IPs and protocols we listen for
Port 22
ポート22をコメントアウトし、好きな人を使用します。例:
# What ports, IPs and protocols we listen for
# Port 22
Port 28934
1024以下のポートには特別な(ルート)権限が必要であることを覚えておいてください。これがどのように干渉するかわかりませんが、私はただ言っています。
2。 sshを介したルートログインの無効化:ルートユーザー名は予測可能であり、システムへの完全なアクセスを提供するため、SSHを介してこのアカウントに自由にアクセスできます。 PermitRootLoginという行を見つけて、noに設定します。
PermitRootLogin no
3。パスワード認証を無効にします:SSHキーを生成および使用してシステムにログインします。パスワードを有効にしないと、攻撃者はサーバーにアクセスするためにSSH秘密鍵を推測(または盗み)する必要があります。非常に非常に難しいことです。 PasswordAuthenticationと表示されている行を見つけて、noに設定します。
PasswordAuthentication no
!警告!その前に、このガイドを参照してください こちら 証明書認証の設定方法について。
注:変更を行ったら、Sudo /etc/init.d/ssh restart
を使用します。 sshを使用して別のポートに接続するには、ssh [email protected] -p <port_number>
を使用します。
Linuxに統合されている非常に強力で効果的なファイアウォールのセットアップ方法については、 このガイド をご覧くださいIPTables。
私が個人的に使用し、すぐに思い浮かぶのは Fail2Ban です。 Fail2banは、ログイン試行の失敗についてログファイルを監視します。 IPアドレスが認証試行の最大回数を超えると、ネットワークレベルでブロックされ、イベントは/var/log/fail2ban.log
に記録されます。インストールするには:Sudo apt-get install fail2ban
history
という名前のLinuxコマンドがあります。これにより、その時点までに入力されたコマンドを確認できます。ターミナルでhistory
と入力して、その時点までのすべてのコマンドを確認してください。あなたがrootであれば助けになるでしょう。
特定のコマンドを検索する試してみる:history | grep command-name
sshの後のすべてのコマンドを一覧表示するには:fc -l ssh
また、viを使用してコマンドを編集することもできます(vimを試していないが、同様に機能すると仮定しています):fc -e vi
履歴を削除することもできます:history -c
注:コマンドhistory
のファンではない場合、ホームディレクトリにもファイルがあります(cd ~
) 、。bash_history(bashを使用している場合)と呼ばれ、cat
でbashシェルに入力されたすべてを表示できます。
少しやり過ぎですが、「プロセスイベントコネクタ」を使用して、システムで実行されているすべてを確認できます。
http://www.outflux.net/blog/archives/2010/07/01/reporting-all-execs/
ログイン自体とは別に、ログイン後のユーザーのアクションを追跡/記録する安全な方法はありません。Linuxの基本的な知識がある場合は、シェルロギングを無効にしたり、他のシェル(Pythonなど)からコマンドを実行したりできます。
代わりに、sshアクセスを提供することについて保守的にすべきです。彼らは本当にそれを必要としますか?シェルを使用してビジネスを提供しているのでない限り、sshアクセスを許可することはあまり一般的ではありません。