• 締切済み

CGIのセキュリティ

Linux+Apache環境で一般ユーザにCGIを使用させる場合、ホームディレクトリより上の階層に遡らせないようにすることは可能でしょうか? 例えば、/etc/passwdをCGIプログラムからファイルオープンして表示させるようなプログラムなどの動きを封じたいのです。 PHPのセーフモードのようなことはできないのでしょうか?

みんなの回答

回答No.1

ステッキービットとかchrootかな? 詳しくないのでURL紹介のみ、、 http://www.hizlab.net/app/apachesec.html http://www.saturn.dti.ne.jp/~hsakai/cdbsd/one_part.html すみませんが、それ以上はご自分でお調べください。

bubblyslime
質問者

お礼

ありがとうございます。 実はchrootは既に設定していまして、シェルからはホームディレクトリより上の階層に遡れない(はず)ですが、CGIからは/etc/passwdなどを読み込めてしまい、そこで詰まっている状況です。 もう少しがんばって調べてみます。

関連するQ&A

  • CGI (suEXEC)について!

    CGI (suEXEC)についての質問です! OS: Red Hat Linux 7.3 httpd: Apache 1.3.28 Apacheの設定ファイル httpd.conf 内で設定してある DocumentRoot のディレクトリ内にある CGIを”パーミッション700の場合にのみ”動作するようにする方法はありますでしょうか? suEXECを使用してユーザディレクトリ内のCGIは700で動くようにできたのですが、 httpd.conf 内で設定してある DocumentRoot のディレクトリ内では700だと動かない為。 また、suEXECというものは、ユーザーディレクトリのみに適応されるものなのでしょうか? ご存知の方いらっしゃいましたら、アドバイス等を宜しくお願いします。

  • CGIの設定

    いつもお世話になっております。 各バーチャルドメイン内でCGIを動作させるためにApacheの設定を したのですが、「ページが表示されません」と出てしまいます。 (バーチャルドメインの設定も完了していて、HTMLファイル、PHPファイルは正常に動作しています。) よろしくご教示お願いいたします。 /etc/httpd/conf/httpd.conf -------------------------------------------------- ScriptAliasMatch /~(..*)/cgi-bin/(.*) /home/$1/cgi-bin/$2 <Directory "/home/*/cgi-bin"> AllowOverride None # Options None Options ExecCGI Order allow,deny Allow from all </Directory> (1) ↓にファイルをアップロード   パーミッションは「755」に設定してあります。   /home/ユーザ名/cgi-bin/count.cgi (2) ブラウザから↓のURLでアクセス   http://バーチャルドメイン/cgi-bin/count.cgi <環境> Red Hat Enterprise Linux 5 Apache:2.2.3

  • CGIを開けない。。。

    apacheとphpを設定して動作確認したあとに、cgiも操作したいので、Active Perlというものをインストールしてみました。 phpは、http://localhost/で「C:/Program Files/Apache Software Foundation/Apache2.2/htdocs」のフォルダーを参照できるのですが、cgiを開くときには、どこのフォルダーに格納し、URLをどうすれば宜しいのでしょうか?(因みにcgi-binとhtdocsに格納し、http://localhost/***.cgiで試したのですが駄目でした。) Active Perlインストール後に変更した場所 ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/" <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin"> AddHandler cgi-script .cgi .pl なお、perlの設定には、こちらhttp://www.jisaba.net/xp/actpeal/04.htmのサイトを参考にしました。 環境はWindowsVistaです。 どなたか宜しくお願い致します。

    • ベストアンサー
    • Perl
  • Apache2 - CGIで出力されたファイルの所有者を変更するには?

    Gentoo LinuxでApache2を動かしています。 Apache2の質問です。 UserDirで実行された(mod_userdirで処理される)CGIまたはPHPスクリプトが出力するファイル/ディレクトリの所有者を、リクエストされたユーザディレクトリのuid, gid へ自動的に変更する方法を教えてください。 レンタルサーバーではこのような動作を見掛けるし一般的だと思うのですが設定方法がわかりません。 よろしくお願いします。

  • cgiからファイルの書き込みができません

    apache上で動いていたcgiプログラムがある日を境に動かなくなってしまいました。 ファイルにテキストデータを書き込みたいのですがうまく動きません。すでにあるファイルに対しては、データを追加することができるのですが、新たにファイルを作成して書き込むことができないようです。 これに前後して以下のような作業を行っています。 ・PHPのインストール ・パーミッションの変更 パーミッションの問題かと思い色々試しましたがうまくうごきません。 どなたかご助言ください。 ちなみにパーミッションは /cgi-bin(777) オーナー:ユーザー -home(777) オーナー:ユーザー -counter.cgi(777) オーナー:ユーザー  -count.dat(777) オーナー:ユーザー で試してみましたが成功しませんでした。 サーバはapacheの1.3.22です。

  • CGIファイル内の CGI呼出しのパスについて

    CGI 内からの .cgi ファイルの呼出しのパスについて質問があります。 動作環境は linux - apache - perl です perl の cgi ファイル内で次のように、同じ /cgi-bin ディレクトリ内の reset.cgi をコールしています。 ========== #!/usr/bin/perl (省略) if($form[0] =~ /reset/){ `reset.cgi`; } ========== バッククォートで実行していますが、これでは動作せず、 ./reset.cgi と ピリオド,スラッシュを前に付けると動作します。 少し調べた結果、カレントディレクトリのパスが通っていないのかと考え、 /etc/profile の PATHに下記のように ピリオド を追加してリブートしたところ、 export PATH=$PATH:. ホームディレクトリなどで作成した シェルスクリプトは ./ なしで動くようになりましたが、 /cgi-bin ディレクトリ内の前述のような呼出しは動作しませんでした。 後は httpd.conf などの編集が必要なのかもしれませんが、 良く分かりませんでした。 申し訳ありませんが、教えて頂けると助かります。 よろしく御願い致します。

    • ベストアンサー
    • CGI
  • htmlにCGIプログラムの埋め方。

    window2000+apache2+perl5の環境ですが。 ディレクトリの構成: c:\Program Files\Apache Group\apache2 apache2にcgi-bin とhtdocsの二つのディレクトリがあり、 cgi-binにwforum.cgiというCGIプログラムがあるとします。 \htdocs\index.htmlを次のように作りました: ------------------------------------ <html> <head> <title> test page </title> </head> <body> ここに”BBS 行き”というハイパーテキスト をクリックしたら、wforum.cgiを実行してくれる </body> </html> -------------------------------------- 上のようなプログラムをどう作れますか。できれば、相対 パスを使いたいです。

    • ベストアンサー
    • CGI
  • CGIの設置ができません。

    Apacheのhttpd.confを設定して、aska.cgiという掲示板を動かそうとしているのですが、うまく動きません。 色々調べた結果、httpd.conf内のOptionというところにExec CGIを追記すればいいとのことだったので、 <Directory "C:/Program Files/Apache Group/Apache2/htdocs"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> としましたが、 Options ExecCGI is off in this directory: C:/Program Files/Apache Group/Apache2/htdocs/aska/aska.cgi, referer: http://localhost/aska/ とerror.logには表示されてしまいます。 ちなみにaska.cgiは C:/Program Files/Apache Group/Apache2/htdocs/aska/ に入っています。 よろしくお願いします

  • CGIが動きません!!

    CGIが動きません。htmlを表示できる状態です。 エラーログには「 couldn't spawn child process: g:/program files/apache group/apache/cgi-bin/hello.cgi」と表示されています。 どうしたら良いのでしょうか? windouw NT 4.0 + Apache version 1.3.19 + Active Perl version 5.005_03 です。 perlの構文チェックは問題なしです。 httpd.confの設定は下記のようにしました。 1.AddHandler cgi-script .cgi を追加。 2.オプションの設定にExecCGIを追加。 <Directory "G:/Program Files/Apache Group/Apache/cgi-bin"> AllowOverride None # Options None Options ExecCGI Order allow,deny Allow from all </Directory>

  • apacheでCGIの置き場所

    apacheでwebサーバを運用管理しているのですが、 利用ユーザから「自分のホーム配下でcgiを動かしたい」と要望が来ました。 現在cgiはユーザホームディレクトリとは別に「/xxx/cgi-bin」を設定して、 管理者がファイルの書き込みを行うようににしています。 一般的なセキュリティの考えとして各ユーザのホーム配下にcgiの実行権限をつけるのは問題ないのでしょうか? そのユーザ自信のミスによるセキュリティホールというよりは、 外部からのアタック等の問題を重視したいです。 そのユーザへの説明が必要なので、できればこれについて記載してあるサイトがあったらあわせて教えてください。