• ベストアンサー

CGIからのUNIXコマンドを防止する方法

telnet.cgi を使うと、CGIからUNIXコマンド(rmなど)が自由に使えてしまいます。 この利用を防止する方法はないですか。 /usr/bin /usr/local/bin フォルダのアクセス権を700にしてみたのですが、これではhttpdなど他のものまで、影響を受けてしまいました。

  • defd
  • お礼率19% (11/56)

質問者が選んだベストアンサー

  • ベストアンサー
  • akino4
  • ベストアンサー率18% (35/185)
回答No.3

group examを例にすると -rwx---rwx hana:exm test.pl には、akira:examな人はアクセスできません。 そんな感じでいいんじゃないんですか? 特定のグループを排除したいなら ただ、この設定ではhana:examな人はあくせすできます。examに所属していても hana:examもきにくわないなら007とか まぁ~manでも読んでください 試せば3分で分かることですし

その他の回答 (2)

  • akino4
  • ベストアンサー率18% (35/185)
回答No.2

えっとこのURL解決するでしょ? パーミッションはどうするかは自分で考たが早いかな? グループで蹴るのがいいとおもいます

参考URL:
http://httpd.apache.org/docs/suexec.html
defd
質問者

補足

suEXECは利用しているのですが、これでどうすればいいでしょう。 例えば、/bin にアクセスさせたくないユーザー のgroup を users01 としたら、 /bin のアクセス権をどう設定すればよいでしょう。 group が users01 のユーザーはアクセスできない、というような設定はできますでしょうか。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

一般の利用者には、CGIを作るために telnet は開放したいが、telnet.cgi を使わせたくない、ということですね。 一番確実なのは、telnet.cgi を削除してしまうこと、です。 後、考え付くのは、ログインシェルが読み込む起動時のスクリプトに、 親のプロセスをたどっていって、その中に httpd がいたら、そのまま 抜けてしまうような記述をしておくこと。 または、ログインシェル自体を自分で作成して、そのような判断を入れて しまうということ。 どちらにせよ、telnet.cgi を削除する以外に「簡単に」という方法は 思い付きません (^^;

関連するQ&A

  • chrootコマンドがうまく使えません

    /usr/sbin/chroot /usr/local/apache2 /usr/local/apache2/bin/httpd -k start のコマンドを実行したいのですが、動かないのは何故なのでしょうか? コマンドの結果として、コンソールには以下の表示がされています。 /usr/sbin/chroot: cannot execute /usr/local/apache2/bin/httpd: No such file or directory PS chrootのコマンドパス httpdのパスはあってます。よろしくお願いいたします。

  • apacheのCGI設定

     pc9821にFreeBSD(98)をいれapache1.3を起動させています。cgiはlight.cgiというソフトをつかっています。なかなかcgiがうまくいきません。参考ページには public_html / index.html (トップページ) | +-- bbs / light.cgi [755] | admin.cgi [755] ・・・・(省略) +-- lock [777] / | +-- past [777] / 0001.cgi [666] とかかれていますが、実際に私のサーバーにはpublic_htmlというフォルダは存在していなくて /usr/local/www/cgi-binにbbsというフォルダをつくり あとは上のようにしています。またindex.htmlは/usr/local/www/dataのなかにいれて表示してWebサーバーとしてはたらいています。またapacheの/usr/local/etc/apacheのhttpd.confは 関係ありそうな行だけあげると ServerRoot "/usr/local" DocumentRoot "/usr/local/www/cgi-bin" <Directory "/usr/local/www/cgi-bin/bbs"> Options Indexes FollowSymLinks MultiViews <location "/cgi-bin/"> Options ExecCGI AllowOverride AuthConfig Limit Order allow ,deny Allow from all </Location> <IfModule mod_mime.c> TypesConfig /usr/local/etc/apache/mime.types ADDHandler cgi-script .cgi </IfModule> ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/" <Directory "/usr/local/www/cgi-bin/bbs"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi どこがおかしいのかおしえていただけないでしょうか?

    • ベストアンサー
    • CGI
  • APACHEは起動するが、ブラウザからアクセスできない

    Red Hat Linux7.1 APACHE1.3.19 部内LAN上でLinuxサーバーを構築しています。 Apacheをコンパイル&インストール(成功?)したのですが、 クライアントのブラウザからhttp://xxx.xx.xxx.xx/を入力して アクセスしようとすると「(145) Connection timed out」で接続できません。 原因がよくわからないので、怪しいと思う点についてアドバイスをお願いいたします。 自分で切り分けた結果を以下に記します。足りない点があれば、ご指摘ください。 ちなみにtelnet、ftpなどの基本的な(?)ネットワーク機能は生きています。 ●apachectl configtestの結果は「Syntax OK」 ●apachectlも起動する ●「telnet localhost http」→「GET /」を入力すると応答がある ●しかし他のホストから「telnet xxx.xx.xxx.xx http」で接続しようとしても、拒否される。 ●ブラウザからの接続要求に対してhttpdが反応していない(topコマンドで監視) ●ps -ax|grep httpdの結果は以下のとおり 223 ?? Ss 1:09.47 /usr/local/apache/bin/httpd 233 ?? I 0:00.84 /usr/local/apache/bin/httpd 234 ?? I 0:01.02 /usr/local/apache/bin/httpd 235 ?? I 0:00.22 /usr/local/apache/bin/httpd 236 ?? I 0:00.23 /usr/local/apache/bin/httpd 237 ?? I 0:00.41 /usr/local/apache/bin/httpd 311 ?? I 0:01.45 /usr/local/apache/bin/httpd 1429 ?? I 0:00.26 /usr/local/apache/bin/httpd

  • CGIスクリプト 保存用ディレクトリ

    ApacheというWWWサーバーでは、srm.confというファイル内に  ScriptAlias /cgi-bin/ /usr/local/www/cgi-bin/と記述し、かつaccess.confというファイル内に、 <Directory /usr/local/www/cgi-bin> </Directory> という記述を行うことで、/usr/local/www/cgi-bin/というディレクトリがそのCGIスクリプトの保存用ディレクトリになります。 と書いているのですが、どういうことかよくわかりません。srm.confというファイルはあらかじめ、パソコンにはいっているのでしょうか? ScriptAlias /cgi-bin/ /usr/local/www/cgi-bin/と記述しと書いているのですが、何で記述したらいいのでしょうか。 すいませんが、教えてください。

  • ローカル環境でのCGIエラー

    ActivePerlとAn HTTPdでWindowsXP HomeEditionのPC上でCGIを動かそうと思っています。 どちらも最新版をダウンロードしてインストールしました。 ActivePerlに関してはegフォルダ下のexample.plで動作確認が取れています。 An HTTPdに関してはhttp://127.0.0.1以下のURLを指定してページが表示されています。 ですが、htmlからcgiを呼び出そうとすると「ページを表示できません」「サーバーが見つからないか、DNS エラーです。」のエラーが出てしまいます。 試しにcgiファイルをフルパスで指定したのですが同じでした。 ちなみに、簡単なCGIプログラムtest.cgiを作成、サーバにアップして動作を確認しましたがローカルではエラーになります。 また、ローカルでコマンドプロンプトにて c:\usr\local\bin\perl c:\プログラムのパス\cgi-bin\test.cgi と入力すると内容を表示します。 コマンドプロンプトでCGIプログラムのあるcgi-binディレクトリに移動して perl -v と入力するとperlのバージョン情報を表示するので、パスは通っていると思われます。 Au HTTPdのerrors.logには Thu Aug 16 19:21:18 2007 Warning: CGI TerminateProcess 2500 error 5 とりあえず、自分で原因を絞れるであろうところはあたってみたつもりですが、何か見落としていることがあるでしょうか? もしかしたらAu HTTPdに問題があるでしょうか?

    • 締切済み
    • CGI
  • CGIが動きません

    uranai.cgiのパーミッションは755です。 #!/usr/local/bin/perlではなく #!/usr/bin/perlを使っていますが、 これはサーバの説明にありました。 下記URL内の3ファイルをCGIフォルダに格納して サーバにアップしましたが、エラーになります。 cgi-binにする必要はないとのサーバ設定の記述にありました。 動かない理由がお分かりの方は、ご教授いただけると幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • CGIへの直リンク防止方法について

    CGIへの直リンクの防止方法について質問です. MacOS X でWEBサーバーを構築しています.httpdはapacheです. 現在,http://www.aaa.jp/bbb/ccc.htmlからhttp://www.aaa.jp/cgi-bin/ccc.cgiへリンクさせています.ccc.htmlへは.htaccessを用いてパスワードによるアクセス制限を行っております. 今の設定ですと,cgiファイルへ直接リンクできてしまいます.そこで,直接リンクを防止するために,apache内に <Directory /library/var/cgi-bin> SetEnvIf Referer "^http://www\.aaa\.jp/ ref_ok order deny,allow deny from all allow from env=ref_ok </Directory> という記述をしました.しかしこの記述を加えるとcgiを実行できなくなってしまいます.cgi-biフォルダ内の.htaccessを有効にして,.htaccessで記述してもうまくいきません. この記述はhttp://www.shtml.jp/htaccess/referer.htmlを参考にしました. どこがおかしいところはありますでしょうか. ご教授お願いします.

  • cgi(perl)でパラメータが渡せない

    以下のプログラムでnum=9が伝わらないので、ミスをご指摘ください。 グラフィカルなアクセスカウンタを表示させようとしていますが うまくいかないのでテキストモードでデバッグしています。 [ /usr/local/apache2/htdocs/gif-view.html ] <html> <head> <meta http-equiv="Content-type:" content="text/html; charset=UTF-8"> <title>gif-view</title> </head> <body> <iframe src="/cgi-bin/gif-test.cgi?num=9"></iframe> <!-- <img src="/cgi-bin/gif-test.cgi?0" width=50 height=50> --> </body> </html> [ /usr/local/apache2/cgi-bin/gif-view.cgi ] permission は 755 にしています。 #!/usr/bin/perl print "Content-Type: text/plain;\n\n"; print "gif-test.cgi\n"; $prm0 = @ARGV[0]; if($prm0 = "") { print "Param is exist\n"; } else { print "Param is empty\n"; 実行結果として gif-test.cgi Param is empty となります。 httpd.conf で Script Alias /cgi-bin/ "/usr/local/apache2/cgi-bin/" を有効にしています。

    • ベストアンサー
    • Perl
  • OSXでcgi

    OSXでperlで作ったcgiを動かしたいと思い色々といじってるのですが全く動きません。 apacheのhttpd.confの設定で AccessFileName .htaccess AddHandler cgi-script .cgi AddHandler cgi-script .pl についてはコメントをはずして使えるようにして Perlのパスも#!/usr/bin/perlとしてsiteフォルダとcgiを置いてるディレクトリに.htaccessを下のように記述して作り AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .cgi/ パーミッション設定をちゃんとしてあげてるのですがブラウザからアクセスするとForBiddenとでてしっかりと設定してるはずのパーミッション設定が間違ってますと言われてしまいます。 OSXでcgiを動かすには他にももっと色々と設定しなければダメなんでしょうか?

    • ベストアンサー
    • Mac
  • サクラのレンタルサーバーです。CGIが動きません

    サクラのレンタルサーバーを借りました。 早速CGIを試そうと思ったのですが、原因不明のInternal Server Errorが出ます。 cgi-binはいらないとのことですので、wwwにそのまま入れました。 index.htmlも同じ場所にありそれは出ますのでパス間違いではないです。 またパーミッションも777にしてみましたが駄目です。 #!/usr/local/bin/perl print "Content-Type: text/html\n"; print "\n"; print "<html>"; print "<body>"; print "abc"; print "</body>"; print "</html>"; こんな感じで、TELNETでログインして実行も出来ます。 bash-2.05b$ ./index.cgi Content-Type: text/html <html><body>abc</body></html>bash-2.05b$ いろいろ調べたのですが ◆パーミッション→OK ◆TELNETで実行してみる→OK ◆perlへのパスは?→/usr/local/bin と /usr/bin どちらでもいいそうです。験しに変えましたが状況変わらず。 何か気が付いたことがあれば教えてください

    • ベストアンサー
    • CGI