Какова идеальная установка для решения проблем безопасности?

8

Мне известны требования, предъявляемые WP к определенным каталогам и файлам для записи. Я также знаю, что слишком свободные разрешения могут открыть дыры в безопасности. Наконец, я знаю, что пользователь (который вставляет ваш сервер здесь) работает как в системах Linux, может быть фактором.

Помимо безопасности, мне нравится загружать темы и плагины в свой блог и обновлять их при необходимости. Надлежащие разрешения, кажется, немного расходятся с этим предпочтением.

Я собрал немного деталей здесь и там, но я хотел бы увидеть более четкий ответ, если таковой будет: какая установка предпочтительнее с намеком на безопасность? Какие разрешения должны быть на месте, от какого пользователя должен работать сайт и т. Д.

Грант Пэйлин
источник
Связанный: укрепление WordPress (Кодекс)
Хакре

Ответы:

10

Если у вас есть FTP-доступ к вашему серверу, самая безопасная настройка - не иметь каталог тем или плагинов, доступный для записи вашим веб-сервером, а вместо этого иметь файлы обновления WordPress с использованием FTP. Когда вы пойдете обновить плагин, WordPress запросит у вас данные FTP.

Метод FTP намного медленнее, чем прямая запись файлов, но он намного более безопасен, так как мошеннический скрипт не сможет изменить ваши файлы.

Viper007Bond
источник
5
SFTP еще лучше
Эшли Г
3
FTP приемлем внутри, но я нервничаю по интернету; так как он отправляет пароли поверх простого текста. Я передаю через SFTP / SSH, мне удобнее перемещать файлы по безопасному каналу. Я также запрещаю права на запись для пользователя веб-сервера.
Дж. М. Беккер
8

Как отметил @ Viper007Bond, обновление вашего ядра, плагинов и тем через встроенные механизмы обновления является довольно безопасным с точки зрения прав доступа к файлам, поскольку они могут использовать ваши действительные учетные данные пользователя. Для максимальной безопасности вы должны убедиться, что у вас установлено расширение SSH2 PHP . Способ установки (если это возможно) может варьироваться от хоста к хосту, поэтому, если его там еще нет, вам может потребоваться обратиться к службе хостинга или выполнить поиск в Google.

Многие службы общего хостинга будут использовать suexecв своих настройках Apache, так что веб-служба будет работать как фактический пользователь. Это устраняет большинство проблем с разрешениями и помогает защитить ваши файлы от других пользователей на сервере. Однако в тех случаях, когда Apache работает как отдельный пользователь, если вы хотите загружать файлы в WordPress, вы должны открыть разрешения для каталога загрузки.

В этом случае вы, вероятно, хотите, чтобы у вашего wp-content/uploadsкаталога были 0713разрешения (AKA rwx--x-wx). Это дает владельцу каталога полные права, его группа может читать файлы, если они знают полный путь, а другие (включая веб-сервер) могут читать файлы, к которым они знают путь, и могут создавать / записывать файлы.

Некоторые плагины для кэширования также ожидают наличия wp-content/cacheкаталога (или аналогичного), в который они могут писать. Тот же совет по разрешениям будет применяться к этому.

Наконец, для довольно постоянных ссылок WordPress должен иметь возможность изменять .htaccessфайл, если вы не планируете обновить его вручную. В этом случае вы хотели бы 0646для режима файла. Однако, как только вы определитесь со структурой постоянных ссылок, вам обычно не нужно будет изменять это снова, поэтому вы можете отключить дополнительные разрешения на запись и установить для него значение 0644. Иногда для обновления плагина или ядра может потребоваться доступ к нему, и вы можете временно включить разрешения на запись для этого, а затем снова отключить его.

Все остальные файлы должны иметь 0644разрешения. Каталоги должны быть, 0711если вы чрезмерно параноидальны, но это может помешать любым плагинам, которые должны получить список файлов из каталога. В этом случае, или если вы не совсем параноик, используйте 0755, что позволит другим читать, но не писать.

В основном это касается, если вы находитесь на виртуальном хостинге. Если у вас есть выделенный сервер (включая VPS), и нет других пользователей, которые имеют доступ по SSH / FTP, то вы можете немного расслабиться. Я не имею в виду, что вы должны просто сделать все открыто доступным для записи, но вы, вероятно, можете просто доверять системным настройкам по умолчанию, которые, вероятно, будут 0755разрешениями на каталоги, а не 0711.

Если это вариант, получите сертификат SSL, установленный для сайта, и после того, как вы проверили, что можете получить доступ к своему сайту через https, вы можете принудительно установить SSL для входа и доступа администратора, добавив эти строки в свой wp-config.phpфайл, непосредственно перед ' Прекратить редактировать комментарий:

define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
Дугал Кэмпбелл
источник