「ガバガバSecurity部」の版間の差分

提供: JUNKWIKI(ジャンクウィキ)
移動: 案内検索
(ページの作成:「ガバガバだとまずいんだよなあ… ==ようこそ== ここはサーバー構築方法(Linux編)を参考に鯖を立てた人が見るページです...」)
 
 
(同じ利用者による、間の11版が非表示)
行8: 行8:
 
気づいたら乗っ取られたり変なもの上げられてたりウィルス放り込まれて気づかぬうちにLAN内でパンデミックとかね。<br>
 
気づいたら乗っ取られたり変なもの上げられてたりウィルス放り込まれて気づかぬうちにLAN内でパンデミックとかね。<br>
 
なので最低限のSecurityはしましょう、というお話です。<br>
 
なので最低限のSecurityはしましょう、というお話です。<br>
ただしSELinuxは扱いません。アレわかんない。<br>
 
  
 
==MOKUZI==
 
==MOKUZI==
# どんな攻撃があるの
 
 
# ユーザ周りの処理
 
# ユーザ周りの処理
 
# ファイアウォール
 
# ファイアウォール
行19: 行17:
 
# アンチウイルス
 
# アンチウイルス
 
# ルートキット検知
 
# ルートキット検知
# 改竄検知
+
# 事後
# 攻撃検知
+
# メモ
  
 
==書きかけです==
 
==書きかけです==
==どんな攻撃があるの〜敵を知り己を知れば百戦危うからず〜==
 
対策をする前に、どんな脅威があるのか、ちょこっと学んでおきましょう<br>
 
…僕が新入社員研修で学んだことを書き連ねるだけになりますが
 
 
==ユーザ周りの処理〜ユーザグループとルートログインの禁止〜==
 
==ユーザ周りの処理〜ユーザグループとルートログインの禁止〜==
とりあえず、できることを制限しよう
+
とりあえず建て終わった時点の話。<br>
 +
linuxには、rootというユーザがデフォルトでいる。rootは、なんでもできる。その気になればOSに必要なファイルを全部rm -fで消し去る事もできる。<br>
 +
コイツが厄介なやつで…そんなにホイホイ出てこられると色々とセキュリティ的に問題が出てくる。なのでちょいと首輪をつける必要がある。
 +
*rootになれるユーザを制限する
 +
なんで?と思われる方もいらっしゃるかもしれませんが…<br>
 +
とりあえず
 +
cat /etc/passwd
 +
と打ってみましょう。ずら~っとなんか出てくる。<br>
 +
こいつらはユーザです。作成したユーザ以外に各種アプリケーションを動かすためのユーザが存在します。<br>
 +
で、通常のユーザでログインして、suとうつとrootになれるのはご存知かと思う。<br>
 +
つまり、'''何らかの脆弱性を使った攻撃でアプリケーションからユーザを乗っ取ってsu'''でルートになっていんぐりもんぐり、という事が考えられる。<br>
 +
そんなことになっても被害を抑えるためのおまじない。<br>
 +
<br>
 +
多分デフォルトでできるようになってると思うけど、念のため確認。
 +
#cat /etc/group | grep wheel
 +
wheel:x:10:(ユーザ名)
 +
となることを確認する。もし、ここにユーザ名が無かった場合、直接編集してユーザ名を追加する(ルート権限が必要)。<br>
 +
次に、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である。つまり'''パスワードさえわかってしまえばログインできる'''ということである<br>
 +
世の中には総当たり攻撃という理論上パスワードによるログインを完全に無効化できる攻撃方法がある(ただし、各種リソースが無限大、という前提で)。<br>
 +
つまり、SSHの口が空いてる鯖にアカウント名をrootで、あとはパスワードを総当りすれば簡単に乗っ取れてしまう。<br>
 +
なので、SSHでrootログインできないようにしないといけない。<br>
 +
と、言っても難しく考えることはなく。
 +
vi /etc/ssh/sshd.config
 +
の28行目あたり、「PermitRootLogin」をコメントアウト解除して、このようにする
 +
PermitRootLogin no
 +
 
 +
…まあ、今から立てる人は基本的に「OpenSSH7.0」以降のハズなので、デフォルト状態でのrootログインは基本的に禁止されているはずです。(正確には、パスワードを使ったrootログインが禁止)
 +
でも、念には念を、ということで明示的に禁止にしましょう。してしまいましょう。
 +
 
 
==ファイアウォール〜iptables〜==
 
==ファイアウォール〜iptables〜==
 
怪しいやつは入る前にお帰りいただく<br>
 
怪しいやつは入る前にお帰りいただく<br>
 
ルータのFWである程度対応できる場合もあるけど、念のため。
 
ルータのFWである程度対応できる場合もあるけど、念のため。
 
==脆弱性対応の大切さ〜とりあえず最新版つかっとけ〜==
 
==脆弱性対応の大切さ〜とりあえず最新版つかっとけ〜==
yum updateでもapt-get updateでもとりあえず更新しとけ
+
# yum update
 +
or
 +
sudo apt-get update
 +
sudo apt-get upgrade
 +
以上。
 +
 
 
==オーバーフロー対策〜Exec-shield〜==
 
==オーバーフロー対策〜Exec-shield〜==
 
脆弱性を突かれる前に
 
脆弱性を突かれる前に
行41: 行79:
 
==ルートキット検知〜chkrootkit〜==
 
==ルートキット検知〜chkrootkit〜==
 
消せるらしいですよ、痕跡
 
消せるらしいですよ、痕跡
==改竄検知〜Tripwire〜==
+
 
僕がちょっと導入に失敗してるので書くか微妙(いるか微妙だし)
+
==侵入検知〜Snort〜==
+
ここまで来るともうエンタープライズ
+
 
==もし攻撃されたら…〜時すでに遅し〜==
 
==もし攻撃されたら…〜時すでに遅し〜==
まず被害を受けたものをLANから切り離すべし
+
*ウイルスだったらとにかくLANケーブルを抜け!今すぐにだ!
 +
もう遅いかもしれないが…LAN内で大増殖されると困るから全部抜こう。
 +
感染発覚機だけでなくてね?全部ね?
 +
*サーバに対するアタックだったら
 +
ポートスキャンとかそういう、実被害の無いやつだったらファイアウォールでDenyすればいい。
 +
DDoSとかもうなんか侵入されてるっぽかったらルータのWAN側のケーブルを一回抜こう。
 +
エンタープライズじゃないので別にサービスを続ける義務はないので、いっそ抜いて時間を稼ごう作戦。
 +
あとはログみて攻撃IP特定してブロックするなりほとぼり冷めるまで鯖は落としておくなり。
 +
*つまり
 +
LANケーブルぶっこ抜き一択
 +
 
 +
==メモ==
 +
 
 +
* 後でなんか追記するかもしれないので方針メモ
 +
https
 +
認証ちゃんとする
 +
脆弱性を把握して潰す
 +
開いてなければ入れない

2019年12月7日 (土) 10:22時点における最新版

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

ようこそ

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

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〜

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

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

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

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

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

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

  • つまり

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

メモ

  • 後でなんか追記するかもしれないので方針メモ

https 認証ちゃんとする 脆弱性を把握して潰す 開いてなければ入れない