пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Графический интерфейс Cisco Unified Communications Manager (CUCM) имеет раздел Disaster Recovery System (DRS), который предназначен для проведения резервного копирования (backup) и восстановления системы (restore). Но бывают ситуации, когда GUI недоступен, например, из-за проблем с сетью. В этом случае, провести процедуры бэкапирования и восстановления можно через консоль CLI и сейчас мы расскажем как это сделать.
Процедура бэкапа
Перед началом процедуры, у вас должен быть настрое SFTP сервер, куда вы будете заливать бэкап с CUCM.
Для начала нужно добавить сервер, куда мы будем загружать бэкап. Для этого вводим команду:
utils disaster_recovery device add network [number of backups]
Где:
backup device name - Имя устройства, куда будем заливать бэкап;
path - Путь, куда будем заливать бэкап на данном устройстве;
ip-address of remote server - IP адрес удалённого устройства;
username - Имя пользователя;
number of backups - Количество резервных копий
После ввода данной команды, вас попросят ввести пароль пользователя, из под которым вы хотите осуществить бэкап (в нашем случае - ccmadmin)
admin: utils disaster_recovery device add network merionbckp ./ 10.20.30.123 ccmadmin
Please enter password to connect to network server 10.20.30.123:****
drfCliMsg: Backup Device has been saved successfully.
Проверим, что устройство для бэкапа успешно добавилось, для этого введём команду:
utils disaster_recovery device list
В выводе мы должны увидеть устройство, добавленное ранее:
admin:utils disaster_recovery device list
Device Name Device Type Device Path
--------------------------------------------------------------
merionbckp NETWORK ./
Волшебно! Теперь мы можем осуществить бэкап. Для этого пишем в консоли:
utils disaster_recovery backup network
Где:
backup device name - Имя устройства, куда будем заливать бэкап;
featurelist - Список функционала, который нужно забэкапить;
Для того, чтобы посмотреть какой функционал доступен для бэкапирования наберите команду: utils disaster_recovery show_registration , где servername - имя сервера, на котором осуществляется бэкап.
admin:utils disaster_recovery backup network UCM,CDR_CAR,PLM merionbckp
drfCliMsg: Backup initiated successfully. Please run 'utils disaster_recovery status backup' command to see the status
Всё, бэкап запущен! Чтобы проверить статус, нам предлагают ввести: utils disaster_recovery status backup
admin:utils disaster_recovery status backup
Status: SUCCESS :Backup Completed...
Tar Filename: 2019-02-16-04-21-37.tar
Storage Location: NETWORK
Operation: backup
Percentage Complete: 100
PLM CCM01 ELM-AGENT SUCCESS Sat Feb 16 04:17:25 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_plm_elm-agent.log
PLM CCM01 ELM-SERVER SUCCESS Sat Feb 16 04:17:26 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_plm_elm-server.log
CDR_CAR CCM01 CAR SUCCESS Sat Feb 16 04:17:27 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_cdr_car_car.log
UCM CCM01 BAT SUCCESS Sat Feb 16 04:19:23 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_bat.log
UCM CCM01 CCMPREFS SUCCESS Sat Feb 16 04:19:25 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_ccmprefs.log
UCM CCM01 PLATFORM SUCCESS Sat Feb 16 04:19:30 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_platform.log
UCM CCM01 TCT SUCCESS Sat Feb 16 04:19:34 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_tct.log
UCM CCM01 SYSLOGAGT SUCCESS Sat Feb 16 04:19:35 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_syslogagt.log
UCM CCM01 CDPAGT SUCCESS Sat Feb 16 04:19:36 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_CCM01_ucm_cdpagt.log
UCM CCM01 CLM SUCCESS Sat Feb 16 04:19:37 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_clm.log
UCM CCM01 CCMDB SUCCESS Sat Feb 16 04:19:37 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_ccmdb.log
UCM CCM01 TFTP SUCCESS Sat Feb 16 04:21:37 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_tftp.log
UCM CCM01 ANN SUCCESS Sat Feb 16 04:21:33 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_ann.log
UCM CCM01 MOH SUCCESS Sat Feb 16 04:21:34 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ccm01_ucm_moh.log
Всё, бэкап готов!
Процедура восстановления
Чтобы восстановить конфигурацию CUCM из бэкапа, нужно сначала посмотреть – что доступно для восстановления на удалённом сервере? Проверить это можно командой:
admin:utils disaster_recovery show_backupfiles merionbckp
2019-02-16-04-21-37
2018-12-25-21-52-19
Выбираем нужный нам бэкап и вводим следующую команду:
admin:utils disaster_recovery restore network 10.20.30.123 2019-02-16-04-21-37 merionbckp
drfCliMsg: WARNING! There are nodes in current production cluster but NOT present in the backup. These nodes will be removed if you restore the Publisher. If you want to keep these nodes, you will need to manually re-add them after the restore.
Do you want DRS to perform a SHA-1 File Integrity Check of your backup archives y/n ?(n) : y
Please enter the comma seperated features you wish to restore. Valid features for server CCM01 are PLM,CDR_CAR,UCM:PLM,CDR_CAR,UCM
Do you want to restore database from the subscriber y/n ?(n) : n
drfCliMsg: Restore initiated successfully. Please run 'utils disaster_recovery status restore' command to see the status
ALERT: Please restart the server(s) before performing the next restore for changes to take effect. In case of a cluster, restart the entire cluster.
Теперь проверяем статус восстановления:
admin:utils disaster_recovery status restore
Status: SUCCESS :Restore Completed...
Tar Filename: 2019-02-16-04-21-37.tar
Storage Location: NETWORK
Operation: restore
Percentage Complete: 100
CDR_CAR CCM01 CAR SUCCESS Sun Feb 17 11:20:15 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_cdr_car_car.log
PLM CCM01 ELM-AGENT SUCCESS Sun Feb 17 11:24:34 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_plm_elm-agent.log
PLM CCM01 ELM-SERVER SUCCESS Sun Feb 17 11:24:34 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_plm_elm-server.log
UCM CCM01 BAT SUCCESS Sun Feb 17 11:25:06 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_bat.log
UCM CCM01 CCMPREFS SUCCESS Sun Feb 17 11:37:06 CEST 2019 activelog/platform/drf/log/2019-08-18-15-20-01_r_ccm01_ucm_ccmprefs.log
UCM CCM01 PLATFORM SUCCESS Sun Feb 17 11:37:13 CEST 2019 activelog/platform/drf/log/2019-08-18-15-20-01_r_ccm01_ucm_platform.log
UCM CCM01 TCT SUCCESS Sun Feb 17 12:11:10 CEST 2019 activelog/platform/drf/log/2019-08-18-15-20-01_r_ccm01_ucm_tct.log
UCM CCM01 SYSLOGAGT SUCCESS Sun Feb 17 12:14:19 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_syslogagt.log
UCM CCM01 CDPAGT SUCCESS Sun Feb 17 12:14:39 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_cdpagt.log
UCM CCM01 CLM SUCCESS Sun Feb 17 12:17:03 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_clm.log
UCM CCM01 CCMDB SUCCESS Sun Feb 17 12:17:05 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_ccmdb.log
UCM CCM01 TFTP SUCCESS Sun Feb 17 12:25:12 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_tftp.log
UCM CCM01 ANN SUCCESS Sun Feb 17 12:26:38 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_ann.log
UCM CCM01 MOH SUCCESS Sun Feb 17 12:26:39 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_moh.log
Зачастую взлом инфраструктуры происходит не с помощью сверхсекретных разработок или специально созданных "организмов" ("вирусов", "червей", "пауков", "дятлов" - нужное подчеркнуть), а из-за стандартных ошибок в настройках и дизайне. Ликвидировать эти недочёты - проще простого, но с такой же простотой они и создают огромные возможности для хакерских атак. Как отмечают специалисты по безопасности, появления подобных упущений в системе встречается настолько часто, что создаётся впечатление, что для таких ошибок существуют спецкурсы. Поэтому задачей данной статьи не является рассказ о самых современных методах защиты - мы просто постараемся заставить читателей задаться вопросом: "А всё ли хорошо в нашей системе безопасности и всё ли мы предусмотрели для того, чтобы конкуренты не смогли воспользоваться нашими данными и разработками и как устранить неполадки в нашей системе?".
Локальная учётная запись? Забудьте об этом.
Уж сколько раз твердили миру... Слова дедушки Крылова как нельзя лучше характеризуют данную ситуацию - она постоянно возникает и о ней всё время напоминают. Не надо (совсем нельзя) создавать доменной групповой политикой локальные учетные записи на хостах в вашем домене. Говоря военными терминами - уровень опасности красный.
Причина самая банальная - данные по записи (в том числе и пароль) хранится в открытом доступе и по умолчанию доступен всем участникам группы. Если кому интересно, то он находится в файле groups.xml, в ресурсе sysvol контроллера домена, но при этом ключ один на всех. Таким образом, любой желающий может скачать файл и путём нехитрых телодвижений стать администратором группы. Думаю о последствиях говорить не надо.
Чтобы не получилось подобных конфузов надо просто добавлять только доменные учетные записи в локальные группы на хостах.
Права юзеров - на необходимый минимум.
Каждая учётная запись имеет свои права для работы в системе и создана для работы конкретной направленности. Поэтому необходимо минимизировать права каждого пользователя системы, так чтобы они подходили под зону его ответственности. Таким образом, снизится риск утраты контроля над записью, и каждый будет знать только свою, необходимую ему информацию.
UAC - на максимум!
Поставьте на максимум User Account Control (UAC). Его, конечно, можно обойти, но он создаст лишнюю нагрузку для атаки, а время в таких вопросах - играет Вам на руку.
Никакого доступа к учетным данным и хэшам
MIMIKATZ - это утилита, которая очищает память процесса, ответственного за проверку подлинности Windows (LSASS). Затем она и выдает пароли в виде открытого текста и хеш-коды NTLM, которые злоумышленник может использовать для перемещения по сети. Чтобы защититься от неё, надо соблюдать несколько простых правил:
Обновите ваш Active Directory как минимум до 2012 R2;
Следите за обновлениями Windows и постоянно их устанавливайте;
Помещайте важные учетные записи в группу защищенных пользователей и установите параметр реестра;
Не предоставляйте учетной записи больше прав администратора, чем им нужно;
Продолжим тему NTLM, поднятую в предыдущем пункте. Его нужно запретить - от слова совсем. Есть такая замечательная штука, как pass-the-hash. Она, как это можно понять из названия, передаёт хеш NTLM на абсолютно любой хостинг, где разрешён NTLM и атакующий всё про вас узнает. Более того, его также можно передавать вместо учетной записи и ее пароля при атаках.
Навешайте ярлыков на рабочий стол
В прямом смысле - поставьте ярлыки на рабочий стол, которые будут связывать с общими файловыми ресурсами. Тем самым Вы уйдёте от сетевых дисков, а malware почти никогда не воспримет их как сетевые ресурсы. Причина, как всегда, банальная - malware путём перебора букв ищет названия дисков. Конечно, данный совет подходит не всем компаниям, но если возможность подобного похода существует - попробуйте.
Отключите скрытые файловые ресурсы!
И вновь из-за банальной причины. Они - первоочередная цель действия malware и злоумышленников. Конечно, это не все инструменты защиты инфраструктуры, но каждый случай нужно рассматривать отдельно, как и индивидуальные настройки для каждой инфраструктуры.
Представьте ситуацию, пользователи пытаются получить доступ к вашему сайту, но он не открывается. Знаете в чём дело? Возможно, есть ошибки, которые не были выявлены и решены раньше. Разочарованные пользователи покидают ваш сайт, а вы теряете лояльных пользователей.
Как решить эту проблему? Как узнать о состоянии сайта раньше пользователей?
Существует два возможных способа - eсли вы не против потратить немного денег, то можно обратиться к таким мониторинговым решениям, как StartCake и т.п. Однако если вы разработчик или не готовы тратиться ежемесячно, можете воспользоваться преимуществами API Geekflare - Site Up?
Данный API проверяет доступность сайта из разных точек.
В данном материале рассмотрим Python код, который немедленно уведомит вас через Gmail, как только сайт станет недоступен. Начнем с изучения API «Is Site Up?»
API Is Site Up?
Перед началом работы с API необходимо установить пакет requests, который в Python используется для работы с API. Но не обязательно использовать Python. Можно использовать любой другой язык. В любом случае, убедитесь, что настроили все необходимое, чтобы сделать API запрос.
Итак, для тех, кто использует Python, установите пакет запросов с помощью команды:
pip install requests
Выполните настройку для других языков (если выбран другой язык, кроме Python) и переходите к следующим шагам.
Теперь перейдите на страницу API Geekflare.
Вы можете найти различные типы API, включая «Is Site Up?». Для использования API Geekflare нам нужен ключ API, который мы можем получить через RapidAPI.
Нажмите на кнопку GET API KEY, чтобы перейти к RapidAPI.
RapidAPI откроется в новой вкладке и выглядит следующим образом:
Чтобы получить ключ API нужно создать учетную запись. Создайте учетную запись в RapidAPI, если у вас ее нет.
Затем в верхней части всех доступных API Geekflare вы увидите API «Is Site Up?», который мы ищем. Если он не активен, найдите его с помощью поиска и нажмите на него. После этого в правой стороне должно отобразиться руководство по данному API. Из раздела Code Snippets в правой части выберите Python -> Requests.
Или же если вы не используете Python, выберите другой язык с соответствующим пакетом.
Вы получите код для вызова API «Is Site Up?». Давайте изменим его немного, чтобы потом легче было добавлять код. Посмотрите на измененный код в Python.
import requests
API_URL = "https://geekflare.p.rapidapi.com/up"
def make_api_request():
headers = {
'content-type': "application/json",
'x-rapidapi-host': "geekflare.p.rapidapi.com",
'x-rapidapi-key': "YOUR_API_KEY"
}
payload = r'{"url": "https://www.geekflare.com"}'
response = requests.request("POST", API_URL, data=payload, headers=headers)
return response.json()
if __name__ == '__main__':
data = make_api_request()
print(data)
Замените API_KEY своим собственным ключом API из RapidAPI в приведенном выше коде. Он будет разным для каждого пользователя. Вы найдете его в RapidAPI в разделе Параметры заголовка:
Тот же ключ API вы сможете найти в примере кода, как показано ниже.
Несколько расположений
В приведенном выше коде сайт проверяется из одного датацентра (Нью-Йорк, США). Но мы можем посылать запросы на сайт из разных мест с указав буквенные коды стран в теле запроса. Другие доступные места - Англия (Лондон) и Сингапур. Мы можем передать данные местоположения вместе с URL-адресом сайта следующим образом:
{
"locations": [
"uk",
"us",
"sg"
],
"url": "geekflare.com"
}
Вы можете передать предпочитаемые расположения из списка.
Мы написали код, чтобы сделать запрос API, который получает данные независимо от того, работает сайт или нет. Пришло время написать еще код, который отправляет почту, когда сайт не работает.
Получение уведомления на почту
В сети можно найти немало руководств о том, как отправлять электронные письма через Gmail в Python или же использовать следующий код, который использует пакет под названием yagmail специально разработан для отправки почты из Gmail.
Перед отправкой сообщения через учетную запись Gmail необходимо включить параметр Разрешить небезопасные приложения. Вы можете включить его здесь. Посмотрим код:
def send_mail():
gmail = yagmail.SMTP("gmail", "password")
receiver = "receiver@domain.com"
subject = "Testing Subject"
body = "This is a testing mail"
gmail.send(
to=receiver,
subject=subject,
contents=body,
)
Полное руководство по yagmail можно найти здесь.
Теперь у нас есть код для запросов API и отправки почты. Следующим шагом является вызов send_mail всякий раз, когда в ответе на запрос сайт указывается как недостпный.
Итак, откуда мы знаем, что наш сайт не работает или работает? Когда мы посылаем запрос к API «Is Site Up?», он возвращает нам Python словарь с некоторыми данными как следующем скриншоте:
В данном словаре есть ключ message. Значение этого ключа и показывает нам состояние сайта. Данный ключ может иметь два значения:
Site is up
Site is down
Итак, мы отправим почту, когда получим сообщение «Site is down». Окончательный код будет выглядеть так:
import requests
import yagmail
API_URL = "https://geekflare.p.rapidapi.com/up"
def make_api_request():
headers = {
'content-type': "application/json",
'x-rapidapi-host': "geekflare.p.rapidapi.com",
'x-rapidapi-key': "API_KEY"
}
payload = r'{"url": "https://www.abcd.com"}'
response = requests.request("POST", API_URL, data=payload, headers=headers)
return response.json()
def send_mail(content):
gmail = yagmail.SMTP("gmail", "password")
receiver = "email@domain.com"
subject = "Your Site is Down"
gmail.send(
to=receiver,
subject=subject,
contents=content,
)
if __name__ == '__main__':
data = make_api_request()
message = data['message']
## seding the mail
if message == 'Site is down.':
## extracting the errors from different locations
locations_data = data['data']
mail_content = "Your site is down due to unexpected error. See the useful data to resolve errors below.
"
for location in locations_data:
mail_content += f"{location['city']}, {location['country']} - {location['error']}
"
mail_content += "
Check the error and resolve them as soon as possible."
send_mail(mail_content)
Тело сообщения можете редактировать по своему усмотрению. Мы завершили код отправки почты всякий раз, когда наш сайт не работает. Смотри образец сообщения, полученного с помощью вышеуказанного кода.
Но, есть еще проблема.
Мы должны выполнить наш код, чтобы проверить, работает ли наш сайт или нет. Частота запуска данного скрипта зависит от ваших предпочтений. Допустим, мы должны проверять сайт каждые час.
Правда, мы можем каждый час открыть терминал и запустить скрипт. Но это скучно и неэффективно. Плюс к этому, никто так не делает. Решение напрашивается само: использовать cron для автоматического выполнения нашего кода каждый час. Посмотрим, как его настроить.
Настройка Cron
Рассмотрим шаги по настройке cron в операционной системе на базе UNIX.
Открыть терминал.
Выполните команду crontab -e, которая открывает файл crontab на терминале.
Нажмите клавишу i для перехода в режим ВВОДА.
Теперь добавьте шаблон cron, пути к исполняемому файлу Python и нашему файлу, как указано ниже:
0 * * * * /usr/bin/python3 /home/sample.py
Подробно про cron можно прочесть в этой статье.
Итак, мы настроили планировщик для ежечасного запуска кода. Если нужно будет указать другое расписание, можно воспользоваться разными утилитами для генерации шаблона расписания для cron.
Пожалуй, теперь все. Мы настроили проверку сайта каждый час и получение уведомления на почту, если сайт станет недоступен.
Заключение
Автоматизация экономит много времени и работает на нас. Можно настроить cron на каком-нибудь облаке, чтобы он постоянно работал, проверял состояние сайта и уведомлял нас при сбое.
