Рубрика: man

  • Дружим nginx + ssl

    Понадобилось к одному из сайтов прикрутить ssl
    Напомню, что nginx у меня выступает как фронт-энд к Apache2
    чтоб в дальнейшем было меньше проблем, при отказе от apache2 доверим шифрование nginx

    Для этого создаём конфигурационный файл

    touch /etc/nginx/ssl.confCode language: Bash (bash)

    Добавляем в него содержимое

    # Подключение самоподписанного сертификата
    # генерация сертификата:
    # openssl req -new -x509 -days 9999 -nodes -out cert.pem -keyout cert.key
    
    ssl			on;
    ssl_protocols		SSLv3 TLSv1;
    ssl_certificate		/etc/nginx/ssl/cert.pem;
    ssl_certificate_key	/etc/nginx/ssl/cert.key;Code language: Bash (bash)

    Создадим папку где будем хранить сертификаты:

    mkdir /etc/nginx/sslCode language: Bash (bash)

    Для большей безопасности ограничиваем доступ к сертификатам:

    chown www-data:www-data /etc/nginx/ssl
    chmod 700 /etc/nginx/sslCode language: Bash (bash)

    Перейдем в эту папку и с генерируем сертификат:

    cd /etc/nginx/ssl
    openssl req -new -x509 -days 9999 -nodes -out cert.pem -keyout cert.keyCode language: Bash (bash)

    При генерации вас попросят указать некоторые данные, заполнять не обязательно но желательно.

    Теперь добавим в конфигурацию Виртального хоста в секцию server

            listen          443;       # порт https
            include	/etc/nginx/ssl.conf; # подключение конфигурации sslCode language: Bash (bash)

    Дальше для примера привожу итоговый вариант файла конфигурации.

    server {
    listen 80;
    listen 443;
    server_name domen.ru www.domen.ru;
    include /etc/nginx/ssl.conf; # подключение конфигурации ssl
    
    access_log /var/log/nginx/domen.ru/access.log;
    
    location / {
    proxy_pass http://127.0.0.1:8086/;
    proxy_redirect off;
    proxy_set_header Host $host;
    .............
    ............
    ..........Code language: Bash (bash)

    проверяем

    nginx -tCode language: Bash (bash)

    Если всё Ok то перезапускаем nginx и радуемся

  • как найти спаммера в LAN сети

    Перестали уходить письма с почтового сервера с вот таким сообщением

    Subject: Undelivered Mail Returned to Sender
    
    This is the mail system at host example.ru.
    
    I'm sorry to have to inform you that your message could not
    be delivered to one or more recipients. It's attached below.
    
    For further assistance, please send mail to postmaster.
    
    If you do so, please include this problem report. You can
    delete your own text from the attached returned message.
    
                       The mail system
    
    <vyborov@blabla.ru>: host mail.blabla.ru[89.188.122.122] said: 554 5.7.1
        Service unavailable; Client host [111.111.176.99] blocked using
        cbl.abuseat.org; Blocked - see
        http://cbl.abuseat.org/lookup.cgi?ip=111.111.176.99 (in reply to RCPT TO
        command)Code language: Bash (bash)

    Сеть за нашим натом большая, и вполне возможно кто-то подхватил троян.
    Как найти кто?

    Сначала смотрим начнём вести лог кто пользуется 25м портом шлюза

    iptables -A FORWARD -p tcp -m tcp -s 192.168.0.0/16 --dport 25 -j LOG --log-level debug --log-prefix "outgoing mail "Code language: Bash (bash)

    Теперь посмотрим кто будет нам светится.

    tail -f /var/log/syslog | grep outgoingCode language: Bash (bash)

    Долго ждать не пришлось, супермега активность идёт от.

    Nov 12 09:38:57  kernel: [1502790.410756] outgoing mail IN=eth0 OUT=eth1 SRC=192.168.5.133 DST=205.188.186.137 LEN=54 TOS=0x00 PREC=0x00 TTL=127 ID=47636 DF PROTO=TCP SPT=4779 DPT=25 WINDOW=64886 RES=0x00 ACK PSH URGP=0
    Nov 12 09:38:57  kernel: [1502790.607265] outgoing mail IN=eth0 OUT=eth1 SRC=192.168.5.133 DST=205.188.186.137 LEN=58 TOS=0x00 PREC=0x00 TTL=127 ID=47671 DF PROTO=TCP SPT=4779 DPT=25 WINDOW=64868 RES=0x00 ACK PSH URGP=0
    Nov 12 09:38:57  kernel: [1502790.833908] outgoing mail IN=eth0 OUT=eth1 SRC=192.168.5.133 DST=205.188.186.137 LEN=70 TOS=0x00 PREC=0x00 TTL=127 ID=47706 DF PROTO=TCP SPT=4779 DPT=25 WINDOW=64804 RES=0x00 ACK PSH URGP=0Code language: Bash (bash)

    идём лечим комп от вирусов.

    Дальше на будущее можно поставить так
    Создаём цепочку

    iptables -N LOGDROP > /dev/null 2> /dev/null
    iptables -F LOGDROP
    iptables -A LOGDROP -j LOG --log-prefix "LOGDROP "
    iptables -A LOGDROP -j DROPCode language: Bash (bash)

    И направляем его в эту цепочку

    iptables -A FORWARD -p tcp -s 192.168.5.133 --dport 25 -j LOGDROPCode language: Bash (bash)
  • Переезжаем на php5+fpm

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

    Сегодня решил один из своих сайтов перевести со связки nginx — Apache2+mod_php5 на nginx+php5-fpm в надежде, что появятся свободные ресурсы, которые сервер сможет тратить на mysql.

    Введя в гугл запрос «ubuntu nginx php-fpm» я начал понимать, что предложенные варианты мне не подходят, т.к. я хотел перевести всего один из пару десятков сайтов, а все остальные продолжали работать на apache2.

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

    Я уже ранее писал, что я перешёл на PHP5.3 и вот ещё боялся ставить php-fpm версий меньше чем 5.3 т.к. не знал, а всё ли заработает, но сильно не задумываясь я решил проверить есть ли php-fpm в репозиториях? ну и разумеет оказался, как раз в тех, откуда я ставил PHP 5.3

    и так поехали

    apt-get install php-fpmCode language: Bash (bash)

    Он успешно устанавливается, связка nginx+apache2 у меня была настроена по вот этим статьям
    Раз — компилируем сам nginx и два связываем всё во едино (пропуская установку из пакета)

    Теперь я хочу один из virtualhost’ов заменить.
    Делаю резервную копию старого конфига и начинаю собирать новый.
    Времени я потратил много.
    Основная беда была в том, что повсеместно используется mod_rewrite для Apache, и теперь надо заставить работать правила но уже на nginx. Снова гугл и снова по крупицам воссоздал конфиг, который работает для wordpress
    и так привожу конфиг
    /etc/nginx/sites-available/mysite

    server {
    listen 80;
    server_name www.mysite.ru mysite.ru;
    
    access_log /var/log/nginx/mysite/access1.log;
    error_log  /var/log/nginx/mysite/error1.log  error;
    
    index index.php;
    root  /var/www/mysite;
    location / {
    try_files $uri $uri/ @wordpress;
    }
    
    location @wordpress {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_NAME /index.php;
    }
    
    location ~ \.php$ {
    try_files $uri @wordpress;
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
    }
    
    }Code language: Bash (bash)

    Сохраняем, проверяем nginx на ошибки синтаксиса.

    nginx -tCode language: Bash (bash)

    Если скажет, что ошибок нет, идём дальше — запускаем php5-fpm

     /etc/init.d/php5-fpm startCode language: Bash (bash)

    Теперь можно перезапустить nginx и пробовать зайти на свой сайт.
    я столкнулся с ошибками, пол шаблона wordpress была свёрстана с вот такими тегами
    Когда должно быть
    Поправил нужные места, потом пошёл отредактировал новый php.ini который находится вот тут

    /etc/php5/fpmCode language: Bash (bash)

    Собственно вся история, легче или сложнее жить я пока не заметил надо наблюдать, смотреть на графики и т.п.
    итог wordpress заработал на php-fpm ^)

    Ах чуть не забыл есть ещё плагин для wordpress, который дружит его с nginx
    _http://wordpress.org/extend/plugins/nginx-compatibility/
    я им воспользовался, но не знаю нужен он был или нет

  • OpenVPN Windows клиент (настройка openvpn windows)

    Недавно я писал, как поднять OpenVPN server на днях мне понадобилось присоединить к этой сети Ноутбук, который поедет в другие города и страны.

    Качаем дистрибутив OpenVPN

    http://openvpn.net/index.php/open-source/downloads.html

    OpenVPN GUI Идёт в комплекте.

    На сервере генерируем ключи

    cd  /usr/share/doc/openvpn/examples/easy-rsa/2.0
    source ./vars
    ./build-key noutCode language: Bash (bash)

    Копируем файлы на ноутбук из /etc/openvpn/keys/

    Нам нужны ca.crt nout.key и nout.crt

    У себя я положил их в C:\keys\

    Теперь создаём файл конфигурации клиента.

    C:\Program Files\OpenVPN\config\client.ovpnCode language: Bash (bash)

    Обратим внимание, что в Windows файлы конфигурации имеют вот такое расширение.

    remote 111.111.111.111 1194
    client
    dev tun
    proto udp
    resolv-retry infinite # this is necessary for DynDNS
    nobind
    user nobody
    group nogroup
    persist-key
    persist-tun
    ca c:\\keys\\ca.crt
    cert c:\\keys\\nout.crt
    key c:\\keys\\nout.key
    #ca ca.crt
    #cert nout.crt
    #key nout.key
    comp-lzo
    verb 4
    mute 20
    #redirect-gateway
    #show-net-up
    verb 4Code language: Bash (bash)

    На сервере создаём конфиг для этого клиента

    /etc/openvpn/ccd/noutCode language: Bash (bash)
    # роутинг на сеть Первого офиса
    push "route 192.168.1.0 255.255.255.0"
    # роутинг на сеть Управы офиса
    push "route 192.168.5.0 255.255.255.0"Code language: Bash (bash)

    Теперь наш клиент будет видеть вот эти 2 подсети.
    OpenVPN GUI

    Вот так подключаемся, и радуемся жизни 🙂
    Нам выдастся адрес из подсети 10.10.10.1 и мы сможем пользоваться внутренними ресурсами

    У нас есть доступ в компаративную сеть из любой точки мира!

  • Установка munin в ubuntu

    munin — Монитор системных ресурсов, рисует красивые графики по многим параметрам системы.
    munin настройка

    Состоит из 2х частей, серверной части и клиентской. одна отображает данные, вторая собирает по клиентам.
    Установка проста до безобразия 🙂

    # установка munin сервера
    $ sudo aptitude install munin
    # установка munin клиента
    $ sudo aptitude install munin-nodeCode language: Bash (bash)

    Хотя на некоторых серверах хватало первого, второй сам ставился…

    Конфиг сервера

    /etc/munin/munin.confCode language: Bash (bash)

    в нём можно изменить

    [localhost.localdomain]Code language: Bash (bash)

    на что-то вроде

    [odmin4eg.ru]Code language: Bash (bash)

    В конфигурации клиента

    /etc/munin/munin-node.conf Code language: Bash (bash)

    Изменим

    host *Code language: Bash (bash)

    на

    host 127.0.0.1Code language: Bash (bash)

    это если сбор мы проводим на томже сервере, что и отображение

    Перезапускаем

    sudo /etc/init.d/munin-node restartCode language: Bash (bash)

    WEB морда лежит по умолчанию /var/www/munin если у вас, перемещаем в нужный каталог и радуемся, у меня например в /var/www/ лежат Виртуальные хосты /var/www/odmin4eg.ru и т.п.
    Дальше просто заходим на http://ваш_домен.рф/munin

    Статистика открыта для всех, поэтому сами заботимся о её сокрытии от глаз чужих