Пять распостраненных ошибок WordPress после её установки. Отключите отображение версии сервера операционной системы


Пять распостраненных ошибок WordPress после её установки | WPNICE

Всем привет, вернемся сегодня к вопросам безопасности и обсудим пять самых распространенных ошибок WordPress после её установки. Нынче многие веб хостинги предлагают такую услугу, как установка WordPress в один клик. Опция классная и, возможно, даже недооцененная. Благодаря такой возможности, огромное количество людей, которые не смогли бы справиться с процедурой инсталляции самостоятельно, могут моментально получить прилично выглядящий сайт.

Проблема быстрой инсталляции заключается в том, что такую установку нельзя назвать всесторонней. В конце концов, процесс установки WordPress в один клик построен таким образом, что он отвечает только самым минимальным требованиям. Хотя в результате вы и получаете функциональный WordPress-сайт, он может не оправдать ваши ожидания.

Часто после такой установки вам придется столкнуться с рядом проблем, связанных с установкой движка. Сегодня мы рассмотрим пять наиболее частых ошибок установки WordPress, и предложим наиболее простые варианты их решения. В конце концов, если WordPress разработан, как функциональная система, «из коробки», то важно четко понимать, что именно мы достаем из этой «коробки», если мы хотим иметь чистую инсталляцию, в основе которой лежат безопасность и пользовательский опыт

1. Неправильный выбор подкаталога

Было ли у вас когда-нибудь такое, что вы заходили на сайт и замечали, что блог установлен в подкаталоге (что-то типа http://www.yoursitename.com/blog/)?

Это совершенно нормальная и приемлемая практика. Таким образом, увидев следующую картину, вы сможете с уверенностью сказать, что сайт создан новичком: http://www.yoursitename.com/blog/wordpress/.

Ну, и что тут такого страшного, можете удивиться вы. И что такого, если есть лишний подкаталог. Это же не ошибка WordPress? Ну, ладно. Это небольшая проблема, но все-таки это лишний и совершенно ненужный элемент. Это показывает, что вебмастер не смог переместить файлы из папки инсталляции WordPress в папку, заранее названную “blog”. Кроме того, есть еще более простой метод сделать это: загрузить папку с WordPress, как она есть, а потом переименовать ее в “blog” или еще во что.

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

2. Пренебрежение модификацией файла .htaccess

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

Это очень простая мера, которую можно применить без использования панели управления хостингом. Весь процесс подробно описан в кодексе WordPress. Применяется это только к тем каталогам, которые содержат контент, который создавался для того, чтоб его видел весь мир, все остальное защищается паролем. Замечание: Для осуществления этого и следующих шагов вам понадобится FTP клиент.

Раз уж мы занялись грамотной инсталляцией, то сейчас нужно побеспокоиться о защите конфигурации вашего WordPress и файлов login. Давайте начнем с wp-config.

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

Теперь скопируйте код, данный ниже прямо в этот файл. Не пытайтесь напечатать его вручную, ведь вы можете сделать опечатку. Команда «копировать и вставить» это ваш хороший друг.

# protect wpconfig.php <files wp-config.php> order allow,deny deny from all </files>

# protect wpconfig.php

 

<files wp-config.php>

order allow,deny

deny from all

</files>

Вы можете сохранить файл и загрузить его обратно на сервер в таком виде, или же модифицировать его дальше, чтоб позволит обезопасить сайт еще больше. Хорошая идея, отключить отображение версии сервера. То есть скрыть версию сервера и операционный системы от любопытных глаз. Поверьте нам на слово: если кто-то ищет эту информацию, то она или он пытается получить доступ к файлам сайта, воспользовавшись черным ходом. И, кто знает, что может произойти дальше?

Чтобы этого избежать, скопируйте следующий код в .htaccess файл:

# disable the server signature ServerSignature Off

# disable the server signature

ServerSignature Off

Еще одно быстрая модификация заключается в отключении обозревания каталога. Таким образом, люди, пытающиеся прощупать ваш сайт, не смогут копнуть вглубь каталогов на вашем веб хостинге, и не увидят того, чего им не надо видеть.

Быстрое решение проблемы:

# disable directory browsing Options All -Indexes

# disable directory browsing

Options All -Indexes

Последнее действие направлено на то, чтоб защитить сам файл от любопытных глаз и злоумышленников:

# protect the htaccess file <files ~ "^.*\.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </files>

# protect the htaccess file

 

<files ~ "^.*\.([Hh][Tt][Aa])">

order allow,deny

deny from all

satisfy all

</files>

3. Отсутствие продвинутого плана резервного копирования и восстановления сайта

Еще одна распространенная ошибка WordPress, вернее беспечность новичков, которое они проявляют сразу после установки последней — отсутствие бекапов.  Если у вас нет четкого плана резервного копирования, то вы играете с огнем. Вам нужно иметь резервные копии всех ваших файлов, включая файлы темы (и все файлы ее модификации), изображения, ваши записи, категории и теги, ваш файл robots.txt, упомянутый ранее .htaccess и, конечно же, саму базу данных. Если этого не сделать, то вы можете потерять абсолютно все, что есть на вашем сайте.

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

Плагины резервного копирования удобны, но они используют PHP для связи с сервером. А это тот самый способ, который используют хакеры, чтоб получить доступ к вашему сайту. Таким образом, наличие такого плагина совсем не способствует безопасности сайта. Все, что нужно сделать злоумышленнику, это создать аккаунт автора WordPress-плагинов, добавить пару строчек кода в плагины и сидеть ждать пока такие, как вы скачают их. Возможно, на вашем сайте прямо сейчас установлен такой плагин, который обеспечивает доступ с черного входа к вашей информации.

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

Говоря о резервном копировании, зачастую правильный выбор системы резервного копирования для одиночных сайтов падает на VaultPress, хоть разработчики и предлагают использовать плагин, за него в ответе славные ребята из Automattic (те самые парни, которые выпускают обновления WordPress), и можно быть уверенным в безопасности своего сайта. Еще один вполне приемлемый и надежный вариант — BackupBuddy.

4. Неверный выбор темы

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

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

Так же убедитесь в том, что оформление таких базовых элементов, как текст и ссылки, интуитивно понятно — черный и синий обычно беспроигрышные цвета, так как они комфортны при просмотре сайта в любом браузере. Если вы потратили много времени на усовершенствование темы, не лишним будет убедиться в том, что все отображается так, как это было задумано.

Если вы надумали покупать тему, то в комплекте должны присутствовать документация и техническая поддержка от автора. Если вы готовы платить, то не стоит соглашаться на меньшее. Так же хорошая идея, поискать такую тему, которая будет соответствовать той отрасли, в которой вы работаете.

Существует огромное количество разнообразных тем, и прежде чем открывать кошелек, нелишним будет навести справки о том, что вы собираетесь купить. О том как безболезненно сменить свою старую тему на новую вы можете прочитать в статье — Как наиболее безопасно сменить тему Word Press?

5. Выбор убогой структуры пермалинков

Пермалинки, они же постоянные ссылки, ассоциируются с каждой записью на вашем блоге и с каждой его страницей. Они обычно идут после / после названия каталога, в котором установлен блог. Структура ссылки по умолчанию обычно включает ID номер, который абсолютно ничего не говорит читателю. Мало того, что читатели не имеют представления о том, что они найдут на странице, которую хотят посетить, так и поисковым системам такие ссылки не дают ничего (это значит, что SEO можно сказать прощай).

Вместо того, чтоб окончательно завязнуть с базовой структурой пермалинков, лучше поменять их на что-то типа /%postname%/ или /%category%%postname%/. И то, и то дает читателям и поисковикам нужную им информацию. Многие SEO-плагины предлагают инструменты для изменения пермалинков, но они вам совершенно не нужны: вы можете сделать это самостоятельно, кликнув «Настройки > Постоянные ссылки» в панель управления сайтом.

Заключение

Хоть я и назвал описанные выше проблемы самыми часто встречающимися, в процессе установки WordPress вы можете столкнуться со множеством других неполадок. Так что в следующий раз, когда вы решите воспользоваться функцией установки в один клик, то будьте готовы к тому, что вам придется засучить рукава, и занять ручной настройкой системы и внести некоторые изменения, если вы хотите, чтоб ваш сайт выглядел, ощущался и функционировал, как профессиональный.

 

wpnice.ru

Apache - отключение вывода системной информации

 

Если кто-то сталкивался с теорией взлома, то ему известно, что злоумышленник первым делом пытается определить версию операционной системы и установленного ПО, чтобы воспользоваться доступными уязвимостями. Посмотрим, какую информацию выдает web-сервер Apache.

Подключимся к веб-серверу и после отправки запроса (запрос HEAD / HTTP/1.0; ну и не забываем о необходимости нажать "Enter") посмотрим, какую информацию можно почерпнуть из заголовков сервера:

# telnet localhost 80Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.HEAD / HTTP/1.0

 

HTTP/1.1 200 OKDate: Thu, 29 Dec 2011 12:03:13 GMTServer: Apache/2.2.17 (FreeBSD) DAV/2 PHP/5.2.17 with Suhosin-Patch mod_ssl/2.2.17 OpenSSL/0.9.8e mod_perl/2.0.5 Perl/v5.8.9X-Powered-By: PHP/5.2.17Set-Cookie: SESSd41d8cd98f00b204e9800998ecf8427e=va2u6rhi4c46p2r281ce56f860; expires=Sat, 21-Jan-2012 15:36:33 GMT; path=/Expires: Sun, 19 Nov 1978 05:00:00 GMTLast-Modified: Thu, 29 Dec 2011 12:03:13 GMTCache-Control: store, no-cache, must-revalidateCache-Control: post-check=0, pre-check=0Vary: Accept-EncodingConnection: closeContent-Type: text/html; charset=utf-8

 

Connection closed by foreign host.

Из ключевых моментов стоит отметить, что Apache раскрывает свою версию, установленную операционную систему и версию PHP. А это уже немало. 

Для управления вывода этой информации используются директивы ServerTokens и ServerSignature.

ServerTokens

Синтаксис: ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full

Примеры выводимых заголовков:

ServerTokens Prod[uctOnly]Server sends (e.g.): Server: Apache

ServerTokens MajorServer sends (e.g.): Server: Apache/2

ServerTokens MinorServer sends (e.g.): Server: Apache/2.0

ServerTokens Min[imal]Server sends (e.g.): Server: Apache/2.0.41

ServerTokens OSServer sends (e.g.): Server: Apache/2.0.41 (Unix)

ServerTokens Full (or not specified)Server sends (e.g.): Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2

ServerSignature

Syntax: ServerSignature On|Off|EMail

 

Добавим в конфигурационный файл Apache такие строки:

ServerTokens ProductOnlyServerSignature Off

Дадим команду на перезапуск сервера Apache:

Проверим, какие заголовки теперь выводятся:

# telnet localhost 80Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.HEAD / HTTP/1.0

 

HTTP/1.1 200 OKDate: Thu, 29 Dec 2011 12:07:10 GMTServer: ApacheX-Powered-By: PHP/5.2.17Set-Cookie: SESSd41d8cd98f00b204e9800998ecf8427e=c2to8i5ude7u6l7qe49946o192; expires=Sat, 21-Jan-2012 15:40:30 GMT; path=/Expires: Sun, 19 Nov 1978 05:00:00 GMTLast-Modified: Thu, 29 Dec 2011 12:07:10 GMTCache-Control: store, no-cache, must-revalidateCache-Control: post-check=0, pre-check=0Vary: Accept-EncodingConnection: closeContent-Type: text/html; charset=utf-8

 

Connection closed by foreign host.

Осталось еще "спрятать" версию PHP. Чтобы отключить в PHP передачу cлужебной информации в заголовки веб-сервера, необходимо в php.ini установить значение переменной expose_php в значение Off:

# cat /usr/local/etc/php.ini | grep expose_phpexpose_php = Off

Изменения вступят в силу после перезапуска веб-вервера.

Проверяем результат:

# telnet localhost 80Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.HEAD / HTTP/1.0

 

HTTP/1.1 200 OKDate: Thu, 29 Dec 2011 12:10:18 GMTServer: ApacheSet-Cookie: SESSd41d8cd98f00b204e9800998ecf8427e=iscdhol2rk8cd7huoqpbsepnf6; expires=Sat, 21-Jan-2012 15:43:38 GMT; path=/Expires: Sun, 19 Nov 1978 05:00:00 GMTLast-Modified: Thu, 29 Dec 2011 12:10:18 GMTCache-Control: store, no-cache, must-revalidateCache-Control: post-check=0, pre-check=0Vary: Accept-EncodingConnection: closeContent-Type: text/html; charset=utf-8

 

Connection closed by foreign host.

Кажется достигли цели... Версии ПО скрыты от посторонних.

 

muff.kiev.ua

Аудит безопасности сервера | ISPserver

Проводите аудит безопасности сервера раз в месяц для своевременного обнаружения возможных проблем, связанных с проникновением злоумышленников на сервер.

Если вы не видите никаких признаков сторонней активности на VPS или сайте, выполните следующий ряд проверок и корректив для защиты сервера от взлома.

Настройки на прикладном уровне

Если на сервере установлены CMS, то проверьте, установлены ли все последние обновления.

Joomla

В корневой директории сайта найдите файл changelog.txt, в котором отыщите информацию о версии CMS. Если она устарела, обновите Joomla.

Wordpress

Выполните поиск файла wp-includes/version.php, в котором отыщите информацию о версии CMS. Если она устарела, обновите Wordpress.

DLE

Выполните поиск файла engine/data/config.php, отыщите строчку version_id и убедитесь, что версия не устарела.

Также проверьте файлы engine/ajax/updates.php и upgrade/index.php (параметр $dle_version).

1C-Битрикс

Выполните поиск файла /bitrix/modules/main/classes/general/version.php, в котором отыщите информацию о версии CMS. Также проверьте файл /bitrix/admin/update_system.php. Если версия устарела, обновите 1C-Битрикс.

Drupal

В корневой директории сайта найдите файл changelog.txt, в котором отыщите информацию о версии CMS. Если она устарела, обновите Drupal.

Проверьте версию ядра в файле /modules/system/system.info.

Также вы можете обнаружить версию CMS через панель управления.

 

Выполните проверку веб-сервера.

Apache

Откройте конфигурационный файл Apache (в зависимости от версии это могут быть файлы httpd.conf, httpd2.conf, apache.conf, apache2.conf) и проверьте, есть ли в нем директива, отключающая вывод информации о версии веб-сервера:

ServerTokens Prod

Если этой директивы нет, то добавьте и сохраните файл.

Выполните поиск файла secure.conf, откройте его для просмотра и сверьте его содержимое со следующим примером:

<Directory /home/*> Options +Includes -FollowSymLinks +SymLinksIfOwnerMatch AllowOverride FileInfo AuthConfig Limit Indexes Options Order allow,deny Allow from all </Directory> <IfModule php5_module> php_admin_value open_basedir "." </IfModule> <Directory /home/*/data/www/*/cgi-bin> Options -Indexes </Directory> Action php-cgi /php-bin/php

В вашем secure.conf не должно быть существенных отличий от приведенного примера.

Проверьте установленный МРМ командой

apachectl -V

Для более прочной безопасности используйте mpm_itk, если нет острой необходимости в mpm_prefork.

Если вы хотите изменить МРМ, выполните переустановку, предварительно сделав резервные копии конфигурационных файлов. После переустановки проверьте, является ли владельцем сайта и всех его директорий пользователь.

 

Nginx

Откройте конфигурационный файл веб-сервера (nginx.conf), перейдите в секцию http и проверьте, есть ли в ней директивы, которые лимитируют количество подключений с одного IP-адреса:

limit_zone slimits $binary_remote_addr 5m; limit_conn slimits 10; или (для последних версий) limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 10;

Если этих директив нет, то добавьте и сохраните файл.

Заблокируйте некоторые агенты пользователя (user agents) для блокировки нежелательного трафика. В секцию http конфигурационного файла Nginx добавьте директиву

if ($http_user_agent ~* LWP::Simple|BBBike|wget|msnbot) {return 403;}

Заблокируйте ссылочный спам (referral spam), добавив в секцию http конфигурационного файла Nginx директиву

if($http_referer ~*(babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) ){return 403;}

 

ISPmanager

В панели управления ISPmanager выполните следующие проверки.

Проверьте, ограничен ли доступ к панели управления по IP-адресу.

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

 

PHP

Откройте конфигурационный файл php.ini и добавьте следующие директивы.

expose_php=Off - выключение передачи информации о версии PHP в HTTP-заголовке; sql.safe_mode=On - включение SQL safe-mode; post_max_size=8M - ограничение размера передаваемых методом POST данных; disable_functions exec, system, passthru, proc_open, shell_exec - отключение некоторых функций в целях безопасности.

 

NTP

В конфигурационный файл NTP (по умолчанию /etc/ntp.conf) добавьте строки, запрещающие рекурсивные запросы:

restrict default kod limited nomodify notrap nopeer noquery restrict -6 default kod limited nomodify notrap nopeer noquery restrict 127.0.0.1 restrict -6 ::1

 

Bind

В файл named.conf поместите следующие строки, запрещающие рекурсивные запросы:

allow-recursion { 127.0.0.1; 82.146.32.0/19; 78.24.216.0/21; 92.63.96.0/20; 62.109.0.0/19; 188.120.224.0/19; 149.154.64.0/21; 37.230.112.0/21; 94.250.248.0/21; };
Проверка владельца директории сайта

Проверьте, кому принадлежит основная директория сайта и все ее поддиректории.

В панели инструментов ISPmanager перейдите в раздел “Система” -> “Менеджер файлов” и откройте директорию сайта. Убедитесь, что в столбцах “Владелец” и “Группа” стоит пользователь-владелец сайта. Чтобы изменить эти атрибуты, нажмите кнопку “Атрибуты” на панели инструментов.

 

Допустимые имена владельца сайта apache, www, www-data, если вы используете mpm_prefork. Мы рекомендуем использовать mpm_itk для укрепления безопасности.

Если сайт содержит папки общего доступа (например, upload, tmp), то для них допустимо имя владельца 777. Убедитесь, что этот пользователь установлен только на нужные директории, выполнив команду

find ./ -perm 0777

Она отыщет все папки и файлы, владельцем которых является 777.

Настройки на уровне операционной системы

rkhunter

Используйте утилиту rkhunter для выявления потенциальных уязвимостей сервера.

Для установки утилиты используйте команду:

yum install rkhunter - ОС CentOS apt-get install rkhunter - ОС Debian/Ubuntu make all install clean -C /usr/ports/security/rkhunter или pkg install rkhunter - ОС FreeBSD

Для обновления базы этой утилиты выполните команды

rkhunter --update

rkhunter --propupd

Выполните проверку системы командой

rkhunter -c --cs2

В процессе проверки несколько раз вам необходимо нажать клавишу Enter для продолжения. По окончании появится сводная информация о результате проверки.

Результаты проверки помещаются в лог файл /var/log/rkhunter/rkhunter.log, просмотрите его на предмет предупреждений и ошибок.

sysctl

Используйте утилиту sysctl для управления параметрами ядра системы. Откройте конфигурационный файл утилиты /etc/sysctl.conf и внесите следующие строки.

Отключите возможность маршрутизации входящего трафика, поскольку злоумышленник может использовать эту возможность для подмены IP-адресов:

net.ipv4.conf.all.accept_source_route = 0

Отключите ответы на ICMP-запросы по широковещательному каналу - это поможет предотвратить smurf-атаки:

net.ipv4.icmp_echo_ignore_broadcasts = 1

Отключите ведение журнала о неправильных сообщениях об ошибках:

net.ipv4.icmp_ignore_bogus_error_responses = 1

Включите защиту от переполнения памяти:

kernel.exec-shield = 1 (CentOS)

Включите использование памяти ASLR:

kernel.randomize_va_space = 2

Отключите возможность переадресации ICMP-сообщений:

net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0

Если вы не используете на сервере VPN или другие специальные приложения, отключите форвардинг:

net.ipv4.conf.all.forwarding = 0

Включите защиту от SYN-флуда - использование SYN cookies:

net.ipv4.tcp_syncookies = 1

Установите количество попыток передачи SYN-ACK пакетов:

net.ipv4.tcp_synack_retries = 3

Установите время, через которое сервер проверяет соединение, если оно давно не используется (по умолчанию это 2 часа):

net.ipv4.tcp_keepalive_time=1800

Установите количество проверок соединения прежде, чем оно будет разорвано:

net.ipv4.tcp_keepalive_probes=3

Установите время пребывания сокета в состоянии FIN-WAIT-2:

net.ipv4.tcp_fin_timeout=30
fstab

Проверьте конфигурационный файл fstab (/etc/fstab), в котором содержится информация о дисках, разделах и устройствах хранения, указывается как они монтируются в систему.

vi /etc/fstab

Обратите внимание, что некорневые разделы должны иметь параметр nodev. Если /tmp примонтирована отдельным разделом, добавьте nodev, noexec, nosuid для этого раздела.

rsyslog

Проверьте системный лог файл /etc/rsyslog.conf.

vi /etc/rsyslog.conf

Обратите внимание на следующие строки, которые должны иметь вид:

Также убедитесь, что лог файл не пустой, т.е. логирование корректно ведется.

sudo

Проверьте, корректно ли настроена утилита sudo (или su), которая позволяет пользователю запускать некоторые команды и программы с правами суперпользователя root. Настройки этой утилиты находятся в конфигурационном файле /etc/sudoers или /usr/local/etc/sudoers. Откройте его для редактирования

vi /etc/sudoers

Найдите строку, которая прописана по умолчанию и разрешает суперпользователю root запускать любые команды.

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

ALL ALL=/bin/su или ALL ALL=/usr/bin/su

Для того, чтоб наделить определенного пользователя привилегией запускать только некоторые команды от имени root, добавьте строку:

%users ALL=/sbin/mount - группа users сможет использовать sudo только с командой mount user ALL=/sbin/mount - пользователь user сможет использовать sudo только с командой mount

 

Настройки на сетевом уровне

Проверьте, какие порты на сервере открыты и какие службы их используют, выполнив команду

netstat -tuplnw | awk '{print $4,$NF}' | sort | uniq

Например, запись 127.0.0.1:53 748/named означает, что служба named использует 53 порт. Проверьте, что среди работающих служб находятся только необходимые, отключите все остальные.

FTP

Установите диапазон используемых портов для пассивного режима FTP. Для этого откройте для редактирования конфигурационный файл вашего FTP-сервера и добавьте строки:

для vsftpd.conf:  

pasv_min_port=1028 pasv_max_port=1048

для proftpd.conf:

PassivePorts 1028 1048

Без особой необходимости не используйте FTP-протокол, вместо него работайте по SFTP. Если все же необходим FTP, добавьте следующие строки в конфигурационный файл:

для vsftpd.conf:

xferlog_enable=YES (ведение лог-файла по ftp) anonymous_enable=NO (запрет подключений анонимных пользователей) anon_upload_enable=NO anon_mkdir_write_enable=NO

для proftpd.conf:

в секции <Anonymous ~username>...</Anonymous> удалите все секции <Limit…> и добавьте строки

<Limit LOGIN> DenyAll </Limit> <Limit ALL> DenyAll </Limit>
iptables

Проверьте, правильно ли настроен фаервол. Для iptables выполните команду

iptables -nL

Эта команда выводит в командную строку все правила фаервола iptables. Также эти правила можно просмотреть и отредактировать в конфигурационном файле фаервола /etc/sysconfig/iptables - для ОС CentOS,  /etc/network/if-up.d/ispmgrfw - для ОС Debian/Ubuntu.

В правилах фаервола закройте все порты, кроме тех, которые используются работающими на сервере службами. Для этого измените строки

:INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] на :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT DROP [0:0]

Чтобы открыть нужные порты добавьте строки вида

-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -p udp -m udp --dport 53 -j ACCEPT -A INPUT -p tcp -m multiport --sports 53,80,25,443,953 -j ACCEPT

где 53 - номер порта который нужно открыть.

Перед тем, как вносить изменения в конфигурационный файл фаервола, сделайте копию работающего файла.

Правила фаервола можно настраивать из панели управления ISPmanager.

 

SSH

Откройте конфигурационный файл SSH:

vi /etc/ssh/sshd_config

Проверьте, что следующие строки не закоментированы:

Protocol 2 (для использования второй версии протокола) IgnoreRhosts yes (не использовать .rhost файл) HostbasedAuthentication no (не аутентифицировать хост) PermitRootLogin no (запрет доступа суперпользователя root) PermitEmptyPasswords no (не использовать пустые пароли) PermitUserEnvironment no (запрет пользователю устанавливать переменные окружения) PasswordAuthentication yes (разрешить аутентификацию по паролю)

Включите SFTP, добавив в sshd_config строку:

Subsystem sftp /usr/lib/openssh/sftp-server

Прочие настройки и рекомендации

Почтовая очередь

Проверьте почтовую очередь на предмет переполнения и убедитесь, что среди сообщений нет спама.

Выполните команду mailq и просмотрите список сообщений. Если список очень большой, то выборочно проверьте сообщения, которые могут быть спамом. По идентификатору (например, BD65F10DEE4) определите отправителя письма. Команда

exim -Mvh ID_сообщения

выводит заголовок письма, а команда

exim -Mvb ID_сообщения

даст просмотреть тело сообщения.

Среди заголовков сообщения поле From: содержит отправителя, а X-PHP-Originating-Script - скрипт, которым было отправлено сообщение.

 

Программное обеспечение

Проверьте программное обеспечение сервера на предмет уязвимостей.

ОС CentOS

Выполните команду, которая выводит перечень файлов  установленного программного обеспечения недавно модифицированных:

rpm -qVa - для вывода всех файлов, rpm -qVa | awk '$2!="c" {print $0}' - для вывода файлов за исключением логов.

Проанализируйте, какие файлы и как были изменены, используя следующие значения параметров:

S - модифицирован размер файла M - модифицированы права, установленные по умолчанию 5 - модифицирована контрольная сумма MD5 D - модифицированы major/minor номера для устройства L - модифицирована символическая ссылка U - модифицирован владелец файла G - модифицирована группа T - модифицирована дата изменения файла (mtime) c - конфигурационный файл d - файл документации g - файл, который не включен в пакет l - файл лицензии r - README файл

Например, строка S.5....T.  c /etc/httpd/conf/httpd.conf означает, что httpd.conf является конфигурационным файлом, был изменен его размер, контрольная сумма и дата последнего изменения. Поскольку это конфигурационный файл, то эти изменения не вызывают подозрений.

Обратите внимание на файлы, у которых без видимой причины изменены значения контрольной суммы. Для таких файлов выполните команду:

stat /usr/sbin/sshd && file /usr/sbin/sshd где usr/sbin/sshd - путь к файлу.

В результате команды на экран выводится подробная информация об изменении этого файла.

Выполнит команду:

yum --security update

для установки security-update.

ОС Debian

Выполните команды, которые проверяют контрольные суммы MD5 для установленных программ:

# apt-get install debsums # debsums -c

Выполните следующие команды для проверки security-update:

# echo ‘deb http://security.debian.org wheezy/updates main contrib non-free’ >> /etc/apt/sources.list # grep security /etc/apt/sources.list > /etc/apt/secsrc.list # apt-get -s -o Dir::Etc::sourcelist="secsrc.list" -o Dir::Etc::sourceparts="-" upgrade

Для установки  security-update выполните команду:

# apt-get -o Dir::Etc::sourcelist="secsrc.list" -o Dir::Etc::sourceparts="-" upgrade

Проверьте наличие во всех репозиториях сверки gpg, выполнив команды:

# grep -ri gpgcheck /etc/yum.conf # grep -ri gpgcheck /etc/yum.repos.d/ Убедитесь, что строки имеют вид: gpgcheck=1 # grep -ri AllowUnauthenticated /etc/apt/

Строк вида

APT::Get::AllowUnauthenticated "true";

быть не должно.

 

Неиспользуемые службы

ОС CentOS

Выполните команду, которая выводит список неиспользуемых служб:

chkconfig --list

Для отключения запуска неиспользуемой службы выполните команду:

chkconfig --del service_name где service_name - имя службы.

 

ОС Debian

Выполните команду, которая выводит список неиспользуемых служб:

sysv-rc-conf

Для отключения запуска неиспользуемой службы выполните команду:

sysv-rc-conf off service_name где service_name - имя службы.

 

 

ispserver.ru

Анализ сайта tobix.ru

Удобство для пользователей:

85 из 100

Оптимизация загрузки страниц:

70 из 100

Время ответ сервера:

Уменьшите время ответа сервера при открытии сайта с мобильных телефонов, чтобы оно составляло не более 0.2 секунды. Сервер ответил за 1.44 сек.

Плагины:

На сайте не используются дополнительные плагины (Micromedia Flash, Microsoft Silverlight, Java), поэтому контент доступен максимальному числу пользователей интернета.

Тег viewport:

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

Кеширование статики:

Кеширование статических файлов включено.

Сжатие CSS файлов:

Файлы CSS стилей оптимизированы.

Сжатие HTML страниц:

Удалите из HTML кода лишние байты (пробелы, табуляции и переносы строк)

Сжатие JS файлов:

JS код оптимизирован.

Блокируещие файлы:

Переместите файлы, загрузка которых мешает быстрому отображению страницы как можно ниже. Подгрузка JS или CSS файлов в секции head тормозит загрузку HTML кода страницы. Найдено блокирующих JS файлов: 4, CSS: 6

Сжатие изображений:

Изображения оптимизированы.

Видимый контент:

Загрузка основного контента оптимизирована.

Адаптация по ширине:

Ширина страницы не выходит за область просмотра, прокрутки по горизонтали нет.

Размеры элементов:

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

Размеры шрифтов:

Размер шрифта и высота строк на сайте позволяют удобно читать текстовый контент.

Вид на телефонах и планшетах:

Анализ оптимизации для мобильных устройств позволяет узнать, насколько удобен веб-ресурс для просмотра на смартфонах или планшетах. Ключевые элементы данного анализа включают в себя сведения о скорости загрузки сайта на мобильных устройствах, ширине области просмотра его страниц, размере используемых шрифтов, наличии всплывающих окон, корректной работе HTML- и CSS-кода, а также других аспектах адаптации сайта под гаджеты. Сегодня, когда ведущие поисковые системы (Google и Яндекс) главную ставку делают на развитии мобильного поиска, владение такой полезной информацией позволяет в разы повысить эффективность оптимизации сайта для мобильных устройств. К примеру, зная, что сайт нуждается в увеличении скорости загрузки страницы, его владелец может осуществить ряд необходимых для достижения этой цели мер. Как следствие, ускорение отображения страницы уменьшит показатель отказов, увеличит время пребывания пользователей на сайте, а также улучшит его поведенческие факторы.

www.cy-pr.com

Анализ сайта system-to.ru

Удобство для пользователей:

100 из 100

Оптимизация загрузки страниц:

31 из 100

Время ответ сервера:

Уменьшите время ответа сервера при открытии сайта с мобильных телефонов, чтобы оно составляло не более 0.2 секунды. Сервер ответил за 1.4 сек.

Плагины:

На сайте не используются дополнительные плагины (Micromedia Flash, Microsoft Silverlight, Java), поэтому контент доступен максимальному числу пользователей интернета.

Тег viewport:

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

Кеширование статики:

Кеширование статических файлов включено.

Сжатие CSS файлов:

Файлы CSS стилей оптимизированы.

Сжатие HTML страниц:

HTML код оптимизирован.

Сжатие JS файлов:

JS код оптимизирован.

Блокируещие файлы:

Переместите файлы, загрузка которых мешает быстрому отображению страницы как можно ниже. Подгрузка JS или CSS файлов в секции head тормозит загрузку HTML кода страницы. Найдено блокирующих JS файлов: 0, CSS: 3

Сжатие изображений:

Возможно уменьшить изображения на 113 Кбайт. Пeреведите изображения в правильный формат: PNG или JPEG. Используйте инструменты сжатия изображений: OptiPNG или PNGOUT для png, jpegtran или jpegoptim для JPEG.

Видимый контент:

Загрузка основного контента оптимизирована.

Адаптация по ширине:

Ширина страницы не выходит за область просмотра, прокрутки по горизонтали нет.

Размеры элементов:

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

Размеры шрифтов:

Размер шрифта и высота строк на сайте позволяют удобно читать текстовый контент.

Вид на телефонах и планшетах:

Анализ оптимизации для мобильных устройств позволяет узнать, насколько удобен веб-ресурс для просмотра на смартфонах или планшетах. Ключевые элементы данного анализа включают в себя сведения о скорости загрузки сайта на мобильных устройствах, ширине области просмотра его страниц, размере используемых шрифтов, наличии всплывающих окон, корректной работе HTML- и CSS-кода, а также других аспектах адаптации сайта под гаджеты. Сегодня, когда ведущие поисковые системы (Google и Яндекс) главную ставку делают на развитии мобильного поиска, владение такой полезной информацией позволяет в разы повысить эффективность оптимизации сайта для мобильных устройств. К примеру, зная, что сайт нуждается в увеличении скорости загрузки страницы, его владелец может осуществить ряд необходимых для достижения этой цели мер. Как следствие, ускорение отображения страницы уменьшит показатель отказов, увеличит время пребывания пользователей на сайте, а также улучшит его поведенческие факторы.

www.cy-pr.com

Минимум настроек apache2 и nginx веб-серверов для повышения безопасности — Server admin

Рассмотрим типовую схему веб-сервера: nginx используется в качестве фронтэнда (front-end), apache2 — бэкэнда (back-end). Установка пакетов из репозитариев дает стандартную конфигурацию, которая применима для сервера разработки и тестирования. Однако, стоковая конфигурация изначально подстроена под большой класс задач и требует доработки. В частности, в плане безопасности. Опишем минимум настроек, которые необходимо сделать, если настраиваемый сервер выходит в интернет для широкого использования.

apache2

Отключаем потенциально опасные и просто неиспользуемые модули, а также неиспользуемые подконфиги. Почти всегда можно (и нужно) отключить:

  • модуль autoindex, позволяющий просматривать содержимое директории при отсутствии индексного файла,
  • обработку cgi-bin, которая в deb-based системах лежит в конфиге serve-cgi-bin.conf и используется очень редко,
  • Другие неиспользуемые модули (список которых зависит от выкладываемого кода). Т.е. необходимо перешерстить директории mods-enabled, conf-enabled

На продакшн-сервере пользователю не нужно знать точную версию апача. Вообще, подобной информации должно отдаваться как можно меньше. Формат этой информации регулируется параметром ServerTokens, который по умолчанию обычно выставлен в OS и в результате веб-сервер выдает что-то вроде

Apache/2.4.10 (Debian) Server at ...

Этот параметр, как и некоторые другие настройки безопасности в debian-системах обычно находится в конфиге /etc/apache2/conf-available/security.conf. Переключаем в менее информативную и, соответственно, более безопасную версию:

#ServerTokens Minimal #ServerTokens OS #ServerTokens Full ServerTokens Prod

Аналогичным образом стоит поступить с подписью сервера на "ошибочных" страницах

ServerSignature Off #ServerSignature On

и трассировкой

TraceEnable Off

Последняя обычно уже отключена, но в этом необходимо убедиться.

Код некоторых выкладываемых сайтов может содержать скрытые файлы, вроде .gitignore, .svn и других, раскрывающих стуктуру кода. Их желательно отключить здесь же, в апаче, или в фронт-энде. Можно отключить сразу все скрытые файлы:

<DirectoryMatch "/\."> Require all denied </DirectoryMatch>

Полезную информацию можно также подчерпнуть из первоисточников: апачевского, дебиановского. При этом, последняя статья несколько выходит за пределы настроек самого апача.

Некоторые из правил для бэкэнда закрывают те же места, что и в фронтэнде. Даже если каким-то образом будет поломана конфигурация nginx, уязвимость все равно не реализуется.

Отключим доступ к скрытым файлам — в секции виртуалхоста добавляем:

RedirectMatch 404 /\..*$

Такие файлы нередко встречаются в проектах. В частности, системы контроля версий вроде git, svn. Эта метаинформация не должна попадать в прошакш, тем не менее следует превентивно защититься от такой возможности.

Если VirtualHost на сервере не один, то также не плохо будет раскомментировать секцию

AllowOverride None Order Deny,Allow Deny from all

которая отключает доступ ко всем файлам из корня. Естественно, чтобы виртуалхост работал нужно включить доступ к самой директории виртуалхоста по типу

AllowOverride All Order Deny,Allow Allow from all

Я не описываю настройку прав доступа (пользователь:группа) на уровне ОС и файловой системы и использование модуля mpm_itk с директивой AssignUserID. Это тоже должно быть сделано для серверов, на которых такое разделение требуется.

nginx

Отключим отображение скрытых файлов:

location ~ /\. { deny all; }

nginx используется как frontend, и если на нем отдается контент по https, то повышаем его безопасность. Для начала отключаем SSLv3 и другие небезопасные протоколы. Если nginx свежий, то в нем это уже и так отключено, поэтому лучше просто обновиться.Генерируем параметры обмена ключами Diffie-Hellman (которые могут генерироваться достаточно долго, запаситесь временем)

openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096

и затем подключаем их в энжинксе

ssl_dhparam /etc/nginx/ssl/dhparam.pem;

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

ssl_ciphers 'AES256+EECDH:AES256+EDH:!aNULL';

Также имеет смысл включить кеширование

ssl_session_cache shared:SSL:10m;

После всех настроек желательно проверить их корректность в каком-нибудь сервисе, например, этом.

PHP

Как и в случае апача скрываем версию

expose_php = Off

В зависимости от задач можно отключить вывод ошибок:

error_reporting = 0 display_errors = Off

 

Проверки

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

HEAD example.com

Также побродим по сайту, в том числе по страницам, которые генерируют 4xx и 5xx ошибки, проверим, что версии софта не раскрываются и тем более не раскрывается внутренняя структура сервиса.

Завершающие замечания

Если на сервере хостится несколько сайтов, то многие из приведённых выше настроек повышают безопасность лишь частично. Сделать хорошую защиту между виртуалхостами на одной машине принципиально будет достаточно сложно. Если такое требуется — лучше смотреть в сторону виртуализации уровня операционной системы, по образцу OpenVZ или lxc.

Со временем пост будет пополняться.

unixmin.com

Анализ сайта isaserver.ru

Удобство для пользователей:

60 из 100

Оптимизация загрузки страниц:

75 из 100

Время ответ сервера:

Уменьшите время ответа сервера при открытии сайта с мобильных телефонов, чтобы оно составляло не более 0.2 секунды. Сервер ответил за 0.93 сек.

Плагины:

На сайте не используются дополнительные плагины (Micromedia Flash, Microsoft Silverlight, Java), поэтому контент доступен максимальному числу пользователей интернета.

Тег viewport:

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

Кеширование статики:

Кеширование статических файлов включено.

Сжатие CSS файлов:

Уменьшите обьём подключаемых CSS стилей, удалив лишние переносы строк, табуляции и оптимизировав значения стилей.

Сжатие HTML страниц:

Удалите из HTML кода лишние байты (пробелы, табуляции и переносы строк)

Сжатие JS файлов:

JS код оптимизирован.

Блокируещие файлы:

Переместите файлы, загрузка которых мешает быстрому отображению страницы как можно ниже. Подгрузка JS или CSS файлов в секции head тормозит загрузку HTML кода страницы. Найдено блокирующих JS файлов: 5, CSS: 2

Сжатие изображений:

Возможно уменьшить изображения на 655 Кбайт. Пeреведите изображения в правильный формат: PNG или JPEG. Используйте инструменты сжатия изображений: OptiPNG или PNGOUT для png, jpegtran или jpegoptim для JPEG.

Видимый контент:

Загрузка основного контента оптимизирована.

Адаптация по ширине:

Ширина страницы составляет 1001 CSS-пикселей, а области просмотра – всего 980 CSS-пикселей, из-за чего пользователям придется прокручивать ее по горизонтали.

Размеры элементов:

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

Размеры шрифтов:

Размер шрифта и высота строк на сайте позволяют удобно читать текстовый контент.

Вид на телефонах и планшетах:

Анализ оптимизации для мобильных устройств позволяет узнать, насколько удобен веб-ресурс для просмотра на смартфонах или планшетах. Ключевые элементы данного анализа включают в себя сведения о скорости загрузки сайта на мобильных устройствах, ширине области просмотра его страниц, размере используемых шрифтов, наличии всплывающих окон, корректной работе HTML- и CSS-кода, а также других аспектах адаптации сайта под гаджеты. Сегодня, когда ведущие поисковые системы (Google и Яндекс) главную ставку делают на развитии мобильного поиска, владение такой полезной информацией позволяет в разы повысить эффективность оптимизации сайта для мобильных устройств. К примеру, зная, что сайт нуждается в увеличении скорости загрузки страницы, его владелец может осуществить ряд необходимых для достижения этой цели мер. Как следствие, ускорение отображения страницы уменьшит показатель отказов, увеличит время пребывания пользователей на сайте, а также улучшит его поведенческие факторы.

www.cy-pr.com