Безопасность и файл .htaccess
Около месяца назад я запустил блог на WordPress на хостинге, посвященный моему хобби. В настоящее время я новичок в этом деле.
Поскольку меня беспокоит безопасность, я установил плагин WP Security Scan. Согласно результатам проверки плагина, мой сайт в порядке, за исключением одного красного флажка:
Файл .htaccess отсутствует в wp-admin/ (я проверил через ssh - его действительно нет)
Я провел обширный поиск по этому вопросу и нашел слишком много информации о .htaccess. Изучил раздел "Усиление защиты WordPress" на WordPress.org и наткнулся на эту статью: http://digwp.com/2010/07/wordpress-security-lockdown/
В общем, я запутался в обилии доступной информации.
Что должно содержаться в файле .htaccess в wp-admin? Я читал, что этот файл должен защищать паролем директорию wp-admin, но также встречал мнение, что это может вызвать проблемы с функциональностью.
Буду очень благодарен за помощь.
Спасибо. -wdypdx22
Обновление Сейчас я не вхожу в свой блог и использую другой компьютер. Когда я ввожу URL www.mysite.com/wordpress/wp-admin/, происходит перенаправление на страницу входа. Если это происходит автоматически, то нужен ли вообще файл htaccess в директории wp-admin?

ОБНОВЛЕНИЕ: Когда я впервые опубликовал свой ответ, я упустил суть вопроса; мой ответ касался безопасности .htaccess
в целом и теперь указан ниже двойной линии (посмотрите вниз, если вам это интересно.) К сожалению, у меня нет конкретного опыта в защите /wp-admin/
с помощью .htaccess
, поэтому я просто перечислю два ресурса, которые я буду изучать, если мне это понадобится:
Первый из них рекомендует следующее (и вот некоторые обсуждения по этому поводу.)
<Files ~ "\.(php)$">
AuthUserFile /etc/httpd/htpasswd
AuthType Basic
AuthName "restricted"
Order Deny,Allow
Deny from all
Require valid-user
Satisfy any
</Files>
Второй содержит много информации, особенно в комментариях, но, признаюсь, предоставление вам списка для чтения — не тот ответ, который вы искали.
Извините, что не смог быть более полезным в этом вопросе.
========================================
Обычно WordPress имеет только следующее, что обрабатывает постоянные ссылки и не связано с безопасностью:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Недавно я обнаружил плагин WP htaccess Control, который управляет многими аспектами .htaccess
за вас, и мне он очень понравился. После настройки его параметров он добавил следующие опции:
# WPhtC: Отключить ServerSignature на страницах ошибок
ServerSignature Off
# WPhtC: Отключить просмотр директорий
Options All -Indexes
# WPhtC: Защита WP-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>
# WPhtC: Защита файла .htaccess
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
</files>
Он также добавил эти параметры, которые касаются производительности, а не безопасности:
# WPhtC: Настройка mod_gzip
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
# WPhtC: Настройка mod_deflate
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent env=!dont-vary
</IfModule>
Помимо этого, есть несколько плагинов, которые я не пробовал, но которые ориентированы на безопасность и взаимодействуют с .htaccess
— вы можете попробовать каждый из них, чтобы увидеть, что они делают с файлом .htaccess
:
- WP Super Secure and Fast htaccess (также)
- BulletProof Security
- Silence is Golden Guard
- WP-BlockYou
- Stealth Login
- HTTP Authentication
- AskApache Password Protect
Кроме того, если вы хотите узнать (по моему мнению) главный экспертный ресурс по безопасности Apache, связанной с WordPress, вы можете найти его на AskApache.com; этот парень — профессионал! Его блог не решит вашу проблему "слишком много информации", но по крайней мере вы можете считать его авторитетным источником!
Вот несколько примеров (хотя не все они напрямую связаны с WordPress, все они применимы):
- Продвинутые настройки WordPress wp-config.php
- Пример .htaccess для WordPress
- Продвинутая 404 ошибка WordPress
- Хитрости Mod_Security в .htaccess
- Плагин .htaccess блокирует спам, хакеров и защищает блог паролем
В любом случае, надеюсь, это поможет.

Отличная информация по общей безопасности, но не отвечает на вопрос о папке /wp-admin/

Хотя эта информация может быть полезной, она не имеет никакого отношения к вопросу. Все это относится к .htaccess в корневом каталоге. Исходный вопрос был о .htaccess в подкаталоге wp-admin.

@Insanity5902 @Doug: Моя ошибка. Просто не заметил этого, когда читал.

Я принял ваш ответ в основном потому, что, в конечном счете, общая безопасность - это моя цель. Мой блог совсем новый, но трафик растет. По сути, я просто хочу иметь меры безопасности на случай, если и когда у меня действительно появится много посетителей. -Спасибо

Основная идея заключается в том, что если у вас остались старые файлы от предыдущих обновлений или уязвимости для атак нулевого дня, ваша система может быть взломана. Также защита wp-admin дополнительным методом поможет против brute-force атак.
Один из вариантов) Если только вы редактируете сайт, вы можете ограничить доступ к папке по IP, сделав что-то вроде:
<Files *>
Order deny,allow
Deny from All
Allow from 1.2.3.4
</Files>
Чтобы сделать это немного более терпимым для систем с динамическими IP; вы можете разрешить доступ из подсети, так что если ваш пул IP всегда в диапазоне 1.2.3.128 - 1.2.3.255, тогда вы можете сделать что-то вроде 1.2.3.128/25
Другой вариант) требовать HTTPS, выдавать отказ в доступе при попытке соединения по HTTP. Но не перенаправлять их на HTTPS. Вы можете использовать самоподписанный сертификат или от CA Cert, чтобы обойтись без покупки.

Я всегда включаю файл .htaccess в wp-admin, даже если никогда не добавляю в него ничего, поскольку он отменяет действие файла из корневой директории. Некоторые люди используют файл .htaccess в wp-admin, чтобы скрыть всю директорию от всех, кроме одного IP-адреса, другие используют его для защиты директории паролем.
Однако защита админ-раздела с помощью .htaccess отключит ajax-коммуникации, поскольку они взаимодействуют с wp-admin/admin-ajax.php.
В целом, я не вижу особых причин добавлять что-либо в файл .htaccess админки, если только вы не параноик. Атаки обычно нацелены на wp-content в любом случае.

Файл .htaccess в подкаталоге может переопределять директивы из корневого каталога, но пустой .htaccess ничего не отменяет.

Я также использую библиотеку sseqlib для повышения безопасности и защиты от различных атак в файле .htaccess; смотрите ссылки ниже
