Архив метки: linux

Автор:Dmitriy Altuhov

Zimbra SPAM FROM LOCAL (to admin email)

Приходящие на почтовый ящик администратора (admin) письма с темой SPAM FROM LOCAL означают, что Вы в Zimbra включили в список zimbraMtaMyNetworks Ваш почтовый релей на шлюзе. Читать далее

Автор:Dmitriy Altuhov

Elastix FreePBX restricted trunk access

К IP-АТС Elastix/FreePBX подключено несколько SIP-провайдеров с разными номерам и несколько внутренних SIP-телефонов.

Задача: ограничить или разделить доступ внутренних телефонов (Extensions) по соответствующим внешним линиям (Trunks).

Например, чтобы внутренние номера 101,102,1XX звонили через провайдера SIP1, а номера 201,202,2XX звонили через провайдера SIP2 Читать далее

Автор:Dmitriy Altuhov

Тест TPC-G1C команды gilev на терминальном сервере

На физическом сервере №1 работает Ubuntu 12.04, PostgreSQL 9.2.4-1.1C и платформа 1С:Предприятие 8.3.4

На физическом сервере №2 под управлением гипервизора виртуальных машин VMware работает виртуальная машина с терминальным сервером Windows 2008 R2.

Результаты теста TPC-G1C в терминальном сервере:

gilev2015

 

Автор:Dmitriy Altuhov

Почтовый сервер Zimbra и сервер обмена сообщениями ejabberd

На производственном предприятии с несколькими филиалами были введены в эксплуатацию:

  • Почтовый сервер (программный продукт для автоматизации совместной деятельности рабочих групп) Zimbra
    zimbraadmin zimbrauser
  • XMPP-сервер обмена мгновенными сообщениями ejabberd
    ejabberd

Оба сервера работают в виртуальной машине под управлением гипервизора VMware на сервере HP ProLiant ML310e Gen8 v2

Автор:Dmitriy Altuhov

Linux fixing bad blocks SMART

  1. Вычисляем block-size: lsblk -o NAME,PHY-SeC
  2. Проверяем на bad-блоки: badblocks -v -s -b <block-size> /dev/sda
  3. Вычисляем к какому разделу относится bad-блок: fdisk -lu /dev/sda
  4. Вычисляем file system block: b = (int)((L-S)*512/B)
    b = File System block number B = File system block size in bytes (almost always is 4096) L = LBA of bad sector S = Starting sector of partition as shown by fdisk -lu and (int) denotes the integer part.
    ((BadBLock — StartPartition) * 512) / 4096
  5. Вычисляем, какому файлу принадлежит bad-блок:
    debugfs
    debugfs 1.35 (28-Feb-2004)
    debugfs: open /dev/sdaX
    debugfs: icheck <file system block>
    Block Inode number
    <file system block> <block not found>
    debugfs: quit
  6. Пробуем прочитать данные из bad-блока: dd if=/dev/sdaX of=my.block skip=<file system block> bs=<block-size> count=1
    Если dd: ошибка чтения «/dev/sdaX»: Ошибка ввода/вывода = значит это наш bad-блок
  7. Затираем bad-блок:
    dd if=/dev/zero of=/dev/sdaX bs=<block-size> count=1 seek=<file system block>
    sync

http://timelordz.com/wiki/SMART_Rewriting_Bad_Sectors

https://www.smartmontools.org/browser/trunk/www/badblockhowto.xml

Автор:Dmitriy Altuhov

Elastix FreePBX Asterisk переадресация = нет звука

  1. Установлен Elastix в виртуальной машине (за NAT).
  2. Заведены внешние SIP-линии (trunk).
  3. Настроена переадресация входящих звонков на внешний номер (на мобильный)
  4. Звонок приходит на мобильный, но звука нет в обе стороны (вы не слышите и вас не слышат).

Правильным решением будет настройка NAT (проброс портов, SIP ALG, …) или выделение статического внешнего IP для Elastix/Asterisk (что бывает очень редко).

Другой вариант решения — добавить «пустой» (звуковой файл длиной в 1 секунду содержащий тишину) announcement в ring group.
Это заставит Asterisk снять трубку инициировать аудио-поток, тем самым обеспечив передачу голоса в обе стороны при переадресации.

 

Автор:Dmitriy Altuhov

Check HDD SMART ESXi host from linux guest script bash

Гипервизор (сервер виртуальных машин) VMware ESXi установлен на несерверном оборудовании с обычными жесткими дисками (без RAID в режиме AHCI).

Также имеется Linux-машина (Ubuntu server).

Требуется максимально просто мониторить состояние жестких дисков (SMART) на хосте VMware ESXi.
Для это нам потребуется добавить нижеприведённый скрипт (с исправлением нужных переменных) в планировщик cron.

На ESXi host должен быть включен SSH
С Linux-машины должен быть настроен беспарольный доступ по SSH на ESXi хост.
Об этом писал тут: http://it74.net/techblog/vyklyuchaem-vmware-esxi-host-iz-gostevoj-ubuntu/

#!/bin/bash

#admin email
adminemail=root

#set this to the count of disk in your ESXi host
devicescount=2

#set this to ssh ESXi source
#datasource="cat smtest"
datasource="ssh root@10.0.0.4 /usr/lib/vmware/vm-support/bin/smartinfo.sh"

#minimal and maximal HDD temps
hddtempmin=25
hddtempmax=35

#hostname
hostname=esxi1

#Magick begins
deviceindex=0

while read data; do

data_device="^Device:[[:space:]]+(.*)$"
if [[ $data =~ $data_device ]]; then
((deviceindex++))
device[$deviceindex]=${BASH_REMATCH[1]}
fi

data_health="^Health Status[[:space:]]+([[:alnum:]]+)[[:space:]]"
if [[ $data =~ $data_health ]]; then
health[$deviceindex]=${BASH_REMATCH[1]}
if [ "${health[$deviceindex]}" != 'OK' ]; then
message="$message Health status on drive ${device[$deviceindex]} is NOT OK \n"
fi
fi

data_realoc="^Reallocated Sector Count[[:space:]]+([[:digit:]]+)[[:space:]]"
if [[ $data =~ $data_realoc ]]; then
realoc[$deviceindex]=${BASH_REMATCH[1]}
if [[ "${realoc[$deviceindex]}" -lt "100" ]]; then
message="$message Reallocated Sector Count on drive ${device[$deviceindex]} = ${realoc[$deviceindex]} is less than 100 \n"
fi
fi
data_ponhours="^Power-on Hours[[:space:]]+([[:digit:]]+)[[:space:]]"
if [[ $data =~ $data_ponhours ]]; then
ponhours[$deviceindex]=${BASH_REMATCH[1]}
if [[ "${ponhours[$deviceindex]}" -lt "30" ]]; then
message="$message Power-on Hours on drive ${device[$deviceindex]} = ${ponhours[$deviceindex]} is less than 30 \n"
fi
fi

data_temper="^Drive Temperature[[:space:]]+([[:digit:]]+)[[:space:]]"
if [[ $data =~ $data_temper ]]; then
temper[$deviceindex]=${BASH_REMATCH[1]}
if [[ "${temper[$deviceindex]}" -lt "$hddtempmin" ]] || [[ "${temper[$deviceindex]}" -gt "$hddtempmax" ]]; then
message="$message TEMP on drive ${device[$deviceindex]} = ${temper[$deviceindex]} is OUT OF RANGE $hddtempmin and $hddtempmax \n"
fi
fi

done < <($datasource)

#Overall checks
if [ "$deviceindex" -ne $devicescount ]; then
message="$message MISSING HDD DRIVE! Devicescount = $devicescount and devices reported by smart = $deviceindex \n"
fi

#send mail to admin
if [ -n "$message" ]; then
#echo -e $message
echo -e $message | mail -s "ESXi host $hostname" $adminemail
#exit 1
#else
#exit 0
fi

Автор:Dmitriy Altuhov

Linux HDD smart monitoring best configuration smartd.conf

Ubuntu:
DEVICESCAN -a -o on -S on -H -f -t -l error -l selftest -C 197 -U 198 -W 4,34,38 -R 5 -I 190 -I 194 -n standby,7,q -s (S/../.././02|L/../../7/04) -m root -M exec /usr/share/smartmontools/smartd-runner

Other linux:
DEVICESCAN -a -o on -S on -H -f -t -l error -l selftest -C 197 -U 198 -W 4,34,38 -R 5 -I 190 -I 194 -n standby,7,q -s (S/../.././02|L/../../7/04) -m root@domain.com -M diminishing

http://www.smartmontools.org/browser/trunk/smartmontools/smartd.conf.5.in

Автор:Dmitriy Altuhov

Мини-роутер на OpenWRT. WAN, 3G, OpenVPN.

Задача: установить максимально компактный, надежный, не требующий обслуживания маршрутизатор на 2 канала (один — PPPoE, второй usb-3G/4G модем (Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard)) + OpenVPN до центрального офиса.

Варианты решения:

  1. MikroTik (RB951Ui-2HnD или RB951G-2HnD).
  2. Самостоятельная сборка коробочного мини-сервера на OpenWrt из SOHO Wi-Fi роутера с USB-портом + USB-хаб (с внешним питанием) + USB-флешка + USB-3g-модем.
  3. Отдельный сервер (системный блок) на Linux с несколькими сетевыми интерфейсами или VLAN
  4. Решения из другого ценового диапазона

Наш выбор — коробочный мини-сервер (роутер) на OpenWRT. Почему?

  1. Невысокая цена на Wi-Fi router
  2. Доступность товара (Wi-Fi router можно купить в любом компьютерном магазине)
  3. Легкость замены оборудования (перенос конфигов OpenWRT)
  4. Возможность адаптации OpenWRT под более сложные схемы работы сети (об этом в следующих постах)

Для решения задачи потребуются:

  1. 3G/4G-маршрутизатор c WAN-портом и USB-портом. Например: TP-LINK TL-MR3420
    TL-MR3420
  2. USB-хаб с внешним питанием для одновременного подключения USB-модема и USB-флешки к маршрутизатору. Например: D-Link DUB-H7
  3. USB-флешка на 4-8 ГБ для установки дополнительных пакетов.
  4. 3G/4G USB-модем
  5. OpenWRT

Собираем, подключаем оборудование, прошиваем OpenWRT на MR-3420, переносим overlay на USB-флешку (отформатированную в ext2), ставим пакеты для работы с 3G-модемом, OpenVPN и mwan3 для переключения каналов.

После настройки наш маршрутизатор/роутер будет автоматически переключать интернет-канал на резервный (3G/4G) и обратно + держать OpenVPN-сессию до офиса.

Автор:Dmitriy Altuhov

shellshock ssh bash OpenWRT DD-WRT

В Интернете поднимается очередная паника (и вполне обоснованная) = Shellshock

На самом деле особо паниковать не нужно.

  1. Для «взлома сервера» нужен доступ по SSH (успешная авторизация для получения bash).
    Shellshock is a vulnerability on bash, not on SSH. In order to exploit it, an attacker needs to cause the vulnerable system to run bash, and to control the value of an environment variable that will be passed to bash.In order to reach a bash process through SSH, the attacker needs to pass the authentication steps. (There can be attack vectors through other network services, but they are beyond the scope of this thread.) If the account is allowed to run arbitrary shell commands anyway, there is no attack. The vulnerability comes into play if the account is restricted to run specific commands: for example, an SFTP-only account, or a git-only account, etc.

    There are several ways to restrict an account to run a specific command with SSH: with the ForceCommand option in sshd_config, or with a command=. restriction in the authorized_keys file. If the user’s shell is bash, then the Shellshock vulnerability allows a user who would normally have access only to the restricted account to bypass the restriction and execute arbitrary commands.

  2. Наиболее актуален взлом серверов через HTTP/CGI
  3. Ещё тревожит dhclient-script
  4. Взломать домашние роутеры (OpenWRT/DD-WRT) не получится (пока), так как там тяжелый bash не используется (вместо него BusyBox/ash)
  5. Non-jailbroken iPhones/iPads and non-rooted Android devices are not vulnerable to Shellshock. В большинстве случаев iPhone/iPad и Android не подвержены уязвимости.

http://security.stackexchange.com/questions/68255/shellshock-exploit-on-linux-routers-modems
http://security.stackexchange.com/questions/68205/how-would-i-test-if-my-soho-router-is-vulnerable-to-shellshock
http://habrahabr.ru/company/mailru/blog/238475/
http://security.stackexchange.com/questions/68181/how-does-the-shellshock-exploit-work-over-openssh
http://unix.stackexchange.com/questions/157477/how-can-shellshock-be-exploited-over-ssh
http://en.wikipedia.org/wiki/Shellshock_(software_bug)
https://community.qualys.com/blogs/securitylabs/2014/09/24/bash-remote-code-execution-vulnerability-cve-2014-6271
http://www.symantec.com/connect/blogs/shellshock-all-you-need-know-about-bash-bug-vulnerability