Настройка тайм-аута SSH сессий

Чтобы настроить тайм-аут SSH сессий, посмотрим где находится файл конфигурации SSH сервера:

sudo find / -name sshd_config

Откроем его в любом текстовом редакторе, например nano:

sudo nano /etc/ssh/sshd_config

Читать далее Настройка тайм-аута SSH сессий

Причина сообщений «HTB: quantum of class 10001 is big. Consider r2q change»

Однажды на сервере доступа Ubuntu Server 16.04 и Accel-ppp заметил в файле /var/log/kern.log следующие сообщения:

kernel: [365970.550498] HTB: quantum of class 10001 is big. Consider r2q change.
kernel: [365970.550547] HTB: quantum of class 10A49 is big. Consider r2q change.
kernel: [365979.545580] HTB: quantum of class 10001 is big. Consider r2q change.
kernel: [365979.545621] HTB: quantum of class 10BD6 is big. Consider r2q change.
kernel: [365995.601973] HTB: quantum of class 10001 is big. Consider r2q change.
kernel: [365995.602031] HTB: quantum of class 11705 is big. Consider r2q change.

Сначала попробовал отследить какие в этот момент поднимаются интерфейсы:

tail -f /var/log/kern.log | grep "quantum of class 10001 is big"
tail -f /var/log/accel-ppp/accel-ppp.log | grep "create interface"

Читать далее Причина сообщений «HTB: quantum of class 10001 is big. Consider r2q change»

Почему Contact Form 7 не работает на iOS

Недавно на WordPress сайте заметил проблему отправки сообщений через Contact Form 7 из устройств с операционной системой iOS.
Если использовалась Google reCAPTCHA, то при нажатии кнопки Отправить, страница очень долго обновлялась и reCAPTCHA сообщала ошибку ожидания, если отключить reCAPTCHA, то сообщение отправлялось спустя 1-2 минуты.

Как оказалось, iOS почему-то начал блокировать AJAX, который использовался по умолчанию при обновлении страницы.

По этому чтобы решить проблему, я открыл файл конфигурации wp-config.php и примерно перед строкой:

define('WP_DEBUG', false);

Добавил строку:

define ('WPCF7_LOAD_JS', false);

Эта строка запрещает Contact Form 7 использовать Javascript.
Если указать эту переменную в конце файла, то она не будет работать.

После этого сообщения на iOS начали отправляться сразу.

Как отсоединить SSH пользователя

Допустим через SSH подключено несколько пользователей.

Сначала посмотрим список онлайн пользователей:

w

Допустим отобразилось следующая информация (где test — это логин пользователя):

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
test     tty1                      11:20    1:07   0.03s  0.03s -bash
test     pts/0    192.168.1.5      11:21   13.00s  0.02s  0.02s -bash
test     pts/1    192.168.1.3      11:21    0.00s  0.02s  0.00s w

tty1 — это клиент вошедший локально, то есть находится возле компьютера.
pts/1 — судя например по IP и WHAT, допустим что это мы, соответственно pts/0 это клиент которого мы хотим отсоединить.

Смотрим список процессов и их PID:

ps faux |grep sshd

У меня отобразилось:

root       946  0.0  0.5  65508  5368 ?        Ss   12:00   0:00 /usr/sbin/sshd -D
root      1147  0.0  0.6  92828  6920 ?        Ss   12:01   0:00  \_ sshd: test [priv]
test      1178  0.0  0.3  92828  3384 ?        S    12:01   0:00  |   \_ sshd: test@pts/0
root      1192  0.0  0.6  92828  6592 ?        Ss   12:02   0:00  \_ sshd: test [priv]
test      1223  0.0  0.3  92828  3532 ?        S    12:02   0:00      \_ sshd: test@pts/1
test      1248  0.0  0.0  15468   956 pts/1    S+   12:25   0:00              \_ grep --color=auto sshd

Находим test@pts/0 и соответственно 1178 — это нужный PID.

Завершаем процесс указав его ID, после чего пользователь сразу отсоединится:

sudo kill -9 1178

Смотрите также мои статьи:
Установка и настройка SSH
Настройка тайм-аута SSH сессий

SQL запросы для ABillS

В этой статье я приведу примеры некоторых SQL запросов для базы биллинговой системы ABillS.

Первым делом подключимся к MySQL серверу и перейдем к базе abills (либо можно использовать phpmyadmin или внешний MySQL клиент):

mysql -u root
use abills;

Читать далее SQL запросы для ABillS

Скрипт добавления IP адресов из файла в ipset

Понадобилось однажды написать скрипт чтобы добавить в ipset все IP для которых били подняты сессии на сервере доступа, использовался биллинг Abills, поэтому я решил взять IP адреса из MySQL таблицы биллинга.

Первым делом создадим тестовый ipset:

ipset create test iphash

Создадим файл скрипта:

nano iplist.sh

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

mysql -u root -e "SELECT INET_NTOA(framed_ip_address) FROM abills.internet_online WHERE (status=1 or status>=3) AND guest=0;" -s -N > iplist.txt
iplist_data=$(cat iplist.txt)
for row_data in $iplist_data; do ipset -exist add test ${row_data}; done
rm iplist.txt

Выполняем скрипт и проверяем:

chmod +x iplist.sh
./iplist.sh
ipset list test | wc -l
ipset -L

Смотрите также мою статью — Скрипты ip-up и ip-down с ipset для Accel-ppp

Решение ошибки «Another app is currently holding the xtables lock»

Недавно заметил на одном сервере с биллинговой системой ABillS, что при массовом выполнении скрипта /etc/ppp/ip-up возникает ошибка:

Another app is currently holding the xtables lock. Perhaps you want to use the -w option?

Посмотрев код скрипта обнаружил, что среди iptables правил есть два, которые могут тормозить работу, а именно выполнялся поиск ipoe интерфейсов двумя командами:

IPTABLES="/sbin/iptables"
EXIST=`${IPTABLES} -t nat -L PREROUTING -v | grep "${IFNAME} ";  ${IPTABLES} -L -v | grep DROP | grep "${IFNAME} "`

Для поднятия 3000 сессий, уходило более 30 минут и часть правил могла вовсе не добавится или не удалится скриптом.
По умолчанию если используется ключ -L то iptables резолвит IP адреса и пытается отобразить вместо них DNS имена, что занимает много времени, и чтобы это не происходило, нужно добавить еще ключ -n, а также на всякий случай я добавил ключ -w 20, который заставит отложить выполнение новых правил до 20 секунд если iptables уже занят выполнение другой команды:

IPTABLES="/sbin/iptables"
IPTABLES_WAIT="-w 20"
EXIST=`${IPTABLES} $IPTABLES_WAIT -t nat -n -L PREROUTING -v | grep "${IFNAME} ";  ${IPTABLES} $IPTABLES_WAIT -n -L -v | grep DROP | grep "${IFNAME} "`

После этого скрипт с iptables правилами начал отрабатывать мгновенно.
Так как старые правила не все выполнились, я проверил это посчитав некоторые командой:

iptables -n -L -t nat -v | grep DNAT | wc -l

И сверил с количеством сессий, правил явно было меньше, поэтому пришлось очистить все правила и перезапустить сессии чтобы скрипт /etc/ppp/ip-up отработал правильно, на этот раз при 3000 сессиях он сделал свою работу менее чем за минуту.
Замечу что в скриптах /etc/ppp/ лучше не использовать правила iptables.

Как я закрывал счет в польском Pecao банке

Однажды знакомая из Украины попросила меня помочь ей с закрытием счета в польском банке Pecao.
Она не собиралась ехать в Польшу и поэтому не могла посетить банк, поэтому я начал переписку с сотрудниками по email, который был указан в договоре, а также есть на официальном сайте.

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

Читать далее Как я закрывал счет в польском Pecao банке

Проблема с розовым искажением видео в Adobe Premiere

Однажды делал проект в Adobe Premiere и понадобилось вытащить видеокарту, после того как я ее вытащил, начал использовать интегрированную в процессор Intel HD Graphics 630 и у меня возникла проблема с изображением. Видео стало искаженным, чаще всего с розовыми и зелеными полосами.
На всякий случай экспортировал проект в видео файл и хотел продолжить его на другом компьютере, но видео файл оказался тоже с этими искажениями.
Пробовал переустановить Adobe Premiere, но это не помогло.

Читать далее Проблема с розовым искажением видео в Adobe Premiere

Сборка и установка accel-ppp

В этой статье я приведу пример сборки и установки accel-ppp в Ubuntu Server.

Требования accel-ppp такие:
Современный дистрибутив Linux
Ядро версии 2.6.25 или старше
cmake не младше версии 2.6
libcrypto-0.9.8 или старше (openssl-0.9.8)
libpcre
net-snmp-5.x (Для snmp)
liblua5.1 (для IPoE c DHCP option 82)

Читать далее Сборка и установка accel-ppp