web-dev-qa-db-ja.com

/ var / wwwにchmod 777を含めるべきではない理由

ローカルホストでページを開発するときに、「chmod -R 777 /var/www」を実行して解決できる「Permission denied」エラーが表示されることがあります。しかし、これはセキュリティ上の理由から悪い考えだと人々は言っています。

/var/wwwに777のchmodを使用すべきではないのはなぜですか?

66
Luis Alvarado

777は一般に悪い許可であり、その理由を説明します。

カジノやラスベガスでどのように見えるかに関わらず、777はあなたにとって大当たりを意味しません。むしろ、あなたのファイルを変更したい人のための大当たり。 777(およびそのい666)は、otherに対する読み取りおよび書き込み権限(および777の場合は実行)を許可します。 ファイルのアクセス許可の仕組み の詳細を確認できますが、要するに、所有者、グループ、およびotherの3つのアクセス許可グループがあります。 otherの許可を6または7(rw-またはrwx)に設定することにより、すべてのユーザーにこれらのファイルとフォルダーを編集および操作する権限を与えます。通常、想像できるように、これはセキュリティに悪影響を及ぼします。

これが私の例です:

marco@desktop:~/Projects/AskUbuntu/20105$ cd ..
marco@desktop:~/Projects/AskUbuntu$ chmod 0777 20105
marco@desktop:~/Projects/AskUbuntu$ cd 20105/
marco@desktop:~/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:32 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
marco@desktop:~/Projects/AskUbuntu/20105$ touch test
marco@desktop:~/Projects/AskUbuntu/20105$ chmod 0666 test 

これまでのところ、フォルダを作成し、「不正な」アクセス許可(777および666)を持つファイルを作成しました。次に、別のユーザーに切り替えて、これらのファイルを操作してみます。

marco@desktop:~/Projects/AskUbuntu/20105$ Sudo su - malicious
malicious@desktop:~$ cd /home/marco/Projects/AskUbuntu/20105
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls
test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:33 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
-rw-rw-rw- 1 marco marco    0 2011-01-04 20:33 test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ touch bad
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ echo "OVERWRITE" > test 
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cat test 
OVERWRITE

この「悪意のある」ユーザーとして、ファイルをディレクトリに配置し、既存のファイルにテキストを挿入することができました。一方、755のディレクトリと644のファイルでは、内部のファイルとディレクトリを見ることができますが、ファイルを編集したり新しいファイルを作成したりすることはできません。

malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cd /home/marco/Projects
malicious@desktop:/home/marco/Projects$ touch hey
touch: cannot touch `hey': Permission denied

Apacheパーミッションの場合、フォルダーとファイルについてそれぞれ0755と0644(別名umask 022)に固執したいと思うでしょう。これにより、ファイルの所有者として、操作に必要な最低限のアクセスレベルをApacheに提供しながら、ファイルを編集および操作できます。

79
Marco Ceppi

基本的に、777の権限を持っているからといって、自分でハッキングされることはありませんが、誰かがどこかで手掛かりを得た場合、それを使用して権限をエスカレートし、コンピューターを完全に制御することができます。最悪の部分は、アクセス許可が "7"を使用していることです。つまり、読み取り、書き込み、およびexecuteのアクセス許可を意味します。

ハッカーがあなたのコンピューターを乗っ取りたいとしましょう。彼は http://yourcomputer.example.com:80/ に接続して、Webブラウザーを使用してコンピューターに接続します。画像をアップロードできるページがあれば、「。jpg」で終わる実行可能ファイルの名前を変更して、サーバーにアップロードできます。現在、彼はWebブラウザでそのファイルを参照して実行します。これは、Linuxが拡張子を気にせず、実行可能ファイルであることがわかるだけだからです。それは彼にあまり得られないかもしれませんが、それはまったく実行されたので、彼はそれがApacheユーザーとして実行されたことを知っています。次に、Apacheの構成ファイルを編集する修正バージョンをアップロードし、さらにアクセスを許可します。Apacheが/ etc/passwdの内容を出力するようにしましょう。その後、その情報を使用して、システムに存在するユーザーを確認できます。その後、彼はsshを使用して接続し、一般的なパスワードを試してそれらのユーザーとしてログインします。それがうまくいかない場合は、完全なブルートフォース攻撃を使用します。彼がSudoアクセスを持つユーザーとしてログインすると、システム全体が彼になります。

さて、あなたはそれはそうではないと言うかもしれません、またはそれは本当のハッカーがどのように働くかではないと言うかもしれません。それは事実ですが、ポイントは、ファイルをchmod 777に設定することにより、ハッカーが使用できるセキュリティホールを開けたということです。

代わりに 最小特権の原則 に従うと、そのホールは発生せず、システムのハッキングがはるかに難しくなります。物事を適切に行うことはより困難ですが、それを行うためにあらゆる努力をする必要があります。

15
ImaginaryRobots