пятница, 19 октября 2018 г.

Редкий случай relay на postfix

В один прекрасный момент заметил, что MTA на входящую почту  (только) попал в список RBL (sorbs). Проверять удобно на:

http://www.anti-abuse.org/multi-rbl-check-results/?host=IP-ADDRESS_MTA

 Данный сервер был правильно настроен на запрет relay, и работал много лет, проходил все тесты:

http://www.aupads.org/cgi-bin/test-relay.cgi?host_to_test=IP_ADDRESS_MTA

ещё:

https://mxtoolbox.com/SuperTool.aspx?action=smtp:IP_ADDRESS_MTA&run=toolpage#

И при этом у него не было роли отправлять почту, и он её не получал для отправки.

Просмотрел логи и заметил, что мой MTA буквально атакует bounce сообщениями определенный домен. Почистил очередь полезной командой (в письмах был домен жертва с именем ...babyv...):
grep -l -r "babyv" |  xargs rm
Затем в  master.cf внес изменения:
#bounce    unix  -       -       n       -       0       bounce
bounce    unix  -       -       n       -       0       discard
#defer     unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       discard
#trace     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       discard

таким образом проблема решилась.




пятница, 14 сентября 2018 г.

Расширение размера диска на Ubuntu

Так получилось, что нарезали мне 100GB виртуалку не пустую, а из древнего шаблона, в котором изначально размер диска был 27GB. Вывод команды df -h был следующий:

Filesystem                1K-blocks     Used Available Use% Mounted on
udev                        1003072        0   1003072   0% /dev
tmpfs                        204812    13604    191208   7% /run
/dev/mapper/US16--vg-root  28269296 19417032   7502520  73% /
tmpfs                       1024052        0   1024052   0% /dev/shm
tmpfs                          5120        0      5120   0% /run/lock
tmpfs                       1024052        0   1024052   0% /sys/fs/cgroup
/dev/sda1                    482922   111019    346969  25% /boot
tmpfs                        204812        0    204812   0% /run/user/0


И вывод lvdisplay:

  --- Logical volume ---
  LV Path                /dev/US16-vg/root
  LV Name                root
  VG Name                US16-vg
  LV UUID                af1M0G-A0zc-fcGN-JsyM-ETuc-DOTW-YhH771
  LV Write Access        read/write
  LV Creation host, time US16, 2016-08-02 10:06:50 +0300
  LV Status              available
  # open                 1
  LV Size                <27,52 GiB
  Current LE             7044
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

Можно расширить без перезагрузки виртуальной машины, для этого (после расширения диска в конфигурации хоста в гипервизоре) выпоним команду сканирования жесткого диска:

 echo 1 > /sys/block/sda/device/rescan


дальше выполняем команду:

parted
p
(затем команду p)

Вывод: parted  (p)

GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  512MB   511MB   primary   ext2         boot
 2      513MB   21,5GB  21,0GB  extended
 5      513MB   21,5GB  21,0GB  logical                lvm

Необходимо увеличить размер видимый ОС (21,5GB) до реального (107GB)
надо запомнить всё выделено зеленым и вставлять как параметры при выполнеии следующих команд:

Видно что существует extended партиция и в ней размещен логический диск
Сначала увеличим размер  extended партиции где 2 и 5 номера разделов, а 107G из отмеченных зеленым параметров, полученных ранее:

parted
(parted)  resizepart 2
End?  [21,5GB]? 107GB

(parted)  resizepart 5
End?  [21,5GB]? 107GB
(parted) quit

Затем выполняем (только для logical диска):

 pvresize  /dev/sda5

Вывод:  Physical volume "/dev/sda5" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

Запустим на этом этапе:

 df -h

Вывод: 
Filesystem                 Size  Used Avail Use% Mounted on
udev                       980M     0  980M   0% /dev
tmpfs                      201M   16M  185M   8% /run
/dev/mapper/US16--vg-root   27G   19G  7,1G  73% /
tmpfs                     1001M     0 1001M   0% /dev/shm
tmpfs                      5,0M     0  5,0M   0% /run/lock
tmpfs                     1001M     0 1001M   0% /sys/fs/cgroup
/dev/sda1                  472M  109M  339M  25% /boot
tmpfs                      201M     0  201M   0% /run/user/0

Запусти команду ("/dev/mapper/US16--vg-root"  берем из  отмеченного зеленым, ранее):

 lvextend -r -l +100%FREE /dev/mapper/US16--vg-root

Вывод команды: 
  Size of logical volume US16-vg/root changed from <27,52 GiB (7044 extents) to <107,17 GiB (27435 extents).
  Logical volume US16-vg/root successfully resized.
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/mapper/US16--vg-root is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 7
The filesystem on /dev/mapper/US16--vg-root is now 28093440 (4k) blocks long.

Запустим снова:

 df -h
Filesystem                 Size  Used Avail Use% Mounted on
udev                       980M     0  980M   0% /dev
tmpfs                      201M   16M  185M   8% /run
/dev/mapper/US16--vg-root  106G   19G   83G  19% /
tmpfs                     1001M     0 1001M   0% /dev/shm
tmpfs                      5,0M     0  5,0M   0% /run/lock
tmpfs                     1001M     0 1001M   0% /sys/fs/cgroup
/dev/sda1                  472M  109M  339M  25% /boot
tmpfs                      201M     0  201M   0% /run/user/0

ОС увидела дополнительное место.
Перед началом каких-либо действий с дисковым пространством обязательно надо сделать snapshot виртуальной машины.







Установка Zabbix на Ubuntu

Появилась необходимость развернуть новый Zabbix под отдельный сектор мониторинга.
Т.к. прежний zabbix ставил давно и уже не помню тонкостей, решил оформить пост об актуальном процессе инсталляции.
Решаемые задачи:
1) Обновление ОС.
2) Установка необходимых компонентов ПО (mysql, apache, snmp, traceroute, nmap и т.д.)
3) Конфигурирование  mysql
4) Конфигурирование  apache
5) Конфигурирование  zabbix (zabbix.conf, глобальная автоинвентаризация, )
6) Составление списка хостов для мониторинга (nmap)
7) Настройка профилей автообнаружения (autodiscovery)
8) Настройка и запуск автообнаружения.

1.
Обновляем ubuntu по предыдущему сообщению. Дополнительно пропишем в файле
/etc/hosts названия хоста на которой будем ставить zabbix (в моем случае hostname машины был "zabbix")

127.0.0.1 zabbix
"your lan ip" zabbix

2.
Ставим утилиты snmp:

apt-get install snmp snmp-mibs-downloader

В файле /etc/snmp/snmp.conf
комментируем секцию "mibs :" (добавляем перед ней "#"):

# mibs :

запускаем скачивание mibs

sudo download-mibs
-------------------
Так получилось, что дистрибутив zabbix оказался с включенным в него mysql, я решил ставить в расчете, что mysql будет полностью изначально подготовлен для связки с zabbix (но это не так). Поэтому можно ставить mysql как обычно, если в zabbix не включает mysql:

sudo apt install mysql-server mysql-client

ввести пароль пользователя mysql "root", если спросит при инсталляции, или поставить его позже.
----------------
Если apache не стоит, то ставим (у меня уже стоял)

sudo apt install apache2
-------------------
Качаем дистрибутив zabbix:

wget https://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+bionic_all.deb

dpkg -i zabbix-release_3.4-1+bionic_all.deb

apt update

apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent
----------------
ставим остальные утилиты:

apg-get install traceroute

(если ругается, то можно добавлять  ключ --fix-missing при любой инсталляции пакетов)

apt install inetutils-traceroute --fix-missing
apt install nmap

3.
Конфигурирование Mysql. Необходимо создать БД для zabbix и наделить пользователя zabbix необходимыми правами:

если при инсталляции mysql не был задан пароль для root, то установим его сначала:
зайдем  клиентом mysql:
mysql -u root -p
получим приглашение:
mysql>

use mysql;
update user set authentication_string=PASSWORD("root-pass") where User='root';

создадим БД для zabbix:

create database zabbix character set utf8 collate utf8_bin;

дадим права:

grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix-pass';
quit;

Установим структуру таблиц для БД zabbix (я расcчитывал, что они там уже будут, если я устанавливал zabbix в одном дистрибутиве с mysql, но это было не так):

cd /usr/share/doc/zabbix-server-mysql/
gzip -d create.sql.gz
mysql -u zabbix -p zabbix < create.sql

-----------------
4.
Конфигурирование Apache:
надо раcкоментарить и установить правильную date.timezone в файле /etc/zabbix/apache.conf:
<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Europe/Moscow
</IfModule>
<IfModule mod_php7.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Europe/Moscow
</IfModule>

5.
Конфигурирование zabbix. По умолчанию zabbix имеет минимальные настройки для своей работы, поэтому их надо сразу увеличивать, чтобы он быстро определял новые узлы и не ругался на отсутствие ресурсов. В файле /etc/zabbix/zabbix_server.conf увеличить до ~:

StartPollers=50
StartPreprocessors=64
StartPollersUnreachable=10
StartDiscoverers=64
CacheSize=128M
HistoryCacheSize=64M
HistoryIndexCacheSize=16M
TrendCacheSize=16M
ValueCacheSize=32M

Затем надо все компоненты перестартовать и зайти через веб интерфейс http://"your lan ip"/zabbix
логин: Admin (c заглавной буквы!)
пароль: zabbix
далее откроется "мастер" который запросит имя БД, пользователя БД и его пароль.
после чего zabbix начнет работать.

6.
Составим список хостов. (Хоть zabbix и имеет функционал поиска хостов по маске сети, но работает очень медленно, даже если интервал автообнаружения выставлен минимальный, 10-20 сек.). Опытным путем выяснилось, что он быстро находит хосты если они ему подаются в виде списка конкретных IP адресов. Поэтому этот список составим отдельной процедурой, используя NMAP (мне нужны были устройства Cisco):

nmap 192.168.0-255.1-254 -A -O -sU -p U:161 -oG - | grep -i cisco | awk '/161\/open/{print $2","}'

будет ответ типа:
192.168.1.1,
192.168.2.1,
и т.д. , запятые нужны чтобы их не вставлять самому, т.к. заббиксу они нужны.

7.
Настройка профилей автообнаружения
а) В глобальных настройках: Administaration>General>Other
указать: Default host inventory mode - Automatic
(это нужно, что бы обнаруженные хосты вносили свои инвентарные данные (название узла, версия софта, шасси и т.д.) в таблицу сразу, иначе в каждый хост
придется заходить и править эту опцию).


б) Создадим профили автообнаружения:
для начала создадим "host group", это нужно чтобы увидеть его на главном дашборде.
Сonfiguration> host groups> create host group
назовем его "Discovered hosts"
Затем создадим шаблон: configuration> host groups> create template
Назовем его: "1-auto-discover"
в нем укажем, что он принадлежит хост группе "Discovered hosts"
в  "linked templates" выбрать "Template Net Cisco IOS SNMPv2" (в нем все для Cisco, что мне нужно),
затем в "Macros" добавить {$SNMP_COMMUNITY} , если community  отличается от "public".

Теперь настроим правило автообнаружения:
Сonfiguration>Discovery>Create riscovery rule
назовем его "routers"
"Update interval" укажем 20
в поле "Check" добавим snmp v2 agent и укажем community
в OID  укажем "SNMPv2-MIB::sysDescr.0",
создадим и второй "Check" с OID  "SNMPv2-MIB::sysName.0"
в "IP range" вставляем наш список полученный NMAP, с запятыми (после последнего ip адреса ставить ничего не надо)
ОБЯЗАТЕЛЬНО убираем галочку "Enable".

Создадим будущее действие с обнаруженными хостами (поэтому и не включали ещё правило обнаружение):
Сonfiguration>Actions>Create action
Назовем его: "Auto discovery routers move to 1-auto-discover"
Type of calculation - AND
Conditions  -
A) discovery rule routers
B) Discovery status = Up
C) Service type = SNMPv2 agent

переходим  в секцию "Operations"
Operations:
Add to host groups: Discovered hosts
Link to templates: auto-1-cisco
Добавляем-сохраняем, проверяем что  галочка Еnable на данном Action "Auto discovery routers move to 1-auto-discover" установлена.
затем переходим снова на Сonfiguration>Discovery> Разрешаем наше правило обнаружения "routers"
переходим на дашборд и ожидаем появления обнаруженных хостов в группе "Discovered hosts"


четверг, 6 сентября 2018 г.

обновление bind в ubuntu

Обновление версий конкретного пакета в линуксах, и убунту в часности, приводит к необходимости полного апдейта всей операционной системы, т.к. зависимости нового пакета часто касаются и системных библиотек. В устаревшей системе, как правило репозитории тоже устарели и новых версий пакетов в них нет. В Убунту у каждого релиза есть кодовое имя, а сервера с дистрибутивами одни и те же. Т.о. первым делом надо обновить файл:
 /etc/apt/sources.list
(обновлять надо последовательно, от версии к версии, если Убунта не говорит прямо что можно перескакивать через несколько версий , проверить можно  здесь:
https://help.ubuntu.com/community/UpgradeNotes
т.е. сценарий перехода с 15.04 к 18.04 будет следующим: 15.04 -> 16.04 -> 18.04)

закоментарить старые записи и внести новые, взять их можно здесь (для 18.04):
https://gist.github.com/jackw1111/d31140946901fab417131ff4d9ae92e3
или по аналогии поиском.
Затем убедиться что репо подхватились командой:
apt-get update
затем:
apt-get upgrade -f bind9  --fix-missing
(опцию fix-missing добавляем , если вдруг не захочет ставиться)
затем:
do-release-upgrade (если понадобится)

проверить релиз можно командой:
lsb_release -r

проверить версию bind можно:
apt-cache policy bind9

Замечание, в избежании неожиданностей, при предложении заменить конфигурационные файлы, лучше отказаться, чтобы они не обнулились. Если с ними возникнут проблемы, при перезапуске bind9 надо заглянуть в логи на предмет возможных ошибок.

Затем надо перезагрузиться с консоли и удостовериться что всё загрузилось и работает штатно.




вторник, 13 марта 2018 г.

Обновление прошивки свистка

Как-то попался свисток MF823, решил проверить и собрать  рабочие выдержки с 4pda 
1) https://4pda.ru/forum/index.php?showtopic=484477&st=6260#entry57780759
- качаем прошивку от билайна MF823WEBDL_B04.exe http://homenet.beeline.ru/files/usb/MF823WEBDL_B04.rar&e=57780759
2)  включаем USB-РОУТЕР  без сим карты, запускаем программу  MF823WEBDL_B04.exe. Ждем когда в процессе обновления прошивки в каталоге  C:\Users\(ваш аватар)\AppData\Local\Temp\ (или  C:\Windows\Temp) появится папка OneKeyUpdate,  а в ней файл  Channel0.nv , копируем его себе в отдельный каталог.
3)  генерируем себе имеи от андроид или видовсфоне на ресурсе http://www.nokiaport.de/tacdatabase/index.php?s=imeitools&lng=
4)  на ресурсе https://docs.google.com/spreadsheets/d/1mOYZd8DB2nZq77gJdMHuZXsfkEWol6CoPQsknlpPDFw/edit?copiedFromTrash#gid=0
5)  вставляем этот имеи и получаем 9 чисел.
6)  через HEX-editor  открываем файл Channel0.nv и смотрим Ofsset 0xBF44 он же 48960,
и меняем 9 чисел на табличные (сверху вниз)



7)  ждем когда успешно пройдет прошивка. Вытаскиваем роутрер, и включаем заново. Удаляем каталог  OneKeyUpdate (от предыдущего прошивания).
8)  Запускаем прошивку заново, ждем снова  появления каталога OneKeyUpdate, а в нём файла Channel0.nv, заменяем нашим и ждем окончания прошивки.
9)  Вставить чужую симку, и включить в USB, зайти на 192.168.0.1. имеи д.б. новый.

Разлочка:
1)  https://4pda.ru/forum/index.php?showtopic=484477&st=0#entry26861883
2)  Скачать и установить драйвера https://4pda.ru/forum/dl/post/3741344/ZTEDrvSetup.zip
3)  Воткнуть роутер (без симки) , и перейти по ссылке:
http://192.168.0.1/goform/goform_process?goformId=MODE_SWITCH&switchCmd=FACTORY
в Диспетчере Устройств появится 3 устройства - ZTE Diagnostics Interface, ZTE Proprietary USB Modem и ZTE NMEA Device.  Если номер порта ZTE Diagnostics Interface получился >9, то измените его в свойствах ДУ на порт из диапазона 1...9. Запомнить этот номер. Для примера, пусть это будет COM5. Если номер пришлось изменить, то ОТКЛЮЧИТЬ модем и подключите снова.
4) Скачать и распоковать файл
https://4pda.ru/forum/dl/post/3741352/diag1F40_F0AA.zip
5) Запустить CMD.exe с правами Администратора. Выполнит команду:
 copy /b diag1F40_F0AA.bin COM5 (или другой порт, который был назначен в п.3)
заходим терминалкой на сом-порт ZTE NMEA Device (номер смотреть в ДУ)
6) Отключить cd-rom: AT+ZCDRUN=8
7) Вернуться в рабочий режим: AT+ZCDRUN=F

Фиксацция TTL:
1) По https://4pda.ru/forum/index.php?showtopic=484477&st=2680#entry42332369
Включаем роутер (он уже разлочен и выходит в интернет) , подключаемся телнетом к 192.168.0.1 , логин root пароль zte9x15 , переходим в корневой каталог: cd /, качаем файлик:
wget http://vve.su/files/misc/MF823/ttl64.tgz
распаковываем: tar zxvf ttl64.tgz
затем удаляем архив: rm ttl64.tgz
перезагружаемся: reboot

проверяем: iptables -t mangle -L

Включение TLS в postfix

Недавно понадобилось поставить на SUSE MTA Postfix и  включить TLS в нем.
После инсталляции МТА упорно не хотел принимать подключения на все интерфейсы кроме loopback, даже после прописи всех нужных строк в  /etc/postfix/main.cf 
 inet_interfaces = all
mynetworks_style = subnet
mynetworks = 10.0.2.0/24, 127.0.0.0/8
раньше этого было достаточно, но в этом случае по прежнему не принимал соединения.

пришлось погуглить и поправить еще одну строчку в файле /etc/postfix/master.cf
было - smtp inet n - n - - smtpd
стало - 0.0.0.0:smtp inet n - n - - smtpd

Затем пришла очередь включать TLS:

- сгенерировать приватный ключ и сертификат:
openssl req -new -x509 -nodes -out postfix.pem -keyout postfix.pem -days 3650 
 (оба запишутся в один файл postfix.pem, который можно скопировать в /etc/postfix/)
затем прописать в /etc/postfix/main.cf  следующие строки:

smtpd_tls_cert_file = /etc/postfix/postfix.pem
smtpd_tls_key_file = /etc/postfix/postfix.pem
smtpd_use_tls = yes
smtp_use_tls = yes
smtpd_tls_security_level = may
smtp_tls_security_level = may
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_auth_only = yes
tls_random_source = dev:/dev/urandom

раньше этого было достаточно, но сейчас только появилась, в списке доступных команд, STARTTLS, но криптосоединение неустанавливалось с 
Error: "TLS not available due to local problem"
- всё перерыл, менял версии, но помогло только включение опции в /etc/postfix/master.cf
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
(по умолчанию выключена, причем она выключена и в старых машинках, где TLS исправно работает) 

проверить TLS можно на след. ресурсе:
https://www.checktls.com/perl/live/TestReceiver.pl

ругнетёся на selfsigned сертификат, но рисковать настоящим, выставляя его на почтовый сервер я не решился.

Можно поднять немного безопасность в виде указания SPF записи в DNS для почтового домена, где указать другим MTA, что почту можно принимать только с mail exchanger, которые есть в MX записи для домена, типа:
     IN      TXT     v=spf1 mx  -all