Как поддерживать точность часов при ограниченном доступе в Интернет

То, о чем вы просите, кажется мне похожим на написание стандартных скриптов мониторинга.

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

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

Я бы рекомендовал использовать один из языков JVM - Java, Scala, Groovy - там есть драйверы для любой базы данных и прочего. Также хорошим выбором будет C#, так как он имеет все библиотеки.

Если нет, то Python, PHP, Perl - здесь также много драйверов и API.

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

Поскольку вы пишете только скрипты, вы можете использовать любой существующий фронт-энд сетевого мониторинга, например Nagios с Thruk, для обеспечения их выполнения по расписанию и уведомлений/отчетов.

Более того, вы можете рисовать метрики с помощью pnp4nagios.

Также обратите внимание, что сканирование уязвимостей и мониторинг - это две разные вещи. Для первого у вас есть OpenVAS и Nessus, для второго - Nagios, Solar Winds и другие. Что вы хотите сделать, так это использовать пользовательские сценарии, например, в Nagios.

Это также очень хороший способ изучить программирование. Все, что вам нужно, это делать очень простые сценарии, так что таким образом вы сможете многому научиться без особого напряжения. Выделите 2-3 часа в день, и таким образом вы сможете получить большое представление о своей инфраструктуре. Вы можете начать с Eclipse или IntelliJ и использовать Gradle для создания простых проектов. Поскольку в Gradle хорошая автоматизация и хорошая поддержка Java, вы будете счастливы в долгосрочной перспективе. И вы можете обратиться за помощью к команде разработчиков. Проверьте в документации плагина Nagios, какие строки должны быть возвращены для построения графиков с помощью pnp4nagios.

Вы также можете попробовать заносить логи в базу данных, что также очень полезно.

Теперь еще немного практической информации. Вы можете запускать java мини-программы (плагины Nagios) удаленно или локально на машине Nagios (предпочтительнее). В этом случае вы подключаетесь к системе по ssh (на Java или Python), читаете файл, загружаете его и анализируете. Таким образом, в некоторых сценариях вам понадобятся некоторые сетевые операции.

Вы также можете использовать облачные API.

И вы можете использовать SNMP с существующими плагинами Nagios, так что вам не нужна Java для всего.

Некоторые базы данных вы можете контролировать с помощью специальных решений, если вы не делаете скрипты вручную (для чего Nagios является лучшим), вы можете найти в Интернете что-то, что будет контролировать производительность вашей базы данных.

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

И вот как это может быть сделано правильно.

  1. База данных вашей инфраструктуры, например, все хосты и так далее, возможно, с автоматическим обнаружением. Это связано с инфраструктурой сборки / автоматизации. Это может быть более одной базы данных, если вы используете облако.

  2. Другая база данных с журналами и другими, например, документами, так что она содержит журнал выполнения Nagios и результаты скриптов, запущенных в (4). Сюда можно добавить любые другие журналы. Подойдет MongoDB. Cassandra тоже может это сделать.

  3. Nagios

    • Запустите проверку, которая заглядывает в базу данных (2), и посмотрите, были ли проверки успешными и каков результат
    • Проверьте, запущен ли фоновый скрипт, проверив журналы из базы данных (2)
  4. Фоновые скрипты запускают проверку пароля / доступа

    • Если каждая система из базы данных (1) не имеет пустого пароля root или пароля по умолчанию
    • Если каждая система из базы данных (1) разрешает определенные входы
    • Загрузите результаты и журналы в базу данных (2)
    • Это может также запустить OpenVAS и результат может быть загружен в (2)
  5. Как результат, вы можете обновить сборку (1) или серверы из (1), если есть пароль по умолчанию или нет пароля. Вы также можете сделать сборку (1) генерировать проверки для Nagios для мониторинга и получения определенных метрик. Вы можете запустить множество систем Nagios. База данных (2) может быть использована для получения логов из различных источников (для этого вам понадобятся адаптеры). На основе этих журналов вы можете увидеть, что именно было взломано, настроить политики и т.д.

Кроме того, Nessus и OpenVAS - это огромные нагрузки. Поэтому использование Nagios с выделенными проверками для хостов является простым и эффективным способом. Также Nessus и OpenVAS не являются хорошими решениями для проверки паролей по умолчанию или отсутствия паролей. Выделенный скрипт - лучший способ решения этой проблемы.

3
21.06.2017, 15:42
3 ответа

Используйте модуль DS3231 RTC (I2C) и обновите его время с сервера NTP. Это более точно, чем встроенный RTC моего высококлассного бизнес-ноутбука.

Следующий модуль часов реального времени DS3231 для платы RTC Raspberry Pi | Amazon

Примечание. Отрежьте/отпаяйте крошечный SMD-диод, катод которого напрямую подключен к положительной клемме аккумулятора. Используйте тест 200 Ом/непрерывность на вашем цифровом мультиметре, чтобы найти его. Он похож на маленькую стеклянную бусину. Аккумулятор заряжать не нужно, но некоторые модули делают это в любом случае.

Добавление часов реального времени DS3231 к Raspberry Pi

Не используйте DS1307, он несколько дрейфует. минут в месяц.

Обновление: вы также можете использовать модуль Si4703 для получения времени и даты — см. сайт SparkFuns.

2
27.01.2020, 21:30

Похоже, Pi не может связаться со службой NTP. В CentOS по умолчанию включен встроенный брандмауэр -, который блокирует большую часть входящего трафика. Чтобы разрешить входящие запросы NTP, выполните следующие действия в поле CentoOS 7:

firewall-cmd --permanent --add-service ntp
firewall-cmd --reload
-1
27.01.2020, 21:30

Этот ответ предлагается после того, как решение было найдено в комментариях.

Проблемы, которые необходимо решить::

  1. Ясность

    Первоначально не было ясно, какие файлы конфигурации предназначены для системы CentOS (нет ), а какие для Pi (некоторые ). Более поздние обновления вопроса прекрасно прояснили это.

  2. Сервер CentOS изначально не был синхронизирован со своими вышестоящими серверами.

    Это занимает несколько итераций интервала опроса, и в идеале доступность по крайней мере одного сервера должна быть 377. Это восьмеричное представление битового поля, которое показывает количество последних успешных запросов. Каждый интервал помещает 1или 0на младший значащий конец битового поля. 377соответствует 11-111-111.

  3. Pi не удалось синхронизироваться с вышестоящим сервером CentOS

    Брандмауэр iptablesна сервере CentOS не был виноват, но его нужно было настроить так, чтобы он разрешал входящие UDP-запросы от Pi к порту 123 и возвращал соответствующие ответы-firewall-cmd --permanent --add-service ntp.Он также должен был разрешить исходящие запросы к вышестоящим серверам на UDP/123 и их соответствующие ответы. Использование серверов из пула NTP немного усложняет эту задачу, поскольку IP-адреса серверов включаются в пул и из него ежечасно. Одним из вариантов здесь было бы разрешить весь исходящий трафик по UDP/123 и совпадающие ответы.

    Выяснилось, что систему CentOS защищал аппаратный брандмауэр, и он не был настроен на разрешение NTP-трафика от Pi.

0
27.01.2020, 21:30

Теги

Похожие вопросы