Показаны сообщения с ярлыком VDS. Показать все сообщения
Показаны сообщения с ярлыком VDS. Показать все сообщения

13 янв. 2015 г.

Разгружаем и защищаем север nginx с помощью fail2ban

Разгружаем и защищаем север nginx с помощью fail2ban

Задача: простыми для самоучки средствами максимально разгрузить сервер и/или ВДС-ВПС от множества дурных запросов.

Два вида паразитных запросов:
  • роботы как роботы
  • роботы как люди
Вводная: роботы как люди хитрят и меняют:
  • юзерагент через 5-100 запросов, но ИП меняют редко;
  • ИП через 5-100 запросов, но юзерагент меняют редко;
  • лимитировать по числу коннектов и/или их скорости/частоте не хочется, потому что в век скоростного интернета и 128 поточных браузеров потеряем много юзеров и гуглоботов.
Идея:
  • роботам как роботам сразу отдаём ошибку 444 по юзерагенту;
  • роботам как людям сразу отдаём ошибку 444 по специфичным подстрокам в URI запроса;
  • баним найденные ИП на часок, чтобы робот отдохнул и выкинул наш сервер из своей базы данных.
Реализация:

Прочитать полностью...

12 янв. 2015 г.

Test VDS-VPS vs Dedicated Server by HDD

Чем отличается VDS-VPS (XEN 3.1GHz, ОЗУ 256MB, диск 15Gb, Канада) за 10 баксов от Dedicated Server за 10 баксов (Atom N2800 1,86 GHz, ОЗУ 2Gb, диск 500Gb, Франция)?

Методика тестирования:

идем в темп:

cd /tmp

создаем файлик из 16384 кусочков по 65536 байтиков, примерно будет 1 гигабайт:

dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync

на сервере за 10 баксов получим (не останавливая nginx и имея 100 PHP вызовов в секунду):

16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB) copied, 10.1663 s, 106 MB/s

уберем мусор за собой:

rm -f test

на VDS-VPS за 10 баксов получим:

1073741824 bytes (1.1 GB) copied, 270.881 seconds, 4.0 MB/s

при остановленном nginx (соответсвенно PHP-FPM тоже ничего не делает):

1073741824 bytes (1.1 GB) copied, 127.868 seconds, 8.4 MB/s

Вывод: нунах эти ВДС. К тому же на VDS-VPS за постоянную большую нагрузку на процессор/диск/сеть вас погонят и на XENe тоже, хотя и не так быстро как на OpenVZ.



И да, Ceterum censeo Moskva esse delendam! Прочитать полностью...

16 сент. 2013 г.

Два способа как экономить траф и ресурсы VDS - nginx.conf

nginx.conf

# Баним нахуй ботов

if ( $http_user_agent ~*

360Spider|80bot|80legs|Aboundex|Aboundexbot|AhrefsBot|
Baiduspider|BecomeBot|Blekkobot|DinoPing|Exabot|
Ezooms|Fasterfox|MJ12bot|MLBot|Morfeus|Nutch|
OmniExplorer_Bot|Searchmetrics|SemrushBot|
SeznamBot|Snoopy|SolomonoBot|Sosospider|SurveyBot|
TurnitinBot|URLAppendBot|WBSearchBot|YamanaLab-Robot|ZmEu|aiHitBot|archive.org|dataprovider.com|
discoverybot|dotbot|dotnetdotcom|findlinks|genieBot|
ia_archiver|integromedb|ip-web-crawler|linkcheck|
lipperhey|panopta.com|purebot|rogerbot|scrapbot|
sistrix|sitebot|spock

) {
return 444;
}

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

Потому что robots.txt они не читают, а если читают, то не выполняют, да и отдавать им robots.txt дюже жирно будет. Некоторые вписывают сюда Yandex, но учитывая его мировую экспансию на страны-члены-НАТО (Турция, например), я его не забанил.

Если какую тварь не упомянул или кого лишнего вписал - буду рад комментам.

Важная новость для тех, кто в танке, как я. Как оказалось http://clockworkorange.me/ с 01/01/2013 снова работает, и работает хорошо! Читайте, завидуйте, думайте, делайте. А то я поставил на мониторинг фид старого блога, а там:

Requesting http://www.clockworkorange.biz/feed .. Ok
Reply received (reply time: 469 ms)
-----------------------------------
HTTP/1.1 404 Not Found
Server: nginx/1.3.12
Date: Mon, 16 Sep 2013 11:33:22 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 291
Connection: close

Идите читать Блог Заводного Апельсина Ересь эпохи разума Прочитать полностью...

12 сент. 2013 г.

Прощай, Apache (вэбсервер такой). Я буду скучать.

Прощай, Apache (вэбсервер такой). Я буду скучать. Твоя прожорливость памяти и решето утечек памяти мне не по карману. Твои модули мне не осилить в плане "а ты отключи лишние модули и Апач будет хорошо работать". Я полностью переписал свои .htaccess в nginx.conf. PHP-FPM так же хорошо работает и без этой прожорливой пожилой жировой прослойки.

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

Советы грядущем поколениям по вопросу "как переписать конфиг апача .htaccess в конфиг энджинкса nginx.conf":

  • конфиг энджинкса это не программа на ПХП!
  • порядок следования директив в nginx.conf редко что-то означает, а точнее скачать ничего не означет
  • не используйте директиву if иначе как с return или rewrite ... last; - смотри пункт 1 и тут
  • в директиве if пробел перед скобкой обязятелен!
  • Читайте мануалы
  • Читайте мануалы на английском, там написано больше, чем на русском.
  • Читайте мануалы вопросы-ответы в том числе так вот так (гугл разумеется) site:nginx.org/ru rewrite или что ещё непонятно
  • Читайте мануалы так (гугл разумеется) site:mailman.nginx.org rewrite или что ещё непонятно
  • Ну и так тоже читайте мануалы (гугл разумеется) site:forum.nginx.org rewrite
  • Гуглите, ответы лично Игоря Сысоева на сложные вопросы попадаются в самых неожиданных местах.
  • Пишите свой конфиг от простого к сложному с нуля
  • Не включайте в свой конфиг ни единого символа, если не знаете точно, что он делает. Даже если нагуглили достойный пример - проверяйте все символы, зачем они указаны на что они влияют.

Желаю вам успешного избавления от Апача.

Удалить из ридера:
Ура! Ридер чист от говноблогов! Читайте Самосвала, он дело пишет! Прочитать полностью...

18 июл. 2013 г.

Wordpress cache for highload doorway pages

Привет.

Если вы юзаете Wordpress вордпресс и добыли туда траф, например вот так, то вас забанит хостер виртуального хостинга. А меня забанил за ВДС, который грузил жесткий диск их сервера очень сильно и долго. Вот эта опттимизаци помогла, но не надолго, потому что траф прет, запросы внутри вордпресса написаны жопой, а не руками. Кто не верит - откройте ПХПмайАдмин и посмотрите рекондации по увеличению производительности, половина строк чинится только изменением запросов и/или структуры хранения информации.

Короче, очередной переезд. Но!!!

После переезда оказалось, что на одном сайте WP Super Cache заработал, а на другом нет. Переустановка плагина и прочие бубны ничего не починили.

И тут случилось чудо, гугл и гоуфак сказали, что нужно юзать вот этот кэшеватор http://centavrus-opti.ru/skript-keshirovaniya-dlya-wordpress.html

Я его быстренько перепилил на мультиблоговость, по-нашему блогоскопище, и оно работает. Уже час как работает. Рекомендую, недочетов я пока не нашел.

Wordpress вордпресс маст дай :(

Удалять некого, ибо нехуй читать всякую хуйню. Прочитать полностью...

2 июл. 2013 г.

Centos Nginx PHP-fpm error child 1111 exited on signal 11 (SIGSEGV) after 2222 seconds from start

Если проблема, вынесенная в заголовок, вас волнует "Centos Nginx PHP-fpm child 1111 exited on signal 11 (SIGSEGV) after 2222 seconds from start", то после долгого гугления вы найдете два совета:

  1. выслать дамп коре куда-то для исправления бага
  2. стучать в бубен потому что никто не знает, от чего срабатывает защита от "сегментейшен фолт"
Ни то ни второе мне не понравилось и я пошел своим путем - перфекционизм. Включил отображение всех ошибок ПХП и начал избавлять от ворнингов и нотисов. Когда их количество уменьшилось в 10-100 раз, то и падение PHP-fpm от заезда в чужой сегмент памяти исчезло. Для проверки вернул старый набор классов - SIGSEGV вернулось. Для справки - это шоп от RX-P. Инвайты по почте после собеседования.

UPD
Забыл указать, что:
PHP 5.4.16
Nginx 1.5.1
Centos 5.9

Удалить из ридера - данунах, некогда. Прочитать полностью...

19 июн. 2013 г.

Using DKIM in Exim for Centos. Part 1.

Мои аптеки регулярно шлют мне письма от себя и из обратной связи от кутомеров и абузеров. В последнее время mail.ru и gmail.com повадились такие письма даже в спам не ложить, а отправлять обратно с пометкой 421 - "никого нет дома, приходите позже" или "550 - ты ёбаный спамер".

Хостеры ругаются, регистраторы банят домены, абузеры охуевают, кустомеры не покупают. После месячного заёбывания саппорта mail.ru и быстро покурив интернеты и второго после Бога, я выснил, что:
  1. почтовики не любят такую хуйню в заголовках как "X-PHP-Originating-Script: 500:class-phpmailer.php", устраняется в \etc\php.ini исправить mail.add_x_header = Off
  2. всем поголовно в ДНС добавить TXT  86400 v=spf1 ip4:111.222.33.44 a mx ~all (IP ясен хуй писать свой) 
  3. заставить exim (не менее 4.70, у меня 4.80.1) подписывать письма кровью, т.е. DKIM
 Создаём RSA-ключ (не менее, чем 1024 бита длиной, гугл меньше не примет) и парный ему общедоступный ключ. Прячем тайный ключ от посторонних:
mkdir /etc/pki/dkim
cd /etc/pki/dkim
openssl genrsa -out buy-viagra-online.com.key 1024
Generating RSA private key, 1024 bit long modulus
...................++++++
..++++++
e is 65537 (0x10001)
openssl rsa -in buy-viagra-online.com.key -pubout > buy-viagra-online.com.pub
chown exim:exim buy-viagra-online.com.key
chmod 640 buy-viagra-online.com.key
Получили buy-viagra-online.com.key 891 байт + buy-viagra-online.com.pub 272 байта
Создаём  DNS-запись для верификации DKIM
Берём публичный ключ, файло example.com.pub, который выглядит примерно так:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3D......
......
......
YRhOq9VT1IuiNhULLQIDAQAB
-----END PUBLIC KEY-----
Удаляем комментарии (начинаются со знаков минуса), всё остальное разворачиваем в одну линию, и приписываем к началу строку
k=rsa; p=
Получим что-то вроде следующего:
k=rsa; p=MIGfMA0GCSqGS.....дохуя.букв......BwIDAQAB
Входим в интерфейс управления зоной для домена example.com и создаём запись вида
dkim._domainkey.buy-viagra-online.com 86400 IN TXT "k=rsa; p=MIGfMA0GCSqG....дохуя.букв....9VT1IuiNhULLQIDAQAB"
Где dkim — произвольная строка (допустимая в доменном имени). Важно: можно создать несколько DKIM-записей для одного и того же домена, если у них различаются селекторы.
Лезем в файл \etc\exim\exim.conf
# было так
remote_smtp:
driver = smtp
# стало так
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_KEY_FILE = /etc/pki/dkim/DKIM_DOMAIN.key
# OLD FUCKING ERROR DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_FILE}{0}}
DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_KEY_FILE}{0}}
remote_smtp:
driver = smtp
dkim_domain = DKIM_DOMAIN
dkim_selector = dkim
dkim_private_key = DKIM_PRIVATE_KEY
# я не вкурил, зачем это и заремил dkim_canon = relaxed
service exim restart
echo "body viagra 00 _`date`_" |mail -s "subject 123 from _`hostname`_" fucking.viagra.admin@gmail.com

Если всё нормально, то на жимыле в исходниках вы увидите в том числе и такое:
Received-SPF: pass (google.com: domain of root@buy-viagra-online.com designates 111.222.33.44 as permitted sender) client-ip=111.222.33.44; Authentication-Results: mx.google.com;
spf=pass (google.com: domain of root@buy-viagra-online.com designates 111.222.33.44 as permitted sender) smtp.mail=root@buy-viagra-online.com;
dkim=pass header.i=@buy-viagra-online.com
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=buy-viagra-online.com; s=dkim;
h=Date:From:Message-Id:Subject:To; bh=9DgPzmCC0hW....много-букв.....2wDEUnow=;
b=idayqjqxQbc....дохуя-букв.....LhhlE8jE3Y=;
Received: from root by buy-viagra-online.com with local (Exim 4.80.1)
(envelope-from )
------ 
story is based on http://boyandin.info/w/Exim/DKIM
PS
The dkim_canon = relaxed, sets the canonicalization method to use when signing messages. DKIM supports “simple” and “relaxed” algorithms- to understand the difference, see section 3.4 of the DKIM RFC.
PS
Once you’ve set everything up, you can test your DKIM (and SPF and SenderID, etc) install, by using the port25.com validation service:
If you wish to receive the results at the address in the “mail_from”, the sample message should be sent to check-auth@verifier.port25.com.
If you wish to receive the results at the address in the “from” header, the sample message should be sent to check-auth2@verifier.port25.com.
If you wish to receive the results at a different address from one of the addresses above, the address need to be added to the check-auth address. For example, to send the results to: jsmith@yourdomain.com the sample message should be sent to check-auth-jsmith=yourdomain.com@verifier.port25.com.

PS
Как ставить EXIM 4.80.1 на Centos 5.9 32 бит на VDS с 128 Mb RAM - это тема отдельной истории. Если будут интересующиеся - напишу. А вот как делать DKIM на шареде - ебитесь сами :) потому что ВДС.
Иди работай! Прочитать полностью...

5 янв. 2010 г.

5 января. Первые чужие статьи в моем каталоге

Что сделано.

Поработать удалось только до полудня - пришлось ехать по делам и на оффлайновую работу. И вот сейчас начнем с отчета и снова за работу - Бормалея догонять.

Чилидомейны пиарят coolvds.com. Цены там хорошие, особенно ВДС за 11 баксов, но дизайн - я плакал от светло-серого шрифта номер 8 на белом фоне. К тому же сервер в датацентре CoreSite (USA, Virginia) значит фарму нихт. А прикольно, если датацентр выключит сервант по ИП из-за одного фармацевта, остальные ВДС останутся на плаву? Телефона у них нет :( В термсах прикол:
"
1.6. Запрещено размещение ресурсоёмких ресурсов таких как чаты, счетчики подсчета статистики, счетчики определения PageRank и тИЦ, скрипты серфинга, баннерные системы, массовые рассылки...;
1.8 Размещение страниц, используемых в виде дорвеев, фиды, "поисковый спам", возможно только по предварительному согласованию с администрацией хостинга;
"
Два вопроса: нафига тогда ВДС, если запрещено размещение "ресурсоёмких ресурсов"? А что в п. 1.7 было? 0_0 вот кто нарушает смотрим

"Убить одноклассника"

Статьи: написано три белых. Поддерживающие статьи - "сделано" пять с контролем что, куда и как пошло.

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

В МаркетХэлсе реферал один отжигает: Smoke Deter продает каждый день, даже 2 января :)

На wordpress.com проверил свои очень старые блоги. Который были без рекламы и без брендов в именах доменов - живы-здоровы и в индексе гугла сидят по тайталам своим, и, иногда, по тэгам, хотя не писалось туда полгода. Будем развивать как источник трастовых ссылок. Статьи там - синонимайз.

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

VDS продолжение
# mysqladmin status
Uptime: 44637 Threads: 5 Questions: 241616 Slow queries: 173 Opens: 557 Flush tables: 1 Open tables: 500 Queries per second avg: 5.413
/etc/my.cnf содержит
log-slow-queries=/var/log/mysql_slow_queries.log
long_query_time=1
а /var/log/mysql_slow_queries.log всё равно пустой.
-rw-r----- 1 mysql mysql 8576 Янв 4 21:31 mysqld.log
-rw-r--r-- 1 mysql mysql 0 Янв 4 01:37 mysql_slow_queries.log
Почему?
Вечером, т.е. за сутки
Uptime: 80562 Threads: 4 Questions: 447419 Slow queries: 389 Opens: 692 Flush tables: 1 Open tables: 500 Queries per second avg: 5.554
А /var/log/mysql_slow_queries.log пустой :(
Кто-нибудь может подсказать, почему?
Хостер всё ещё занят для такой мелочи :(



Прочитать полностью...

3 янв. 2010 г.

3 января. Настройка ВПС и прочее

Вчера вчером заработал мой ВПС и я занялся их настройкой. Вот протокол сделанного, для следующего раза, но это ещё не всё. Остался не до конца понятый сендмайл и таймауты в nginx.
Настройки ПХП
время 59
память 48
аплоад 10
log_errors
root@домен.com

Расширения PHP
+gd.so для каптчей
+mcrypt.so для phpMyAdmin ИЛИ "yum -y install php-mcrypt"

Возможности
убрать -dovecot-1.0.7-7.el5 POP3+IMAP
убрать -squirrelmail-1.4.8-5.el5.centos.7 Webmail

02_01_2009
yum -y install mc
/etc/sysconfig/i18n "en_US.UTF-8" --> LANG="ru_RU.koi8r"
mkdir ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys вставить ключ путти
chmod 600 ~/.ssh/authorized_keys
vi /root/.bashrc в конце вставить echo 'ALERT - Root Shell Access to '`hostname`' on:' `date` `who` | mail -s "Alert: Root Access to `hostname` from `who | cut -d"(" -f2 | cut -d")" -f1`" моё-мыло@gmail.com
/etc/httpd/conf/httpd.conf
KeepAlive On
KeepAliveTimeout 3
Timeout 30
StartServers 1
MinSpareServers 1
MaxSpareServers 3
ServerLimit 6
MaxClients 6
MaxRequestsPerChild 25
ServerAdmin root@домен.com
vi ~/.bash_profile добавить PS1='[\u@\h \w]# ' export PS1
yum install links -y
vi /etc/httpd/conf/httpd.conf
ExtendedStatus On

SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1

elinks -dump http://localhost:8080/server-status
/usr/local/ispmgr/etc/ispmgr.conf InactivityTimeOut 10
/etc/mail/trusted-users apache, root
/etc/mail/local-host-names
домен.com
localhost
localhost.localdomain
localdomain
cd /etc/mail ; make clean ; make ; service sendmail restart
/etc/aliases root: моё-мыло@gmail.com newaliases
/etc/mail/virtusertable root@домен.com root
/etc/nginx/nginx.conf keepalive_timeout 30;




Коммент про чеки Адсенса через Приватбанк
1. Если нужны наличные баксы
- открываем валютную карточку - 25 грн ($4). Я за одно положил трошки баксов на депозит и ежемесячные проценты идут на эту карточку. Сам депозит с карты снять нельзя.
- регаемся в на сайте Приватбанка как частное лицо
- стучим в саппорт чтобы добавили нашу карту - если само там не добавилось. Они спросят номер счета - он указан в договоре.
- чек Адсенса подписываем! сканируем, загружаем через сайт, упаковываем в заказное письмо и несем на почту - 7 грн ($1).
- через недельку СМСка и идем в отделение и получаем наличные баксы.
2. Если нужны наличные гривны, то можно упростить
- гривенная карточка - даром
- на сайте она добавляется самостоятельно, если чё - в саппорт. Только не тот который в чяте :) а тот который "письмо операционисту"
- сканировать так же
- через неделю - СМСка и банкомат!
Огромные суммы только через реальный клиринг, т.е. чек они отсылают в банк-эмитент и т.д. Недели 2-3 будет идти.



Коммент к вчерашнему
...кучку статейных сайтов...
>> А какую рекламу на них вешаешь? Ну то есть как монетизируешь?
Адсенс. Клики по 0,5-1 баксу.
>> Я понял, что это англоязычные сайты получаются.
Естесственно!

Коммент про кино.
Аватар в 3Д несомненно красивей для природоведения и зоологии. Я думал что это боевик и ожидал сражения разума и техники, на крайняк шпионства и дипломатии. Оказалось конница и соколиная охота для "реднеков и крестьян" :)

Мне нравится творчество Тарантино, как и работы тов. З. Фрейда. Он (они) не боятся показать всем то, что многие думают/боятся. Когда пошли начальные титры Планеты Страха, я через пару минут заподозрил, что это будет не "Резидент Эвил + Дай Хард", а "От заката до рассвета + Бэд тейст (1987, http://www.badtaste.co.nz/ режиссёр Питер Джексон)". Этой мыслью поделился с женой. Ещё через две минуты титры огласили, что кроме Родригеса тут ещё побывал и Тарантино. Стало всё понятно и жутко интересно.


Удалил из ридера

http://moneymakercatalog.blogspot.com/ блог про всё.
http://profitblogger.ru/ это он же?
Прочитать полностью...