четверг, 18 июля 2019 г.

Ntpdate работает, а ntpd - нет.

Бывает, что ntpdate синхронизирует, а ntpd - нет.

# ntpq -pn
     remote           refid      st t when poll reach   delay   offset  jitter
================================================
 10.1.1.4        .INIT.          16 u    -   64    0    0.000    0.000   0.000

Проверяем интерфейсы, на которых запущен ntp.

udp        0      0 127.0.0.1:123           0.0.0.0:*                           27026/ntpd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           27026/ntpd

Этого мало! Должна быть привязка к интерфейсу.
Проверяем конфиг (если привязка настраивается там), опции и скрипты запуска.
Например, /etc/conf.d/ntpd:

# Options to pass to the ntpd process
# Most people should leave this line alone ...
# however, if you know what you're doing, feel free to tweak
NTPD_OPTS="-g -u ntp:ntp -I enp4s0.10"

Интерфейс должен быть указан правильный или не указан вовсе.
Перезапускаем ntpd и проверяем:

     remote           refid      st t when poll reach   delay   offset  jitter
===================================================
+10.1.1.4        195.210.189.106  2 u   44   64  377    7.842    0.999   0.123

Норма!

пятница, 1 февраля 2019 г.

Расширение HP Smart Array RAID 1+0 на Linux LVM.

Для расширения нужен кеш с батареей (BBWC или FBWC).
Убеждаемся, что батарея рабочая и кеш доступен.
# hpacucli controller slot=2 show
Меняем  один за другим диски массива на более емкие, дожидаясь окончания ребилда.
Примечание: встречалось мнение, что диски в HP RAID 1+0 образуют пары не последовательно 1-2,3-4, а с чередованием: 1-3,2-4 или 1-4,2-5,3-6 и т.п.
После замены дисков убеждаемся, что на логическом диске появилось Unused space
# hpacucli controller slot=2 show config
И расширяем диск.
# hpacucli controller slot=2 logicaldrive 1 modify size=max
Это можно проводить на работающей системе, расширение происходит быстро.
Перегружаемся.

Далее создаем новый раздел
# fdisk /dev/cciss/c0d0
n - новый раздел
p - primary
3 - номер раздела (в нашем случае будет c0d0p3)
w - записываем изменения
Перегружаемся.

Создаем физический том
# pvcreate /dev/cciss/c0d0p3
Смотрим наши группы томов
# vgdisplay
Добавляем том в нужную группу
# vgextend vg_myserver /dev/cciss/c0d0p3
Проверяем
# vgdisplay
Смотрим логические тома
# lvdisplay
Расширяем нужный том
# lvextend -l +100%FREE /dev/vg_myserver/lv_root
Проверяем
# lvdisplay
Расширяем ext4 раздел нужного тома
# resize2fs -p /dev/vg_myserver/lv_root
Всё. Можно ещё раз перегрузиться.

четверг, 10 мая 2018 г.

Защита от SIP флуда.

При получении более 20 SIP пакетов с одного адреса в течение секунды, генерируем событие флуда, которое ловит fail2ban. И блокируем трафик на следующую секунду.

# Пишем количество пакетов, соответствующих правилу, и IP-адрес их источника в список SIP.
-A INPUT -p udp --dport 5060 -i ens34 -m recent --set --name SIP
# Если за секунду поступило больше 20 пакетов, то пишем в лог и блокируем адрес.
-A INPUT -p udp --dport 5060 -i ens34 -m recent --update --seconds 1 --hitcount 20 --name SIP -j LOG --log-prefix "Iptables: SIP flood "
-A INPUT -p udp --dport 5060 -i ens34 -m recent --update --seconds 1 --hitcount 20 --name SIP -j REJECT

Правила нужно вставлять до общего разрешения RELATED,ESTABLISHED.

Далее отлавливаем событие с помощью fail2ban. Создаем новый джеил.
[sip_flood]
enabled = true
filter = sip_flood
port     = 5060,5061
action   = iptables-allports[name=SIP_FLOOD, protocol=all]
               sendmail[name=SIP_FLOOD, dest=admin@domain, sender=server@domain]
logpath  = /var/log/iptables.log
maxretry = 1
bantime  = 600 ; 10 min

В /etc/fail2ban/filter.d/sip_flood.conf.
[INCLUDES]
before = common.conf
[Definition]
failregex = ^(.*)Iptables: SIP flood(.*)SRC=<HOST>(.*)$
ignoreregex =

понедельник, 26 марта 2018 г.

Bash. Сравнения.

Сравнение файлов:

-d my_file Checks if its a folder.

-e my_file Checks if the file is available.

-f my_file Checks if its a file.

-r my_file Checks if it’s readable.

my_file –nt my_file2 Checks if my_file is newer than my_file2.

my_file –ot my_file2 Checks if my_file is older than my_file2.

-O my_file Checks if the owner of the file and the logged user match.

-G my_file Checks if the file and the logged user have the idetical group.

четверг, 22 марта 2018 г.

Настройка сервиса CallBack на LiveZilla 7.

Идея в том, чтобы заставить LiveZilla осуществлять исходящий вызов через Asterisk, при выборе клиентом функции "Обратный звонок".
Схема следующая: клиент на сайте заполняет форму "Обратный звонок", указывая свой телефон. LiveZilla создает запись в базе с признаком callback. В процедуру записи в базу вставляется строка, вызывающая PHP-скрипт на сервере Астериска с передачей параметров. PHP-скрипт создает call-файл, соединяющий оператора с клиентом.