Разблокировка бана IP адреса в cpanel

Monday, 24 Oct 2011

Как то я тут распинался на тему защиты собственного хостинга под Cpanel WHM от брутфорса в том числе, через утилиту админки cPHulk Brute Force Protection, которая банит IP адреса, в случае произвести с них атаку брута. Но оказалось, что у этой защиты есть очень не приятный момент, благодаря которому хостинг в один прекрасный момент может, подобно Юлию Цезарю, сказать тебе: Et tu quoque, Brute!© и отрубить доступ к аккаунту вообще для всех, кроме адресов внесенных в белый список. Результатом чего станет отсутствие возможности залогиниться в админку и на сервак, через любой из протоколов: http, ssh, ftp и даже почтовую программу.

И именно поэтому необходимо дать доступ нескольким доверенным IP адресам, занеся их в белый список доверенных IP. В моем случае я дал доступ паре терминальных серверов, к которым имею доступ, двум купленным прокси серверам, а также к консоли еще пары серваков, которые удаленно администрирую по ssh. Ибо если у вас нет доступного терминального сервера, или же вы не можете использовать доверенный прокси сервер, то можно дать доступ хотя бы на какой нибудь собственный VPS с которого и можно разблокировать доступ к Cpanel WHM используя командную строку, путем обнуления базы брута.

Делается это следующим образом. Заходим в консоль, а дальше залезаем в командную строку мускуля:
# mysql
mysql> use cphulkd;
mysql>BACKUP TABLE `brutes` TO ‘/path/to/backup_file’;
Смотрим что вообще у нас есть в базе бана брута
mysql> SELECT * FROM `brutes`;
После этого, если список большой, то выбираем из базы свой IP и удаляем его
mysql> SELECT * FROM `brutes` WHERE `IP`=’X.X.X.X’;
mysql> DELETE FROM `brutes` WHERE `IP`=’X.X.X.X’;
mysql>\q

Узнать свой IP можно либо трейсом, либо зайдя на рутер либо воспользовавшись любым из многочисленных сервисов, определяющих IP адрес- ну хотя бы этот: WhatIsMyIP

VN:F [1.9.21_1169]
Rating: 8.7/10 (11 votes cast)
VN:F [1.9.21_1169]
Rating: +3 (from 3 votes)

Настраиваем MySQL для работы на VPS с 512Mb RAM

Saturday, 08 Oct 2011

Прикупил я тут клиенту хостинг под его новый сайт. Поскольку была необходимость в прикручивании библиотеки ffmpeg на сайт под Drupal, для того чтобы видюшки конвертились сами во флешки при добавлении, хотя для меня это не убедительно, так как на локальном компе можно нормально законвертить ручками. Ну вообщем по причине наличия ffmpeg решил взять самый дешевый VPS за 5,95$ у Burst.NET с 512 оперативы, 1MHz, 20Gb HDD, 10Tb трафа и 2IP + Direct Admin за 7$, так как настраивать руками меня ломало.

Взять то я его взял, но вебмастера не могли ничего делать, так как на любую операцию система ругалась:
ERROR 1135 (HY000): Can’t create a new thread (errno 11); if you are not out of available memory
gzip: error while loading shared libraries: cannot create cache for search path: Cannot allocate memory

подключившись, я обнаружил что при попытке логина по ssh вылетала ошибка:
bash: fork: Cannot allocate memory

(more…)

VN:F [1.9.21_1169]
Rating: 7.0/10 (10 votes cast)
VN:F [1.9.21_1169]
Rating: +3 (from 3 votes)

Настройка скриптов для импорта баз данных в mysql

Sunday, 17 Jul 2011

Данный пост является продолжением темы с импортом больших баз данных в mysql и здесь я расскажу как именно надо настроить скрипт для импорта базы данных.

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

1. BigDump
Открываем файл скрипта bigdump.php, в котором отыскиваем и меняем следующие строки на необходимые значения
$db_server   = ‘localhost’;
$db_name     = ‘DB_NAME’;
$db_username = ‘DB_USER’;
$db_password = ‘DB_PASSWORD’;
$filename           = ‘OUR_DUMP.SQL’; /* Наш дамп базы данных который мы выгрузили вместе со скриптом*/
$db_connection_charset = ‘Charset’; /*Поскольку мы работаем с русскими базами, то вероятнее всего это utf8 или cp1251*/

После этого открываем в бродилке скрипт хттп://наш-сайт/папка/bigdump.php и видим свой файлец, после чего наживаем на линк Start import

2. Sypex Dumper
С этим скриптом еще проще, так как у него есть графический интерфейс, через который можно вводить все данные, а также делать экспорт и импорт баз данных. Собственно заливаем файлец скрипта dumper.php на хостинг, но с одной оговоркой- опять же в плане кодировок. По умолчанию скрипт работает с cp1251, так что если надо залить utf-8, то добавляем в следующую строку параметр принудительной замены кодировки:
define(‘RESTORE_CHARSET’, ‘forced->utf8′);

После чего коннектимся через бродилку хттп://наш-сайт/папка/dumper.php
вводим логин на базу данных сайта и получаем возможность как импортировать нужную нам базу данных, так и экспортировать.

VN:F [1.9.21_1169]
Rating: 9.1/10 (9 votes cast)
VN:F [1.9.21_1169]
Rating: +4 (from 4 votes)

Как импортировать большую базу данных в mysql

Sunday, 17 Jul 2011

Бывает возникает ситуация, в которой необходимо загрузить на сервер хостинга базу данных больше разрешенного хостингом в утилите управления базами данных phpMyAdmin- обычно этот предел установлен в  ~2Mb. Если это случается на виртуале, то обычно просто заливаю базу через ftp и прошу суппорт хостинга помочь в данном вопросе.

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

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

2. Вариант второй – выгружать в пожатом состоянии- так как степень сжатия для текстового файла будет максимальной. Но тут опять же можно столкнуться с тем, что на хостинге не установлена поддержка архиваторов.

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

4. Как частный случай 3 вариант, возможно залить на сервер эмулятор терминала и сделать 5 пункт через него. Например можно попробовать PHPterm, но в этом варианте можно столкнуться с ограничениями хостинга в плане безопасности запуска команд и скриптов.

5. Также есть простенькая программка аналогичная BigDump, которая также позволяет импортировать большие базы данных, только в данном случае необходим Zend Optimizer либо Nu-Coder. Программка называется Sypex Dumper, и вторую версию скрипта можно даже интегрировать в наиболее популярные CMS. На сайте есть как платная утилита, так и облегченная бесплатная версия.

6. Если таки имеется доступ к консоли, то можно добавить в php.ini следующие строки (увеличиваем лимит загрузки файлов по времени и размеру), после загрузки, лучше вернуть все назад, чтобы не нагнули сервак с оказией:
max_execution_time = 20000
max_input_time = 20000
upload_max_filesize = 150M
post_max_size = 150M

7. Но на самом деле наиболее быстрым и оптимальным вариантом загрузки большой базы данных, имея доступ к консоли, будет загрузить дамп базы данных dump.sql через ftp, а затем залить её через консоль ssh:
mysql -h hostname -u user-name -p DB_name <  /path-to-dir/dump.sql
если у вас в качестве хоста базы данных используется стандартный localhost , то ключик -h можно и опустить, так что получится вида:
mysql -u user-name -p DB_name <  /path-to-dir/dump.sql

Да, чуть не забыл про самые поганые грабли всей пляски с импортом- при импорте базы данных могут возникнуть проблемы с кодировками, поэтому нам надо убедиться что дефолтная база и выгрузка sql находятся в одной кодировке, либо переконвертировать базу данных в стандартную для mysql кодировку (обычно это utf-8):
iconv -f CP1251 -t UTF-8 dump.sql > dump.sql.utf8
либо указать необходимую кодировку при процедуре импорта базы данных:
mysql -h hostname -u user-name -default_character_set utf8 -p DB_name <  /path-to-dir/dump.sql

VN:F [1.9.21_1169]
Rating: 8.2/10 (38 votes cast)
VN:F [1.9.21_1169]
Rating: +6 (from 8 votes)

Установка нескольких CMS на одну базу данных

Sunday, 03 Jul 2011

В очередное раз столкнулся с вопросом человека- как быть если прикупил себе нищебродский хостинг, позволяющий разместить 5 доменов, и всего одну базу mysql. Я конечно с трудом понимаю кто эти люди, которые приобретают подобные варианты, и главное где они их находят и по какой цене, учитывая что анлим с 4 IP стоит меньше 190 рублей в месяц.

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

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

Если вы все же решили что оно того стоит, то создаем базу данных средствами хостинга, после чего закачиваем нужное количество копий wordpress на хостинг, подключаем домены и запускаем установку CMS WordPress, где для каждой установки указываем различные table_prefix: wp_ ; wp1_; wp2_ и т.п, которые после копируем в файл wp-config.php (в самом файле для копии wordpress эта строка будет выглядеть $table_prefix = ‘wp_’; )

Точно такое же действие подойдет и для других CMS:
в Drupal прописываем в файл sites/default/settings.php аргумент $db_prefix = ‘drupal1_’;
в Joomla в файле configuration.php указываем var $dbprefix = ‘joomla1_’;
После того как запустим установку CMS все необходимые таблицы, с указанными префиксами создадутся установочными скриптами.

VN:F [1.9.21_1169]
Rating: 5.0/10 (29 votes cast)
VN:F [1.9.21_1169]
Rating: +2 (from 8 votes)

Установка сервера баз данных mySQL на CentOS

Friday, 10 Jun 2011

Собрат по цеху озадачил вопросом относительно того, что прикупил у Hostgatora минимальный и самый дешевый VPS по цене всего в 16$ за 384Mb памяти на борту и естественно unmanаged, причем из управления там стоит только Parallels Virtuozzo позволяющая доставлять сервисы и управлять ими, а также лазить по ssh через бродилку и рулить фаерволом. Но вот поставить мускуль у него получилось не очень здорово, так что был вынужден расписывать в аську последовательность действий, как и что делать что установить сервер mysql под CentOS.

Собственно там ничего сложного, особенно если стоит линуксовый установщик yum. Если его естественно нет, то делаем все по старинке:
$ mkdir /usr/local/yum
$ cd /usr/local/yum
$ wget http://linux.duke.edu/projects/yum/download/2.0/yum-2.0.7.tar.gz
$ tar xvzf yum-2.0.7.tar.gz
$ cd yum-2.0.7
$ ./configure
$ make && make install

после чего продолжаем будто yum у нас уже стоял:
$ yum install mysql
$ yum install mysql-server
$ yum install mysql-devel
$ chgrp -R mysql /var/lib/mysql
$ chmod -R 770 /var/lib/mysql
$ service mysqld start

После этого загоняем мускуль в автозагрузку:
$ chkconfig mysqld on && service mysqld restart && chkconfig –list | grep mysqld
После этого задаем пароль для рутового пользователя сервера баз данных:
/usr/bin/mysqladmin -u root password ‘Password’
Затем переходим к созданию необходимой базы данных и пользователя:
$  mysql -u root -p
mysql> CREATE DATABASE ИмяБазы;
mysql> USE  ИмяБазы;
mysql> GRANT ALL PRIVILEGES ON *.* TO Юзер@localhost  IDENTIFIED BY ‘ПАРОЛЬ’ WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> \q

После чего можно радоваться тому факту что на нашем дешевом VPS теперь крутится движок баз данных mySQL.

VN:F [1.9.21_1169]
Rating: 9.8/10 (10 votes cast)
VN:F [1.9.21_1169]
Rating: +3 (from 3 votes)

Создание резервной копии сайта через ftp

Tuesday, 31 May 2011

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

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

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

Для того же чтобы выкачать базу- нам понадобится утилита управления серверов mysql – phpmyadmin. Естественно, что можно скопировать сайт используя например встроенные утилиты- например для того же Drupal, но во первых они не всегда корректно копируют базу, а во вторых у того пользователя который был у меня на момент выгрузки данных- не было прав на использование этого модуля.

Так что пришлось таки биться с phpMyAdmin. Качаем утилиту с официального сайта, разархивируем её себе на компьютер и редактируем файл конфигурации, предварительно ознакомившись с файлом конфигурации сайта имеющейся резервной копии, на предмет выяснения паролей и явок связи сайта с базой данных. Собственно у каждого движка его расположение свое собственное, поскольку я переносил друпальный сайт, то в моем случае его местоположение было sites/all/default.

Создаем конфиг-файл config.inc.php, из имеющегося config.sample.inc.php, и заполняем строчку
$cfg['blowfish_secret'] = ‘ba17c1ec07d65003′;  // use here a value of your choice
произвольным кодом, который нам будет нужен для аутентификации по кукам. Также мы можем поменять тип аутентификации, в строчке
$cfg['Servers'][$i]['auth_type'] = ‘cookie’;
например на аутентификацию по http, что бы при обращении к странице сразу выскакивал логин-промт:
$cfg['Servers'][$i]['auth_type'] = ‘http’;

Помещаем файл в корневую директорию phpmyadmin. После этого загружаем все содержимое каталога  в подпапку, например phpmyadmin, корневого раздела сайта и заходим через бродилку http://сайт//phpmyadmin. Вводим логин который мы достали из конфига CMS и вуаля- “мы уже а Хопре!”

Вероятнее всего при заходе через бродилку у вас будет ругань следующего содержания: «Расширение mcrypt не найдено. Пожалуйста, проверьте ваши настройки PHP», но её мы просто игнорируем. Также в этой ситуации придется забить и на все остальные варнинги, как то отсутствие библиотеки mbstring, которая также ставится из консоли, и всевозможные опции для утилиты phpmyadmin.

Поэтому проходим в экспорт и цинично сливаем базу данных, выбрав доступный формат сохранения базы данных- как минимум sql.

VN:F [1.9.21_1169]
Rating: 3.5/10 (19 votes cast)
VN:F [1.9.21_1169]
Rating: 0 (from 4 votes)