Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Как ты помнишь, первый этап любой кибератаки — это разведка. От нее‑то мы и будем защищаться. На некоем граничном маршрутизаторе MikroTik у нас настроены правила Firewall против стандартного скана портов (например, всеми уважаемым сканером Nmap).
Все правила настроены в таблице Raw для обработки трафика до попадания в Connection Tracking и меньшей нагрузки на процессор. В правилах задействована цепочка Prerouting, логика работы правил основана на флагах TCP (tcp-flags). Если нам с одного IP-адреса поочередно на разные порты маршрутизатора прилетает несколько пакетов TCP с флагами SYN (полуоткрытые соединения), то можно сделать вывод, что работает сканер портов. Добавляем IP-адрес в Address List и в конце делаем drop
всего листа. Эти сигнатуры не претендуют на уникальность. Так что, как говорит мой начальник, «совершенствуй и улучшай».
Детальный разбор этих правил выходит за рамки статьи. Чтобы вникнуть подробнее, читай цикл статей «Стена огня» и изучай, как работают сканеры портов.
Итак, нам нужно вести учет количества IP-адресов, которые сканируют сеть, и ежедневно отправлять Address List в отдел безопасности предприятия для дальнейшего анализа и предотвращения атак. Как известно, системный администратор существо ленивое занятое, и каждый день заходить на маршрутизатор и скидывать файл с адресами для него нерентабельно. Начал я с того, что написал скрипт для RouterOS, который ежедневно сохранял Address List в файл и отправлял письмо на электронную почту.
:local sysdate [/system clock get date];:local d [:pick $sysdate begin=4 end=6];:local m [:pick $sysdate begin=0 end=3];:local y [:pick $sysdate begin=7 end=11];########SAVE_ADDRESS_LIST_TO_FILE#############/ip firewall address-list print from=[find where list=port_scanners]file="$sysname_$d$m$y_port_scanners_list.txt";:delay 3s;########SEND_ADDRESS_LIST_TO_MAIL############/tool e-mail send to=tester025@protonmail.com from=tester075@protonmail.com subject=([/system identity get name]. " Port_scanners_address_list " . [/system clock get date]) body=("Port scanners address-list of $sysnamenTime and Date stamp: " . [/system clock get time] . " " . [/system clock get date] . "n") file="$sysname_$d$m$y_port_scanners_list.txt";
Скрипт брал основную информацию по оборудованию, имя устройства, дату, месяц и год, искал соответствующий Address List и сохранял файл.
А затем отправлял сообщение с вложенным файлом на почту.
Добавление этого скрипта в Scheduler немного облегчило жизнь, но нужно было заходить на почту сохранять логи и еженедельно подсчитывать IP-адреса.
План действий будет следующий.
Из инструментов нам понадобится Unix-образная система (я тестировал на Ubuntu, Armbian и Manjaro), прямые руки и баночка пива (опционально). Приступаем к работе!
Сначала создаем директорию для хранения наших скриптов и служебных файлов:
mkdir/home/user/.scripts/cyber
И еще одну — для хранения списка адресов, с которых происходило сканирование:
mkdir/home/user/.scripts/cyber/port_scanners
Также нужно на сервере сгенерировать ключи SSH:
ssh-keygen
И вручную найти публичный ключ (id_rsa.
) в каталоге ~/.
. На маршрутизаторе создаем пользователя (например, uServer
) и кладем публичный ключ SSH (id_rsa.
) в директорию Files
. Далее открываем вкладку System → Users → SSH Keys и выбираем публичный ключ SSH (id_rsa.
) для созданного пользователя.
Не забывай, что после того, как мы положили ключ для пользователя, нужно первый раз зайти на маршрутизатор под этим пользователем по протоколу SSH.
Для мониторинга работы скриптов мы будем использовать телеграм‑бота. Его код я здесь приводить не буду, но смастерить его несложно — ищи бота BotFather и дерзай.
Подробнее о том, как писать ботов для Telegram, читай в статье «Телеграфирует робот. Пишем бота для Telegram на Python».
Дальше создаем группу или канал, даем ей соответствующее название (например, MikrotControl
). Добавляем бота в группу и даем ему права для публикации сообщений.
Дальше узнаем chat
нашей группы. Для этого открываем специальный URL:
https://api.telegram.org/bot<ваш_токен_телеграм_бота>/getUpdates
В ответе нас интересует параметр message
→ chat
→ id
, в нем хранится уникальный идентификатор чата группы с нашим ботом.
Вывод в формате JSON:
"chat":{
"id":-1524684857943,
"title":"MikrotControl",
"type":"supergroup"
},
Теперь отправим тестовое сообщение от бота в группу или канал. Для этого есть специальный URL:
https://api.telegram.org/bot<ваш_токен_телеграм_бота>/sendMessage?chat_id=<ідентифікатор_групи>&text=test123
В нашем случае chat ID -1524684857943
. Именно так, со знаком минус.
В группе мы должны получить сообщение от бота с текстом test123
. Дальше нужно настроить бота на сервере. Я возьму за основу готовый скрипт monit2telegram.
Устанавливаем клиент Git:
sudo pacman -S git
Переходим в директорию /
:
cd/usr/src
Загружаем необходимые ресурсы с GitHub и переходим в загруженную директорию:
sudo git clone https://github.com/matriphe/monit2telegram.git
cd monit2telegram
Затем необходимо скопировать файл конфигурации и скрипты в соответствующие директории файловой системы и дать скриптам права на исполнение:
sudo cp telegramrc /etc/telegramrc
sudo cp sendtelegram.sh /usr/local/bin/sendtelegram
sudo chmod+x /usr/local/bin/sendtelegram
sudo cp monit2telegram.sh /usr/local/bin/monit2telegram
sudo chmod+x /usr/local/bin/monit2telegram
Установить необходимые зависимости (jq
):
cd/usr/src
sudo wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
sudo ln -s/usr/src/jq-linux64 /usr/bin/jq
В первоначальном конфиге /
нужно указать уникальный TOKEN
бота и CHATID
нашей группы:
TOKEN='...'
CHATID='...'
Проверить, приходят ли сообщения, можно так:
sendtelegram -m "test message from server"
В нашей группе мы должны получить сообщение от бота с указанным текстом.
Ну и наконец, пишем наш скрипт.
|
|