суббота, 10 декабря 2016 г.

Программы для системного администратора 2016

Всем системным администраторам, независимо от того, администрируете вы Windows или Linux нужен определенный набор программ, инструментов и утилит, которые помогут справиться с непредвиденной ситуацией, проанализировать систему или облегчат решение повседневных задач. Существует очень много таких решений, в том числе и с открытым исходным кодом.
В этой статье мы рассмотрим лучшие программы для системного администратора 2016, которые вы можете использовать в своей работе. В нашем списке будут не только обычные утилиты и программы для определенной операционной системы, но и целые образы. А теперь перейдем к нашему списку.

1. Vim

15024468956_d1929ccc64_o

Хороший текстовый редактор - это один из основных инструментов системного администратора, поскольку во многих ситуациях приходится вносить правки в конфигурационные файлы и важно делать это очень быстро. Редактору Vim недавно исполнилось 25 лет, и он все еще очень активно развивается.
Он выгодно отличается от всех других редакторов тем, что позволяет выполнять редактирование текста и перемещение по нему очень быстро, не отрывая пальцы от основной клавиатуры. Для этого в редакторе реализовано два режима - командный режим, с помощью которого вы можете перемещаться по тексту с помощью буквенных клавиш, а также выполнять различные команды. Второй режим - редактирование, в котором программа превращается в обычный редактор.
В ноябре вышла восьмая версия Vim, в которой программа получила много улучшений. например, поддержку GTK3 и асинхронный ввод/вывод для плагинов. Этот редактор может работать не только в Linux, но и в Windows и MacOS.

2. Htop

htop-2-0
Мониторинг нагрузки на операционную систему - это тоже очень важная задача, которая стает довольно часто перед системными администраторами. Например, если нужно очень срочно выяснить какая программа перегружает процессор или занимает всю доступную оперативную память. Утилита htop показывает в реальном времени список всех запущенных процессов с возможностью сортировки по нужному параметру, использованию процессора, памяти.
Кроме того, с помощью утилиты можно посмотреть количество потоков, ядро процессора, на котором запущенна программа и многое другое. Это одна из самых важных утилит в списке программы системного администратора. Программа работает только в Linux системах.

3. Git

git-logo1
Контроль версий имеет очень важное значение не только в программировании. Для различных скриптов, конфигурационных и обычных текстовых файлов тоже может быть очень полезным восстановить предыдущую версию.
Изначально система Git была разработана Линусом Торвальдстом для управления разработкой ядра Linux. Но на сегодняшний день это полноценная платформа, которой пользуется очень большое количество проектов с открытым исходным кодом. Но она также может быть полезной в сохранении старых версий ваших конфигурационных файлов.
Последняя на данный момент версия - это 2.10, в которой есть много полезных функций. Например, с помощью команды git diff вы можете узнать какие именно строки были изменены и в каких файлах, удаленные строки будут зачеркнуты. Программа может использоваться в Windows и в Linux.

4. SystemRescueCD

systemrescue
Компьютеры не всегда работают как нужно и имеют обыкновение ломаться. Отличная практика для системных администраторов - это иметь компакт диск или USB диск с набором инструментов, которые помогут восстановить систему или хотя бы данные с проблемных компьютеров.
SystemRescueCD - это активно развивающийся набор утилит для системного администратора на все случаи жизни. Это загрузочный дистрибутив Linux, основанный на Gentoo, который содержит различные инструменты для проверки аппаратного обеспечения, разметки диска, восстановления данных, проверки компьютера на вирусы, настройки сети и многое другое.
В 2016 году было выпущено версии 2.8 и 2.9. В этих версиях образ получил обновления различных компонентов, включая добавление поддержки инструментов для работы с btrfs.

5. Clonezilla

ocs-08-restoredisk
Иногда лучше не восстанавливать систему с нуля, а иметь резервную копию всей машины, чтобы иметь возможность вернуть систему к жизни за несколько минут. Clonezilla - это де-факто стандарт для создания резервных копий и развертывания образов систем на диск. Вы можете создавать резервные копии как для отдельных разделов, так и для всего диска целиком.
Программа может использоваться из текущей системы или в виде загрузочного образа с псевдографическим интерфейсом - Clonezilla Live. После того как у вас будет готовая копия, вы можете очень просто восстановить после неудачной конфигурации или обновления.
В последней версии была добавлена поддержка обнаружения зашифрованных с помощью Windows BitLocker томов, улучшена поддержка EFI, а также обновлено все программное обеспечение до последних версий по Debian.

6. Docker

docker_lead
Контейнеры - это изолированные окружения, которые позволяют запускать несколько систем на одном ядре Linux. Все системы изолированны одна от другой, а также от основной системы. Инструмент настройки контейнеров Docker очень сильно посодействовал развитию контейнеров в 2016 году.
Docker это открытая платформа, которая позволяет буквально в несколько команд развернуть контейнеры с нужными дистрибутивами Linux и выполнять в них необходимое программное обеспечение. С помощью docker вы можете упаковать отдельное приложение со всеми его зависимостями, а затем запускать в любом дистрибутиве, где поддерживается Docker.
Вы можете создавать свои программы и обмениваться ими с другими пользователями. Docker позволяет компаниям выбирать систему, в которой будет работать программное обеспечение, не ограничивая разработчиков в инструментах и языках программирования.
В последних версиях Docker была добавлена возможность проверки состояния контейнера и автоматического восстановления в случае проблем, а также теперь контейнеры Docker могут работать не только в Linux, но и в Windows.

7. Wireshark

screenshotfrom2012-09-2314-57-09
Wireshark - это инструмент для анализа, проходящего через компьютер, трафика и сохранения сетевых пакетов. Такая задача может возникнуть при анализе работоспособности сети, сетевых сервисов или веб-приложений. Программа поддерживает огромное количество протоколов, может даже расшифровывать HTTPS трафик при наличии сертификата. Вы можете фильтровать весь трафик по нужным параметрам, сортировать пакеты, просматривать их содержимое и полную информацию, а также многое другое.
Новая версия программы Wireshark 2.0 была выпущена в 2015 году, с тех пор она активно развивается уже в этой ветке. Ее интерфейс был переписан на Qt5, а также сделан более интуитивно понятным.

8. TightVNC

scrtightvnc
TightVNC позволяет получить доступ к графическому интерфейсу на удаленном компьютере. С помощью этой программы вы можете управлять компьютером удаленно, фактически, не находясь перед ним. Обычно администраторы управляют серверами Linux через SSH, однако, некоторые пользователи предпочитают использовать графический интерфейс для решения таких задач.
У программы есть возможность шифровать трафик VNC, таким образом делая его безопасным, точно так же, как и ssh. TightVNC может работать как в Linux, так и в Windows. Затем вы сможете получить доступ к вашему устройству с любого места, где есть интернет.

9. Zenmap

figure-61_reference
Zenmap - это графический интерфейс для популярного сетевого сканера - nmap. С помощью этого инструмента вы можете очень быстро найти все подключенные к сети узлы, проверить топологию сети, а также посмотреть список запущенных служб на каждом из компьютеров.
Также с помощью программы вы можете найти потенциально опасные места в настройке серверов, многими администраторами она используется для проверки доступности узлов или даже измерения времени аптайма.

10. Filezilla

filezilla-3-19
Наш список утилиты для системного администратора подходят к завершению. Во время администрирования серверов достаточно часто приходится передавать файлы. Обычно, эта задача выполняется по протоколу FTP. Filezilla - это один из лучших и самых популярных клиентов для передачи и загрузки файлов по FTP. Интерфейс программы разделен на две панели, в одной из них вы видите локальный компьютер, а в другой удаленную файловую систему FTP сервера.
Интерфейс программы интуитивно понятен, и ее можно использовать в Windows, Linux и MacOS.

воскресенье, 4 декабря 2016 г.

Установка kvm Ubuntu 16.04

KVM или Kernel Virtual Module - это модуль виртуализации для ядра Linux, который позволяет превратить ваш компьютер в гипервизор для управления виртуальными машинами. Этот модуль работает на уровне ядра и поддерживает такие технологии аппаратного ускорения, как Intel VT и AMD SVM.
Само по себе программное обеспечение KVM в пространстве пользователя ничего не виртуализирует. Вместо этого, оно использует файл /dev/kvm для настройки виртуальных адресных пространств для гостевой машины в ядре. Каждая гостевая машина будет иметь свою видеокарту, сетевую и звуковую карту, жесткий диск и другое оборудование.
Также у гостевой системы не будет доступа к компонентам реальной операционной системы. Виртуальная машина выполняется в полностью изолированном пространстве. Вы можете использовать kvm как в системе с графическим интерфейсом, так и на серверах. В этой статье мы рассмотрим как выполняется установка kvm Ubuntu 16.04

Установка KVM в Ubuntu 16.04

Перед тем как переходить к самой установке KVM нужно проверить поддерживает ли ваш процессор аппаратное ускорение виртуализации от Intel-VT или AMD-V. Для этого выполните такую команду:
$ egrep -c '(vmx|svm)' /proc/cpuinfo
Если в результате будет возвращено 0 - значит ваш процессор не поддерживает аппаратной виртуализации, если 1 или больше - то вы можете использовать KVM на своей машине.
Теперь мы можем перейти к установке KVM, набор программ можно получить прямо из официальных репозиториев:
$ sudo apt install qemu-kvm libvirt-bin bridge-utils virt-manager cpu-checker
Мы установили не только утилиту kvm, но и библиотеку libvirt, а также менеджер виртуальных машин. После того, как установка будет завершена вам необходимо добавить своего пользователя в группу libvirtd, потому что только root и пользователи этой группы могут использовать виртуальные машины KVM:
$ sudo gpasswd -a ПОЛЬЗОВАТЕЛЬ libvirtd
После выполнения этой команды выйдите из системы и войдите снова. Далее, давайте проверим все ли правильно было установлено. Для этого используйте команду kvm-ok:
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
Если все было сделано правильно, то вы увидите такое же сообщение.

Использование KVM в Ubuntu 16.04

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

Настройка моста в NetworkManager

Это можно сделать несколькими способами, например, можно использовать программу конфигурации сети NetworkManager.
Кликните по значку NetworkManager на панели, затем выберите изменить соединения, затем нажмите кнопку Добавить:
nm1
nm2
Затем выберите тип соединения Мост и нажмите Создать:
nm3
В открывшемся окне нажмите кнопку Добавить, чтобы связать наш мост с подключением к интернету:
nm4
Из списка выберите Ethernet и нажмите Создать:
nm5
В следующем окне выберите в поле устройство, сетевой интерфейс, с которым следует связать наш мост:
nm6
Затем нажмите сохранить, еще раз сохранить в предыдущем окне и закрыть, чтобы выйти из интерфейса настройки.

Теперь в списке сетевых подключений вы будете видеть ваш мост. Осталось перезагрузить сеть, чтобы полностью применить изменения, для этого выполните:
$ sudo systemctl restart networking

Ручная настройка моста

Сначала нужно установить набор утилит bridge-utils если вы еще этого не сделали:
$ sudo apt install bridge-utils
Затем, с помощью программы brctl мы можем создать нужный нам мост. Для этого используйте такие команды:
$ sudo brctl addbr bridge0
$ sudo ip addr show
$ sudo addif bridge0 eth0
Первая команда добавляет устройство моста br0, с помощью второй вам нужно определить какой сетевой интерфейс является основным подключением к внешней сети, в моем случае это eth0. И с помощью последней команды мы связываем мост br0 с eth0.
Теперь необходимо добавить несколько строк в настройки сети чтобы все поднималось автоматически после старта системы. Для этого откройте файл /etc/network/interfaces и добавьте туда такие строки:
$ sudo gedit /etc/network/interfaces
loopback
auto lo bridge0
iface lo inet loopback
iface bridge0 inet dhcp
bridge_ports eth0
Когда настройки будут добавлены перезагрузите сеть:
$ sudo systemctl restart networking
Теперь установка и настройка KVM полностью завершена и вы можете создать свою первую виртуальную машину. После этого вы можете посмотреть доступные мосты с помощью команды:
$ sudo brctl show
nm8

Создание виртуальных машин KVM

Настройка KVM Ubuntu завершена и теперь мы можем перейти к ее использованию. Сначала давайте просмотрим список уже существующих виртуальных машин:
$ virsh -c qemu:///system list
nm9
Он пуст. Создать виртуальную машину можно через терминал или в графическом интерфейсе. Для создания через терминал используйте команду virt-install. Сначала перейдем в папку libvirt:
$ cd /var/lib/libvirt/boot/
Для установки CentOS команда будет выглядеть вот так:
$ sudo virt-install \
--virt-type=kvm \
--name centos7 \
--ram 2048 \
--vcpus=2 \
--os-variant=rhel7 \
--hvm \
--cdrom=/var/lib/libvirt/boot/CentOS-7-x86_64-DVD-1511.iso \
--network=bridge=br0,model=virtio \
--graphics vnc \
--disk path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2
Разберем подробнее что означают параметры этой команды:
  • virt-type - тип виртуализации, в нашем случае kvm;
  • name - имя новой машины;
  • ram - количество памяти в мегабайтах;
  • vcpus - количество ядер процессора;
  • os-variant - тип операционной системы;
  • cdrom - установочный образ системы;
  • network-bridge - сетевой мост, который мы настроили ранее;
  • graphics - способ получения доступа к графическому интерфейсу;
  • diskpath - адрес нового жесткого диска для этой виртуальной машины;
После завершения установки виртуальной машины вы можете узнать параметры подключения по VNC с помощью команды:
$ sudo virsh vncdisplay centos7
Теперь вы можете ввести полученные данные в вашем клиенте VNC и подключится к виртуальной машине даже удаленно. Для Debian команда будет немного отличаться, но все выглядит похожим образом:
Переходим в папку для образов:
$ cd /var/lib/libvirt/boot/
Можно скачать установочный образ из интернета если это необходимо:
$ sudo wget https://mirrors.kernel.org/debian-cd/current/amd64/iso-dvd/debian-8.5.0-amd64-DVD-1.iso
Затем создадим виртуальную машину:
$ sudo virt-install \
--virt-type=kvm \
--name=debina8 \
--ram=2048 \
--vcpus=2 \
--os-variant=debian8 \
--hvm \
--cdrom=/var/lib/libvirt/boot/debian-8.5.0-amd64-DVD-1.iso \
--network=bridge=bridge0,model=virtio \
--graphics vnc \
--disk path=/var/lib/libvirt/images/debian8.qcow2,size=40,bus=virtio,format=qcow2
Теперь снова посмотрим список доступных машин:
$ virsh -c qemu:///system list
Для запуска виртуальной машины можно использовать команду:
$ sudo virsh start имя_машины
Для остановки:
$ sudo virsh shutdown имя_машины
Для перевода в режим сна:
$ sudo virsh suspend имя_машины
Для перезагрузки:
$ sudo virsh reboot имя_машины
Сброс:
$ sudo virsh reset имя_машины
Для полного удаления виртуальной машины:
$ sudo virsh destroy имя_машины

Создание виртуальных машин в GUI\

Если у вас есть доступ к графическому интерфейсу то нет никакой необходимости использовать терминал, вы можете применить полноценный графический интерфейс менеджера виртуальных машин Virtual Manager. Программу можно запустить из главного меню:
ubuntu-kvm-create
Для создания новой машины кликните по иконке со значком монитора. Дальше вам будет необходимо выбрать образ ISO вашей системы. Также можно использовать реальный CD/DVD привод:
ubuntu-kvm-iso
На следующем экране выберите количество памяти, которая будет доступна для виртуальной машины, а также количество ядер процессора:
ubuntu-kvm-cpu
На этом экране вам нужно выбрать размер жесткого диска, который будет доступен в вашей машине:
ubuntu-kvm-hdd
На последнем шаге мастера вам предстоит проверить правильность настроек машины, а также ввести ее имя. Также нужно указать сетевой мост, через который машина будет подключаться к сети:
ubuntu-kvm-finalize
После этого машина будет готова к использованию и появится в списке. Вы можете запустить ее с помощью зеленого треугольника на панели инструментов менеджера.

Выводы

В этой статье мы рассмотрели как выполняется установка KVM Ubuntu 16.04, разобрали как полностью подготовить эту среду к работе, а также как создать виртуальные машины и использовать их. Если у вас остались вопросы, спрашивайте в комментариях!
На завершение лекция от яндекса о том что такое виртуализация в Linux:

понедельник, 28 ноября 2016 г.

Как пользоваться Nmap для сканирования сети

Nmap - это очень популярный сканер сети с открытым исходным кодом, который может использоваться как в Windows, так и в Linux. Программа Nmap или Network Mapper была разработана Гордоном Луоном и на данный момент используется специалистами по безопасности и системными администраторами по всему миру.
Эта программа помогает системным администраторам очень быстро понять какие компьютеры подключены к сети, узнать их имена, а также посмотреть какое программное обеспечение на них установлено, какая операционная система и какие типы фильтров применяются. Функциональность программы может быть расширена за счет собственного скриптового языка, который позволяет администраторам автоматизировать много действий.
Например, с помощью скриптов можно автоматически обнаруживать новые уязвимости безопасности в вашей сети. Namp может использоваться с хорошими и плохими намерениями, будьте аккуратны, чтобы не использовать nmap против закона. В этой инструкции мы рассмотрим как пользоваться namp для сканирования портов в операционной системе Linux. Но сначала нужно попытаться понять как работает эта утилита.

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

В компьютерных сетях все подключенные устройства имеют свой ip адрес. Каждый компьютер поддерживает протокол ping, с помощью которого можно определить подключен ли он к сети. Мы просто отправляем ping запрос компьютеру, и если он отзывается, то считаем, что он подключен. Nmap использует немного иной подход. Компьютеры также определенным образом реагируют на те или иные сетевые пакеты, утилита просто отправляет нужные пакеты и смотрит какие хосты прислали ответ.
Но об этом вы, наверное, уже знаете. Более интересно то как Nmap узнает какие сервисы запущены на машине. Суть работы всех сетевых программ основана на портах. Чтобы получить сообщение из сети, программа должна открыть порт на вашем компьютере и ждать входящих соединений. А для отправки сообщения по сети нужно подключиться к уже другой программой (адресатом) порту. Затем программе необходимо будет открыть порт, на котором она будет ждать ответа.
Утилита nmap в процессе сканирования сети перебирает доступный диапазон портов и пытается подключиться к каждому из них. Если подключение удалось, в большинстве случаев, передав несколько пакетов программа может даже узнать версию программного обеспечения, которые ожидает подключений к этому порту. Теперь, после того, как мы рассмотрели основы, рассмотрим как пользоваться nmap для сканирования портов и сети.

Синтаксис Nmap

Команда запуска Nmap очень проста для этого достаточно передать ей в параметрах целевой IP адрес или сеть, а также указать опции при необходимости:
$ nmap опции адрес
Теперь давайте рассмотрим основные опции, которые понадобятся нам в этой статье.
  • -sL - просто создать список работающих хостов, но не сканировать порты nmap;
  • -sP - только проверять доступен ли хост с помощью ping;
  • -PN - считать все хосты доступными, даже если они не отвечают на ping;
  • -sS/sT/sA/sW/sM - TCP сканирование;
  • -sU - UDP сканирование nmap;
  • -sN/sF/sX - TCP NULL и FIN сканирование;
  • -sC - запускать скрипт по умолчанию;
  • -sI - ленивое Indle сканирование;
  • -p - указать диапазон портов для проверки;
  • -sV - детальное исследование портов для определения версий служб;
  • -O - определять операционную систему;
  • -T[0-5] - скорость сканирования, чем больше, тем быстрее;
  • -D - маскировать сканирование с помощью фиктивных IP;
  • -S - изменить свой IP адрес на указанный;
  • -e - использовать определенный интерфейс;
  • --spoof-mac - установить свой MAC адрес;
  • -A - определение операционной системы с помощью скриптов.
Теперь, когда мы рассмотрели все основные опции, давайте поговорим о том, как выполняется сканирование портов nmap.

Как пользоваться Nmap для сканирования портов в Linux

Дальше рассмотрим примеры nmap. Сначала давайте рассмотрим как найти все подключенные к сети устройства, для этого достаточно использовать опцию -sL и указать маску нашей сети. в моем случае это 192.168.1.1/24. Маску вашей локальной сети вы можете найти, выполнив команду:
$ ip addr show
nmap
Из вывода для используемого интерфейса возьмите число после слеша, а до слэша укажите ip вашего роутера. Команда на сканирование сети nmap будет выглядеть вот так:
$ nmap -sL 192.168.1.1/24
nmap1
Иногда это сканирование может не дать никаких результатов, потому что некоторые операционные системы имеют защиту от сканирования портов. Но это можно обойти, просто использовав для сканирования ping всех ip адресов сети, для этого есть опция -sn:
$ nmap -sn 192.168.1.1/24
nmap2
Как видите, теперь программа обнаружила активные устройства в сети. Дальше мы можем сканировать порты nmap для нужного узла запустив утилиту без опций:
$ sudo nmap 192.168.1.1
nmap4

Теперь мы можем видеть, что у нас открыто несколько портов, все они используются каким-либо сервисом на целевой машине. Каждый из них может быть потенциально уязвимым, поэтому иметь много открытых портов на машине небезопасно. Но это еще далеко не все, что вы можете сделать, дальше вы узнаете как пользоваться nmap.
Чтобы узнать более подробную информацию о машине и запущенных на ней сервисах вы можете использовать опцию -sV. Утилита подключится к каждому порту и определит всю доступную информацию:
$ sudo nmap -sV 192.168.1.1
nmap5
На нашей машине запущен ftp, а поэтому мы можем попытаться рассмотреть эту службу подробнее с помощью стандартных скриптов nmap. Скрипты позволяют проверить порт более детально, найти возможные уязвимости. Для этого используйте опцию -sC и -p чтобы задать порт:
$ sudo nmap -sC 192.168.56.102 -p 21


Мы выполняли скрипт по умолчанию, но есть еще и другие скрипты, например, найти все скрипты для ftp вы можете командой:
$ sudo find /usr/share/nmap/scripts/ -name '*.nse' | grep ftp
Затем попытаемся использовать один из них, для этого достаточно указать его с помощью опции --script. Но сначала вы можете посмотреть информацию о скрипте:
$ sudo nmap --script-help ftp-brute.nse
nmap6
Этот скрипт будет пытаться определить логин и пароль от FTP на удаленном узле. Затем выполните скрипт:
$ sudo nmap --script ftp-brute.nse 192.168.1.1 -p 21
nmap7
В результате скрипт подобрал логин и пароль, admin/admin. Вот поэтому не нужно использовать параметры входа по умолчанию.
Также можно запустить утилиту с опцией -A, она активирует более агрессивный режим работы утилиты, с помощью которого вы получите большую часть информации одной командой:
$ sudo nmap -A 192.168.1.1
nmap8
Обратите внимание, что здесь есть почти вся информация, которую мы уже видели раньше. Ее можно использовать чтобы увеличить защиту этой машины.

Выводы

В этой статье мы рассмотрели как выполняется сканирование портов nmap, а также несколько простых примеров использования этой утилиты. Эти команды nmap могут быть полезными многим системным администраторам, чтобы улучшить безопасность их систем. Но это далеко не все возможности утилиты. Продолжайте экспериментировать с утилитой чтобы узнать больше только не в чужих сетях!