
Сегодня в статье приведу пример по установке и настройке VPN сервера WireGuard для операционных систем Ubuntu и Debian. Также данная статья будет справедлива и для всех производных систем данного типа. Читать

Сегодня в статье приведу пример по установке и настройке VPN сервера WireGuard для операционных систем Ubuntu и Debian. Также данная статья будет справедлива и для всех производных систем данного типа. Читать
Статическая маршрутизация — это процесс, в котором администратор сети вручную настраивает сетевые интерфейсы, таким образом, чтобы пакеты пересылались из одной сети в другую.
Администратор создает так называемую таблицу маршрутизации, в ней описаны различные маршруты пакетов. Читать
Vim – это легендарный текстовый редактор, способный на многое, но недружелюбный к новичкам. VIM — текстовый редактор, который появился в 1991 году, но до сих пор пользуется огромной популярностью (наряду с Emacs). Как правило, на него переходят после других редакторов уже состоявшиеся разработчики. Нередко, переходят с полноценных IDE.
На данный момент существует две версии редактора – vi и vim. Vim расшифровывается как Vi Improved, улучшенный vi. Это новая версия, которая принесла очень много улучшений. В большинстве современных дистрибутивов используется именно она. Поэтому если я буду писать vi, это значит, что я предполагаю использование vim.
Текстовый редактор Vim может работать в двух режимах. Это и есть его главная особенность. Первый режим, который используется по умолчанию при открытии редактора – это командный. В этом режиме вы можете вводить команды vi, а также использовать символьные клавиши для управления редактором. Второй режим – обычное редактирование текста, он работает так же как и редактирование текста в nano. Для переключения в командный режим используется клавиша Esc. Для переключения в режим редактирования – клавиша i. Если вас интересует только как в редакторе vi сохранить и выйти, листайте вниз, но если вы хотите узнать как пользоваться текстовым редактором vim, эта статья для вас.
Перед тем как идти дальше мы бы посоветовали вам пройти курс обучения встроенный в редакторе. Выполнение всех обучающих заданий займет 25-30 минут. Но после того как вы освоите все что там написано, эта статья поможет вам закрепить материал. Дело в том, что команд и сочетаний клавиш у vim очень много и запомнить их все без практики невозможно. Для запуска обучения наберите: $ vimtutor.
Начнем мы, как обычно с запуска программы, а также опций, которые ей можно передать. Синтаксис Vim очень прост:
$ vim опции имя_файла
Или:
$ vi опции имя_файла
Простой запуск vim без указания имени файла приведет к созданию пустого файла. А теперь давайте рассмотрим основные опции запуска:
Выход без сохранения изменений:
:q!
Как запомнить: quit dammit! (закройся, чёрт возьми!)
Выход с сохранением изменений:
:wq
Как запомнить: write to disk and quit
Для перемещения по открытому файлу используйте стрелки.
Перемещение на строку 285:
:285
Поиск слова «import»:
/import
Вставка текста там, где стоит курсор:
i
Как запомнить: insert
Вставка текста в конце текущей строки:
A
Как запомнить: Append
Выход из режима редактирования (возврат в стандартный режим):
ESC
Переход в визуальный режим:
v
Как запомнить: visual
Для выделения текста используйте стрелки.
Выход из визуального режима:
ESC
Копирование выделенного текста в буфер:
y
Как запомнить: yank
Удаление выделенного текста:
d
Как запомнить: delete
Копирование текущей строки в буфер:
yy
Как запомнить: yank yank
Копирование трёх строк, включая текущую, в буфер:
3yy
Удаление текущей строки и помещение её в буфер:
dd
Как запомнить: delete delete
Удаление 5 строк, включая текущую:
5dd
Вставка из буфера перед текущей строкой:
P
Примечание: заглавная P
Вставка из буфера после текущей строки:
p
Отмена последнего изменения:
u
Как запомнить: uh-oh 🙂
Восстановление последнего отменённого изменения:
CTRL + R
Вывод изменений:
:undolist
Отмена двух последних изменений:
2u
Многоуровневое дерево отката изменений Vim очень мощное, подробнее о нём можно почитать в документации.
Открытие файла index.html вместо текущего:
:edit index.html
Сохранение текущего файла:
:w
Как запомнить: write to disk
Сохранение файла с изменённым именем, например, changes.txt:
:w changes.txt
Поиск и замена всех вхождений строки в файле:
:%s/typo/corrected/g
Поиск и замена с запросом подтверждения замены:
:%s/typo/corrected/gc
Как запомнить: confirm
Включение подсветки синтаксиса:
:syntax on
Включение автоматических отступов:
:set autoindent
Увеличение отступов нескольких строк при выделении их в визуальном режиме:
>
Открытие server.py в новой вкладке:
:tabe server.py
Как запомнить: tab edit
Переход на вкладку справа:
:tabn
Как запомнить: tab next
Переход на предыдущую вкладку слева:
:tabp
Как запомнить: tab previous
Для закрытия вкладки переключитесь на неё и используйте команду :q или :wq.
Открытие templates/base.html в режиме вертикального разделения экрана:
:vs templates/base.html
Как запомнить: vertical split
Открытие shared.js в режиме горизонтального разделения экрана:
:sp shared.js
Как запомнить: the ’default’ horizontal split
Перемещение между «частями» экрана:
CTRL + W + ARROW KEYS
Для закрытия экрана переключитесь на него и используйте команду :q или :wq.
Многие команды, используемые для изменения вида и поведения Vim, можно сделать включёнными по умолчанию, поместив их в .vimrc — файл конфигурации Vim, который расположен в домашнем каталоге.
Например, добавление этих строк в ~/.vimrc сделает подсветку синтаксиса и автоматическую корректировку отступов включёнными по умолчанию:
syntax on
set autoindent
В командном режиме вы можете перемещаться по редактируемому тексту и выполнять действия над ним с помощью буквенных клавиш. Именно этот режим открывается по умолчанию при старте редактора. Здесь вы будете использовать краткие команды, перед которыми может устанавливаться номер, чтобы повторить команду несколько раз. Для начинающих может быть поначалу очень запутанно то, что в командном режиме символы интерпретируются как команды.
Для перемещения используются такие команды:
Можете запустить редактор и поэкспериментировать, чтобы было легче понять как это работает. Если перед тем как нажать кнопку буквы нажать цифру, то эта команда будет повторена несколько раз. Например, 3j переведет курсор на три строки вверх.
Для переключения в режим редактирования используются такие команды:
К этим командам тоже применимы символы повторения. Поэкспериментируйте, можно получить интересный и не совсем ожиданий результат.
Более сложны команды редактирования текста. Вы можете править текст не только в обычном режиме, но и в командном с помощью команд. Для этого применяются такие команды:
Эти команды редактора vim работают немного по-другому после нажатия одной из них ничего не произойдет. Мы еще можем задать количество символов, к которым будет применена команда и направление, с помощью кнопок перемещения курсора. Например, чтобы удалить два символа справа от курсора нажмите d3l, а чтобы удалить три строки вниз – d3j. Команды yy, dd, Y – не что иное, как сокращения.
Кроме этих команд, есть еще несколько полезных, которые мы не можем не рассмотреть:
С основными командами разобрались. Но у нас есть еще командная строка Vim, которая сама по себе тоже представляет огромный интерес.
Командная строка Vim запускается в командном режиме нажатием двоеточия – “:“. Здесь доступны команды для сохранения файла и выхода из редактора, настройки внешнего вида и взаимодействия с внешней оболочкой. Рассмотрим наиболее часто используемые команды редактора vim:
Со всеми основами разобрались, и вы теперь использование vim не будет казаться вам таким сложным. Но это еще далеко не все, этот мощный редактор может еще очень многое. Дальше мы рассмотрим несколько примеров использования vim, чтобы вам было легче справиться с новой программой.
Несмотря на то, что из всего вышесказанного можно понять как это делается рассмотрим еще раз. Чтобы открыть файл выполните:
vim имя_файла
Затем, если вы не хотите пока использовать возможности командного режима просто нажмите i, чтобы перейти в режим редактирования. Здесь вы можете редактировать файл так же, как и в nano. После того как завершите нажмите Esc, чтобы перейти в командный режим и наберите :wq. Записать и выйти. Все, готово.
Чтобы открыть несколько файлов, просто передайте их в параметры при запуске программы:
vim файл1 файл2 файл3
Редактор vim linux откроет первый файл, для переключения ко второму используйте команду :n, чтобы вернутся назад :N.
С помощью команды :buffers вы можете посмотреть все открытые файлы, а командой :buffer 3 переключится на третий файл.
Текстовый редактор Vim имеет свой буфер обмена. Например, вам нужно скопировать в четыре строки и вставить их в другое место программы, для этого выполните такую последовательность действий:
Также можно использовать выделение vim, чтобы скопировать строки. Выделите текст с помощью v, а затем нажмите y, чтобы скопировать.
Кириллица в Vim работает превосходно. Но есть одно но, когда включена кириллица в системе, все команды vim не работают, им и не нужно работать, они же не приспособлены для кириллицы.
Но переключать каждый раз раскладку, когда работаете в командном режиме тоже не очень удобно, поэтому открываем файл ~/.vimrc и добавляем туда такие строки:
Теперь раскладка клавиатуры в командном режиме переключается по Ctrl+^ и все команды работают.
Отдельно стоит сказать, что не стоит учить вим одновременно с тем, что вы собираетесь делать внутри него. Когнитивная нагрузка при изучении вима настолько высокая, что у вас не будет оставаться никакой энергии на изучение нового языка, фреймворка или, даже, программирования в целом. На вим имеет смысл смотреть тогда, когда вы уже спокойно работаете и хотите новых острых ощущений.
Другой важный аспект — готовность принять идеологию вима. Нередко происходит ситуация, когда программист садится за вим и при этом не начинает пользоваться вимом. Он продолжает использовать стрелки и практически не выходит в командный режим. Такой способ обучения виму самый опасный. Как только произойдет привыкание, переучить себя будет неимоверно сложно. Немалое число людей, считающих себя вимерами, не используют вим и в действительности работают крайне неэффективно.
Обучение виму — процесс сложный морально. Дело в том, что опыт сам по себе не делает вас лучше в чем-то. Научившись как-нибудь набирать текст, человек и через много лет будет делать это как-нибудь (не по скорости, а по эффективности работы с ним). То же самое касается использования редакторов.
Для повышения своей эффективности необходимо постоянно наблюдать за своими действиями, отслеживать те, что занимают слишком времени, читать статьи и книги в поисках новых способов решения старых проблем. Такой подход, конечно же, важен не только при работе с вимом и даже не только в программировании, но именно в виме по-другому успеха достичь невозможно. Во время обучения нельзя себе давать слабину и действовать из принципа «сейчас сделаю хоть как-нибудь, а потом разберусь». Незаметно для вас сформируются неправильные привычки и дальнейший рост остановится. Если вы к этому не готовы, то изучение стоит отложить.
Если следовать советам выше и постоянно правильно практиковать вим, то время от «любое действие занимает минуту» до «могу неспешно работать периодически подсматривая в документацию» займет около месяца. Дальше процесс пойдет легче, но останавливаться в развитии на этом этапе нельзя. Оттачивание всех необходимых навыков может занять и год. Но не стоит пугаться. В любом случае через месяц-два вы сможете вполне сносно работать.
vimtutor, при необходимости установив vim. После него можно браться за интерактивные учебники, описанные в полезных ссылках ниже. Делать это стоит одновременно с практикой работы с настоящим вимом.
.vimrc (конфиг), что невероятно сложно и затратно на первых порах, либо, что лучше, взять готовую сборку и сосредоточиться на владении самим вимом. А затем, постепенно разбираться с тем как все устроено внутри и по необходимости делать собственную сборку. Я рекомендую использовать свою сборку. Она вобрала в себя лучше практики и практически не содержит самописного кода. К тому же, внутри неё используются самые современные плагины. Внимательно изучите Makefile и выполните все необходимые команды. В процессе работы постоянно смотрите в файл vimrc и изучайте его содержимое вместе с установленными плагинами. Все плагины хостятся на гитхабе вместе с их документацией.
Анализ сетевого трафика всегда был неотъемлемой частью работы любого сетевого инженера, администратора сети для выявления проблем работоспособности и конфигурации активного оборудования, а также специалистов по информационной безопасности для выявления аномальной сетевой активности вредоносного программного обеспечения.
Анализ перехваченных пакетов безусловно требует от специалиста наличие глубоких знаний в области сетевых технологий, а также навыков работы с программным обеспечением анализаторов пакетов, таким например, как всем известный wireshark, так как необходимо знать синтаксис фильтров, уметь быстро находить интересующие протоколы и т.д.
Но гораздо сложнее это трафик перехватить, точнее установить оборудование для его перехвата.
Предлагаю рассмотреть варианты расположения (подключения) оборудования для снифа в коммутируемой среде (перехват wi-fi канала рассмотрим в следующей статье).
Самым удобным способ является установка сниффера непосредственно на интересующем нас прослушиваемом хосте.
Однако часть трафика, весьма полезная для исследования, но не предназначенное конечному устройсву будет отбрасыватся сетевым интерфейсом и не передаваться на обработку в систему, а значит и захватить этот трафик для дальнейшего исследования мы не сможем. К такому трафику относятся широковащательный трафик в рамках работы коммутатора.
К примеру ARP запрос, который используют хосты для определения MAC-адреса, который соответствует определенному IP-адресу.
Зная IP, направляем ARP запрос с целью сопоставления IP-MAC всем устройствам внутри широковещательного домена.
Однако только искомый хост “заинтересован” в получении такого запроса, остальные хосты, как упомяналось выше, указанный пакет отбросят.
Для наглядности, с помощью Cisco Packet racer, рассмотрим как хост с IP-адрессом 192.168.1.2 направляет ARP запрос на хост 192.168.1.4.
Предварительно проверив, что ARP записей на 192.168.1.2 нет от слова совсем командой arp -a (удалить их можно с помощью arp -d) выолняем команду ping на 192.168.1.4.
Так как мы не знаем MAC адрес, то первончально направляем ARP запрос. Запрос приходит на коммутатор (cisco 2960), далее он направляется на все хосты, подключенные к коммутатору. После этого хост 192.168.1.3 отбрасывает указанный, а 192.168.1.4 соответственно отвечает.

Для того, чтобы захватывать весь поступающий траффик на 192.168.1.3 необходимо на сетевом интерфейсе включить смешанный режим раюоты. Это позволяют сделать программные компоненты Aircrack-ng, Wireshark, tcp dump идр.
Когда нет возможности разместить анализатор трафика на целевом хосте помочь может концентратор.
В таком случае исследуемый хост и анализатор трафика в одном коммутируемом сегменте сети подключаются к одному концентратору.
В результате все поступающие и исходящие пакеты будут проходить по всем портам концентратора.
Так например, отправив пакеты с Host1 на Host2, концентратор Hub0 направит их как на исследуемый Host2, так и на анализатор пакетов Sniffer.
Отброс пакетов Sniffer’ом на картинке, обусловлен отключенным смешанным режимом работы сетевого адаптера.

Самым популярным способом перехвата трафика остается метод зеркалирование портов.
Для реализации этого метода необходимо чтобы коммутатор был управляемым, а также иметь физический или через удаленный ssh/Web-интерфейс доступ к нему.
Смысл заключается в том, чтобы принимаемый и отправляемый трафик устройства подключённого к порту коммутатора – зеркально направлялся на другой порт коммутатора, куда подключен анализатор трафика.
Так, подключившись, настроим коммутатор Сisco 2960 для зеркалирования трафика на портах fastEthernet 0/1 и fastEthernet 0/2 куда подключены host1 и host2 соответсвенно:
Switch>enable Switch#conf terminal Switch(config)#monitor session 1 source interface fastEthernet 0/1 Switch(config)#monitor session 1 source interface fastEthernet 0/2
И порт, на который будет зеркалироваться трафик, куда подключен анализатор пакетов :
Switch(config)#monitor session 1 destination interface f0/24
Проверим:
Switch#show monitor Session 1 --------- Type : Local Session Description : - Source Ports : Both : Fa0/1,Fa0/2 Destination Ports : Fa0/24 Encapsulation : Native Ingress : Disabled
Итак направим пакеты от Host1 (192.168.1.1) на Host2( 192.168.1.2) и видим, что они зеркалируются коммутатором наш снифер:

Открываем перехваченный ICMP пакет на снифере:

Указанные методы не лишены недостатков, а другие методы перехвата сетевого трафика – такие как заражение ARP-кэша и применение сетевых ответвителей рассмотрим в следующих статьях.
¯_(ツ)_/¯
Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.
В предыдущей статье «Что такое Docker? Bash команды в контейнере» был разобран способ обращения к Docker контейнеру, политика запуска (рестарта) и выполнение простейших bash команд. В этой статье пойдём чуть дальше и сделаем дамп базы данных из контейнера, а так же загрузим его обратно. Читать
Как это обычно заведено, знакомство с системой начинается с момента, когда что-то сломалось. Так началось моё знакомство с Docker сегодня утром. Разберём простейшие команды, которые необходимы для работы с Docker. Читать