воскресенье, 29 июня 2014 г.

Защита nginx от Китая и Индии с помощью GeoIP, apache или nginx

Как правило, большое количество брутфорсеров находятся в Китае и Индии. Так как мои сайты не расчитаны на эту аудиторию, то ip'шники из Китая и Индии можно спокойно блокировать. В этом нам поможет модуль GeoIP для apache или nginx.

nginx:
Для использования этого модуля необходимо чтобы nginx был скомпилирован с поддержкой модуля http_geoip_module.
Проверить это можно так:
# nginx -V
nginx version: nginx/1.2.1
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-pcre-jit --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-auth-pam --add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-echo --add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-upstream-fair --add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-dav-ext-module

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

понедельник, 23 июня 2014 г.

Оптимизация Apache2

Вторая заметка из цикла оптимизации веб-сервера на базе apache+nginx+mysql+php.

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

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

На сервере установлен восьмиядерный процессор Xeon и 24Гб оперативной памяти, на котором работает более 200 сайтов, в основном на Joomla и WordPress.

воскресенье, 22 июня 2014 г.

Подключение самописного плагина в Nagios

После установки Nagios, мониторить сервера стало куда проще. Однако остались вещи, которые из коробки в Nagios нет, например просмотр очереди писем в Postfix. Плагин check_mailq рабоатет неправильно. В интернете есть несколько уже написанных плагинов для этого дела, поэтому я не стал придумывать своё и лишь немного доработал чужой скрипт (исправил 3-4 строчки, для наглядности вывода выполнения команды).

Скрипт взят отсюда: exchange.nagios.org/directory/Plugins/Email-and-Groupware/Postfix/check_postfix_queue/details

Обозначать машины буду так:
server - то, что мы будем мониторить. в данном случае почтовый сервер;
monitor - сервер, на котором установлен Nagios, в данном случае сервер мониторинга.

суббота, 21 июня 2014 г.

Оптимизация MySQL

Заметка из цикла оптимизации веб-сервера на базе apache+nginx+mysql+php.

Первым делом решил заняться именно оптимизацией MySQL.

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

На сервере установлен восьмиядерный процессор Xeon и 24Гб оперативной памяти, на котором работает более 200 сайтов, в основном на Joomla и WordPress.

MySQL версии 5.1

четверг, 19 июня 2014 г.

Установка и настройка Nagios 4

Цель: установить и настроить на базе Nagios мониторинг для четырёх серверов: monitor (localhost), главный сервер (server, main-server) и 2 DNS сервера (DNS1, DNS2).
На всех четырёх машинах Debian 7.

Устанавливается версия Nagios Core 4.0.7, Nagios Plugins 2.0.2, Nagios NRPE 2.15.

суббота, 7 июня 2014 г.

Защита nginx от брутфорсеров

В логах было замечено то, что к разным сайтам на WordPress (и не только) поступает очень много запросов.
Было решено такое блокировать на корню, а именно средствами nginx reject'ить их.
Позже может запилю скрипт какой-нибудь или использую готовое решение.

Смотрим ip-адреса с наибольшим числом запросов (ip-адреса специально не изменяю даже):
# cat /var/log/nginx/access.log | cut -f1 -d" " | sort | uniq -c | sort -n
...
13018 173.252.202.2
24134 195.206.253.8
33300 5.100.249.163
33626 199.102.67.201

Создадим файл, в котором будут прописаны все "плохие" ip-адреса:
# vim /etc/nginx/blockips.conf
deny 173.252.202.2;
deny 195.206.253.8;
deny 5.100.249.163;
deny 199.102.67.201;
allow all;

Правило такое:
"плохим" запрещаем доступ;
остальным разрешаем;

В секцию http главного конфига nginx подключим ранее созданный файл:
# vim /etc/nginx/nginx.conf
http {
...
include blockips.conf;
...
}

Проверим конфиг nginx на ошибки:
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

И перезагрузим сервис:
# service nginx reload

Скрипт для всего этого тут: http://blog.amet13.name/2014/07/wordpress-joomla.html

пятница, 6 июня 2014 г.

Неправильное отображение даты в LaTeX

До того, пока не наступил июнь-месяц я ничего об ошибке не знал. Потом увидел, что вместо "июнь", почему-то пишется "iюнь".

В новых патчах TeX Live это пофиксили, но автоматически обновления не выкатываются.
В связи с этим нужно установить патч вручную.

Для Windows:
Нужно в ручную скачать с http://www.ctan.org/tex-archive/macros/latex/contrib/babel-contrib/russian файл russianb.ldf и заменить им файл в каталоге:
c:\texlive\2013\texmf-dist\tex\generic\babel-russian\
(если дистрибутив устанавливался в каталог по умолчанию).

В GNU/Linux можно установить патч так:
$ cd /tmp
$ wget http://mirrors.ctan.org/macros/latex/contrib/babel-contrib/russian/russianb.ldf
$ sudo cp russianb.ldf /usr/share/texlive/texmf-dist/tex/generic/babel-russian/russianb.ldf

Подготовка среды к работе с LaTeX

Установка в Debian/Ubuntu TeXstudio и компонентов LaTeX:
$ sudo apt-get install texlive-base texlive-binaries texlive-latex-extra texlive-lang-cyrillic texstudio biber pgf latex-xcolor texlive-doc-ru texlive-latex-base texlive-latex-recommended texlive-xetex latex-beamer texlive-bibtex-extra fonts-lmodern lmodern texlive-pstricks texlive-science texlive-generic-extra texlive-fonts-extra texlive-math-extra

Эти пакеты нужны для работы с библиографией, графикой, кириллицей, XeLaTeX, ModernCV, barcode и TeXstudio.

Для использования шрифтов типа Times New Roman, необходимо их установить:
$ sudo apt-get install ttf-mscorefonts-installer

Я по умолчанию вместо устаревшего движка PdfLaTeX использую XeLaTeX. Для того, чтобы включить его по умолчанию в TeXstudio, нужно в меню выставить:
Options -> Configure TeXstudio -> Build -> Default Compiler -> XeLaTeX

Вместо TeXstudio можно использовать LaTeXila:
$ sudo apt-get install latexila

Для использования minted, нужно установить python-pygments:
$ sudo apt-get install python-pygments

Решение проблемы "Can't access Secondary GPU" в NVIDIA

В 17й версии Linux Mint драйвера nvidia-current не хотят работать.

$ optirun glxgears
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) NVIDIA(0): Failed to initialize the NVIDIA GPU at PCI:1:0:0. Please

[ERROR]Aborting because fallback start is disabled.

После многочисленных попыток правки конфига xorg.conf и bumblebee.conf и подключении модулей i915 и bbswitch к initramfs было найдено решение. А оказалось оно простым. Нужно вместо драйвера nvidia-current использовать nvidia-331-updates.

Если не установлен bumblebee, то устанавливаем:
$ sudo add-apt-repository ppa:bumblebee/stable
$ sudo apt-get update
$ sudo apt-get install bumblebee bumblebee-nvidia primus linux-headers-generic
$ sudo apt-get install bbswitch-dkms mesa-utils


Установка драйвера:
$ sudo apt-get install nvidia-331-updates

Редактируем конфиг bumblebee под новый драйвер:
$ sudo gedit /etc/bumblebee/bumblebee.conf
...
[driver-nvidia]
KernelDriver=nvidia-331-updates
PMMethod=auto
LibraryPath=/usr/lib/nvidia-331-updates:/usr/lib32/nvidia-331-updates
XorgModulePath=/usr/lib/nvidia-331-updates/xorg,/usr/lib/xorg/modules
XorgConfFile=/etc/bumblebee/xorg.conf.nvidia
...

Для применения новых настроек нужно перезагрузиться:
$ sudo shutdown -r now

Проверка:
$ optirun glxgears
286 frames in 5.0 seconds = 57.146 FPS
300 frames in 5.0 seconds = 59.979 FPS
300 frames in 5.0 seconds = 59.982 FPS