Даниила блог
15 Jun/11 0

12 мер по Linux Apache MySQL PHP веб-лампа корневого сервера обеспечения


Частота взлома резко возросло в последние месяцы. Особенно много данных, которые будут подхвачены хаки на веб-серверах. Даже Sony PSN рубить воспользовался неисправленных уязвимостей в веб-сервера Apache. Так вот я поднимаю меры, которые сервер может иметь немного безопаснее от атак извне. Конечно, это также не дает 100% защиты, но это лучше делать с плохими парнями игра немного сложнее. Некоторые из этих мер требует только минимальной установки и технического обслуживания. Другие требуют много времени и знания PHP поймать. Вы должны всегда обращать внимание на соотношение затрат и выгод при выборе меры безопасности. Это не имеет никакого смысла для защиты небольших частных сайтов, как Федеральный резервный банк. Тем не менее, несколько конкретных изменений в системе уже имеется большое означать большую безопасность. И что вы должны относиться даже пока не стало слишком поздно ....

Все советы и Codesnips относятся к текущим окно Debian.

Первый Брандмауэр - запретить После того как все

Большинство дистрибутивов Linux в своих установках по умолчанию открывать порты для внешних, которые не являются абсолютно необходимыми. Эта ситуация может быстро измениться, однако, даже если сервер
играя и пытается вещи. Внезапно, даже медиа-сервер слушает в Интернете или базе данных
принимает подключения из Интернета. Таким образом, нет ничего плохого, чтобы дисциплинировать себя и поставить на очень жесткие брандмауэр, который в основном запрещает После того как все соединения извне и позволяет только (само-) выбранных соединений. К счастью, это делается быстро и с Iptables. На этом пути уже не могут обеспечить услуги, чтобы сделать доступным всему миру, что не бизнес. К сожалению, вы платите немного комфорта - брандмауэр должен быть настроен каждый раз, когда вы хотите предложить новые услуги. Тем не менее, усилия малых и больших преимуществ.

 # / Bin / Баш

 # Удалить существующие таблицы
 IPTABLES-F

 # Запретить все входящие соединения
 IPTABLES-P INPUT DROP
 IPTABLES-P FORWARD DROP

 # Разрешить все исходящие
 IPTABLES-P OUTPUT ПРИНЯТЬ

 # Разрешить SSH
 IPTABLES-A INPUT-J ACCEPT-р TCP - dport 22 

 # Разрешить HTTP
 IPTABLES-A INPUT-J ACCEPT-р TCP - dport 80 

 # Далее служба (UDP), позволяют, например, игровой сервер
 IPTABLES-A INPUT-J ACCEPT-р TCP - dport 4534 

 # Разрешить все: от локального.  (Для обеспечения беспрепятственного доступа к серверу себя, свои услуги,
 # Например, PHP по локальной базе данных
 IPTABLES-A INPUT-S 127.0.0.1-J ПРИНЯТЬ

 # Уже установленные соединения будут приниматься в каждом порту
 # (Требуется для некоторых демонов)
 IPTABLES-A INPUT-м состояние - состояние ESTABLISHED, RELATED-J ПРИНЯТЬ

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

Чтобы выяснить, какие услуги только вокруг слушать свой собственный сервер, вы можете использовать NetStat:

 # Для TCP сокетов:
 NetStat-LPN | GREP TCP

 # Аналогично для UDP:
 NetStat-LPN | GREP UDP

Чтобы проверить, если брандмауэр действительно работает, вы можете осуществить сканирование портов вашего собственного сервера с другого компьютера. Все работало, и это должно привести только четные порты, которые открыты:

 # Для TCP:
 Nmap-p1-65 535 meinserver.de

 # Для UDP:
 Nmap-су-p1-65 535 meinserver.de

Второй SSH логинов запрет

На своей корневой сервер у вас есть полный доступ к SSH. Это очень удобно, так как вы можете с любого клиента SSH к серверу раз только для работы на нем. Обратной стороной этого является то, что курс может каждый, кто, к сожалению, почему-то перешла свои пароли. Это гораздо безопаснее, чтобы SSH логинов только действующий ключевой файл. Таким образом, открытый ключ клиента к серверу и скопировать интерактивные логины запрещены, введя пароль.

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

 SSH-Keygen-т RSA

 # Скопируйте сгенерированный ключ к серверу

 SSH-копия-ID-я ~ /. .ssh / id_rsa.pub root@meinserver.de

 # Теперь настройки sshd_config на сервере / и т.д. / SSH /
 .
 .
 PasswordAuthentication нет
 .
 .

 # Затем начните снова RearBBpos
 / Etc / init.d / SSH перезапустить

И здесь следует принимать меры предосторожности, чтобы не закрыть, даже если что-то не работает.
Открытый ключ на палке USB с соответствующим паролем в вашей голове делает ее гораздо труднее для плохих парней, чтобы получить оболочку.

Треть SSH Bruteforcing предотвратить DenyHosts

Если совет не практично 2 и вы не сдавайтесь, удобства на основе пароля входа хотите, вы можете по крайней мере, предотвратить автоматизированную ставки пароль нападавших на сервере. Многие боты в интернете целый день ищу сделать не более чем на SSH серверы и опробовать в различных паролей. При достаточно безопасный пароль не является большой проблемой, но есть лучшее чувство, даже если это возможно. Кроме того, он также защищает своих пользователей, если есть на сервере и учетных записей пользователей. Здесь вы не можете полагаться на пользователей использовать надежные пароли. DenyHosts постоянно пересматривается и SSH логинов на пользователя блокируется на время, кто вошел в их неправильного пароля повторяется. IP адреса пользователей временно перейти в / и т.д. / hosts.deny, чтобы они больше не имеют доступа к возможно. Это SSH Bruteforcing к очень длительным и не очень перспективные задачи.

 apt-get install DenyHosts

 # DenyHosts работает сразу после установки.  Это может быть
 # В файле / и т.д. / denyhosts.conf тонкой настройки

Четвёртое Черные списки используются для блокировки IP-адреса из известной проблемой

В различные черные списки интернет ведутся, перечень которых большое количество уголовных / нарезанного / спам / мошеннических серверов. Эти IP-списки могут быть введены непосредственно в брандмауэр, так что с этим как известно, не доверенные компьютеры не могут подключиться на все на собственный сервер. Таким образом, вы можете уменьшить количество спама на свой собственный сервер и резко тот или иной детский сценарий блокировки, потому что его русский прокси вдруг перестает работать. Как это сделать, что я был в другой статье блога описано на примере черного списка Infiltrated.net.

Пятый Не используйте FTP для работы на сервере

FTP является реликтом лучшие времена, когда Интернет был небольшой деревни по-прежнему доверяют. Многие администраторы сайтов по-прежнему использовать FTP для передачи файлов на сервер или работать на свой сайт. К сожалению, это очень неопределенным, поскольку FTP передает все данные необеспеченными. Пароли и данные могут быть прочитаны без проблем на каждом переходе между серверами и клиентами. Гораздо безопаснее пойти с SSHFS. Позволяет подключать компьютер через SSH на локальной файловой системе удаленного сервера. Вы можете работать на сервере, как если бы он был на локальном компьютере. Все файловые доступ к файлам на сервере, полностью прозрачны, так что вы можете открыть с местным графическая программа для редактирования изображений на сервер непосредственно, а затем сохранить. Больше комфорта и безопасности без особых усилий.

 # Установка SSHFS
 apt-get install SSHFS

 # Создайте точку монтирования на локальной файловой системе
 MkDir / СМИ / MyServer

 # Сервера на локальный гору файловая система
 SSHFS www-data@mein-server.de :/ VAR / WWW / СМИ / MyServer

 # Теперь каталог / var / WWW на моем локальном сервере в / СМИ / MyServer доступно

Шестой Установить обновления

Супер безопасная система не поможет, если сама система несовершенна и известные уязвимости могут быть использованы. В большинстве случаев эти уязвимости закрыты быстро, но часто забывают, администратор регулярные обновления системы, чтобы сделать. Если вы должны включить автоматическое обновление на серверах Linux или нет, является спорным вопросом. Некоторые никогда не будет делать, потому что он, естественно, с большим количеством неудач может быть, что обновления сделать систему неработоспособной. Это случилось со мной в более чем 10 лет работы на системах Debian, но никогда, и я ценю преимущества своевременного и регулярного обновления, намного выше, чем в результате рисков.

 # Эта строка в файле / и т.д. / кронтаб, обновляет системные часы каждый день в 6 утра
 0 6 *** корень apt-get обновления && apt-get-й обновления

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

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

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

Седьмой PHP с open_basedir тюрьму

Многие хаки основан на том, что уязвимость в коде PHP используется для доступа к файлам в доступ к файловой системе, которые не относятся к сайту, но сама система, почему вы должны запереть PHP так, чтобы он читал только в специально выделенных каталогов и писать допускается. Для этого php.ini опцией open_basedir конфигурации. PHP имеет возможность поставить только разрешен доступ к каталогам там. Файлы, такие как / и т.д. / пароль находятся вне досягаемости. Размещение нескольких веб-сайтов на одном сервере нужно установить open_basedir в каждой конфигурации виртуального хоста на каждой стороне.

 # Глобального php.ini с помощью:
 # / Etc/php5/apache2/php.ini
 open_basedir = / VAR / WWW / :/ TMP /

 # На сайте в VirtualHost конфигурации:
 php_value open_basedir / VAR / WWW / сайтов / :/ TMP /

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

Восьмой Создайте свой ​​собственный сайт для пользователей MySQL

Используйте свой собственный PHP-MySQL приложения, вы должны создать абсолютно для Apllikation собственных пользователей MySQL и ни при каких обстоятельствах использовать MySQL запросов суперпользователя. Вы также должны ограничить права пользователя до того, что на самом деле только операции разрешены, которая требует PHP скрипт. Инструкция CREATE TABLE и DROP TABLE являются общими в инъекции SQL и используется в большинстве приложений PHP никогда не требуется. Он содержит несколько сайтов с несколькими базами данных на сервере, вы должны создавать свои базы данных для всех пользователей. Таким образом, после успешной атаки, злоумышленник имеет доступ только к одной из баз данных, а не непосредственно на всех. Если вы не хотите попробовать командной строки для управления счетами пользователей MySQL, управление пользователями и работает довольно просто с PhpMyAdmin на вкладке "права".

Девятый PHP сообщений об ошибках от

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

 # Глобального php.ini с помощью:
 # / Etc/php5/apache2/php.ini
 display_errors = Off

 # На сайте в VirtualHost конфигурации:
 php_flag display_errors Off

 # Сообщение об ошибке прочитал это в любом случае:
 кошка / var/log/apache2/error.log | GREP PHP

Десятый Мишень для SQL инъекций предел ModSecurity

SQL инъекции являются наиболее часто используемым методом атаки на веб-серверах. Доступ непосредственно через веб-приложение, и оно отвечает браузер для их выполнения. Здесь передаются пользовательские переменные построены SQL запросы, посланные с привилегиями пользователя базы данных всех своих баз данных в удалим читать и редактировать их. Реальный подлинной защиты от SQL инъекций существует, только если код PHP был написан сайт в связи с этими атаками. Каждая переменная из введенных пользователем данных, которые могли бы попасть в запрос SQL, она должна быть испытана и убежал. PHP предлагает функцию real_mysql_escape_string ().

Если вы не уверены, что если код чист, может mod_security для Apache поможет отразить большое количество этих атак в любом случае. mod_security постоянным контролем все запросы к веб-серверу и реагирует на заранее шаблон, который многие инъекции SQL, атаки могут быть заблокированы. К сожалению, работает только с mod_security ручной работы. Часто после нового блока установки mod_security также требуется (регулярные) функции вашего PHP код, так что не остается ничего другого, как полное приложение, чтобы проверить установку снова. Только тогда же можно выяснить, mod_security может даже не хотят блокирование функций. Если так, то список фильтров для настройки исчезает, так что ложно-положительный.

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

11 ID проверки - Apache не знает, кто он такой
Это не очень эффективный метод против взлома, он делает автоматизированные скрипты, которые ищут сервер версии, но немного тяжелее. Обычно Apache указывает на страницы с сообщениями об ошибках (например, 404 Not Found) свой сервер подписи.

 Apache/2.2.16 (Unix) Server в www.daniel-ritter.de порт 80

Это исключает любого потенциального агрессора получит хотя бы один раз о сервере и веб-eigesetzten версии уровне. Подпись сервер выключен быстро:

 # / Etc/apache2/conf.d/security
 ServerSignature Off

12 Не используйте отключения модулей Apache

По умолчанию, Apache загружен некоторые модули, которые почти никогда не требуется. В Debian вы можете найти загруженные модули
как мягкие ссылки в / etc/apache2/mods-enabled.

Может быть удалены почти всегда:

mod_cgi

Используется для запуска CGI скриптов. Этот метод относится к заре Web и был родоначальником современных языков сценариев для обеспечения динамических веб-сайтов. mod_cgi не является необходимым для 99% сайтов PHP и с неисправным Apache конфигурации представляет собой потенциальную брешь в безопасности

 a2dismod CGI

mod_status

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

 a2dismod статус

mod_autoindex

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

 a2dismod autoindex

Наслаждайтесь этой статьей?

Подпишитесь на наш RSS канал!

Комментарии (0) Обратные ссылки (1)

    Оставить комментарий

    * Скопируйте этот пароль:

    * Введите или вставьте пароль здесь:

    617 Спам Заблокированные до сих пор спам бесплатно Wordpress

    Скопируйте строку в поле ниже 8Itg56: