質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

3回答

1946閲覧

実行ファイルに対して標準出力以外(ファイル読み込みや通信制御)の挙動を許可しない方法

damalnylpo

総合スコア53

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

0クリップ

投稿2016/08/11 13:55

###質問したいこと
実行ファイルは標準出力以外に
ファイル読み込みや通信といった操作が行えますが
標準出力以外の挙動を弾くようなことはできますか?

###やりたいこと
悪意のある可能性を孕んだ実行ファイルを実行しても被害が起きない環境を作りたいです。
また、実行ファイルに対して期待する挙動は標準出力のみで
ファイルの読み書きや通信は、実行している間には必要ありません。
また実行時間が一定時間を超えると強制終了させます。
ただし通信は完全にシャットアウトするわけでなく、
こちらが用意したプログラムを実行する際には通信したいです。

仮想環境やサンドボックスで実行することで被害そのものは防げますが
ウイルス等が判明するたび強制終了するようなものでなく、
ウイルス自体が働きようがない環境を作ることは可能なのでしょうか?

例えばその実行ファイルに対する実行権限しか持たないユーザのcronで
毎日特定の時間、特定のディレクトリ内のファイル(別の時間帯にアップロードされた実行ファイルを受け取っている)を全て実行し、
その間ネットワークを遮断されているサーバがあったとしても
サーバが乗っ取られたりなにかしらの攻撃を受ける可能性はありますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

SELinuxを使えば可能だと思います。

SELniuxはプロセスやユーザー、実行ファイル等に対して、ファイルやディレクトリ単位での読み書き制限(ファイルのACLとは別に設定可能)やネットワーク接続(クライアントとしてもサーバとしても)の制限など細かい制御ができます。

実際の設定を見るのであれば、RHELやCentOSのApache HTTP ServerでSELinuxを有効にした場合が参考になるでしょう。この環境ではCGIが読み書きできるファイルやディレクトリは制限されています。DB接続なども別途許可する設定をしないとできなようになっています。2014年に衝撃をもたらしたShellShockの脆弱性も、SELinuxが有効になっていれば、攻撃をある程度防ぐことが可能でした(ShellShockを使ってCGIの動作を乗っ取ったとしても、CGIプロセスには制限があるため、攻撃者はサーバー自体の乗っ取り等ができない)。

しかし、SELinuxは複雑でカスタマイズするのは結構大変です。例に挙げたRHEL/CentOSでのApache HTTP Sererであれば、テンプレートが用意されていますので、やりたい項目についてはある程度簡単に設定はできますが、自分で一から設定するのはかなり勉強しないと難しいです。ほとんどのWebアプリがRHEL/CentOS上で動作させる場合にSELinuxを無効にするように言っているのはそのためでもあります。

投稿2016/08/11 15:33

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

damalnylpo

2016/08/11 21:25

回答ありがとうございます! SELinuxは名前しか知りませんでしたがそんなことまでできるんですね・・・ 実は特定のファイルが読み書きできるならそうしたかったので 予想以上の方法があって助かりました! ありがとうございました!
guest

0

実行に必要なライブラリもファイルですので、読み込みを許可する/しないファイルを区別する必要がありますよね。
思いつきですが、SELinux などの Mandatory Access Control (MAC: 強制アクセス制御)を利用すれば何とかなるかもしれません。

投稿2016/08/11 15:25

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

具体的な回答とは言えないですが、
ある実行ファイルだけであれば、その実行ファイルを実行するユーザーの権限でなんとかなるでしょう。
または、OS自体Readonlyでマウントするとか、Raspberry piではReadonlyにして組み込み機器みたいにしてしまうという記事は見たことはあります。
ただ、メモリ上への書き込み(tmpfsとか)は可能です。

ウイルス等が判明するたび強制終了するようなものでなく、

ウイルス自体が働きようがない環境を作ることは可能なのでしょうか?

これに関してですが、実行中でコンソールになにか叩けるならメモリへのアクセスが可能でしょうし、
その端末を触れる人がいるなら、例えばメモリを使い果たしてカーネルパニックとかできるので難しいでしょうね。

その端末を誰も触らないなら多少違うのかもしれませんが、「こちらが用意したプログラムを実行する」「通信したい」とあるので、プログラムに脆弱性があったり(通信部分含む)、開発環境にマルウェアが混入していてプログラムはきちんとしているがビルドすると変なものになるとかいう可能性もあるので、だれかが何か追加で入れる時点で危険性は完全にはぬぐえないと思います(そのあたりは程度の問題ですが)。

たとえばLiveCDにして(用意するプログラムも検証してCDに含む)、CD入れて電源入れる以外誰も触らないならあとは通信部分だけ心配すればいいぐらいにはなるかもしれません。

方法はさておきメモリを壊せば稼働中のシステムは止めることはできそうに思いますので、「ウィルス自体が働きようがない環境」を完全に保証したいということであれば、それは難しいんじゃないかと、個人的には思います。

投稿2016/08/11 14:29

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問