Архив рубрики: Публикации

Установка и начальная настройка сервера мониторинга Zabbix на Ubuntu Server

Сервер Zabbix используется для сбора и анализа информации о состоянии узлов сети. В данной статье будет рассмотрен процесс его установки и развертывания веб-интерфейса для его управления. В качестве сервера баз данных мы будем использовать MariaDB/MySQL. Версия операционной системы, которая использовалась для написания инструкции — 18.04 (LTS), версия Zabbix — 4.2.




Подготовка сервера




Перед установкой Zabbix выполняем подготовительные процедуры.




1. Правильное время




Для получения актуальной информации необходимо, чтобы на сервере было правильное время.




Для этого сначала задаем правильную временную зону:




timedatectl set-timezone Europe/Moscow




* в данном примере задается московское время.




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




apt-get install chrony

systemctl enable chrony

systemctl start chrony




2. Настройка брандмауэра




Для работы сервера, открываем следующие порты:




ufw allow 80,443,10050,10051/tcp

ufw allow 10050,10051/udp




* где 80 — порт для http запросов (веб-интерфейс); 443 — для https запросов (веб-интерфейс); 10050 — порты для получения информации от zabbix агентов.




Установка веб-сервера




Управление сервером Zabbix будет осуществляться посредством веб-интерфейса. Для этого необходимо установить и настроить веб-сервер, СУБД и PHP.




СУБД




В данному инструкции мы будем использовать сервер баз данных mariadb.




Для установки вводим:




apt-get install mariadb-server




Разрешаем автозапуск сервера баз данных и запускаем mariadb:




systemctl enable mariadb

systemctl start mariadb




Задаем пароль для суперпользователя СУБД:




mysqladmin -u root password




* после ввода команды система потребует ввести пароль два раза.




Веб-сервер




Для наших целей будем использовать веб-сервер NGINX.




Для его установки вводим команду:




apt-get install nginx




Запускаем nginx и разрешаем его автозапуск:




systemctl enable nginx

systemctl start nginx




Открываем веб-браузер и переходим по ссылке http://<IP-адрес сервера>/ — мы должны увидеть окно приветствия:







PHP и PHP-FPM




Интерфейс zabbix разработан на PHP — наш веб-сервер должен обрабатывать скрипты, написанные на нем.




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




apt-get install php php-fpm php-mysql php-pear php-cgi php-common php-ldap php-mbstring php-snmp php-gd php-xml php-gettext php-bcmath




Для настройки php, открываем файл:




nano /etc/php/7.2/fpm/php.ini




* где 7.2 — версия PHP. В вашем случае это может быть другая версия. Проверить можно командой php -v.




Редактируем следующие параметры:




date.timezone = "Europe/Moscow"

...

max_execution_time = 300

...

post_max_size = 16M

...

max_input_time = 300

...

max_input_vars = 10000




Разрешим запуск php-fpm и перезапустим его:




systemctl enable php7.2-fpm

systemctl restart php7.2-fpm




NGINX + PHP




Для того, чтобы NGINX обрабатывал PHP, открываем конфигурационный файл:




nano /etc/nginx/sites-enabled/default




В секции location добавляем параметр index:




location / {

        index  index.php;

        ...

    }




Внутри секции server добавим следующее:




  location ~ .php$ {

        set $root_path /var/www/html;

        fastcgi_buffer_size 32k;

        fastcgi_buffers 4 32k;

        fastcgi_pass unix:/run/php/php7.2-fpm.sock;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;

        include fastcgi_params;

        fastcgi_param DOCUMENT_ROOT $root_path;

    }




* где /var/www/html — корневой путь хранения скриптов; /run/php/php7.2-fpm.sock — путь до сокетного файла php-fpm (точное расположение файла можно посмотреть в конфигурационном файле /etc/php/7.2/fpm/pool.d/www.conf).




Проверяем настройки nginx:




nginx -t




И перезагружаем его:




systemctl restart nginx




Создаем index.php со следующим содержимым:




nano /var/www/html/index.php




<?php phpinfo(); ?>




Открываем веб-браузер и переходим по ссылке http://<IP-адрес сервера>/ — теперь мы должны увидеть сводную информацию по PHP и его настройкам:







Веб-сервер готов для работы с Zabbix Web.




Установка и настройка сервера Zabbix




Переходим к установке самого Zabbix сервера.




Установка




Сначала установим репозиторий последней версии Zabbix. Для этого переходим на страницу https://repo.zabbix.com/zabbix/ и переходим в раздел с самой последней версией пакета — затем переходим в ubuntu/pool/main/z/zabbix-release/ — копируем ссылку на последнюю версию релиза:







* в моем случае это ссылка на https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1+bionic_all.deb. Чтобы понять, какое кодовое название нашей системы, вводим команду cat /etc/lsb-release | grep DISTRIB_CODENAME.




Скачиваем файл репозитория командой:




wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1%2Bbionic_all.deb




Устанавливаем его:




dpkg -i zabbix-release_4.2-1+bionic_all.deb




Обновляем списки пакетов:




apt-get update




Устанавливаем сервер, вводя команду:




apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-get




Настройка базы данных




Входим в оболочку ввода sql-команд:




mysql -uroot -p




Создаем базу данных:




> CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;




* мы создали базу zabbix.




Создаем пользователя для подключения и работы с созданной базой:




> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbixpassword';




* в данном примете мы создали пользователя zabbix с доступом к базе zabbix и паролем zabbixpassword.




Выходим из sql-оболочки:




> q




В составе zabbix идет готовая схема для СУБД MySQL/MariaDB или postgreSQL. В нашем случае, нам нужен MySQL.




Для применения схемы переходим в каталог:




cd /usr/share/doc/zabbix-server-mysql/




Распаковываем архив с дампом базы:




gunzip create.sql.gz




Восстанавливаем базу их дампа:




mysql -v -u root -p zabbix < create.sql




* после ввода команды система запросит пароль. Необходимо ввести пароль, который мы задали после установки mariadb.




Настройка zabbix




Открываем конфигурационный файл zabbix:




nano /etc/zabbix/zabbix_server.conf




Добавляем строку:




DBPassword=zabbixpassword




* мы настраиваем портал на подключение к базе с паролем zabbixpassword, который задали при создании базы для zabbix.




И проверяем следующие строки:




...

DBName=zabbix

...

DBUser=zabbix

...




* имя базы и пользователя должны быть zabbix (как мы и создали в mariadb).




Создаем каталог для инклудов конфигурационных файлов (по какой-то причине, он может быть не создан при установке):




mkdir /etc/zabbix/zabbix_server.conf.d




Также создаем каталог для логов и задаем владельца:




mkdir /var/log/zabbix-server

chown zabbix:zabbix /var/log/zabbix-server




Запуск zabbix-server




Разрешаем автозапуск сервера мониторинга:




systemctl enable zabbix-server




После запускаем сам сервер zabbix:




systemctl start zabbix-server




Настройка nginx




При установке zabbix-web файлы портала копируются в каталог /usr/share/zabbix. Наш веб-сервер работает с каталогом /var/www/html.




Меняем это — открываем конфигурационный файл nginx:




vi /etc/nginx/sites-enabled/default




nano /etc/nginx/sites-enabled/default




Редактируем параметры root и set $root_path:




...

root /usr/share/zabbix;

...

set $root_path /usr/share/zabbix;

...




Перезапускаем nginx:




systemctl restart nginx




Установка портала для управления Zabbix




Открываем браузер и переходим по адресу http://<IP-адрес сервера>/ — откроется страница установки Zabbix Web. Кликаем по ссылке Next Step:







В следующем окне внимательно смотрим на результаты проверки нашего веб-сервера — справа мы должны увидеть все OK. Если это не так, проверяем настройки и исправляем предупреждения и ошибки, после перезапускаем страницу F5 для повторной проверки настроек.




Когда все результаты будут OK, кликаем по Next Step:







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







* в нашем случае, пароль был zabbixpassword;




В следующем окне оставляем все как есть:







… и нажимаем Next Step.




В последнем окне мы проверяем настройки и кликаем Next Step.




Установка завершена — нажимаем Finish:







В открывшемся окне вводим логин Admin и пароль zabbix (по умолчанию) — откроется окно со сводной информацией по мониторингу:







Zabbix Agent




В качестве примера установим и настроим zabbix agent на наш сервер. Так как мы уже устанавливали репозиторий, установка агента выполняется командой:




apt-get install zabbix-agent




Откроем конфигурационный файл:




nano /etc/zabbix/zabbix_agentd.conf




Отредактируем следующую опцию:




Server=localhost




* в данном примере мы указываем агенту сервер Zabbix — мы может указать его имя или IP-адрес.




Разрешаем автозапуск агента и запускаем его:




systemctl enable zabbix-agent

systemctl start zabbix-agent




Источник: https://www.dmosk.ru/miniinstruktions.php?mini=zabbix-server-ubuntu



2021-03-07T22:10:22
Software

Как включить тайный режим Kali Linux

Тестеры на проникновение и хакеры Black Hat превыше всего ценят конфиденциальность и анонимность. Такой дистрибутив, как Kali Linux, инструмент, который предпочитают исследователи безопасности и тестеры на проникновение, может не предоставлять их постоянно, особенно в общественных местах, где запуск кода и открытие нескольких терминалов могут легко привлечь к себе ненужное внимание.

Offensive Security учел это и включил в Kali Linux 2019.4 режим, известный как режим под прикрытием.

Режим под прикрытием в Kali Linux — это набор скриптов, которые позволяют имитировать среду Windows 10 в Kali Linux. Он преобразует весь интерфейс в эквивалент Windows 10, ограничивая внимание, которое вы могли бы привлечь, если бы вы запускали XFCE с различными запущенными терминалами и драконом Kali в фоновом режиме.

Чтобы включить и использовать скрытый режим Kali Linux, вам потребуется Kali Linux 2019.4 или новее.

 

Обновление до версии 2019.4 или более поздней

Начните с обновления вашего дистрибутива с помощью команд:

sudo apt update

sudo apt -y full-upgrade

 

Вам также может потребоваться использовать среду рабочего стола XFCE.

 

Включение режима Kali под прикрытием

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

kali-undercover

 

Если вы предпочитаете использовать графический интерфейс, запустите меню приложения и найдите Kali Linux Undercover.

 

Возврат в нормальный режим

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

kali-undercover



2021-03-07T22:05:07
Kali Linux

Балансировка двух WAN на Mikrotik используя PCC

Начальные условия




  • 2 канала WAN от разных провайдеров, с разными скоростями
  • Провайдер1 WAN1 (192.168.1.1) — 10 Мбит
  • Провайдер2 WAN2 (192.168.2.1) — 20 Мбит




Необходимо реализовать




  • Основной канал WAN2 и он должен использоваться интенсивнее (2/3 всего объема трафика)
  • Балансировку нагрузки между каналами
  • Роутер должен отвечать на запросы (пришедшие с любого провайдера) именно с того интерфейса, откуда пришел запрос




/ip address
add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=Local
add address=192.168.1.2/24 network=192.168.1.0 broadcast=192.168.1.255 interface=WAN1
add address=192.168.2.2/24 network=192.168.2.0 broadcast=192.168.2.255 interface=WAN2
 
/ip firewall mangle
add chain=input in-interface=WAN1 action=mark-connection new-connection-mark=WAN1_conn
add chain=input in-interface=WAN2 action=mark-connection new-connection-mark=WAN2_conn
 
add chain=output connection-mark=WAN1_conn action=mark-routing new-routing-mark=to_WAN1
add chain=output connection-mark=WAN2_conn action=mark-routing new-routing-mark=to_WAN2
 
add chain=prerouting dst-address=192.168.1.0/24 action=accept in-interface=Local
add chain=prerouting dst-address=192.168.2.0/24 action=accept in-interface=Local
 
add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:2/0 action=mark-connection new-connection-mark=WAN1_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:2/1 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes
 
add chain=prerouting connection-mark=WAN1_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN1
add chain=prerouting connection-mark=WAN2_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN2
 
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-mark=to_WAN1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-mark=to_WAN2 check-gateway=ping
 
add dst-address=0.0.0.0/0 gateway=192.168.1.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.2.1 distance=2 check-gateway=ping
 
/ip firewall nat
add chain=srcnat out-interface=WAN1 action=masquerade
add chain=srcnat out-interface=WAN2 action=masquerade




Если каналы неравны (как у меня), то нужно изменить




add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:2/0 action=mark-connection new-connection-mark=WAN1_conn passthrough=yes

add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:2/1 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes




на




add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:3/0 action=mark-connection new-connection-mark=WAN1_conn passthrough=yes

add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:3/1 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes

add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:3/2 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes




Определенный порт через определенного провайдера




Спасибо за подсказку maxim.naidenov:




;;; Winbox
chain=prerouting action=mark-routing new-routing-mark=to_WAN1 passthrough=no protocol=tcp dst-address-type=!local in-interface=bridge-local dst-port=8291 connection-mark=no-mark

;;; Wargaming, RU9
chain=prerouting action=mark-routing new-routing-mark=to_WAN2 passthrough=no dst-address=xxx.xxx.xxx.0/24 dst-address-type=!local in-interface=bridge-local connection-mark=no-mark




Балансировка каналов и IPSEC




При эксплуатации IPSEC и балансировке каналов выяснился интересный факт: при установке IPSEC не получается обменяться всеми ключами. IPSEC вроде бы как и поднимается, но работать не работает. Если посмотреть IP → IPsec → Installed SAs — можно увидеть что счетчик «Current Bytes» для одного из ключей равен 0, т.е. обмен ключами все-таки не прошел. Для правильной работы необходимо добавить еще два правила:




> /ip firewall mangle

> add chain=output action=mark-routing new-routing-mark=ISP1_conn passthrough=no connection-mark=ISP1_conn

> add chain=output action=mark-routing new-routing-mark=ISP2_conn passthrough=no connection-mark=ISP2_conn




При этом в таблице маршрутизации должны быть маршруты с соответствующими Routing Mark




Было (неверно):




> add chain=output action=mark-connection new-connection-mark=ISP1_conn passthrough=no out-interface=WAN1

> add chain=output action=mark-connection new-connection-mark=ISP2_conn passthrough=no out-interface=WAN2




Еще полезная статейка: https://habr.com/post/313342/




Взято отсюда: https://wiki.rtzra.ru/software/mikrotik/mikrotik-dual-wan-pcc



2021-03-07T18:12:26
Network

Настройка резервного канала в MikroTik с уведомлением в Telegram

К подключению резервного интернет канала дома каждый приходит по своим причинам, но некоторые устройства в умном доме требуют постоянного подключения к сети интернет, оперативность получения важных уведомлений напрямую зависит от стабильности подключения к тому же, как же мы узнаем, что интернет пропал, не имея резервного канала 🙂




Какой тип подключения выбрать в качестве резервного зависит только от желания, финансовой и технической возможности. Требования к скорости не большие и зависит от того, каким устройствам необходим постоянный доступ к сети. Если не использовать постоянный доступ для торрент обмена, то в качестве резервного канала можно использовать USB LTE модем с лимитированным трафиком.




Входные данные




Имеется MikroTik RB4011 с настройками:




  • Основной интернет канал 100МБит, внешний IP, интерфейс ether1
  • Резервный интернет канал 10МБит, интерфейс ether2
  • OpenVPN подключение к внешней VPS, интерфейс vpn-ovpn
  • Туннель 6to4 для IPv6 трафика, v6to4-tunnel




Необходимо при разрыве основного канала пустить весь трафик по резервному, переподключить VPN, погасить туннель 6to4 и прислать уведомление в телеграмм.




Настройка




Для удобства переименовываем названия портов ether1 и ether2 в ether1-wan-main и ether2-wan-reserv




/interface ethernet set ether1 name="ether1-wan-main"
/interface ethernet set ether2 name="ether2-wan-reserv"




Если IP адреса для основного и/или резервного канала прилетают по DHCP, то в настройках DHCP Сlient’а необходимо для каждого интерфейса выставить параметр Add Default Route — no.







Добавляем маршруты по умолчанию, маршрут основного канала будет иметь дистанцию (distance) 1, резервного 2:




/ip route add dst-address=0.0.0.0/0 gateway=100.99.88.1 distance=1 comment="MAIN_CHAN"

/ip route add dst-address=0.0.0.0/0 gateway=10.9.8.1 distance=2 comment="RESERV_CHAN"




где: gateway=100.99.88.1 — шлюз для основного канала, gateway=10.9.8.1 — шлюз для резервного канала. Неактивный маршрут резервного канала будет выделен синим цветом.







Для мониторинга состояния каналов будет задействована утилита Netwatch (Tools -> Netwatch), в качестве хостов наблюдения будут использованы DNS сервера Яндекс, адрес 77.88.8.8 будет использоваться для проверки работоспособности основного канала, 77.88.8.1 — для резервного.




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




/ip route add dst-address=77.88.8.8 gateway=100.99.88.1 distance=1 comment="Yandex  DNS  -  Check  main  internet  channel"

/ip route add dst-address=77.88.8.1 gateway=10.9.8.1 distance=1 comment="Yandex  DNS  -  Check reserv internet channel"







В Firewall (IP -> Firewall) добавляем запрещающие правила на прохождение пакетов к проверяемым адресам не через свой канал, на случай, если канал отсохнет, то маршрут использующий этот канал станет не активным и будет задействован текущий маршрут по умолчанию. Эти правила необходимо расположить выше правил разрешающих доступ в интернет.




/ip firewall filter add chain=output dst-address=77.88.8.1 out-interface=ether1-wan-main action=reject

/ip firewall filter add chain=output dst-address=77.88.8.8 out-interface=ether2-wan-reserv action=reject







Мониторинг и переключение каналов




Как говорилось выше, в качестве мониторинга будет использоваться утилита Netwatch. Настройка этой утилиты крайне проста, задается хост наблюдения и интервал через какое время необходимо выполнять проверку, при переходе наблюдаемого хоста из состояния Down в состояние Up выполняются скрипты с вкладки UP, при переходе из состояния Up в состояние Down выполняются скрипты с вкладки DOWN.




Для отправки уведомлений в Telegram ботом будет задействована утилита fetch. Как известно боту может быть отправлено сообщение через URL вида https://api.telegram.org/bot[API_KEY]/sendMessage?chat_id=[CHAT_ID]&text=[TEXT]. Подробнее как настроить бота в Telegram описано здесь.




  • [API_KEY] — токен для доступа к HTTP API
  • [CHAT_ID] — ID вашего с ботом чата
  • [TEXT] — отправляемое сообщение




Для проверки основного канала в Netwatch добавляем (Tools -> Netwatch -> +).




Вкладка Host:




  • Host: 77.88.8.8
  • Interval: 00:01:00
  • Timeout: 1000




Вкладка UP:




/ip route enable [find comment="MAIN_CHAN"]
/interface enable v6to4-tunnel
/ip dns cache flush
/interface disable vpn-ovpn
:delay 3s
/interface enable vpn-ovpn
:delay 5s
/tool fetch url="https://api.telegram.org/bot123456789:ABCDEFGHIJKLMNOPQRabcdefghijklmnopq/sendMessage?chat_id=12345678&text=RB4011_Main_channel_is_UP!"
/file remove "sendMessage?chat_id=12345678&text=RB4011_Main_channel_is_UP!";




Вкладка DOWN:




/ip route disable [find comment="MAIN_CHAN"]
/interface disable v6to4-tunnel
/ip dns cache flush
/interface disable vpn-ovpn
:delay 3s
/interface enable vpn-ovpn
:delay 5s
/tool fetch url="https://api.telegram.org/bot123456789:ABCDEFGHIJKLMNOPQRabcdefghijklmnopq/sendMessage?chat_id=12345678&text=RB4011_Main_channel_is_DOWN!"
/file remove "sendMessage?chat_id=12345678&text=RB4011_Main_channel_is_DOWN!";




Каждую минуту происходит проверка хоста с IP адресом 77.88.8.8, как только происходит смена состояния из доступен в недоступен, то начинается обработка скрипта, описанного на вкладке DOWN. Комментарии:




  1. В таблице маршрутизации отключается маршрут с комментарием MAIN_CHAN, это наш основной маршрут с distance=1. Т.к. основной маршрут отключен, то активным становится маршрут с distance=2, у нас он отмечен комментарием RESERV_CHAN, весь трафик пойдет в резервный канал.
  2. Отключается туннель 6to4 т.к. он завязан на внешний IP адрес основного канала.
  3. Сбрасывается DNS cache, т.к. помимо IPv4 трафика используется IPv6 канал и на какие-то ресурсы в кэше будут записи на IPv6 адреса.
  4. Отключается и через 3 секунды включается OpenVPN соединение, перезагрузка сделана на случай более быстрого переключения и избежания подвисаний.
  5. Отправка сообщения в Telegram
  6. После отправки в папке Files создается файл, удаляем его




Аналогичная ситуация происходит на вкладке UP при переходе хоста с IP адресом 77.88.8.8 из состояния Down в состояние Up.




Для проверки резервного канала в Netwatch добавляем (Tools -> Netwatch -> +).




Вкладка Host:




  • Host: 77.88.8.1
  • Interval: 00:01:00
  • Timeout: 1000




Вкладка UP:




/ip route enable [find comment="RESERV_CHAN"]
/ip dns cache flush
/interface disable vpn-ovpn
:delay 3s
/interface enable vpn-ovpn
:delay 5s
/tool fetch url="https://api.telegram.org/bot123456789:ABCDEFGHIJKLMNOPQRabcdefghijklmnopq/sendMessage?chat_id=12345678&text=RB4011_Reserv_channel_is_UP!"
/file remove "sendMessage?chat_id=12345678&text=RB4011_Reserv_channel_is_UP!";




Вкладка DOWN:




/ip route disable [find comment="RESERV_CHAN"]
/ip dns cache flush
/interface disable vpn-ovpn
:delay 3s
/interface enable vpn-ovpn
:delay 5s
/tool fetch url="https://api.telegram.org/botbot123456789:ABCDEFGHIJKLMNOPQRabcdefghijklmnopq/sendMessage?chat_id=12345678&text=RB4011_Reserv_channel_is_DOWN!"
/file remove "sendMessage?chat_id=12345678&text=RB4011_Reserv_channel_is_DOWN!";




Действия в случае неполадок с резервным каналом аналогичные, как и для основного, не затрагивается только 6to4 туннель.




Источник: https://stupidhouse.info/node/18/



2021-03-07T12:46:36
Network

20 команд netstat для управления сетью Linux и Windows

20 команд netstat для управления сетью Linux и Windows




Этот инструмент очень важен и полезен для сетевых администраторов Linux/Windows для мониторинга и устранения неполадок, связанных с сетью, и определения производительности сетевого трафика. В этой статье показано использование команды netstat с примерами, которые могут быть полезны при ежедневной работе.




1. Перечисление всех портов для соединений TCP и UDP




Список всех портов (как TCP, так и UDP) с использованием опции netstat -a.




# netstat -a | more







2. Перечисление соединений TCP-портов




Список соединений TCP (Transmission Control Protocol) с использованием опции netstat -at.




# netstat -at







3. Спикок соединений портов UDP




Список соединений UDP (User Datagram Protocol) с использованием опции netstat -au.




# netstat -au







4. Список всех открытых входящих портов




Список всех открытых входящих портов с использованием опции netstat -l.




# netstat -l







5. Список всех активных входящих портов TCP




Список всех активных TCP-портов прослушивания с использованием опции netstat -lt.




# netstat -lt







6. Список всех активных входящих портов UDP




Список всех активных входящих портов UDP с использованием опции netstat -lu.




# netstat -lu







7. Список всех активных входящих сокетов UNIX




Список всех активных входящих сокетов UNIX с помощью опции netstat -lx.




# netstat -lx







8. Отображение статистики по всем протоколам




По умолчанию для протоколов TCP, UDP, ICMP и IP показаны статистические данные. Параметр -s может использоваться для указания набора протоколов.




# netstat -s







9. Отображение статистики по протоколу TCP




Отображение статистики TCP-протокола с использованием опции netstat -st.




# netstat -st







10. Отображение статистики по протоколу UDP




Отображение статистики UDP-протокола с использованием опции netstat -su.




# netstat -su







11. Отображение имени службы с PID




Ниже приведен пример отображения имени службы с её номером PID. Для этого необходимо использовать опцию netstat -tp, которая отобразит «PID / Program Name».




# netstat -tp







12. Отображение режима Promiscuous




Promiscuous mode или promisc mode — так называемый «неразборчивый» режим, в котором сетевая плата позволяет принимать все пакеты независимо от того, кому они адресованы.




Отображая режим Promiscuous с переключателем -ac, netstat выводит выбранную информацию на экран и обновляет её каждые пять секунд. По умолчанию экран обновляется каждую секунду.




# netstat -ac 5 | grep tcp







13. Отображение маршрутизации IP-адреса ядра




Отображение таблицы IP-маршрутизации ядра с помощью команды netstat.




# netstat -r







14. Отображение транзакций сетевого интерфейса




Отображение транзакций пакетов сетевого интерфейса, включая как отправляемые, так и принимаемые пакеты с размером MTU.




# netstat -i







15. Отображение таблицы интерфейса ядра




Команда отображает таблицу интерфейса ядра, аналогично команде ifconfig.




# netstat -ie







16. Отображение информации IPv4 и IPv6




Отображает информацию о членстве в многоадресной группе для IPv4 и IPv6.




# netstat -g







17. Циклический вывод информации Netstat




Чтобы получать информацию netstat каждые несколько секунд, используйте команду приведенную ниже. Она будет непрерывно выводить информацию, через каждые несколько секунд.




# netstat -c







18. Поиск не поддерживаемых адресов




Команда выводит список не настроенных семейств адресов с некоторой полезной информацией.




# netstat --verbose







19. Поиск программ прослушивания




Узнайте, сколько программ прослушивает работу на портов.




# netstat -ap | grep http







20. Отображение статистики сети RAW




Команда отображает статистику сети RAW со всей сопутствующей полезной информацией.




# netstat --statistics --raw







Источник: https://blog.sedicomm.com/2017/07/11/20-komand-netstat-dlya-upravleniya-setyu-linux-i-windows/



2021-03-07T11:50:18
Утилиты командной строки

Grep поиск текста в файлах Linux

Grep поиск текста в файлах Linux




Иногда может понадобится найти файл, в котором содержится определённая строка или найти строку в файле, где есть нужное слово. В Linux всё это делается с помощью одной очень простой, но в то же время мощной утилиты grep. С её помощью можно искать не только строки в файлах, но и фильтровать вывод команд, и много чего ещё.




В этой инструкции мы рассмотрим, как выполняется поиск текста в файлах Linux, подробно разберём возможные опции grep, а также приведём несколько примеров работы с этой утилитой.




Что такое grep?




Команда grep (расшифровывается как global regular expression print) — одна из самых востребованных команд в терминале Linux, которая входит в состав проекта GNU. Секрет популярности — её мощь, она даёт возможность пользователям сортировать и фильтровать текст на основе сложных правил.




Утилита grep решаем множество задач, в основном она используется для поиска строк, соответствующих строке в тексте или содержимому файлов. Также она может находить по шаблону или регулярным выражениям. Команда в считанные секунды найдёт файл в с нужной строчкой, текст в файле или отфильтрует из вывода только пару нужных строк. А теперь давайте рассмотрим, как ей пользоваться.




Синтаксис grep




Синтаксис команды выглядит следующим образом:




$ grep [опции] шаблон [имя файла…]




Или:




$ команда | grep [опции] шаблон




  • Опции — это дополнительные параметры, с помощью которых указываются различные настройки поиска и вывода, например количество строк или режим инверсии.
  • Шаблон — это любая строка или регулярное выражение, по которому будет вестись поиск
  • Файл и команда — это то место, где будет вестись поиск. Как вы увидите дальше, grep позволяет искать в нескольких файлах и даже в каталоге, используя рекурсивный режим.




Возможность фильтровать стандартный вывод пригодится,например, когда нужно выбрать только ошибки из логов или найти PID процесса в многочисленном отчёте утилиты ps.




Опции




Давайте рассмотрим самые основные опции утилиты, которые помогут более эффективно выполнять поиск текста в файлах grep:




  • -b — показывать номер блока перед строкой;
  • -c — подсчитать количество вхождений шаблона;
  • -h — не выводить имя файла в результатах поиска внутри файлов Linux;
  • -i — не учитывать регистр;
  • — l — отобразить только имена файлов, в которых найден шаблон;
  • -n — показывать номер строки в файле;
  • -s — не показывать сообщения об ошибках;
  • -v — инвертировать поиск, выдавать все строки кроме тех, что содержат шаблон;
  • -w — искать шаблон как слово, окружённое пробелами;
  • -e — использовать регулярные выражения при поиске;
  • -An — показать вхождение и n строк до него;
  • -Bn — показать вхождение и n строк после него;
  • -Cn — показать n строк до и после вхождения;




Все самые основные опции рассмотрели и даже больше, теперь перейдём к примерам работы команды grep Linux.




Примеры использования




С теорией покончено, теперь перейдём к практике. Рассмотрим несколько основных примеров поиска внутри файлов Linux с помощью grep, которые могут вам понадобиться в повседневной жизни.




Поиск текста в файлах




В первом примере мы будем искать пользователя User в файле паролей Linux. Чтобы выполнить поиск текста grep в файле /etc/passwd введите следующую команду:




 grep User /etc/passwd




В результате вы получите что-то вроде этого, если, конечно, существует такой пользователь:




User:x:1000:1000:User,,,:/home/User:/bin/bash




А теперь не будем учитывать регистр во время поиска. Тогда комбинации ABC, abc и Abc с точки зрения программы будут одинаковы:




grep -i "user" /etc/passwd




Вывести несколько строк




Например, мы хотим выбрать все ошибки из лог-файла, но знаем, что в следующей строчке после ошибки может содержаться полезная информация, тогда с помощью grep отобразим несколько строк. Ошибки будем искать в Xorg.log по шаблону «EE»:




 grep -A4 "EE" /var/log/xorg.0.log




Выведет строку с вхождением и 4 строчки после неё:




grep -B4 "EE" /var/log/xorg.0.log




Выведет целевую строку и 4 строчки до неё:




grep -C2 "EE" /var/log/xorg.0.log




Выведет по две строки с верху и снизу от вхождения.




Регулярные выражения в grep




Регулярные выражения grep — очень мощный инструмент в разы расширяющий возможности поиска текста в файлах. Для активации этого режима используйте опцию -e. Рассмотрим несколько примеров:




Поиск вхождения в начале строки с помощью спецсимвола «^», например, выведем все сообщения за ноябрь:




grep "^Nov 10" messages.1

Nov 10 01:12:55 gs123 ntpd[2241]: time reset +0.177479 s
Nov 10 01:17:17 gs123 ntpd[2241]: synchronized to LOCAL(0), stratum 10




Поиск в конце строки — спецсимвол «$»:




grep "terminating.$" messages

Jul 12 17:01:09 cloneme kernel: Kernel log daemon terminating.
Oct 28 06:29:54 cloneme kernel: Kernel log daemon terminating.




Найдём все строки, которые содержат цифры:




grep "[0-9]" /var/log/Xorg.0.log




Вообще, регулярные выражения grep — это очень обширная тема, в этой статье я лишь показал несколько примеров. Как вы увидели, поиск текста в файлах grep становиться ещё эффективнее. Но на полное объяснение этой темы нужна целая статья, поэтому пока пропустим её и пойдем дальше.




Рекурсивное использование grep




Если вам нужно провести поиск текста в нескольких файлах, размещённых в одном каталоге или подкаталогах, например в файлах конфигурации Apache — /etc/apache2/, используйте рекурсивный поиск. Для включения рекурсивного поиска в grep есть опция -r. Следующая команда займётся поиском текста в файлах Linux во всех подкаталогах /etc/apache2 на предмет вхождения строки mydomain.com:




grep -r "mydomain.com" /etc/apache2/




В выводе вы получите:




grep -r "zendsite" /etc/apache2/

/etc/apache2/vhosts.d/zendsite_vhost.conf: ServerName zendsite.localhost
/etc/apache2/vhosts.d/zendsite_vhost.conf: DocumentRoot /var/www/localhost/htdocs/zendsite
/etc/apache2/vhosts.d/zendsite_vhost.conf: <Directory /var/www/localhost/htdocs/zendsite>




Здесь перед найденной строкой указано имя файла, в котором она была найдена. Вывод имени файла легко отключить с помощью опции -h:




grep -h -r "zendsite" /etc/apache2/

ServerName zendsite.localhost
DocumentRoot /var/www/localhost/htdocs/zendsite
<Directory /var/www/localhost/htdocs/zendsite>




Поиск слов в grep




Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить утилиту искать по содержимому файлов в Linux только те строки, которые выключают искомые слова с помощью опции -w:




grep -w "abc" имя_файла




Поиск двух слов




Можно искать по содержимому файла не одно слово, а два сразу:




 egrep -w 'word1|word2' /path/to/file




Количество вхождений строки




Утилита grep может сообщить, сколько раз определённая строка была найдена в каждом файле. Для этого используется опция -c (счетчик):




grep -c 'word' /path/to/file




C помощью опции -n можно выводить номер строки, в которой найдено вхождение, например:




grep -n 'root' /etc/passwd




Получим:




1:root:x:0:0:root:/root:/bin/bash




Инвертированный поиск в grep




Команда grep Linux может быть использована для поиска строк в файле, которые не содержат указанное слово. Например, вывести только те строки, которые не содержат слово пар:




 grep -v пар /path/to/file




Вывод имени файла




Вы можете указать grep выводить только имя файла, в котором было найдено заданное слово с помощью опции -l. Например, следующая команда выведет все имена файлов, при поиске по содержимому которых было обнаружено вхождение primary:




grep -l 'primary' *.c




Цветной вывод в grep




Также вы можете заставить программу выделять другим цветом вхождения в выводе:




 grep --color root /etc/passwd




Получится:







Выводы




Вот и всё. Мы рассмотрели использование команды grep для поиска и фильтрации вывода команд в операционной системе Linux. При правильном применении эта утилита станет мощным инструментом в ваших руках. Если у вас остались вопросы, пишите в комментариях!




Источник: https://losst.ru/gerp-poisk-vnutri-fajlov-v-linux



2021-03-07T11:28:48
Утилиты командной строки