Linuxは基本的に「ウィルス」いわゆる、「マルウェア」に感染しにくいという話はよく聞く。
しかし、実際には完全に安全なOSなどというものはありえない。Linuxを使っていても気をつけた方がいいに決まっている。
このページではLinuxのウィルス対策の初歩の初歩をお伝えする。
目次
Linuxとウィルス
Linuxは基本的に「ウィルス」に感染しにくいと言われているのは、次の2つの理由からだ。
- クライアントでの利用の場合Windowsとくらべシェア率が圧倒的に低いため狙われにくい
- パーミッションという概念のもと一般ユーザはシステムに書き込みができない、権限が厳格に管理されている。
しかしリスクが全くないというわけではない。実際、数は少ないが主にトロイの木馬が存在する。これらは脆弱性を放置したり、ユーザが意図しないうちにうっかりインストールしてしまった場合が多いだろう。
特にクロスプラットホームなアプリケーションのアドオン機能などを悪用するマルウェアも存在する。
「Linuxを導入しているからセキュリティは大丈夫」ということは「絶対にない」のである。
ちなみに、悪意のあるソフトウェアをマルウェアといって、ウィルスもその一種だ。これより下ではマルウェアと呼ぶので、頭に入ってこなければ読み替えてほしい。
マルウェアの種類
ではマルウェアにはどの様な種類があるのだろうか? ザックリとわけて紹介していこう。
ただ、昨今のマルウェアは厳密にカテゴライズするのは難しい。複数の側面を持ち多機能化しているからでだ。「悪意あるニーズの多様化」とも言える状態になっている。こういう方向で工夫するくらいなら、オープンソース業界に貢献でもしてほしいものだが、、、
ウィルス
断片的であり、プログラムに寄生し改竄および増殖するのが特徴だ。
その様が自然界のウィルスに酷似していることからこのような呼ばれかたをするようになった。また広義のマルウェアを指す言葉として一般的に浸透している。
感染経路はメールや、悪意あるサーバからのファイルダウンロードなどが主だ。
ワーム
ワームも自己複製機能をもつが、ウィルスとの決定的差は自立した実行ファイルということである。
セキュリティーホールやネットワークの脆弱性などを利用して、他のコンピュータにも感染を拡大させる。自己増殖機能をもつという点においてトロイの木馬と区別される。
感染経路はウィルスと一般的には同じである。
トロイの木馬
トロイの木馬は一般的には増殖機能は含まれていない。ギリシャ神話で有名な「トロイの木馬」と同じ働きをすることから、この名前が付けられた。
トロイの木馬は一見すると有用なアプリケーションなどにみえるが、そうではなく、バックグランドで情報を密かに他人のサーバへアップロードする。またユーザの知らない間に、機能拡張のためのダウンローダとして機能したり、バックドア(下で説明)としての役割をはたすなど、比較的高度である。
これらは海外のソフトウェアなどのオプションプログラムとしてインストールしてしまうことが多い。ユーザが自ら許可してインストールしてしまうのが一番の感染経路だろう。
ランサムウェア
ランサムウェアの症状は明確でわかりやすい、たとえばあなたのスマートフォンなどを勝手にロックし「このロックを解除したければ期日までにお金を振り込め」などと言い脅してくる。ポップアップ広告もこの類といえるだろう。
脆弱性を抱えたブラウザでWeb閲覧などをしていると、感染するおそれがある。最悪システムが暗号化され修復不可能になる。
ルートキット
これはシステム管理者に気がつかれないように、リコンパイルされたツール郡のことを指す。偽装し、作りなおされたプログラムのことだ。
これらがシステムに組み込まれると管理者は異常な動作を検出出来なくなる。プロセスを表示するプログラムなどが偽装されることが多い。最悪大規模に偽造されたカーネルなどを起動してしまった場合完全にシステムを掌握される。この段階に至った場合、クリーンインストールするほか、信頼性を確保する方法はない。
通常バックドアを設置されると同時に偽装工作に使われる。
これらはトロイの木馬に分類できる。
バックドア
時折システムの管理者が試験的にてっとりばやくアクセスを確保するためのプログラムをバックドアということがある。一般的には悪意をもったユーザが一度侵入したサーバに次回から楽にアクセスをかけるための「裏口」をバックドアということが多い。
この類もトロイの木馬である。
非常に多機能になっていることがある。ファイルアップロードやダウンロード、リモート操作全般が行われる。管理者からすると非常に厄介だ。
ダウンローダ
機能自体はその名前の通り、非常にシンプルだ。特定の物を特定の悪意あるサーバからダウンロードする場合などに使われる。役割はシンプルで補助的だがマルウェアの機能拡張などの要といえる。また感染を拡大させるためのツールとして使われる。
ボット
本来サーチエンジンのクローラやチャットプログラムの自動応答などのプログラムを指すが、マルウェアとしての存在もある。ボットは高度に構築されたマルウェアの側面を多角的に持ちあわせ、ネットワークを形成する。大規模で悪質なプログラムである。
ウィルスに感染した場合どうなるか?
クライアントの場合一例
もっとも単純な感染経路はクライアントの場合メールの添付ファイルだろう。
クライアントLinuxにおいてマルウェアに感染するには
- ファイルをダウンロードする
- 実行権限を与える
- ファイルを実行する
この3つの手順を踏むことになる。
「わざわざマルウェアを自分で実行するわけがない」と思われるかもしれないが。もしあなたの友人が悪意を持っていたとしたらどうだろう? あるいは常套手段として「プロバイダ名義を偽ったメール」などもある。
「あなたのOSは脆弱であり、添付したスクリプトを実行する必要がある」などと書かれていた場合、実行してしまう可能性があるだろう。
またメール内に書かれているURLを不意にクリックしてしまうかもしれない。もしブラウザに脆弱性があった場合それを利用される可能性は大きい。
ここで忘れてはいけないことがある。
クライアントとしてLinuxを使用している場合、「/home/<username>」の下にユーザのデータは保存される。このディレクトリの下にあるファイルはあなたの個人情報が納められ、そして「あなたが自由に操作できる空間」だ。
あなたが不意に他人の書いたスクリプトや実行ファイルを実行した場合何が起こってもOSは無関心である。
例えば「.mozilla」ディレクトリを特定のサーバにアップするなどコードにして100行にも満たないだろう。その場合あなたのブラウザ「Firefox」に保存されていたパスワードや閲覧履歴はほぼ筒抜けになる可能性がある。(Firefoxはパスワードマネージャにマスタパスワードを設定できるので設定することをお勧めする。)
ユーザの情報を盗むだけならばroot権限を奪取する必要もないのだ。
サーバの場合一例
サーバにおいて感染経路は多岐にわたる。
提供するサービスによって脆弱性の種類にも違いが現れる。脆弱性を突いて特定のコマンドrcpやrloginやnc(netcat)コマンドなどを不正実行できてしまう場合バックドアが仕掛けられてしまうかもしれない。
特にncなどは簡易バックドアとして機能してしまう。一度バックドアを仕掛けられた場合、悪意あるユーザはあなたのサーバに自由に出入りできる。
また昨今のバックドアは非常に多機能である。
- ファイルを検索、一覧表示、コピー、削除、実行、名前変更
- プロセスリスト列挙
- ディレクトリを作成
- ファイルをダウンロードまたはアップロード
- オペレーティングシステムのバージョン、ユーザ名、メモリの状態、環境変数、現在のプロセス、システム情報を取得
- プロセスを終了
- キーストロークを記録
- 自分自身を更新して削除
バックドアは最低でもこの類の機能が搭載されていると考えた方がいい。
「キーストロークを記録」などは、あなたのキーボード入力をすべて監視するものだ、suと打ったあとの文字を監視された場合rootのパスワードが盗まれたのと同じである。
よってバックドアを仕掛けられた場合、早急にサーバをクリーンインストールするしかない。
またWebサーバとして稼働していた場合、サーバだけでなく、クライアントにも影響を与えかねない。古いSQLサーバを利用している場合、かつ入力フォームがあるようなサイトの場合SQLインジェクションを利用し「個人情報列挙」が出来てしまう可能性がある。出来るのならば、サーバには「ペネトレーションテスト」を実施することをお勧めする。
Linuxのウィルス対策
基礎的な対策としては
- root権限を徹底的に自己管理する。(suid sgidなどのパーミッション)
- リモート操作系はアクセス制御を厳格に行なう。(sshの設定など)
- 無闇にメールの添付ファイルなどは開かない。
- こちらから要求したパケット以外は全てドロップさせる設定を施しログをのこす。(iptablesの設定)
- パッケージは全て最新を保つ。(パッケージ管理システムから最新のパッケージをインストールする。)
- 信頼するリポジトリを使う。(信頼できるリポジトリをつかうことでトロイの木馬の侵入リスクは抑えられる。)
- パッケージは最低限の物以外導入しない。(これにより根本リスクを抑えられる。)
- ログを定期的に監視、管理する。(/var/logの下を定期的に管理する。)
- アンチウィルスを導入する 。(clamavなどを使う。)
- 脆弱性スキャナを利用する。(現在のサーバの脆弱性把握)
- ネットワークにUTMなどを設置して監視する。(流れているパケットの監視)
- サーバのサービスはなるべくサンドボックス状態にする。(権限とアクセス範囲を最小化する。)
- 余分なサービスを起動しない。
- ログインしないユーザにはシェルを与えない。 (メールサーバのアカウントなど)
- 常にネットワーク上にあるファイルは身元を確認する。
- NFSサーバは定期的にウィルススキャンをかける。(感染ハブになりかねないからである)
日常でこれらを意識していれば、未然に感染は防ぐことができる場合が多い、しかし「セキュリティに完全はない」ことを忘れないでいただきたい。
Linuxのセキュリティに関しては下記のページが詳しい。
Linuxで利用可能なアンチウィルスソフトを提供しているメーカー
商用で提供されている物はディストリビューションで決め打ちされている場合があるので、入るものを入れよう。
- clamav (オープンソース)
- AVG
- AVAST
- Trendmicro
- Symantec
- McAfee
- F-Secure
などが代表的だろう。
正直強力とは言い難いが、入れないよりは入れておいた方がいい。また、遅くなるリスクはあるので、スピードが問われるシステムであれば、導入後の速度チェックは必須だ。
まとめ
このページではLinuxに関して、ウィルスの種類や対策方法などをまとめてみた。
LinuxはWindowsに比べて攻撃者が少ないのは事実だ。しかし、サーバーとして使っているのであれば、セキュリティは気をつけても気をつけ過ぎることはない。
基本的な知識は持っておこう。
スマホでプログラム勉強できないかな?
こちらの記事をご参考に!
【初心者向け!】スマホでプログラミングを勉強できるアプリ9選