Возникла задача мониторить Заббиксом доступность свитчей в сети. Вроде задача тривиальная, однако, пришлось немного потанцевать с бубном, пока нашлось решение. В итоге выкладываю шаблон, он умеет мониторить доступность железки (произвольной), задержку пинга до нее и процент потерь. Желательно установить fping.

Собственно, сам шаблон.

OpenVPN — это технология, позволяющая обезопасить использование интернета, создавая зашифрованный канал типа «сервер-клиент», и обеспечивающая защищённую передачу информации от сервера OpenVPN до клиента. Отлично подходит в случае использования публичных wifi точек доступа, где информация может быть перехвачена третьими лицами. Или в случае, когда ваш ip заблокирован на определённом сайте и нужно безопасно обойти это ограничение.

Помимо установки и настройки ОпенВПН на сервере, необходимо уметь настроить клиент для доступа с компьютера, где в качестве операционной системы будет использоваться Windows.

Установка необходимых компонентов

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

aptitude install openvpn

Создание сертификатов

ОпенВПН в обязательном порядке требует генерации сертификатов для сервера и клиентов. Это и логично, ведь соединение от клиента до сервера должно быть зашифровано.

Перейдите в папку openvpn:

cd /etc/openvpn

Генерировать ключи мы будем с помощью прилагаемых к пакету OpenVPN инструментов. Их временно нужно будет скопировать в папку настроек для удобства. Скопируем их в папку easy-rsa, предварительно создав её.

mkdir easy-rsa

И копируем инструменты.

cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

Переходим в папку easy-rsa и открываем для редактирования файл vars.

Первым делом находим строку export KEY_SIZE=1024 и меняем её на export KEY_SIZE=2048. Таким образом, будут сгенерированы сертификаты длиной 2048 бит, что надёжнее, чем 1024 бита.

Далее необходимо изменить следующие параметры:

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_EMAIL=mail@host.domain
export KEY_CN=changeme

KEY_COUNTRY — укажите код страны (RU, UA и т.д.);
KEY_PROVINCE — данный пункт не актуален, если вы не проживаете в США. 🙂 Можно заменить на XX;
KEY_CITY — ваш город, где вы проживаете;
KEY_EMAIL — адрес вашей электропочты в обоих пунктах;
KEY_CN — здесь нужно указать ваше доменное имя. Например, server.example.com

Все переменные заполняются латиницей.

Сохраните файл и запустите его выполнение:

source ./vars

Затем запустите удаление старых сертификатов:

./clean-all

Создайте сертификат:

./build-ca

Затем сертификат и ключ сервера. При его генерации можно будет задать пароль.

./build-key-server server

После чего создайте сертификат и ключ для клиента:

./build-key client

Обратите внимание: для каждого клиента следует генерировать собственные сертификат и ключ.

Далее нужно создать ключ Диффи-Хеллмана для возможности использования Forward Secrecy:

./build-dh

И ключ для tls-аутентификации:

openvpn --genkey --secret /etc/openvpn/ta.key

Теперь необходимо скопировать серверные ключи в папку настроек OpenVPN:

cp keys/ca.crt keys/server.crt keys/server.key keys/dh2048.pem /etc/openvpn/

Обязательно скопируйте себе на компьютер, например, на рабочий стол, из папки keys ключи, необходимые для подключения клиента: client.crt, client.key, ca.crt, ta.key.

На этом процесс подготовки сертификатов закончен.

Настройка сервера

В каталоге /usr/share/doc/openvpn/ располагается файл-пример для настройки сервера Openvpn. Скопируйте его в каталог /etc/openvpn/ и разархивируйте:

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/;gunzip server.conf.gz

Теперь рассмотрим необходимые для работы openvpn параметры.

port 20100

Порт, на котором Openvpn будет принимать соединения. По-умолчанию, 1194. Рекомендую изменить его в целях сокрытия. Можно даже замаскировать опенвпн под Web-сервер, указав порт 80.

ca ca.crt
cert server.crt
key server.key

Здесь указываем пути к сгенерированным сертификатам-ключам для openvpn.

dh dh2048.pem

Путь к ключу Диффи-Хеллмана.

Все эти ключи ранее мы сгенерировали и скопировали в папку /etc/openvpn/, поэтому менять эти параметры нет смысла. Если, конечно, вы не переместили эти файлы куда-то ещё. 🙂

Находим и раскомментируем строку:

push "redirect-gateway def1 bypass-dhcp"

Она нужна для возможности выхода в интернет через сервер ОпенВПН. Если её не раскомментировать, то будут доступны лишь компьютеры внутри сети.

Также нужно указать dns-серверы для подключающихся клиентов.

push "dhcp-option DNS 213.183.57.55"
push "dhcp-option DNS 87.98.175.85"

В зависимости от местоположения сервера, можно подобрать другие dns-серверы, например, на проекте OpenNIC.

Далее находим и раскомментируем параметр tls-auth.

tls-auth ta.key 0

Этот файл должен храниться в строгом секрете. Права доступа следует использовать 0600.

Внимание! В настройках клиента последняя цифра этого параметра должна быть заменена на 1 — tls-auth ta.key 1.

Чуть ниже в конфигурационном файле следует перечисление доступных шифров. Раскомментируйте шифр AES-128-CBC.

cipher AES-128-CBC   # AES

При необходимости, его можно заменить на AES-256-CBC. В конфигурационном файле клиента шифр должен быть идентичен серверному шифру.

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

log /var/log/openvpn.log

Все остальные параметры конфигурационного файла /etc/openvpn/server.conf оставьте со значениями по-умолчанию. На этом настройка сервера OpenVPN закончена. Можно перезапустить сервис командой service openvpn restart и проверить лог-файл на наличие ошибок.

OpenVPN клиент на Windows

Приступаем к настройке Openvpn клиента на Windows. Здесь всё просто: скачиваем клиент с официального сайта, устанавливаем, создаём конфигурационный файл и запускаем.

Стоит отметить, что запускать опенвпн на Windows следует с правами администратора, если активен контроль учётных записей.

Если вы не меняли путь установки, то примеры конфигурационных файлов на вашем ПК располагаются в каталоге C:Program FilesOpenVPNsample-config. Скопируйте отсюда файл client.ovpn и поместите его в каталог C:Program FilesOpenVPNconfig.

Помните о созданных для клиента сертификатах? Их тоже следует скачать с сервера и скопировать в этот каталог.

Откройте конфигурационный файл client.ovpn и найдите параметр remote my-server-1 1194. Вместо my-server укажите ip или доменное имя вашего сервера. Затем порт, который мы изменили ранее. В итоге строка может выглядеть так:

remote 192.168.0.1 20100

Далее нужно указать пути к сертификатам, которые вы сгенерировали на сервере. Раз вы поместили их в каталог с конфигурационным файлом, то пути можно оставить, как есть.

ca ca.crt
cert client.crt
key client.key

Также следует раскомментировать параметр, который указывает путь к tls-ключу.

tls-auth ta.key 1

Ранее уже говорилось о том, что последняя цифра на сервере должна быть 0, на клиенте — 1.

И последний параметр — это шифр, который вы установили на сервере.

cipher AES-128-CBC

Это всё, что требуется для настройки клиента. Попробуйте запустить клиент OpenVPN и подключиться к вашему серверу. Необходимая информация о подключении будет отображена в окошке openvpn gui.

Перенаправление трафика через OpenVPN

Чтобы иметь возможность выхода в интернет через сервер опенвпн, необходимо кое-что сделать для этого.

1. Настроить sysctl

В консоли запустите команду:

sysctl net.ipv4.ip_forward

Если вывод команды будет равным net.ipv4.ip_forward = 1, то изменять что-либо не требуется. Если же значение переменной будет равно 0, то в файл /etc/sysctl.conf нужно добавить строку:

net.ipv4.ip_forward = 1

И перезагрузить правила командой:

sysctl -p

2. Настроить iptables

Поочерёдно выполните в консоли следующие команды:

iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Таким образом, мы разрешим пропускать трафик через сервер OpenVPN для подсети 10.8.0.0 в рамках уже установленных соединений.

Если клиенту openvpn нужно присвоить определённый внешний ip адрес сервера, то вместо последней команды из списка предыдущих для iptables, необходимо выполнить эту:

-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 127.0.0.1

Где после параметра —to-source следует указать внешний ip сервера.

Иногда нужно склеить несколько видео-файлов (с одинаковым разрешением и битрейтом) в один. Например несколько серий любимого сериала или фильм на двух CD. Для avi и mpeg в Linux процедура описана далее.

Логично предположить, что нам нужно объеденить файлы:

root@localhost:~$ cat fille01.avi file02.avi file03.avi > file00.avi

Если попытаться открыть итоговый файл медиаплеером — ничего хорошего не получится. Дело в том, что мы просто склеили файлы, теперь нужно перестроить индекс, в этом нам поможет mencoder:

root@localhost:~$ mencoder -forceidx -oac copy -ovc copy file00.avi -o file.avi

mencoder video1.avi video2.avi -oac copy -ovc copy -o new_input.avi

mencoder *.avi -oac copy -ovc copy -o new_input.avi

Полученный на выходе файл готов к употреблению.

Step 1 » Before installing eclipse you need to install java , you can either install JRE or JDK .
krizna@leela:~$ sudo apt-get install openjdk-7-jre
[or]
If you are going to use eclipse for java development, then you can install JDK
krizna@leela:~$ sudo apt-get install openjdk-7-jdk
Step 2 » Download the latest eclipse package from here http://www.eclipse.org/downloads/?osType=linux
Step 3 » move the package to the /opt directory
krizna@leela:~$ sudo mveclipse-jee-luna-SR1-linux-gtk-x86_64.tar.gz
Step 4 » Unzip the package by typing the below command
krizna@leela:~$ cd /opt
krizna@leela /opt:~$ sudo tar -xvfeclipse-jee-luna-SR1-linux-gtk-x86_64.tar.gz
Step 5 » Create a new desktop file eclipse.desktop in /usr/share/applications/ and add the below lines.

Step 6 » Now goto /usr/share/applications and find eclipse.desktop file for launching eclipse , you can drag this file to the launcher.

Step 7

Для того что бы русифицировать программу достаточно скачать файлы русификации, которые основаны на технологии babel. Идем на сайт http://www.eclipse.org/babel/downloads.php, выбираем нужную версию программы Eclipse, у меня Galileo (http://download.eclipse.org/technology/babel/babel_language_packs/R0.8.1/galileo.php#ru).
Там куча файлов, которые могут отпугнуть. Но на самом деле не все так страшно, просто для моделей используются отдельные файлы, а основная руссификация называется: BabelLanguagePack-eclipse-ru_4.4.0.vXXXXXX.zip (где XXXX — версия перевода, которая может меняться), кликаем по ссылки и выбираем зеркало откуда скачать.
Скачав архив, раскройте его и папки которые лежат там (например, 2 папки features и plugins), кидаем в каталог с установленным эклипсом. В Ubuntu, если вы ставили из репозитория, можно кинуть в /home/<user_name>/.eclipse/org.eclipse.platform_4.4.0_155965261/ (Внимание, название папки org.eclipse.platform_4.4.0._155965261 у вас может отличаться!!!).

IPerf — утилита командной строки, предназначенная для тестирования пропускной способности канала связи. Она включает в себя генератор TCP и UDP трафика и используется для определения скорости прохождения трафика между двумя узлами в сети. IPerf (для Windows) представляет из себя небольшой исполняемый файл размером около 100кб, в котором содержатся клиентская и серверная части. Он не требует установки, достаточно просто скопировать ее на оба компьютера и запустить сначала серверную часть программы, а затем клиентскую.

 

В самом простом варианте запуск IPerf происходит следующим образом:

iperf -s — на сервере.

iperf5

 

iperf -c 192.168.1.56 — на клиенте, где 192.168.1.56 — IP-адрес сервера.

iperf4

 

По умолчанию используется TCP порт 5001, тестирование проходит в течение 10 секунд. Этого вполне достаточно для быстрой оценки скорости соединения, однако возможности IPerf этим не ограничиваются. Например:

iperf -s -i10 -p80 — сервер прослушивает 80 порт и выдает результат с интервалом в 10 секунд.

iperf2

 

iperf -c 192.168.1.60 -p80 -t120 — клиент соединяется с 80 портом сервера, тестирование в течение 120 секунд.

iperf1

 

Приведу полный список опций программы:

  • -f -  в каком формате показывать скорость (Kbits, Mbits, KBytes, Mbytes);
  • -i -  с какими интервалами отображать промежуточные результаты;
  • -l — размер буфера (по умолчанию 8 KB);
  • -m —  показывать максимальный размер TCP сегмента (MSS);
  • -p — указать порт, по которому будет происходить соединение (по умолчанию 5001);
  • -u — использовать UDP вместо TCP;
  • -w — размер окна TCP;
  • -B — указание для сервера, на каком интерфейсе принимать трафик;
  • -C — режим совместимости со старыми версиями;
  • -M —  позволяет изменить максимальный размер TCP сегмента (MSS);
  • -N — меняет некоторые опции TCP (отключение алгоритма Нагла);
  • -V —  использовать IPV6;
  • -h — вывод справки.

Опции для сервера:

  • -s —  запустить как сервер и отображать всю информацию на экран;
  • -D — запустить как сервис (в фоновом режиме) и не отображать информацию.

Опции клиента:

  • -b — используемая полоса для UDP (по умолчанию 1Mbit/sec);
  • -c — запустить как клиент и соединиться с сервером;
  • -d — тестировать линию в обе стороны;
  • -n — установить размер передаваемого трафика (нельзя использовать c ключом -t);
  • -r — не делать двунаправленное тестирование;
  • -t - указать время тестирования (по умолчанию 10 сек);
  • -F — не генерировать трафик, а передавать готовый файл;
  • -I — ввод данных, передаваемых из STDIN (стандартный поток ввода);
  • -L — порт, на котором клиент будет принимать двунаправленный трафик;
  • -P —  запуск нескольких потоков параллельно;
  • -T - время жизни пакета для групповой рассылки (по умолчанию 1).

Программа IPerf очень проста и удобна в использовании, однако для эстетов тех, кто не любит работать в командной строке, есть графический интерфейс для IPerf, написанный на JavaJPerf. Установки он также не требует, но для его работы необходима установленная платформа Java.

iperf3

 

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

Задача: нужно в максимально короткий срок узнать, зашел ли кто под пользователем root на сервер, от какого пользователя была запущена команда su и какой IP посмел такое сделать.

Проверка каждого пользователя

По сути, все просто, если у вас работает Postfix или любой другой почтовик. Все, что вам нужно, это добавить в конец файла

/root/.bash_profile

следующую строку:

echo 'ALERT - Root Shell Access on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d"(" -f2 | cut -d")" -f1`" it@adminunix.ru
для FreeBSD
echo 'ALERT - Root Shell Access on:' `date` `who` | mail -s "Alert: Root Access from `hostname -f` `who | cut  -f2 | cut  -f1`" it@adminunix.ru

Советую заранее протестировать эту строчку, просто выполнив её. На почту должно прийти сообщение примерно такого вида:

72.22.22.1462
ALERT - Root Shell Access on: Sun Dec 11 00:58:17 MSK 2011 user pts/0 2011-12-10 21:08 (72.22.22.1462) user pts/2 2011-12-10 21:17 (72.22.22.1462)

Эту же строчку можно добавить всем пользователям, которые имеют доступ на сервер по SSH

Проверка для всех пользователей

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

echo 'ALERT - Root Shell Access on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d"(" -f2 | cut -d")" -f1`" it@adminunix.ru
для FreeBSD
echo 'ALERT - Root Shell Access on:' `date` `who` | mail -s "Alert: Root Access from `hostname -f` `who | cut  -f2 | cut  -f1`" it@adminunix.ru

мы добавляем в конец файла /etc/profile. Теперь каждый раз, как какой-либо пользователь пройдет аутентификацию на сервере, вы сможете получить об этом сообщение.