「ガバガバSecurity部」の版間の差分
行23: | 行23: | ||
==書きかけです== | ==書きかけです== | ||
==ユーザ周りの処理〜ユーザグループとルートログインの禁止〜== | ==ユーザ周りの処理〜ユーザグループとルートログインの禁止〜== | ||
− | + | とりあえず建て終わった時点の話。<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:(ユーザ名) | ||
+ | となることを確認する。もし、ここにユーザ名が無かった場合、直接編集してユーザ名を追加する(ルート権限が必要)。 | ||
+ | 次に、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ログインできないようにしないといけない。 | ||
+ | |||
==ファイアウォール〜iptables〜== | ==ファイアウォール〜iptables〜== | ||
怪しいやつは入る前にお帰りいただく<br> | 怪しいやつは入る前にお帰りいただく<br> |
2016年10月8日 (土) 19:05時点における版
ガバガバだとまずいんだよなあ…
目次
ようこそ
ここはサーバー構築方法(Linux編)を参考に鯖を立てた人が見るページです。
あのページはとりあえず立てることを目的にしているのでSecurityがとても犠牲になっている(ファイアウォール無効にしてたりとか)
確かに、立てることを目的にするならSecurityは正直邪魔。
でも、立て終わってよっしゃネットに公開するぜーとなったらちょっとまって欲しい。
ネットに公開した途端に特に何もしてなくても攻撃されます。
気づいたら乗っ取られたり変なもの上げられてたりウィルス放り込まれて気づかぬうちにLAN内でパンデミックとかね。
なので最低限のSecurityはしましょう、というお話です。
ただしSELinuxは扱いません。アレわかんない。
MOKUZI
- ユーザ周りの処理
- ファイアウォール
- 脆弱性対応の大切さ
- オーバーフロー対策
- Apache上のSecurity
- アンチウイルス
- ルートキット検知
- 侵入検知
- 事後
書きかけです
ユーザ周りの処理〜ユーザグループとルートログインの禁止〜
とりあえず建て終わった時点の話。
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ログインできないようにしないといけない。
ファイアウォール〜iptables〜
怪しいやつは入る前にお帰りいただく
ルータのFWである程度対応できる場合もあるけど、念のため。
脆弱性対応の大切さ〜とりあえず最新版つかっとけ〜
yum updateでもapt-get updateでもとりあえず更新しとけ
オーバーフロー対策〜Exec-shield〜
脆弱性を突かれる前に
Apache上のSecurity〜なんでデフォルトでオフになってるの〜
割と厄介
アンチウイルス〜Clam〜
ウイルス対策の必要性はwindowsもMacもAndroidもみんな一緒
ルートキット検知〜chkrootkit〜
消せるらしいですよ、痕跡
IDS/IPS〜TripwireとSnort〜
ここまで来るともうエンタープライズ
もし攻撃されたら…〜時すでに遅し〜
- ウイルスだったらとにかくLANケーブルを抜け!今すぐにだ!
もう遅いかもしれないが…LAN内で大増殖されると困るから全部抜こう。 感染発覚機だけでなくてね?全部ね?
- サーバに対するアタックだったら
ポートスキャンとかそういう、実被害の無いやつだったらファイアウォールでDenyすればいい。 DDoSとかもうなんか侵入されてるっぽかったらルータのWAN側のケーブルを一回抜こう。 エンタープライズじゃないので別にサービスを続ける義務はないので、いっそ抜いて時間を稼ごう作戦。 あとはログみて攻撃IP特定してブロックするなりほとぼり冷めるまで鯖は落としておくなり。