вторник, 4 апреля 2017 г.

Настройка OpenVPN в Ubuntu

Настоящая частная виртуальная сеть или Virtual Private Network (VPN)  - это зашифрованное соединенный туннель между двумя сетями, который соединяет две доверенные точки. Это не веб-протокол HTTPS, который считает доверенными всех клиентов. К VPN могут подключиться только те клиенты, которые имеют специальные ключи доступа.
Понятие VPN в наши дни стало очень растянутым, после появления частных виртуальных сетей, которые доверяют всем и распространения HTTPS. Многие из сетей VPN представляют из себя коммерческие решения с минимальным количеством настроек для обеспечения удаленного доступа сотрудников. Но не все доверяют этим решениям. Частная виртуальная сеть соединяет две сети в одну, например, сеть офиса и домашнюю сеть работника. Сервер VPN необходим для того чтобы сервер и клиент могли пройти аутентификацию друг с другом.
Настройка аутентификации сервера и клиента требует много работы, и поэтому коммерческие решения с минимумом настроек проигрывают в этом плане. Но на самом деле не так уж трудно установить сервер OpenVPN. Вам понадобится два узла в разных сетях чтобы организовать тестовое окружение, например, можно использовать несколько виртуальных машин или реальные серверы. Как вы уже поняли, в этой статье будет рассмотрена настройка OpenVPN в Ubuntu для создания полноценной частной виртуальной сети.

Установка OpenVPN

На обоих машинах должен быть установлен OpenVPN, это довольно популярная программа, поэтому вы можете установить ее из официальных репозиториев. Также нам понадобится Easy-RSA для работы с секретными ключами. Для установки программ в Ubuntu используйте такую команду:
$ sudo apt install openvpn easy-rsa
Оба пакеты должны быть установлены как на сервере, так и на клиенте. Они понадобятся для настройки программы. Первый этап статьи установка и настройка openvpn завершен.

Настройка центра сертификации

Первое что нужно сделать, это создать правильную инфраструктуру для открытых ключей на сервере. Сервером мы считаем ту машину, к которой будут подключаться пользователи. Собственный центр сертификации дает несколько преимуществ, у вас будет собственный орган сертификации, который упростит распространение ключей и управление ими. Например, вы можете отозвать сертификаты клиента на сервере. Также теперь не нужно хранить все клиентские сертификаты, центру сертификации будет достаточно знать, что сертификат подписан CA. Кроме сложной системы ключей, вы можете использовать статические ключи, если нужно предоставить доступ только нескольким пользователям.
Обратите внимание, что все секретные ключи должны находится в надежном месте. В OpenVPN открытый ключ называется сертификатом и имеет расширение .crt, а закрытый ключ так и называется ключом, его расширение - .key.
Сначала создайте папку для хранения сертификатов Easy-RSA. Фактически, конфигурация OpenVPN выполняется вручную, так что папку можно разместить где угодно:
$ sudo mkdir /etc/openvpn/easy-rsa
Затем скопируем в эту папку все необходимые скрипты easy-rsa:
$ sudo cp -R /usr/share/easy-rsa /etc/openvpn/
Далее нам нужно создать центр сертификации в этой папке. Для этого перейдите в нее и выполните такие команды:
$ cd /etc/openvpn/easy-rsa/
$ sudo -i
# source ./vars
# ./clear-all
# ./build-ca

Первой командной мы переключаемся в консоль от имени суперпользователя, второй загружаем переменные окружения из файла ./vars. Команда ./clear-all создает папку keys если ее нет и очищает ее содержимое. И последняя команда инициализирует наш центр сертификации. Теперь в папке .keys появились все необходимые ключи:

Настройка сертификатов клиента


Дальше нужно повторить процедуру копирования скриптов управления RSA, как мы это делали на сервере:
$ sudo cp -R /usr/share/easy-rsa /etc/openvpn/

Теперь нам нужно скопировать сертификат, файл с расширением .crt в папку /etc/openvpn на всех клиентах. Например, скачаем этот файл для нашего клиента с помощью scp:
$ sudo scp пользователь@хост:/etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/easy-rsa/keys
Только теперь можно создать свой секретный ключ на основе сертификата CA:
$ cd /etc/openvpn/easy-rsa/
$ sudo -i
# source ./vars
# build-req Sergiy
Обратите внимание, что ca.crt должен лежать в папке с ключами, иначе ничего не сработает. Теперь утилита создаст ключ, на основе которого, вы сможете подключиться к OpenVPN серверу, но вам еще осталось подписать его на сервере. Отправьте полученный .csr файл на сервер с помощью того же самого scp:
$ scp /etc/openvpn/easy-rsa/keys/Sergiy.csr пользователь@хост:~/
Затем уже на сервере в папке /etc/openvpn/easy-rsa нужно выполнить команду подписи сертификата:
# ./sign-req ~/Sergiy
Подпись сертификата нужно подтвердить. Затем программа сообщит что он был подписан и добавлен в базу данных. В папке с сертификатом csr появится файл .crt, который нужно вернуть назад на клиентскую машину:
$ sudo scp пльзователь@хост:/home/Sergiy.crt /etc/openvpn/easy-rsa/keys
Только после этого сервер и клиент имеют все необходимые ключи для подключения и установки связи. Осталось еще несколько настроек. Если вы планируете использовать шифрование TLS, то необходимо создать на сервере набор данных Диффи-Хафмана, для этого используйте команду:
$ ./build-dh
Дальше будет рассмотрена настройка OpenVPN для сервера и клиента, осталось совсем немного до получения рабочей конфигурации.

Настройка OpenVPN

Теперь настройка сервера OpenVPN. По умолчанию, в папке конфигурационных файлов OpenVPN ничего нет. Их нужно создать самостоятельно в зависимости от того, что планируется настраивать, сервер или клиент. Нужный файл конфигурации OpenVPN можно найти по адресу /usr/share/doc/openvpn/examples/sample-config-files/. Сначала создадим конфигурационный файл для сервера:
$ zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
Здесь вам нужно настроить несколько параметров:
port и proto - порт и протокол, по которым будет работать программа;
port 1194
proto udp
Все созданные ключи нужно прописать в конфигурационном файле. Наши ключи хранятся по адресу /etc/openvpn/easy-rsa/keys:
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/ca.crt
key /etc/openvpn/easy-rsa/keys/ca.key
dh /etc/openvpn/easy-rsa/keys/dh.pem
Настраиваем диапазон адресов для виртуальной сети, наш сервер будет доступен по первому из них - 10.8.0.1:
server 10.8.0.0 255.255.255.0
После завершения настройки сохраните изменения в файле, вы можете либо вставить всю эту конфигурацию себе или отредактировать файл с примером. Готовые рабочие настройки сервера:
port 1194
proto udp
comp-lzo
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/ca.crt
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
Настройка сервера OpenVPN завершена. Дальше необходимо запустить OpenVPN сервер. Это можно сделать прямо из командной строки, просто укажите адрес конфигурационного файла:
$ openvpn /etc/openvpn/server.conf
Дальше нам нужно настроить компьютер клиента. Вы можете аналогично скопировать конфигурационный файл из директории с примерами, только на этот раз его не нужно распаковывать:
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf  /etc/openvpn/client.conf
Вы можете создать несколько конфигурационных файлов клиента для подключения к разным серверам. Откройте конфигурационный файл и измените в нем такие параметры:
remote - это ваш адрес сервера OpenVPN, адрес и порт должны совпадать с настроенными на сервере, например:
remote 194.67.215.125 1194

ca - ключ, который вы получили от центра сертификации, мы расположили его в папке /etc/openvpn/.
cert и key - это открытый и секретный ключи клиента, с помощью них вы и будете подключаться к серверу. Как вы помните, мы сохранили их в папке /etc/openvpn/easy-rsa/keys/.
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/Sergiy.crt
key /etc/openvpn/easy-rsa/keys/Sergiy.key
Остальные настройки можно оставить как есть. Вот файл настройки целиком, который вы можете скопировать:
client
dev tun
proto udp
remote 194.67.215.125 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/Sergiy.crt
key /etc/openvpn/easy-rsa/keys/Sergiy.key
tls-auth ta.key 1
comp-lzo
verb 3
Сохраните настройки, теперь клиент готов к подключению. Обратите внимание, что конфигурационные файлы должны максимально совпадать, отсутствие определенных опций в одном из файлов может привести к ошибкам. Это не значит, что файлы будут идентичны, но основные параметры openvpn должны быть одинаковыми. Вам осталось запустить OpenVPN на этой машине используя этот конфигурационный файл:
$ openvpn /etc/openvpn/client.conf
Готово, теперь все работает, если вы выполните ifconfig, то увидите что был добавлен интерфейс tun0:
$ ifconfig

Также вы можете попробовать выполнить ping адреса 10.8.0.1, именно этот адрес мы настроили для нашего сервера OpenVPN, пакеты ping будут нормально отправляться. Если пакеты не идут, или еще что-то не работает, обратите внимание на вывод обоих программ, возможно, возникли какие-либо ошибки или предупреждения, также убедитесь, что брандмауэр сервера разрешает доступ извне по udp для порта 1194. Еще можно запустить сервер или клиент, настроив в конфиге уровень подробности на максимум verb 9. Очень часто это помогает понять почему что-то не работает.

Выводы

В этой статье мы рассмотрели как выполняется установка и настройка OpenVPN Ubuntu, а также как настроить openvpn для работы с аутентификацией по ключу. Организация частных виртуальных сетей может быть очень полезной не только в организациях, но и скажем для обмена данными между двумя вашими компьютерами или для повышения безопасности в сети.

суббота, 18 марта 2017 г.

Как пользоваться nslookup

 Иногда может возникнуть необходимость проверить работоспособность DNS, посмотреть как быстро работает сервер, увидеть IP адрес и скорость его получения для определенного домена. Для этого используется утилита nslookup. С помощью нее вы можете не только получить IP адрес по домену, но и выполнить обратное преобразование, а также проверить установлены все необходимые записи DNS.
В этой статье мы рассмотрим как пользоваться nslookup, что делает эта утилита, а также ее синтаксис и опции.

Как работает DNS?

Служба DNS позволяет преобразовывать сложные для запоминания ip адреса в простые и легкие доменные имена, которые намного проще запомнить. Если не вдаваться в подробности, то существует сеть DNS серверов, на которых хранится вся необходимая информация об IP адресах  и соответствующих им доменах. Время от времени они обмениваются между собой информацией, чтобы база данных была полной и актуальной.
Когда компьютеру нужно обратиться к какому-либо сайту по домену, он запрашивает его IP адрес у DNS сервера, а затем сохраняет его в локальном кэше. Но DNS запросы могут отсылаться не только автоматически, их может формировать и отправлять утилита nslookup в Linux или Windows.

 Команда nslookup

Перед тем как мы перейдем дальше, к практике и примерам, давайте рассмотрим синтаксис и опции утилиты. Синтаксис достаточно прост:
$ sudo nslookup опции домен сервер
Домен - это то доменное имя, для которого необходимо посмотреть информацию, а сервер - необязательный параметр, который указывает, что нужно использовать другой dns сервер. Основные опции nslookup:
  • -type - тип информации, которую хотим получить, возможные типы: txt, soa, ptr, ns, mx, mr, minfo, mg, mb, hinfo, gid, cname, a, any;
  • -port - другой порт DNS сервера;
  • -recurse - использоваться другие DNS серверы, если на этом нет ответа;
  • -retry - количество попыток получить нужную информацию;
  • -timeout - время между попытками запросов к серверу;
  • -fail - пробовать другой сервер имен, если этот вернул ошибку.
Самое интересное, что команду можно выполнять не только в обычном, но и в интерактивном режиме, если запустить ее без параметров. А теперь перейдем ближе к самим примерам как работает команда nslookup linux.

Как пользоваться nslookup?

Сначала посмотрим ip адрес для losst.ru. Для этого не нужно передавать никаких дополнительных параметров, только само доменное имя:
$ nslookup losst.ru


В выводе утилиты мы можем видеть ip адрес 192.168.137.1, это не адрес сервера, а наш, системный DNS сервер. В следующей строке выводится тот же ip адрес и порт, это адрес DNS сервера вместе с портом. По умолчанию порт - 53. И только после этого находится информация про запрашиваемый сайт. Наш ip адрес 194.67.215.125, это означает, что все пакеты, которые вы будете отправлять на losst.ru будут приходить на этот адрес.
Иногда вы можете получить в ответе утилиты сообщение "Non-authoritative answer". Ответ считается авторитетным, только если наш DNS сервер имеет полную информацию о зоне, для рассматриваемой области. Чаще всего, у нашего сервера будет не вся информация, а кэш последнего ответа от авторитетного сервера. Такая информация считается не авторитетной, хотя она была получена из авторитетного источника, но сам DNS сервер таковым не считается.
Также вы можете выполнить обратное преобразование IP адреса в домен. Для этого передайте утилите IP адрес:
$ nslookup 194.67.215.125
Первоисточник информации о домене, это его ns сервера. Вы можете их получить, использовав команду с опцией type=ns:
$ nslookup -type-ns losst.ru
Команда выведет список используемых серверов имен, например, у нас это ns1.nameself.com. Обычно это от двух до четырех серверов. Если есть авторитетный источник для получения информации, то он указывается в нижней части вывода. Например, если мы запросим информацию у сервера имен ns1.nameself.com, то это уже будет авторитетный ответ:
$ nslookup losst.ru ns1.nameself.com
Еще вы можете получить MX запись для домена, для этого нужно установить тип запроса в mx:
$ nslookup -type=mx linux.com
Здесь будут отображены все настроенные почтовые серверы, у каждого сервера есть свой приоритет, например, 10, 15 или 5. Чем меньше число, тем выше приоритет адреса.
SOA или Start Of Authority предоставляет техническую информацию о домене, для получения этого поля используйте тип запроса soa:
$ nslookup -type=soa losst.ru
Здесь будет выведена такая информация:
  • origin - происхождение полученной информации;
  • mail addr - адрес электронной почты администратора домена;
  • serial - время с момента последнего обнволения домена в формате timestamp;
  • refresh - количество секунд, с момента последнего обновления, когда его нужно повторить;
  • retry - количество секунд, через которое нужно повторить попытку подключения, если DNS сервер недоступен;
  • expire - количество секунд, по истечении которых полученная от первичного DNS информация будет считаться устаревшей;
  • minimum - минимальное количество секунд до следующего обновления.
Также возможно использование nslookup для просмотра всех доступных записей DNS:
$ nslookup -type=any losst.ru
Для просмотра более подробной информации про выполнение запроса вы можете использовать опцию -debug:
$ nslookup -type=any -debug linux.com
Здесь отображается сообщение, отправленное на сервер и полученный от него ответ. Если ip адресов несколько, то система может отобразить ttl для каждого из них. Некоторые крупные сайты размещены на нескольких серверах, это сделано для противостояния DDoS атакам.
Команда nslookup linux может использоваться и в интерактивном режиме, для этого нужно выполнить ее без параметров:
$ nslookup
Дальше просто наберите имя домена, чтобы узнать его IP:
losst.ru
С помощью команды set вы можете задавать различные параметры, например, порт, или тип запроса:
set port=53
set type=mx


Чтобы завершить работу с утилитой, используйте команду exit.

воскресенье, 19 февраля 2017 г.

Оптимизация Ubuntu Linux с помощью утилиты Stacer

Оптимизация Ubuntu Linux с помощью утилиты Stacerиспользуем утилиту Stacer в Linux


Что может утилита Stacer:

  • Отображает информацию о загрузки вашего процессора, оперативной памяти, занятости жесткого диска;
  • Отображает информацию о системе;
  • Отображает данные о скорости сетевого соединения (загрузки и выгрузки);
  • Позволяет очистить кеш в системе удалив мусор (Apt Cache, Crash Reports, System Logs и App Cache);
  • Позволяет легко управлять автоматически запускаемыми приложениями;
  • Позволяет легко управлять службами в системе, которые можно в одно касание как остановить так и снова запустить;
  • Позволяет легко управлять приложениями установленными в системе, удобный поиск и легкое удаление.
После установки приложения, ищем его в меню ubuntu - Стандартные - Stacer либо используя поиск в Dash. При первом запуске вы увидите примерно следующее:
информация о системе в Stacer Очистка мусора в Stacer Управление автозагрузкой в Stacer Управление службами в Stacer
Удаление приложений в Stacer Удаление приложений с автозагрузки в Stacer
как видим все довольно просто и легко, как очистить кеш приложений, логов, ошибок и прочий мусор, удалить неиспользуемые приложения с автозагрузки. Так же вы можете отключить ненужные службы, но на данном этапе стоит быть крайне осторожным (настраивайте лишь в том случае, если вы понимаете за что отвечает та или иная служба чтобы не сделать хуже чем было и не сломать стабильность работы системы).

Установка Stacer в Ubuntu 16.04 LTS

Откройте терминал CTRL+ALT+T и выполним следующие команды(для 64-bit):
cd /tmp && wget https://github.com/oguzhaninan/Stacer/releases/download/v1.0.3/Stacer_1.0.3_amd64.deb && sudo dpkg -i Stacer* && sudo apt -f install 
Откройте терминал CTRL+ALT+T и выполним следующие команды(для 32-bit):
cd /tmp && wget https://github.com/oguzhaninan/Stacer/releases/download/v1.0.3/Stacer_1.0.3_i386.deb && sudo dpkg -i Stacer* && sudo apt -f install 

Удаление Stacer

Откройте терминал CTRL+ALT+T и выполним следующую команду:
sudo apt purge stacer && apt autoremove && sudo apt -f install

суббота, 18 февраля 2017 г.

Общие папки Linux

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

Создание папки и группы

Создание общих папок Linux требует установки соответствующих прав доступа общей группы для всех пользователей, которые совместно используют или имеют доступ к определенному каталогу. Но для начала нужно создать директорию и общую группу, если она отсутствует:
$ sudo mkdir -p /var/www/reports/
$ sudo groupadd project

Добавление пользователя в группу

После того, как общая папка Linux и группа создана, нужно добавить в группу существующего пользователя, который будет иметь право на запись в каталог /var/www/reports/:
$ sudo usermod -a -G project losst

Флаги и аргументы, использованные в приведенной выше команде

  • -a - добавляет пользователя в дополнительную группу;
  • -G - указывает название группы группы;
  • project - название группы;
  • losst - имя пользователя.

Настройка прав доступа

Теперь нужно настроить права доступа к каталогу. Опция -R в приведенной ниже команде разрешает проведение рекурсивных операций в подкаталоги:
$ sudo chgrp -R project /var/www/reports/
$ sudo chmod -R 2775 /var/www/reports/

Значение числа 2775 в команде chmod

  • 2 - новые файлы всегда будут получать ту группу, которая стоит у папки, в которой они находятся;
  • 7 - выдает все права (rwx) владельцу папки;
  • 7 - выдает все права (rwx) группе;
  • 5 - выдает право на чтение (r-x) другим пользователям.

Создание пользователя и добавление в группу

$ sudo useradd -m -c "Aaron Kili" -s/bin/bash -G project aaronkilik
$ sudo useradd -m -c "John Doo" -s/bin/bash -G project john
$ sudo useradd -m -c "Ravi Saive" -s/bin/bash -G project ravi

Создание подкаталогов для каждого пользователя

$ sudo mkdir -p /var/www/reports/aaronkilik_reports
$ sudo mkdir -p /var/www/reports/johndoo_reports
$ sudo mkdir -p /var/www/reports/ravi_reports

Выводы

Теперь вы научились создавать общие папки Linux и можете обмениваться файлами с другими пользователями из вашей группы. Пожалуйста, оцените статью и напишите свое мнение в комментариях.
Источник: www.tecmint.com