Защита на хост чрез промяна на правата

VMiloykov

Well-Known Member
1. Пишете подреден и качествен код. PHP е бърз и мощен език.
2. Качвайте файловете/папките си не в public_html/www/htdocs, а извън тази директория.
3. В public_html качвате само един index.php за рутиране на цялата ви система и един файл, които може да направите и с cronjobs да се изпълнява през някакво време и да оправя дадени права на дадени директории.
4. Правите правата на всички директории, които ползвате и са си ваши, които са извън public_html на 0544, а на всички файлове, които са в тях на 0444. Това става като сложите в public_html един файл с примерно име chmodes.php и в него пишете:

PHP:
<?php
function recursiveChmod ($path, $filePerm=0444, $dirPerm=0544) {
         // Check if the path exists
         if (!file_exists($path)) {
                 return(false);
         }

         // See whether this is a file
         if (is_file($path)) {
                 // Chmod the file with our given filepermissions
                 chmod($path, $filePerm);

         // If this is a directory...
         } elseif (is_dir($path)) {
                 // Then get an array of the contents
                 $foldersAndFiles = scandir($path);

                 // Remove "." and ".." from the list
                 $entries = array_slice($foldersAndFiles, 2);

                 // Parse every result...
                 foreach ($entries as $entry) {
                         // And call this function again recursively, with the same permissions
                         recursiveChmod($path."/".$entry, $filePerm, $dirPerm);
                 }

                 // When we are done with the contents of the directory, we chmod the directory itself
                 chmod($path, $dirPerm);
         }

         // Everything seemed to work out well, return true
         return(true);
}
recursiveChmod('../includes/');

Този скрипт го отваряте с браузъра си за да се изпълни и той ще направи includes папката с права 0544, тоест четене и изпълнение само за root потребителя, и само четене от всички други акаунти и скриптове. Което не вреди на процеса на дадена система или скрипт.

5. Само това обаче не стига, затова трябва да оправите и правата на public_html, защото ако някой се добере до паролата ви на root акаунта, ще може да си качи в public_html друг скрипт и да си го изпълни без проблеми. Като тоя скрипт може да е всякакъв, включително такъв да оправи правата на другите директории и я да гепи файлове, я да направи някаква мизерия. Затова трябва да ограничим и public_html


6. Това как ще стане? Ще стане по следния начин - махате последния ред и пишете:

PHP:
chmod("../public_html/", 0555);

7. Следователно вместо само chmod("../public_html/", 0555); ние трябва да сложим друга логика, която е:

PHP:
$time = time();
         if($time >= 1366392161 + (60 * 10)) {
                 chmod('../public_html/',0755);
         } else {
                 chmod('../public_html/',0555);
         }

По този начини с този скрипт, след като изпълним през browser-a скрипта, той ще направи правата на public_html веднага на 0555, а след 10 минути или повече, като го изпълним отново ще ги върне на 0755 (default). Тия 10 минути всеки може да си ги промени примерно на 24 часа на еди колко си часа и така нататък. Но също може да пусне един cronjobs, който да изпълнява на някакво време подобен скрипт. Примерно на всеки 24 часа да имате по 5-10 минути да можете да си имате права за качване, редактиране, изтриване и т.н. Да сте в час дали всичко е наред, може и да качвате ъпдейти и така нататък.

Автор на урока: Георги Янев
 
От: Защита на хост чрез промяна на правата

А ако от хоста не позволяват да се слагат права 0544 или 0444 ?
 
От: Защита на хост чрез промяна на правата

Триста ядове 'дето се вика :)

А какъв е проблема просто пхп процесите за даден акаунт да вървят под различен user за всеки акаунт, че и за всеки сайт? Като този user е с nologin. Вече потребителя да си прави каквото иска с правата. Негов проблем е. Kак хоста ще го въведат това също си е техен проблем.

http://oi44.tinypic.com/6q9yc2.jpg

За root акаунта - на production машина аз забранявам достъпа за root през ssh, а понякога дори local root.

Иначе полезна статия, но това е за сървъри с конфигурация, където правата са проблем.

.. Или ако системата казва, че даден модул няма да работи, ако еди кой си файл или папка от всичките там не е поне 0755 , дори 0777 ?

Аз не съм срещал скрипт при текущия сетъп, който да ми е искал точно 777 при положение, че пхп има пълни права за тази директория.
 
От: От: Защита на хост чрез промяна на правата

Аз не съм срещал скрипт при текущия сетъп, който да ми е искал точно 777 при положение, че пхп има пълни права за тази директория.
2013-06-04_151007.jpg
При текущо 0755 ми изписва т'ва на снимката, и не само при този плъгин..
 
От: От: Защита на хост чрез промяна на правата

Аз не съм срещал скрипт при текущия сетъп, който да ми е искал точно 777 при положение, че пхп има пълни права за тази директория.
Виж файлът 6563
При текущо 0755 ми изписва т'ва на снимката, и не само при този плъгин.. Сменям за кратко, да го запише... и връщам..
 
От: От: Защита на хост чрез промяна на правата

Тук не става дума за некви прота или собствени сървъри а за споделен хостинг
Триста ядове 'дето се вика :)

А какъв е проблема просто пхп процесите за даден акаунт да вървят под различен user за всеки акаунт, че и за всеки сайт? Като този user е с nologin. Вече потребителя да си прави каквото иска с правата. Негов проблем е. Kак хоста ще го въведат това също си е техен проблем.

http://oi44.tinypic.com/6q9yc2.jpg

За root акаунта - на production машина аз забранявам достъпа за root през ssh, а понякога дори local root.

Иначе полезна статия, но това е за сървъри с конфигурация, където правата са проблем.



Аз не съм срещал скрипт при текущия сетъп, който да ми е искал точно 777 при положение, че пхп има пълни права за тази директория.
 
От: От: Защита на хост чрез промяна на правата

Тук не става дума за некви прота или собствени сървъри а за споделен хостинг

E аз за какво говоря? Именно за споделен хостинг сървър. Всички, които аз съм настройвал са конфигурирани така и да чукам на дърво не е имало проблеми. В статията се говори за руут и т.н. значи е насочена към администраторите на такива сървъри.

Виж файлът 6563
При текущо 0755 ми изписва т'ва на снимката, и не само при този плъгин.. Сменям за кратко, да го запише... и връщам..

А error лога какво казва? Според мен при теб е точно такава конфигурация, където пхп върви под някакъв юзер за всички. Щом па даже групата не може да пише...
 

Горе