Сегодня буду рассказывать про настройку сервера на Linux (в частности, под CentOS 5.3), а также про минимальные шаги, предпринимаемые для защиты сервера. Для чего нужен свой VPS/VDS? Чтобы настроить их под свои потребности. Скажу сразу, что я не сис. админ, я программист. И все эти дела постигал сам. Так что если у сис. админов будут какие поучения - буду только рад выслушать.
Для чего я использую свой сервер? С них удобно парсить все и вся, канал позволяет; можно вешать сколько влезет на сервак сайтов, никаких тебе ограничений; вешаю контент дора на серваках, чтобы не размещать их на "чужих" сайтах :) Вообщем, делай что хочешь, ставь софт какой хочешь, но и настраивать/защищать, как правило, придется все самому ("unmanaged серверы").
Что же я обычно ставлю на сервер:
apache не на дефолтный порт;
nginx - как легкий фронтэнд и разгрузчик апача, отлично отдает статику;
иногда proftpd - FTP-сервер, если планируется использовать сервер для нескольких пользователей;
если планируется исопльзовать базы данных, то mysql;
php, как mod_php к апачу;
для мониторинга сервера/группы серверов (нагрузки, состояние сервисов, снятие количества траффика с eth0, оповещение на mail и jabber) ставлю Zabbix;
потихоньку защищаемся от брутфорса - SSHGuard или fail2ban.
Теперь по каждому пункту немного подробней.
MySQL
Ставлю не всегда, только когда требуется использовать базы - чаще всего, в CMSках. Идем на mysql.com, раздел Downloads, скачиваем исходные коды. Актуальный how to по установке мускула - http://www.r0xarena.com/blog/install...-in-centos-53/ Совет: сразу же переменуйте дефолтного пользователя root вот что-нибудь неприментное, тем самым немного усложните жизнь брутфорсерам)
Apache
Практически любые CMS-ки под сплоги, динамические доры, большое количество доргенов и прочее добро работает на PHP,- apache, как веб-сервер используется чаще всего. Я никогда не использую всякие yum и apt-get, а предпочитаю собирать все из сорсов вручную, так мне надежней.
Установить apache проще простого. Можно установить самому, прочитав readme на сайте, а можно найти готовые how to в гугле. Например, вот по этому туториалу http://dan.drydog.com/apache2php.html апач точно ставится нормально :)
Вместе с апачем сразу ставим и PHP, причем не советую ставить ветку 5.3.X, потому что в ней многие функции, используемые в популярных доргенах/CMSках, считаются устаревшими. Поэтому ставим 5.2.X как mod_php, правим httpd.conf так, как написано в how to. После всего этого не забыаем перезагрузить апач.
Nginx
Как только поставили апач, сразу же советую ставить nginx, легких фронтэнд, который ставится как бы "перед" апачем. Например, вещается на 80-й порт, дефолтный для апача, а апач переходит на другой порт, какой-нибудь 88 или 8080. Nginx отлично передает статику (картинки, js и т.д.), в то время как апач будет обрабатывать только скрипты. Если держите доры на этом сервере, который часто бывают в топе, то позаботьтесь об установке nginx - хотя бы для того, чтобы ваш сервер не упал от простой картинки с вашего сервера, поставленной на каком-нибудь очень посещаемом ресурсе. Nginx настраивается очень легко, есть типичные конфигурации на сайте разработчика http://sysoev.ru/nginx/, затруднений это вызвать не должно.
Proftpd
Хороший такой FTP-сервер, но тоже ставлю не всегда. Только когда предвидится использование сервера несколькими людьми. Если же использую сервер я один, то не парюсь и использую SFTP - это безопасней и не надо фтп-сервер ставить. Чем хорош proftpd - можно быстро добавлять/удалять пользователей, они хранятся в sql-базе. Хороший how to по настройке proftpd тут - http://community.livejournal.com/tut...41.html#cutid2. У меня иногда бывают заминке при сборке, но, видать, виной всему руки)
Zabbix
Многие не ставят сервисы для мониторинга для своих систем. Ну и плохо. Зато те, кто ставят, всегда в курсе того, что происходит с серваком и днем и ночью. А знать это очень важно - смотреть всплески активности (может, кто ддосит, парсит и т.д.), мониторить изменения конфигов (может, кто пролез на сервер и добавил еще одного рута?!), мониторить состояния всех сервисов.
В Zabbix можно устанавливать триггеры - условия, при которых наступает определенное действие. Например, у меня стоит триггер на изменения в файле /etc/passwd. Если кто-то надумает добавить нового пользователя, то мне тут же придет сообщение в Jabber об этом.
SSHGuard, fail2ban и прочее подобное
Защищают от брутфорсеров, которых сейчас как собак. SSHGuard, как понятно, от брутфорса SSH; fail2ban - вообще от кучи всего (SSH, форма авторизации и прочее). Про fail2ban расписано тут - http://www.fail2ban.org/wiki/index.php/Main_Page; про SSHGuard расписано тут - http://sshguard.sourceforge.net/. Действуют они сходими способами - отлавливают попытки бруфорса и блочат по IP в фаерволле. Этим пренебрегать никак не стоит, потому как спасает от хоть и небольшой, но все же возможности того, что ваш пасс сбрутят (если он у вас сложный), также это спасает от тех всплесков активности системы, которые создаются этим самым брутфорсом.
Еще несколько советов.
Не разрешайте подключаться руту по SSH. Для этого создайте своего пользователя, под которым вы будете подключаться по SSH. Потом через этого пользователя уже можно будет получить права привилегированного пользователя. Как это сделать - расписано тут.
А еще старайтесь не ставить FTP-серер без необходимости. Если нужен доступ по FTP, то используйте SFTP - логин/пасс от SSH подключения. Для этого подойте FileZilla или WinSCP. Это безопасней (не проснифают) и, в то же время, не надо устанавливать лишний сервис на сервак.
Сервер у меня угоняли пару раз, но все удавалось вернуть на свои места. Так что не пренебрегайте этими элементарными советами по безопасности, а то можно в один момент все быстро потерять.
Если вы сомневаетесь в своих администраторских способностях, то можно поставить панель Webmin - она бесплатная, достаточно легкая в освоении. Админить сервер с ней гораздо проще
Отличная статья. Сразу вопросы: - вы не делаете, чтобы php под su запускался (падает производительность, но при подломе одного сайта остальные остаются в целостности)? - что ставите, чтобы можно было обнаружить DDos, пережить и отразить его? - не используете панели типа ISPManager, DA, Cpanel (имеет ли смысл купить такую панель на совсем и потом использовать на своем VPS)? - при какой стоимости, на ваш взгляд, уже стоит обратить внимание на дедик, а не заморачиваться с VPS? - сколько WP будет нормально работать на конфе с 512Mb? (Считаем, что это 2.8.X и посещалкой 500ч/сутки) - вроде есть в статье, но уточню - при подломе хакерами сайтов, какие средства используете для обнаружения измений на сайтах? - что используете, чтобы ограничить активность ботов, краулеров, в том числе и паразитных.
- вы не делаете, чтобы php под su запускался (падает производительность, но при подломе одного сайта остальные остаются в целостности)?
нет, не делаю.
Сообщение от IFund
что ставите, чтобы можно было обнаружить DDos, пережить и отразить его?
ставлю органичение количества запросов с одного IP по времени + мониторю "Network Utilization" в Zabbix - настроил триггеры и при сильном увеличении In/Out приходит сообщение в Jabber; вообще, от целенаправленного ddos'a очень сложно отбиться. скажу честно, опыта защиты от хорошего ddos у меня нет. Но вот тут в последнее время достаточно много пишут на эту тему;
Сообщение от IFund
не используете панели типа ISPManager, DA, Cpanel (имеет ли смысл купить такую панель на совсем и потом использовать на своем VPS)?
на одном сервере стоит бесплатная webmin, поставил попробовать. довольно неплохо и удобно;
Сообщение от IFund
при какой стоимости, на ваш взгляд, уже стоит обратить внимание на дедик, а не заморачиваться с VPS?
я сидел на VPS года 2 точно, уже почти год на дедике; насчет стоимости - это все индивидуально, но если ощущаете возможность роста, то лучше брать сервер. я предпочитаю перестраховываться заранее;
Сообщение от IFund
сколько WP будет нормально работать на конфе с 512Mb? (Считаем, что это 2.8.X и посещалкой 500ч/сутки)
по личному опыту, с включенным wp-super-cache стояло 4 блога с народом 600+ /сутки. каких-то ощутимых тормозов не наблюдал;
Сообщение от IFund
вроде есть в статье, но уточню - при подломе хакерами сайтов, какие средства используете для обнаружения измений на сайтах?
предпочитаю предохраняться :) патчить ядро, софт своевременно. ну а Zabbix мониторит систему на предмет добавления нового пользователя. можно также высылать предупреждения в джаббер, если, например, больше 2-х человек в консоли находятся. Это касаемо сервера. Что касается сайтов - то использую свой скриптик, который запускается ко крону и снимает md5 со всех файликов. Т.к. файлов прилично, то запускаю по необходимости - раз в 2-3 суток, смотрю файлы которые поменялись;
Сообщение от IFund
что используете, чтобы ограничить активность ботов, краулеров, в том числе и паразитных.
на белых сайтах ничего не делаю, кроме robots.txt; а так, средствами сервера, ограничение на количество подклчений по времени (у меня, например, можно не более 8 подключений за 5 сек с одного IP);
Последний раз редактировалось 24110; 31.10.2009 в 18:00.
Достали тут мой сервер чудо-брутеры SSH. Если и у вас та же проблема, то вот ее простое решение - будем настраивать iptables. Кстати, может быть ваш ssh брутят, а вы и не знаете - посомтрите auth.log. Если там большое количество подключений под разными логинами, о которых вы даже не знаете, то защиту надо ставить 100%.
Прежде, чем настраивать правила для iptables, надо подстраховаться - сделаем обнуление правил для iptables каждые 5 минут. Так что если нечаянно заблокируем сами себя, через 5 минут сможем зайти по ssh снова. Для этого в crontab с помощью команды crontab -e прописываем следующее действие:
*/5 * * * * /sbin/iptables -F
Но только перед этим проверьте, действительно ли iptables у вас лежит в sbin. Если нет, то надо поменять на реальный путь.
Теперь выполняем следующие команды:
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH /sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --rttl --name SSH -j DROP
Этими двумя командами мы разрешили не более 5 запросов в минуту по ssh. Если случайно ошиблись в наборе пароля, то шансы исправиться будут. Ну а брутфорсеры идут лесом.
Тем что yum это менеджер пакетов, который позволяет устанавливать и управлять пакетами определенным стандартным и общепринятым способом. А "собирать все из сорсов вручную" это самопал, про который ты сам забудешь через год с какими параметрами ты собирал эту прогу и не сломается ли чего при пересборке. А если апдейтить придется другому админу, будьте уверены - он вас помянет "добрым" словом за такие нестандартные решения.