このファイルは、COPSシステムを使う間あなたが見たいセキュリティ警告のほとんどのリストを含んでいます。あなたが Kuangシステム と ftpチェッカー から受け取ったメッセージは、ここに含まれません。それらのツールを使う時の手助けのために、それぞれの適切なドキュメンテーションを読んでください(「kuang.doc」および「ftp.1」を参照してください。)
まず初めに、私はあなたが行きあたるどんな問題についても説明するとき使用するつもりでいくつかの任意の用語を定義するつもりです。 いくつかのほとんど同じ警告がリストから排除されました;しかしながら、ほとんどの警告には、このファイルの中のとても近いシンタクスある類似のエントリーがあるはずです。
COPSのすべてのメッセージが「Warning!」によって処理されます; Warning!で処理されるのは、あまりにも簡単なのでここでは除きました。
ここでリストされたどんな問題も解決するためには複数の方法があるかもしれません。問題を訂正するべきかどうかについて確信がない場合、攻撃者がどのようにあなたのシステムを危険にさらすかについての詳細は、技術報告書(cops.report)の終わりにリストされた参考文献のうちのいくつかを読んで下さい。
より危険なセキュリティ・ホールのうちのいくつかは書き込み可能なディレクトリおよびキー・ファイル( /etc/passwdのような )に含んでいます。rootオーナーは、皆から書き込み可能なSUIDファイルもしくは、それをroot shellに与えました、無効なパスワード、およびrootにより実行される書き込み可能なファイル。
それらは同様なグループにおいては多少アレンジされます( 部分的など、すべての書き込み可能なファイル /dirs/ 何でも・・・・・ )COPSが言うすべてを信条としてとらないでください!1台のマシンの重大なセキュリティホールが何であるかわからない、自分でないかもしれないこと、さらにその逆もまた同様です。
しかしながら、もっとマシンについての情報を評価したりするなど、セキュリティについて関心を持っているべきです。
私が使用するいくつかの用語:
xyz — 任意の数、通常ファイル中のラインナンバー。
foo_file — あなたの警告メッセージにおいてあなたが見てもよいファイルを表します。
foo_file2 — 「foo_file」と同じは、1番目(2つのファイル名が1つのメッセージに必要な時使用された。)とは異なっているファイルを表わします。
foo_dir — 典型的なディレクトリ。
Group file — 「/etc/group」あるいは「yellow pages group」の場合、警告は「Group」で始まります、それは前者です。「YGroup」は後者です。
foo_group — /etc/groupあるいはygroupのいずれか。
Password file — 「/etc/passwd」あるいは「yellow pages password」の場合、警告は「Password」で始まります、それは前者です。「YPassword」は後者を指します。
foo_pass — /etc/passwdあるいはypasswdのいずれか。
cron_file — /usr/cronあるいは/usr/spool/cron/crontabs/foo_fileのいずれかになるでしょう。
foo — 上記で適合しないものすべて。通常任意の名前(すなわちグループ名)か何か。
bar — 「foo」として、一つを越える名前が1つのメッセージに必要な場合。
foo_bar — 「foo」として、2つを超える名前が1つのメッセージに必要な場合。
WARNING MESSAGES
——————
1)
「foo_file is _World_ writable!」
「foo_file is group readable!」
これは、ファイルが書き込み可能な世界であることを単に意味します;例えば誰でもこのファイルを修正するか削除することができてしまいます。ファイルがシステム・パスワードファイルのような性格のものでrootアクセス権を与えることができる場合(間接的にでも)、これは最悪になりえます、「/etc/passwd。」
To fix, type : [ chmod a-w foo_file ] This removes write access for group “all/world”.
2)
「foo_file (in cron_file) is World writable!」
「File foo_file (inside root executed file foo_file2) is _World_ writable!」
「File foo_file (in /etc/rc*) is _World_ writable!」
上記のメッセージは同様ですが潜在的にはより重大です。
このグループにおけるファイルは、rootで使用されて、入力するように利用されたか、出力するように利用されたか、または実行のために利用されたものです。それらがあるファイルを検査して、それがどのように使用されているか確かめてください。それらが変更された場合、新しいファイルがroot権限で実行されるので、実行されているファイルは非常に危険なものです。入力ファイルは、次に、実行プログラムが行おうとする事を変えてしまうかもしれない不都合な側面が有ります。出力ファイルさえ危険になりえます、しかしながら、それらが出力として、または、プログラムとして使用されるかもしれないので、後でファイルにしてください。
To fix, either delete the reference to foo_file inside the cron /rc*/foo_file2/ whatever file, or typ : [ chmod a-w foo_file ] to remove write access for group “all/world”.
3)
「Directory foo_dir is _World_ writable!」
これは、ディレクトリ(あるいは、親ディレクトリです)が書き込み可能な世界であることを単に意味します;
例えば誰でも、それに内部のファイルおよびサブディレクトリをめちゃくちゃに削除することができます。
例えば、cronが書き込み可能でなくても、/usr/spoolが書き込み可能な世界である場合、cronディレクトリを交換することができ、新しいcrontabファイルを入れられる(すべてはroot権限でそれを実行する)ので、これは問題です。一般に、もしあなたが、安全なファイルまたはディレクトリを持っていることを望むならば、親ディレクトリであるすべてのディレクトリが安全に違いありません。
To fix, type : [ chmod a-w foo_dir ] and/or chmod a-w [foo_dir’s parent directory] This removes write access for group “all/world”.
4)
「Directory foo_dir is _World_ writable and in roots path!」
これは(3)と同じであるけれども、ディレクトリは、/.loginまたは/.profileのいずれかの環境変数にセットされている事を気づかれました。さらに、それが書き込み可能な場合、そこにトロイの木馬を置くことができるので、悪いものです。また、rootはコマンドを実行出来てしまうでしょう。
(24)を参照して下さい。
5)
「Duplicate Group(s) found in foo_group:」
これは、1つ以上の複製のグループ名が見つかったことを意味します。
これはほとんどの場合、システムの問題です; グループ名を加えるか、または削除するとき、あなたに問題が起こるでしょう。
To fix, remove all but one instance of each group in your /etc/group file.
6)
「Group foo_bar has duplicate user(s):」
(5)と同様です、グループは、何回もリストされた同じユーザーを持っています。
もしユーザーのすべてが削除されるわけではないならば、それらは、恐らく古い権限とともに残るでしょう。
To fix, remove all but one instance of a user in each group of your /etc/group file.
7)
「Group file, line xyz, non-numeric group id: foo」
グループidは数値であるに違いありません。非数値のidのテストは予測不能の結果を与えるでしょう。
To fix, change the old id to a valid group id.
8)
「Group file, line xyz, is blank」
To fix, remove all blank lines.
9)
「Group file, line xyz, does not have 4 fields: foo」
より多い問題。グループのうちの1つ以上のテストが、無効の結果を生じました。しかし、どれが無効のフィールドであるかによります。
To fix, ensure group has four valid fields.
10)
「Group file, line xyz, nonalphanumeric user id: foo」
(7)として.
To fix, change the old id to a valid group id.
11)
「Group file, line xyz, group has password: foo」
To fix, change the old password to an asterisk (“*”).
12)
「Password Problem: Guessed: foo shell: bar passwd: foo_bar」
もしアカウントが、推測されたパスワードを持っているならば、それは他のパスワード推測プログラムに影響され易いでしょう(COPSの中のものはやや自然のままで遅い)。あきらかに、パスワードが知られている場合、アカウントは危険にさらされます。
To fix, either have the user change her/his password or change it yourself.
13)
「Password Problem: null passwd: foo shell: bar」
「Password file, line xyz, no password: foo」
アカウントがパスワードを持っていない場合、誰でもそのアカウントにログインすることができます。
To fix, either have the user change her/his password or change it yourself.
14)
「Duplicate uid(s) found in foo_passwd:」
もし特に、アカウントが種々の許可または特権を持っているならば、これは問題です。
ユーザーのアカウントが削除される場合には、1つ以上のアカウントがアクティブであり続けることができます。
To fix, simply delete all but one occurrence of the users account.
15)
「Password file, line xyz, user foo has uid = 0 and is not root bar」
理想的には、rootを除いた誰もが uid = 0 を持つべきではありません。
すべての目的のために、 uid=0 を持つ者は誰でもスーパーユーザーです。
時折、メンテナンス・アカウントは uid=0 、あるいは恐らく管理者の小集団が持っています。特に注意深くしてください!
To fix, change the uid from 0 to some other valid number.
もしアカウントまたは人にroot権限が本当に必要ならば「su」で持って下さい、誰がrootを使用しているか跡を追うことができます。
16)
「Password file, line xyz, nonalphanumeric login: foo」
別のメンテナンス問題。誰かがpasswdファイルを触っていました。あるいは、それをいじくり回すソフトウェアの中に何匹かのバグを飼っています。
To fix, delete or change the login to a valid login.
17)
「Password file, line xyz, invalid login directory: foo」
ユーザーfooのホームディレクトリバーはディレクトリではありません!ユーザはパスワードファイルに存在しない無効なログイン・ディレクトリーをリストします。
時々、これらはメンテナンスアカウントですが、妨害されます。それが本当に存在するべきであるかどうかを知るために、アカウントをテストしてください。
To fix, either delete the account or put in a valid login directory.
18)
「Password file, line xyz, nonnumeric group id: foo」
「Password file, line xyz, nonnumeric user id: foo」
ユーザーは無効のユーザーまたはグループidを持っています。
危険です。チェックされた時、無効の数(この人は何が起こるか知っている)を意味しています、より最悪なのは「0」であることです。
To fix, change the field to a legal, numeric value.
19)
「Password file, line xyz, negative user id: foo」
ユーザーidはネガティブです。これはユーザ名前「nobody」、および「-2」のidについてです。特に、あなたのマシンに「sun」が走っているならば、これが「4.xx SunOS」だとしてら危険であるかもしれません。他のバージョンまたは他のマシンに対してそれが危険であるかどうかは不明です。それを32767に交換する行動は通常のコースです。
20)
「Password file, line xyz, does not have 7 fields: foo」
危険です。プログラムがフィールド値をチェックする時に、それを誰かが知って何かをするでしょう。
To fix, ensure all fields have legal values.
21)
「Password file, line xyz, is blank」
To fix, delete all blank lines.
パスワードなしで空白行がuid=0アカウントを与えることができるので、これは非常に悪いかもしれません。
22)
「NFS file system foo exported with no restrictions.」
誰でもファイルシステムを設置できます。問題かもしれないし、そうでないかもしれませんが、これ以上の情報のANYを評価したいならば、もっと注意深く見てください!
To fix, put in a valid list of hosts that may mount it.
23)
「Root’s umask set to xyz」
rootのumaskが不正確にセットされれば、それが作成するどんなファイルも、悪い許可(例えば、書き込み可能な世界の場合、000、x00あるいはxy0)を持っています。
To fix, put a “safe” value; 077 or whatever.
24)
「”.” (or current directory) is in roots path!」
トロイの木馬は、ユーザ・パスにカレント・ディレクトリを持っていることにつけ込みます。悪人は、一般的なシステム・コマンド(“ls”なんてお気に入り)と同じ名前でトロイの木馬を置いて、それをその人が実行するかもしれないと考える位置に置くでしょう。さらに、トロイの木馬が実行される時、それはコマンドを実行するだけでなく、あなたのアカウント特権を盗むか、あるいはあなたのアカウントにそれらが望むようなアクションを行なわせるでしょう。
25)
「A “+” entry in foo_file!」
Host.equivファイルは、どのマシンが同等であるかを指定します;例えば、あなたのhosts.equivにリストされた別のマシンのユーザーfooは、ユーザーfooとしてあなたのマシンの上にログインできます。それは無限の愚かさです。Sunは、それをすべてのデフォルトとするマシンでです。
To fix, either remove the “+”, put in your own list of trusted machines, or delete the file.
26)
「rexd is enabled in foo_file!」
これは、コマンドが遠隔に実行されることを可能にすることができます。(もちろん、foo_fileは通常/etc/inetd.confです。)
To fix, comment it out of foo_file (put a “#” sign in front of the line.)
27)
「User foo’s home directory foo_dir is mode xyz!」
もしユーザーのホームディレクトリが書き込み可能ならば、あなたは(4)と同じ問題を持ち、これに対してはユーザーのファイルすべて危険です。
To fix, type: chmod a-w foo_dir
28)
「User foo: .bar is mode xyz!」
このケース、「.bar」において、.login、.profile、.exrc、ectなどのユーザーの初期設定ファイルのうちの1つを表します。もしユーザーのファイルが書き込み可能な世界であるならば、誰でもそのファイルを修正できて、ユーザーがログインするか、またはコマンド(「.exrc」を参照する時の「vi」などの)を実行する時には、いつでも、それらは、悪い girl/boy がコマンドに対してしたい放題どんなことでも出来ます。
To fix, type: chmod a-w foo_file
29)
「tftp is enabled on foo_host!」
これは、人々があなたのパスワードファイルを遠隔に盗むことができ、その上でパスワード・クラッキング・プログラムを実行することができることを意味します。
悪いニュース、でないならば、あなたは実際には、大きなパスワード安全保護をしている、あるいは、shadowpasswordsを実行しています。しかし、それでも、彼らは、まだあなたのシステムのどのような世界的に読み取り可能なファイルでも盗むことができます。
To fix, comment out (put a pound sign (“#”) in the front of the line) tftp — usually a line in your /etc/inetd.conf file.
30)
「uudecode is enabled in foofile!」
もし解読メールエイリアスが有効なメール・アドレスであるならば、人々はそれにメールし、あなたのシステムのファイルを作成できます。
もし uudecode が SUID root、またはそれに等しく凶器である何かであるならば、それはどのようなファイルにでも上書きできるでしょう。
To fix, comment out the alias in your (usually /usr/lib/alias) mail alias file.
31)
「uudecode creates setuid files!」
共通の問題と思われます。uudecodeは、どんな種類の特別のファイルも作成してはなりません;もし(32)と結合されるならば、あなたは、攻撃者に最適なので、隠されたSUIDファイルを作成できるでしょう。もし(30)と結合されるならば、それはいっそう悪いリモートの攻撃であるかもしれないでしょう。
32)
「uudecode is suid!」
もっとも悪い。もしこれが真実ならば、あなたは、それがSUIDである誰によっても所有されているファイルを作成できるでしょう。
To fix, just make it non-suid. If it has to be suid for some unknown reason, make it SUID to user nobody, or guest, or something relatively inoccuous, even though it won’t be.
33)
「ROOT owned SUID file foo_file is type: foo_type!」
root所有ではない、いかなるSUIDファイルも実行可能なバイナリ以外で有ってはならない;しかしながら、このテストが「file」コマンドによるので、特にNFSを使用するとき、面食らうかもしれません、例えば、SunがそういうMIPS実行可能なバイナリーを認識しないので・・・・。どのような場合でも、常に慎重にすべてのSUID rootファイルを調べてください。そして、如何なる状況の下でも、それはシェルスクリプトであるべきではありません。いけない、いけない、いけない。
34)
「User: foo SUID file is type: foo_type!」
(32)よりも、それほど厳しくありません。
35)
「foo should be in /etc/ftpusers!」「/etc/ftpusers should exist!」
問題35-44はftpとanonymous ftpセットアップに対処します。それらによりftpが使用されるのを防ぐために、すべてのシステムアカウント(root, bin, etc.)が/etc/ftpusersにあるべきです。
36)
「Need user foo for anonymous ftp to work!」
(「foo」は通常「ftp」(BTW)を意味します。) anonymous ftpが働かすには、このログインがパスワードファイルの中に存在する必要があります。
To fix, remove all but one instance of a user in each group of your
37)
「Home directory for ftp doesn’t exist!」
「ftp’s home directory should not be “/”!」
パスワードファイルの中で見つけられたftpのためのホームディレクトリは存在しますが、それは「/」ディレクトリであるべきではありません。それに対してどんな損害も引き起こさずに、ものおよびダンプ / ショップの要素から目を離さないかもしれないファイルシステム上のある無害の場所にしてください。
38)
「~ftp/etc/passwd and /etc/passwd are the same!」
「~ftp/etc/group and /etc/group are the same!」
ログイン名、パスワード、さらにそのようなものは、通常はanonymous ftpブラウザから隠されたままにしておかれるべきです。~ftp/etcディレクトリにパスワード/グループファイルを入れないでください;もしあなたがファイルに実際のユーザーネームを持っていなければ、最低限パスワードエントリーに星印(暗号化されたパスワードの代わりにアスタリスク(「*」))を置いてください 。
39)
「File foo_file is missing (anon-ftp setup)!」
ログインネーム、パスワード、およびそれに類似するものは、普通 anonymous ftp ブラウザから隠されたままにしておかれるべきです。ftpdのいくつかのバージョンにおいては、これは問題ではありません。また、他のものについては、単に作動しないでしょう。
40)
「foo_file should be owned by foo_user or bar_user!」
キー・ファイル、そして/または、ディレクトリが間違ったユーザによって所有されているなら、問題は起きます。例えば、ftpのホームディレクトリーが所有されかつ、ftpによって書き込み可能な場合、anonymous ftpユーザは、あなたに害を引き起こすために.rhostsand.forwardファイルを挿入することができます。
To fix, chown the files to root.
41)
「~ftp should be mode 555!」
ftpのホームディレクトリがrootによって所有されていない場合、だれもこのディレクトリへ書き込むことはできません。(rootがこれを所有しているなら、それはモード755であるかもしれない。)
42)
「~ftp/.rhosts should be be empty!」
ユーザ「ftp」に他のサイトを信頼させる十分な理由は通常ありません。
いずれにしても.rhostsファイルが存在する場合、それは空に違いありません。
43)
「Incorrect permissions on foo_file in foo_dir!」
一定のファイル(passwordファイル、その他)は、すべて読み取り可能に設定されているが、rootでは書き込み可能です。その他のファイルは実行可能です。これは、セットアップ中のどんな異常にもフラグを立てます。
44)
「Anon-ftp directory foo_dir is World Writable!」
ディレクトリが「インカミング」でアップロード/ダウンロードの為にオープンのままにされる場合、そのディレクトリすべてを読み込み不可にしておくことはよい考えです、そして、その同じディレクトリの中に他の「信頼された」ソフトウェアを保存すべきではありません、どんなものでもトラップ・ドア(ウィルス)に通常「安全」なプログラムが上書きされてしまうかもしれません。