ガバガバSecurity部

提供: JUNKWIKI(ジャンクウィキ)
移動: 案内検索

ガバガバだとまずいんだよなあ…

ようこそ

ここはサーバー構築方法(Linux編)を参考に鯖を立てた人が見るページです。
あのページはとりあえず立てることを目的にしているのでSecurityがとても犠牲になっている(ファイアウォール無効にしてたりとか)
確かに、立てることを目的にするならSecurityは正直邪魔。
でも、立て終わってよっしゃネットに公開するぜーとなったらちょっとまって欲しい。
ネットに公開した途端に特に何もしてなくても攻撃されます。
気づいたら乗っ取られたり変なもの上げられてたりウィルス放り込まれて気づかぬうちにLAN内でパンデミックとかね。
なので最低限のSecurityはしましょう、というお話です。
ただしSELinuxは扱いません。アレわかんない。

MOKUZI

  1. ユーザ周りの処理
  2. ファイアウォール
  3. 脆弱性対応の大切さ
  4. オーバーフロー対策
  5. Apache上のSecurity
  6. アンチウイルス
  7. ルートキット検知
  8. 侵入検知
  9. 事後

書きかけです

ユーザ周りの処理〜ユーザグループとルートログインの禁止〜

とりあえず建て終わった時点の話。
linuxには、rootというユーザがデフォルトでいる。rootは、なんでもできる。その気になればOSに必要なファイルを全部rm -fで消し去る事もできる。
コイツが厄介なやつで…そんなにホイホイ出てこられると色々とセキュリティ的に問題が出てくる。なのでちょいと首輪をつける必要がある。

  • rootになれるユーザを制限する

なんで?と思われる方もいらっしゃるかもしれませんが…
とりあえず

cat /etc/passwd

と打ってみましょう。ずら~っとなんか出てくる。
こいつらはユーザです。作成したユーザ以外に各種アプリケーションを動かすためのユーザが存在します。
で、通常のユーザでログインして、suとうつとrootになれるのはご存知かと思う。
つまり、何らかの脆弱性を使った攻撃でアプリケーションからユーザを乗っ取ってsuでルートになっていんぐりもんぐり、という事が考えられる。
そんなことになっても被害を抑えるためのおまじない。

多分デフォルトでできるようになってると思うけど、念のため確認。

#cat /etc/group | grep wheel
wheel:x:10:(ユーザ名)

となることを確認する。もし、ここにユーザ名が無かった場合、直接編集してユーザ名を追加する(ルート権限が必要)。
次に、wheelグループに登録されていないユーザのsuを禁止する。

vi /etc/pam.d/su

#auth     required     pam_wheel.so use_uid

の行を、コメントアウトをはずして

auth     required     pam_wheel.so use_uid

とする。 これでwheelグループに登録されていないユーザはsuを実効できない、つまりrootになれない。

  • ssh経由のrootログインを禁止する

rootのユーザ名は世界共通でrootである。つまりパスワードさえわかってしまえばログインできるということである
世の中には総当たり攻撃という理論上パスワードによるログインを完全に無効化できる攻撃方法がある(ただし、各種リソースが無限大、という前提で)。
つまり、SSHの口が空いてる鯖にアカウント名をrootで、あとはパスワードを総当りすれば簡単に乗っ取れてしまう。
なので、SSHでrootログインできないようにしないといけない。
と、言っても難しく考えることはなく。

vi /etc/ssh/sshd.config

の28行目あたり、「PermitRootLogin」をコメントアウト解除して、このようにする

PermitRootLogin no

…まあ、今から立てる人は基本的に「OpenSSH7.0」以降のハズなので、デフォルト状態でのrootログインは基本的に禁止されているはずです。(正確には、パスワードを使ったrootログインが禁止) でも、念には念を、ということで明示的に禁止にしましょう。してしまいましょう。

ファイアウォール〜iptables〜

怪しいやつは入る前にお帰りいただく
ルータのFWである程度対応できる場合もあるけど、念のため。

脆弱性対応の大切さ〜とりあえず最新版つかっとけ〜

# yum update

or

sudo apt-get update
sudo apt-get upgrade

以上。

オーバーフロー対策〜Exec-shield〜

脆弱性を突かれる前に

Apache上のSecurity〜なんでデフォルトでオフになってるの〜

割と厄介

アンチウイルス〜Clam〜

ウイルス対策の必要性はwindowsもMacもAndroidもみんな一緒

ルートキット検知〜chkrootkit〜

消せるらしいですよ、痕跡

IDS/IPS〜TripwireとSnort〜

ここまで来るともうエンタープライズ

もし攻撃されたら…〜時すでに遅し〜

  • ウイルスだったらとにかくLANケーブルを抜け!今すぐにだ!

もう遅いかもしれないが…LAN内で大増殖されると困るから全部抜こう。 感染発覚機だけでなくてね?全部ね?

  • サーバに対するアタックだったら

ポートスキャンとかそういう、実被害の無いやつだったらファイアウォールでDenyすればいい。 DDoSとかもうなんか侵入されてるっぽかったらルータのWAN側のケーブルを一回抜こう。 エンタープライズじゃないので別にサービスを続ける義務はないので、いっそ抜いて時間を稼ごう作戦。 あとはログみて攻撃IP特定してブロックするなりほとぼり冷めるまで鯖は落としておくなり。

  • つまり

LANケーブルぶっこ抜き一択