サーバへの攻撃は日常茶飯事
インターネット上に公開しているサーバは誰でもアクセスできるため攻撃の対象になります。
- サーバへの攻撃 サーバ操作権限を得る目的でログインを試みたり、いたずらでサーバに負荷を欠ける行為
- サーバへの侵入 サーバー操作権限を持つユーザ情報を不正に入手して実際にログインする行為
実際にサーバのアクセスログを見てみると攻撃の形跡があることがわかります。
Aug 1 12:25:33 web-server sshd[20429]: Invalid user git from xxx.xxx.xxx.xxx port 51186
Aug 1 12:25:33 web-server sshd[20429]: input_userauth_request: invalid user git [preauth]
Aug 1 12:36:05 web-server sshd[20492]: Invalid user ec2-user from xxx.xxx.xxx.xxx port 47290
Aug 1 12:36:05 web-server sshd[20492]: input_userauth_request: invalid user ec2-user [preauth]
Aug 1 12:36:21 web-server sshd[20494]: Invalid user ftpuser from xxx.xxx.xxx.xxx port 59980
Aug 1 12:36:21 web-server sshd[20494]: input_userauth_request: invalid user ftpuser [preauth]
Aug 1 12:39:45 web-server sshd[20497]: Invalid user administrator from xxx.xxx.xxx.xxx port 59864
Aug 1 12:39:45 web-server sshd[20497]: input_userauth_request: invalid user administrator [preauth]
Aug 1 12:50:26 web-server sshd[20513]: Invalid user prueba from xxx.xxx.xxx.xxx port 31238
Aug 1 12:50:26 web-server sshd[20513]: input_userauth_request: invalid user prueba [preauth]
ユーザ名によく使われるgit, ec2-user, administratorなどを使ってSSHしてくるログがの残っています。
このような不正ログインの形跡は/var/log/secureに保存されています。上に示した攻撃のあとは特別なものではなく、日常的に発生しているものです。
攻撃されていてもセキュリティ対策がしっかりしていればすぐに問題になることはないです。攻撃者も堅牢なセキュリティのサーバよりも対策があまいサーバを対象としたほうがコスパは良いです。
攻撃と侵入
コンピュータに対する悪意のあるアクセス全般を攻撃と呼びます。
しかし、攻撃があったとしてもデータの改ざんやパスワードの抜き出しなどの被害はないことのほうが多いです。
なぜなら、インターネットを介したアクセスに対しては予め用意したデータを見るだけの権限しか設定されていないからです。
つまり、適切に設定していれば下記のようなことはできないようになっています。
- 用意されていないデータ(webページの情報など)以外は閲覧できない
- データの書き換えはできない
- コンピュータ上のプログラムを実行できない
- 一般ユーザにログインできない
- 管理者ユーザにログインできない
設定の面でいうと
- 読み込み権限がない(指定外のデータ、パスワードなどは見られない)
- 書き込み権限がない(データの編集や保存はできない)
- 実行権限がない(悪意のあるプログラムをおいても実行できない)
- 一般ユーザとしてログインする情報がない(パスワード、公開鍵認証で保護)
- 管理者ユーザにログインする情報がない(パスワード・公開鍵認証で保護)
となります。
攻撃者はなんでもできる管理者ユーザへのログインを目指しています。
攻撃者が不正にコンピュータ上にログインしてくることを侵入といいます。
攻撃が来ただけでは実害はないことが多いです。一方で、攻撃により侵入されると甚大な被害を受けます。ユーザはディスクに対する読み書き、プログラムの実行などの権限が付与されていることが多いからです。
Dos攻撃 大量アクセスが攻撃の手段
攻撃もアクセス元が複数かつ高頻度の場合は高負荷でサーバ停止などの実害を受けることがあります。これらはDos攻撃と呼ばれます。
大量のアクセスを受けたサーバの処理能力を超えるとサーバが応答できなくなり、再起動せざる負えない状況になる場合があります。
侵入に対する対処法
万が一サーバに侵入されてしまった場合
基本的にそのサーバは作り直しになります。
なぜなら、侵入者は普通のファイルに見せかけて実行ファイルを仕掛けたり、外部から接続できるような仕掛けを仕込んだりするからです。もしかしたらすでにパスワードなどの機密情報が抜かれている可能性もあります。
たとえ侵入されたユーザを削除して、パスワードを変更しても危険が去ったわけではないということです。
侵入を防ぐためにやること
侵入に対しては不正ログインを防ぐための対策を講じることになります。
- ログインには暗号化されていない通信は利用しないftpなどは使わずsshを使用する
- パスワード認証は避けて公開鍵認証等をりようする。パスワード使用の場合は長くて複雑なものにして、一定期間で変更する
- 不必要なユーザは作らない、権限を絞る
- 不必要なサービスは起動しない(ftp使用していないなら閉じる)
- 推測されやすいユーザ名、ポート番号を使用しない
などがあります。
推測されやすいユーザ名 root, パスワード password などは絶対に利用しない。公開鍵認証に変更したり、一般ユーザには不必要な権限を与えないなどの対処が必要です。
侵入に気づいたらやること
もしも侵入されたと気づいたらなるべく早く対策を行います。
管理者(利用者・責任者)に連絡する(より詳しい人に手を借りる)
- 何かおかしいな?というような違和感を感じた時はすぐに管理者に連絡しましょう。
ネットワークを切断する 電源を落とす(侵入者の侵入経路を物理的に断つ)
侵入経路はインターネット経由です。問題がない場合は外部との接続を遮断すれば操作はできなくなります
電源を落とせる場合は落としてから侵害されても問題のない別のコンピュータにディスクをマウントして中身を調べることもできます。
ログイン者を調べて履歴をみる
現在ログイン者はwコマンドで確認できます。
また、現在ログインしていなくても/var/log/secureをみることで不斉ログインに成功した履歴が確認できる可能性があります。
プロセスの確認
侵入されたあとに不正なプログラムが起動される場合があります。
不正にログインされた後は不正なプロセスが上がっていないかを確認します。
接続状況を確認する
netstat -anputのコマンドを使用して、ESTABLISEDしている通信をみて攻撃者の通信がきていないかを確認
環境変数の確認
環境変数に見慣れない変数がエクスポートされている可能性があります。printenvなどで確認しましょう