Каталоги с правами на запись.
Использование каталогов с правами записи, в значительной степени неизбежно. Любое комплексное, а соответственно сложное CGI приложение окажется перед необходимостью записи в файловую систему. Примерами записи являются файлы паролей зарегистрировавшихся пользователей, генерация ключей, ведение log-файлов, временных файлов и т.д.
Проблема состоит из двух моментов. Первый заключается в том, что если пользователю даются права на запись, то он соответственно получает права на удаление. Таким образом, права на запись и на удаление оказываются в одних руках. Поэтому в терминах безопасности сервера они считаются равными. Вторым моментом является, то что хакер может использовать записываемую часть /cgi-bin каталога, чтобы добавить свой собственный CGI-скрипт. Особенную опасность это представляет для многопользовательских серверов типа тех, которые используют обычные провайдеры (ISP, [Internet Service Provider] поставщик услуг Internet (коммерческая фирма, предоставляющая индивидуальным пользователям доступ к службам сети Internet)). Хакеру требуется всего-лишь получить свой собственный, легальный account у тогоже ISP (провайдера), чтобы использовать или найти лазейку в системе безопасности. Для этого ему придется оплатить где-нибудь минут 20 легального доступа в Internet.
Ксати сказать, эта тактика получения account'а на сервере провайдера в особенности привлекает людей, вечно сующих нос в чужие дела - снуперов (от англ. snoop - "человек, вечно сующий нос в чужие дела" или в качестве глагола "шпионить", "выслеживать"). Если хакер может получить на вашем сервере account, то в вашем арсенале не так уж много способов, не позволить ему взять ваш каталог /cgi-bin и начать его исследовать, ввиду общедоступности сервера. |
Главным образом, решение этой проблемы является следующее правило. Никогда не храните каталоги и файлы с правами на запись в каталоге /cgi-bin. Все подобные файлы должны быть сохранены в каталогах типа тех, в которых вы храните ваши html документы или в каталогах типа /tmp, т.е.
в тех, которые несут в себе наименьшую опасность. Тем самым у хакера конечно остается возможность удалять ваши файлы, но он уже не сможет выполнить свой CGI-скрипт.
Таким образом вы должны не только изменять названия всех файлов и сценариев CGI, но также распологать их в наиболее безопасных местах вашего сервера. Если CGI приложение написано хорошо, то вам не придется копаться в коде и менять все имена файлов и каталогов. Информация подобного рода должна хранится в файле установки CGI приложения.
Также необходимо, чтобы вы защищали все файлы от записи, если в настоящее время он не находится в стадии разработки или редактирования. Другими словами, если вы не редактируете html-файл, то права доступа к нему должны быть установлены только на чтение. Также если вы постоянно не изменяете CGI-скрипт, то права доступа должны быть только на чтение и выполнение, но ни в коем случае не на запись. Короче говоря никогда не предоставляйте любому файлу на вашем сервере права на запись, если он непосредственно не изменяется или не редактируется.
В заключение хочется добавить - всегда создавайте резервные копии ваших файлов. Ожидайте и готовьтесь к самому худшему. Если вы работаете на платформе UNIX, то можете воспользоваться командой tar:
tar cvfp name.tar rootdirectoryname
причем желательно, чтобы вы это делали не реже чем один раз в несколько дней.
Затем вы должны переместить этот файл на машину которая не имеет выхода в сеть или на место, которое имеет наименьшие права доступа типа:
chmod 400
Пользователи платформы Windows могут пользоваться, к примеру, программой WinZip для создания архивов.