From e63f21c585ba00bf308ac8498ec52bcf9f11b446 Mon Sep 17 00:00:00 2001 From: thest1tch Date: Mon, 19 Jun 2023 17:21:56 +0500 Subject: [PATCH] add new --- docs/images/other/office/excel_vba_01.png | Bin docs/images/ubuntu/docker-and-ufw.jpg | Bin 0 -> 47378 bytes docs/ubuntu/docker-ufw.md | 152 ++++++++++++++++++++++ docs/ubuntu/hpe/hpe-mcp.md | 73 +++++++++++ docs/ubuntu/telegraf.md | 58 +++++++++ mkdocs.yml | 4 + 6 files changed, 287 insertions(+) mode change 100644 => 100755 docs/images/other/office/excel_vba_01.png create mode 100644 docs/images/ubuntu/docker-and-ufw.jpg create mode 100644 docs/ubuntu/docker-ufw.md create mode 100644 docs/ubuntu/hpe/hpe-mcp.md create mode 100644 docs/ubuntu/telegraf.md diff --git a/docs/images/other/office/excel_vba_01.png b/docs/images/other/office/excel_vba_01.png old mode 100644 new mode 100755 diff --git a/docs/images/ubuntu/docker-and-ufw.jpg b/docs/images/ubuntu/docker-and-ufw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c9045610f9cfb631c1097f88c95e26198bbf6fb GIT binary patch literal 47378 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 F{tHB UFW неосознанно обманывает вас и не показывает открытые порты контейнеров Docker. + +Это может стать серьезной проблемой, если вы не решите ее. + +Например: при запуске дашборда администратора на порту 8000 и добавлении правила только на доступ с определенных ip адресов (белый список). В обычных условиях все будет хорошо, особенно если дашборд имеет собственную аутентификацию. UFW покажет правило брандмауэра, как внесенное в белый список. Дашборд будет доступен вам с тех адресов, которые вы указали в правиле. **НО, если запущено через Docker, то по умолчанию оно будет видно на порту 8000 из любого места**. + +## Исправление конфигурации Docker +Есть решение, которое предлагает Docker: отредактируйте _/etc/default/docker_ или _/etc/docker/daemon.json_ и просто отключите функциональность iptables в Docker: + +``` +DOCKER_OPTS="--iptables=false" +``` +Это работает, однако это лишь половинчатое решение. + +Это лишает Docker возможности управлять собственными сетями и может привести к тому, что контейнеры вообще не смогут получить доступ в интернет из коробки. + +Это все еще может работать, но вам придется вручную поддерживать правила iptables для контейнеров Docker и пользовательских сетей, что сложно, раздражает и лишает цель простоты UFW. + +Реальное решение сложное, но, к счастью, достаточно распространенное, поэтому на [Github](https://github.com/chaifeng/ufw-docker) есть полезная публикация с подробным описанием проблемы и шагов по ее устранению. + +По сути, вам нужно изменить конфигурацию UFW в _/etc/ufw/after.rules_ и добавить следующий блок в конце: + +``` +# BEGIN UFW AND DOCKER +*filter +:ufw-user-forward - [0:0] +:ufw-docker-logging-deny - [0:0] +:DOCKER-USER - [0:0] +-A DOCKER-USER -j ufw-user-forward +-A DOCKER-USER -j RETURN -s 10.0.0.0/8 +-A DOCKER-USER -j RETURN -s 172.16.0.0/12 +-A DOCKER-USER -j RETURN -s 192.168.0.0/16 +-A DOCKER-USER -p udp -m udp --sport 53 --dport 1024:65535 -j RETURN +-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16 +-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8 +-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12 +-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 192.168.0.0/16 +-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 10.0.0.0/8 +-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 172.16.0.0/12 +-A DOCKER-USER -j RETURN +-A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW DOCKER BLOCK] " +-A ufw-docker-logging-deny -j DROP +COMMIT +# END UFW AND DOCKER +``` + +### Разберем подробнее что делают строчки. + +Следующие правила позволяют частным сетям посещать друг друга. Как правило, частные сети пользуются большим доверием, чем сети общего пользования. +``` +-A DOCKER-USER -j RETURN -s 10.0.0.0/8 +-A DOCKER-USER -j RETURN -s 172.16.0.0/12 +-A DOCKER-USER -j RETURN -s 192.168.0.0/16 +``` +Следующие правила позволяют UFW управлять тем, разрешено ли общедоступным сетям посещать службы, предоставляемые контейнером Docker. Чтобы мы могли управлять всеми правилами брандмауэра в одном месте. +``` +-A DOCKER-USER -j ufw-user-forward +``` +Следующие правила блокируют запросы на подключение, инициированные всеми общедоступными сетями, но разрешают внутренним сетям доступ к внешним сетям. + +- Для протокола TCP предотвращает активное установление TCP-соединения из общедоступных сетей. +- Для протокола UDP блокируется любой доступ к портам меньше 32767. + +Зачем этот порт? Поскольку протокол UDP не имеет состояния, невозможно заблокировать сигнал рукопожатия, который инициирует запрос на соединение, как это делает TCP. + +Для GNU/Linux мы можем найти диапазон локальных портов в файле `/proc/sys/net/ipv4/ip_local_port_range`. Диапазон по умолчанию`32768-60999`. + +При доступе к службе протокола UDP из запущенного контейнера локальный порт будет выбран случайным образом из диапазона портов, и сервер будет возвращать данные на этот случайный порт. Следовательно, мы можем предположить, что порт прослушивания протокола UDP во всех контейнерах меньше 32768. Это причина того, что мы не хотим, чтобы общедоступные сети обращались к портам UDP меньше 32768. +``` +-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16 +-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8 +-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12 +-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 192.168.0.0/16 +-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 10.0.0.0/8 +-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.16.0.0/12 +-A DOCKER-USER -j RETURN +``` +## Утилита для изменений + +Ручные правки это хорошо, но в [этом репозитории](https://github.com/chaifeng/ufw-docker) есть хорошая утилита, которая автоматизирует это и предоставляет полезные команды для проверки реального состояния брандмауэра. +```bash +sudo wget -O /usr/local/bin/ufw-docker https://github.com/chaifeng/ufw-docker/raw/master/ufw-docker +sudo chmod +x /usr/local/bin/ufw-docker +``` +Затем установите конфиг и перезапустите UFW. +```bash +ufw-docker install +sudo systemctl restart ufw +``` +После перезапуска изменения должны применяться автоматически, но если они не применяются, вам может потребоваться перезапустить Docker или вашу машину в целом. + +После включения все порты должны быть правильно заблокированы. + +Список доступных команд: +```bash +ufw-docker help +ufw-docker install +ufw-docker status +ufw-docker allow webapp +ufw-docker allow webapp 80 +ufw-docker allow webapp 53/udp +ufw-docker list webapp +ufw-docker delete allow webapp 80/tcp +ufw-docker delete allow webapp +``` + +## Белые списки портов контейнеров Docker с помощью UFW + +Это решение потребует от вас немного другой конфигурации портов. + +В утилите ufw-docker есть команда, которая выборочно вносит порты в белый список для определенных контейнеров Docker. +```bash +ufw-docker allow httpd 80 +``` +Однако если вы хотите использовать более продвинутое правило, например, белый список на основе IP, вам придется использовать ufw route allow +```bash +ufw route allow proto tcp from 1.2.3.4 to any port 9443 +``` + +## Разница между ufw-user-forward и ufw-user-input + +### ufw-user-input + +| Плюсы | Минусы | +|--|--| +| Прост в использовании и понимании, поддерживает старые версии Ubuntu. Например, чтобы разрешить публике посещать опубликованный порт, порт контейнера которого — `8080`, используйте команду: `ufw allow 8080` | Кроме разрешения доступа к портам контейнеров, он также разрешает доступ к портам хоста. Например, если служба запущена на хосте, а порт — `8080`. Команда `ufw allow 8080` позволяет общедоступной сети посещать службу хоста и все опубликованные порты, контейнеры которых имеют порт `8080`. Но мы просто хотим дать доступ к службе, работающей на хосте или работающую внутри контейнеров. Но не вместе. Чтобы избежать этой проблемы, нам может понадобиться использовать команду, подобную следующей, для всех контейнеров: `ufw allow proto tcp from any to 172.16.0.3 port 8080` | + +### ufw-user-forward + +| Плюсы | Минусы | +|--|--| +| Невозможно предоставить доступ к службам, работающим одновременно на хостах и в контейнерах, с помощью одной и той же команды. Например, если мы хотим опубликовать порт `8080` контейнеров, используем следующую команду: `ufw route allow 8080`. Общедоступная сеть может получить доступ ко всем опубликованным портам, порты контейнеров которых имеют статус `8080`. Но порт `8080` хоста по-прежнему недоступен из общедоступной сети. Если мы хотим это сделать, выполните следующую команду, чтобы разрешить публичный доступ к порту на хосте отдельно: `ufw allow 8080` | Не поддерживает старые версии Ubuntu, и команда немного сложнее. Но вы можете использовать мой скрипт [https://github.com/chaifeng/ufw-docker](https://github.com/chaifeng/ufw-docker) | + +## Вывод + +Если мы используем более старую версию Ubuntu, мы можем использовать `ufw-user-input` chain. Но будьте осторожны, чтобы не открывать службы, которые не должны быть раскрыты. + +Если мы используем более новую версию Ubuntu, которая является подкомандой поддержки `ufw route`, нам лучше использовать `ufw-user-forward` цепочку и использовать `ufw route` команду для управления правилами брандмауэра для контейнеров. \ No newline at end of file diff --git a/docs/ubuntu/hpe/hpe-mcp.md b/docs/ubuntu/hpe/hpe-mcp.md new file mode 100644 index 0000000..694e9fe --- /dev/null +++ b/docs/ubuntu/hpe/hpe-mcp.md @@ -0,0 +1,73 @@ + +Недавно у меня появился на руках сервер HPE ML30 Gen10. Мне больше всего нравится Ubuntu Server, поэтому я решил установить его на сервере. Чуть позднее я узнал, что у HP есть утилиты, которые вы можете установить в Linux для изменения и просмотра настроек и информации на уровне системы, что довольно круто. + +Я хотел попробовать их, однако Ubuntu не входит в группу ОС (Red Hat и SUSE), которые получают пакеты [обновлений](https://downloads.linux.hpe.com/SDR/project/spp/) . Так что документация и поддержка минимальны, и мне потребовалось немного времени, чтобы во всем разобраться. + +> Отказ от ответственности: я работаю над сервером Gen 10, поэтому +> устанавливаемые пакеты могут отличаться от других поколений. + + ## Установка через APT + +Во-первых, чтобы установить утилиты, вам нужно добавить [источник](https://downloads.linux.hpe.com/SDR/project/mcp/) в **apt**: +```bash +sudo echo "deb http://downloads.linux.hpe.com/SDR/repo/mcp dist/project_ver non-free" > /etc/apt/sources.list.d/mcp.list +``` + +Где: +- **dist**: jammy, bullseye, focal, buster, bionic, xenial, precise, stretch, jessie +- **project_ver**: current, 12.40, 12.30, 12.20, 12.05, 12.00, 11.30, 11.21, 11.05 + +Для **Ubuntu Server 22** команда будет такой: +```bash +sudo echo "deb http://downloads.linux.hpe.com/SDR/repo/mcp jammy/current non-free" > /etc/apt/sources.list.d/mcp.list +``` +Затем вам необходимо зарегистрировать [открытые ключи HPE](https://downloads.linux.hpe.com/SDR/keys.html) (в этой же команде, идет преобразование ключей в новый формат, чтобы при обновлении пакетов, не выходило предупреждение): +```bash +curl https://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add - +apt-key export 5CE2D476 | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/hpPublicKey2048.gpg +sudo apt-key --keyring /etc/apt/trusted.gpg del 5CE2D476 + +curl https://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add - +apt-key export B1275EA3 | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/hpPublicKey2048_key1.gpg +sudo apt-key --keyring /etc/apt/trusted.gpg del B1275EA3 + +curl https://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add - +apt-key export 26C2B797 | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/hpePublicKey2048_key1.gpg +sudo apt-key --keyring /etc/apt/trusted.gpg del 26C2B797 +``` + Теперь вам просто нужно обновить исходники apt и установить утилиты. +```bash +sudo apt update +``` + +Несмотря на имена пакетов, указанные на [странице HPE](https://downloads.linux.hpe.com/SDR/project/mcp/) , я обнаружил, что некоторые пакеты просто не существуют или имеют другие имена. + +Список доступных компонентов для установки: + +| | | +| - | - | +| **hp-health** | HPE System Health Application and Command line Utilities (Gen9 and earlier) | +| **hponcfg** | HPE RILOE II/iLO online configuration utility | +| **amsd** | HPE Agentless Management Service (Gen10 only) | +| **hp-ams** | HPE Agentless Management Service (Gen9 and earlier) | +| **hp-snmp-agents** | Insight Management SNMP Agents for HPE ProLiant Systems (Gen9 and earlier) | +| **hpsmh** | HPE System Management Homepage (Gen9 and earlier) | +| **hp-smh-templates** | HPE System Management Homepage Templates (Gen9 and earlier) | +| **ssacli** | HPE Command Line Smart Storage Administration Utility | +| **ssaducli** | HPE Command Line Smart Storage Administration Diagnostics | +| **ssa** | HPE Array Smart Storage Administration Service | +| **storcli** | MegaRAID command line interface | + +Устанавливаются просто: `sudo apt install `. Например `sudo apt install amsd` + +## Установка через пакеты .deb + + 1. Идем в [репозиторий HPE для Linux](https://downloads.linux.hpe.com), раздел **mpc** — Management Component Pack for ProLiant. + 2. Ищем Ubuntu. + 3. Дальше *pool* → *non-free*. + 4. Находим нужный пакет, копируем ссылку, качаем и устанавливаем. Для примера будет **amsd**: + ```bash + cd /tmp + wget https://downloads.linux.hpe.com/SDR/repo/mcp/Ubuntu/pool/non-free/amsd_3.1.0-1745.130-jammy_amd64.deb + dpkg -i amsd_3.1.0-1745.130-jammy_amd64.deb + ``` \ No newline at end of file diff --git a/docs/ubuntu/telegraf.md b/docs/ubuntu/telegraf.md new file mode 100644 index 0000000..f74f8f0 --- /dev/null +++ b/docs/ubuntu/telegraf.md @@ -0,0 +1,58 @@ +Telegraf это агент, написанный на Go для сбора метрик производительности из системы и сервисов, где он запущен. Собираемые метрики отправляются в **InfluxD** или в другие поддерживаемые хранилища. Из InfluxDB можно визуализировать данные и производительность используя Grafana. [Github](https://github.com/influxdata/telegraf/) + +Базовый способ использования Telegraf следующий: + +1. Агент Telegraf устанавливается на все сервера, откуда нужно собирать метрики (Ubuntu, Debian, Windows, CentOS и прочие) +2. Метрики собираются и отправляются в InfluxDB +3. Источник данных InfluxDB добавляется в Grafana +4. Созданы графики Grafana - они получают данные из источника данных InfluxDB. + +Установка Telegraf на Ubuntu 22.04 производится из репозитория Influxdata. После добавления репозитория пакет можно установить с помощью диспетчера пакетов **apt**. Добавьте репозиторий InfluxData в файл `/etc/apt/sources.list.d/influxdata.list` +```bash +wget -q https://repos.influxdata.com/influxdata-archive_compat.key +echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null +echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list +``` + +Обновить **apt** индекс и установить Telegraf + +```bash +sudo apt update && sudo apt install telegraf -y +``` + +Запустить и включить сервис, для запуска при загрузке + +```bash +sudo systemctl enable --now telegraf +sudo systemctl is-enabled telegraf +``` + +Проверить статус сервиса + +```bash +systemctl status telegraf +``` + +## Решение проблем + +### S.M.A.R.T. Input плагин + +You will need the following in your telegraf config: + +[[inputs.smart]] + use_sudo = true + +You will also need to update your sudoers file: + +$ visudo +# For smartctl add the following lines: +Cmnd_Alias SMARTCTL = /usr/bin/smartctl +telegraf ALL=(ALL) NOPASSWD: SMARTCTL +Defaults!SMARTCTL !logfile, !syslog, !pam_session + +# For nvme-cli add the following lines: +Cmnd_Alias NVME = /path/to/nvme +telegraf ALL=(ALL) NOPASSWD: NVME +Defaults!NVME !logfile, !syslog, !pam_session + +https://github.com/influxdata/telegraf/tree/master/plugins/inputs/smart \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 6f8a61d..f356d01 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -19,7 +19,11 @@ nav: - Traefik: - Traefik Forward Auth: docker-compose/traefik-forward-auth.md - Ubuntu 22: + - HPE: + - Management Component Pack: ubuntu/hpe/hpe-mcp.md - MariaDB: ubuntu/mariadb.md + - Telegraf: ubuntu/telegraf.md + - Docker+UFW: ubuntu/docker-ufw.md - Proxmox: - CT Template: proxmox/ct-template.md - Помойка: