Linuxの安全神話。Linuxは安全なの?
Linuxは安全だと言われますが、それはOS(Kernel)だけを指しているものではないかと思います。その上に乗っかっているサービス群やモジュールについては2日に一度程度の頻度で脆弱性が発見されています。
Linux CentOSのセキュリティ情報
https://lwn.net/Alerts/CentOS/
致命的なものは早目に対応される場合が多い気がしますが
脆弱性発見からパッチまで平均で40日程度かかっているようです。
同じモジュールやサービスについて複数発見された場合は
段階的なセキュリティアップデートになるので
1つのモジュールに対して何度もアップデートしなければならない
面倒くささがあります。
実はLinuxって頻繁にアップデートする必要性がある面倒くさいOSなんです。
これをわかってないで運用していると痛い目にあいます。
またセキュリティは鎖のようなもので、1つ脆弱性があると
意味がありません。
ペネトレーションテスト
自らに攻撃を行う事によって脆弱性をチェックするテストです。
色々な攻撃を試してみて自らのセキュリティの甘さを知るのです!
数十のツールがあり、ここまで丸裸にされてしまうのかと
びっくりしてまう事も多かったです。
雑誌や初心者向けの教本通りにサーバーを構築する
のが危険なのがわかります。
その手の本は誰にでも簡単に構築出来るを目標に
制作されている場合が多くそのままでは実用性には堪えません。
ネットや専門書を読み、コンフィグの1つ1つを把握して
攻撃され涙をぬらしながらログを見てシステムを改善していく事で
セキュリティは強化されます。
今回はNmapを紹介いたします。
攻撃はNmapからはじまる・・!
クラッキング攻撃の第一段階に使われるNmapを紹介します。
ひとまずインストール
[bash] #yum -y install nmap
[/bash]
※注意
他人のサーバーなどにくれぐれもポートスキャン
しないようお願いします。
ローカル上の自身の管理下のサーバーのみに行って下さい。
外部のサーバーに対して行った場合は不正アクセス禁止法に抵触する可能性があります。
ポートスキャンを行った事によって生じる損害などはシステムガーディアンでは一切責任を負いかねます。ご了承ください。
(実際的にポートスキャンが法律に触れるかは別として、サーバー管理者からしたら犯行予告のようなものなので、企業からセキュリティ対策実施費用を請求され裁判沙汰になる可能性がある。)
レンタルサーバーによっては自身で契約しているサーバーへの
脆弱性検査は一定の範囲で許可してくれている場合もあるので
どうしても行いたい場合は確認するといいかもしれません。
攻撃者になりきれ!
ペネトレーションテスト(脆弱性テスト)といって大事な事は
犯人の心理に成りきることが大切ですね。
『怪物と戦う者は、その過程で自分自身も怪物になることのないように
気をつけなくてはならない。深淵をのぞく時、深淵もまたこちらをのぞいているのだ』
とニーチェも言ってました。
なりきりすぎにお気をつけください。
どうせならホワイトハッカーを目指しましょう!^^
弊社ではシステムを守るホワイトハッカーも募集しています。
目指したい方もどうぞご応募下さい。
では実践 Nmap
# nmap IPアドレス
がシンプルな基本コマンドです。
記事の為割と無防備なサーバーを用意しました。
あらら、、バージョンまでわかっちゃいますね。
もし攻撃側とすると『apache 2.2.2 脆弱性』と検索してみます。
1234 Apache 2.2.19 およびそれ以前のすべてのバージョンにおいて、サービス運用妨害(DoS)の脆弱性(CVE-2011-3192)が存在します。この脆弱性が悪用されると、運用中のウェブサービスを提供できなくなるなどの被害にあう可能性があります。
という事がわかるのでその脆弱性を突いた攻撃を行えば
攻撃が可能になります。
多くのLinuxディストリビューションでも採用されているFTPサーバーvsftpdにバックドアが見つかった。The Hによると、公開されているvsftpd 2.3.4のソースコードにバックドアを実装するコードが発見されたそうだ。このバックドアはユーザー名「:)」、ポート番号6200で任意のユーザーの接続を許すというもので、またシェルを実行することもできるという。
サービスによってはアカウント情報がなくてもログインや操作が出来てしまうなど致命的な脆弱性が存在するので常にセキュリティ情報はチェックを行いアップデートを行いたいところです。
オープンソース=ソースコードが公開されている=安全
ではありません。
まずはバージョン情報を表示させないように
各サービスの設定ファイルを編集してください。
例としてvsftpdならこんな設定でバージョン名を非表示にできます。
バージョンの表示をなくしたサーバーです。
次にアップデートを行います。
部分的に行うなら
[bash]# yum update httpd[/bash]
全体ならこっちを
[bash]# yum update[/bash]Nmapうざいな・・
そんなあなたにPortsentry
Nmapはクラッカーの攻撃の起点となる場合がほとんどですので
ポートスキャンを行ったIPを自動検知による
アクセス禁止にする事ができます。
他人のサーバーにポートスキャンを行うなんて通常考えられないので
Portsentryで即BAN(アクセス禁止)にしてしまいましょう。
ただ固定IPではない環境でのPortsentryの導入はおすすめできません。
なぜなら自身のIPが変わったのに気づかず自身もBANされ
アクセス出来なくなる可能性があるからです。
・portsentryの導入についてはこちらで紹介しています。
Nmapを検知しブロックしたIP、絶大な効果があります。
この日はぴっちぴちでかなり大漁です(白目)
まとめ
サーバーへの攻撃前には前兆が必ずあります。
そこを素早く察知して早急な処置を行いましょう。
具体的にはセキュリティに対して
脆弱性のチェックを行いアップデートし
万全の体制を整え、攻撃の前兆や攻撃をログやツールで
監視して早期対応を行う事に尽きると思います。
おまけ Nmapのオプションについて
オプションを使う事でNmap一つでwhoisやtracerouteなど
の機能があるので大抵の情報がわかります。
また
# nmap IP
ではバージョン情報が出なくても
# nmap -v -O -A IP
ならバージョンが丸出しになっている場合もあります。
オプションを覚えて快適なNmapライフを。
[Nmapオプション]
-O OSの検出
-A OSとバージョンを検知
-sP pingに応答するホストの一覧を表示
-sV サービス名とバージョンの検出
-sS ステルススキャン
-p数字 数字のポート番号をスキャン
-v スキャン進行中の詳細な情報
バナー情報、OS情報、whois情報など
# nmap -v -O -A ホスト
特定のポートをスキャン
# nmap -p22 ホスト
ポートと稼働しているサービスのバージョン特定
# nmap -sV ホスト
ステルススキャン
syslogにログを残さない。
検知する為にはIDSやIPロギングする必要があります。
portsentryを入れていればアクセス禁止に出来てそっちにログが残ります。
# nmap -v -sS ホスト
デコイ
# nmap -D <デコイ1 [,デコイ2][,ME]
nmapの状態の解説
- open ポートが開いている(TCP/UDPパケットをアクティブに受け入れている状態)
- closed ポートが閉じている(探査パケットに応答しているが、待機しているサービスがない)
- filtered パケットフィルタリングによりポートが開いているかどうかを判別できない
- unfiltered ポートにアクセスできるもののポートが開いているかどうかを判別できない
- open|filtered ポートが開いているのかパケットフィルタリングされているのかを判別できない
- closed|filtered ポートが閉じているのかパケットフィルタリングされているのかを判別できない
バックナンバー