GitHub – ведущая компания по разработке программного обеспечения и контролю версий с помощью Git.
Он позволяет нам создавать как публичные репозитории, так и частные.
Оба варианта имеют свои преимущества.
Частные репозитории защищены аутентификацией, в то время как публичные репозитории доступны всем.
Иногда мы или наши команды создаем репозитории с публичным доступом, которые могут содержать конфиденциальные данные.
- Как сканировать репозиторий GitHub на учетные данные
- gshark: сканируйте конфиденциальную информацию в Github легко и эффективно
- 🔍 Shhgit – поиск секретов в GitHub в реальном времени
Хорошей идеей будет настроить скрипт, который будет уведомлять нас о репозиториях, оставленных в открытом доступе.
В этом руководстве мы покажем shell скрипт, который проверяет наличие всех публичных репозиториев под учетной записью GitHub и отправляет уведомление по электронной почте.
Скрипт может быть запланирован в crontab для автоматизации этого процесса.
🐍 Планирование выполнения скриптов Python с помощью Crontab
Предварительные условия
Этот скрипт использует утилиты командной строки Curl и SendEmail.
🖧 В чем разница между curl и Wget?
Поэтому убедитесь, что вы установили оба пакета в своей системе.
Команда curl используется для вызова API GitHub, а SendEmail – для отправки электронной почты через SMTP-сервер.
Создание shell скрипта
Вы можете просто скопировать этот скрипт и записать его в файл в вашей системе.
Создайте скрипт в вашей системе и отредактируйте его в вашем любимом текстовом редакторе:
Скопируйте приведенное ниже содержимое и вставьте его в редактируемый файл.
#!/usr/bin/env bash ## Set your GitHub username or organization name GITHUB_USER="itsecforuru" ## Temporary files and curl binary location TEMP_FILE="/tmp/out.txt" MAIL_LOG="/tmp/github-mail.log" CURL_BIN="/usr/bin/curl" ## SMTP details for sending email notifications. SMTP_HOST="email-smtp.us-east-1.amazonaws.com" SMTP_PORT="587" SMTP_USER="XXXXXXXXXXXXXXX" SMTP_PASS="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" EMAIL_FROM="notification@example.com" EMAIL_TO="your-email@example.com" ## Script begins here. ## Find out all the GitHub repositories that are publically accessible. ${CURL_BIN} -s https://api.github.com/users/${GITHUB_USER}/repos | grep "https://github.com/[a-zA-Z0-9-]*/[a-zA-Z0-9-]*.git" > ${TEMP_FILE} ## Send an email notification if a public repository found if [ $? -eq 0 ]; then echo -e "Админ" > ${MAIL_LOG} echo -e "Мы нашли несколько публичных репозиториев в вашей учетной записи GitHub (${GITHUB_USER}) \n" >> ${MAIL_LOG} count=1 while read line; do REPO_URL=`echo ${line} | cut -d":" -f2,3 | cut -d"," -f1` echo "{count}. ${REPO_URL}" >> ${MAIL_LOG} ((count++)) done < ${TEMP_FILE} echo -e "\n\n--\nThanks" >> ${MAIL_LOG} ## Modify the email subject as per your convenience EMAIL_SUBJECT="WARNING: Github Public Repo Found" ## Send the notification email. The system must have installed "SendEmail" (not Sendmail) ## command on your system. cat ${MAIL_LOG} | sendemail -l /tmp/email.log \ -f ${EMAIL_FROM} \ -u ${EMAIL_SUBJECT} \ -t ${EMAIL_TO} \ -s ${SMTP_HOST}:${SMTP_PORT} \ -o tls=yes \ -xu ${SMTP_USER} \ -xp ${SMTP_PASS} fi ## Uncomment below to print the email as output #cat ${MAIL_LOG}
Обновите идентификатор “GITHUB_USER” на имя пользователя GitHub или организации.
Также обновите данные SMTP для получения уведомлений по электронной почте.
Нажмите “CTRL + O”, чтобы записать изменения, а затем “CTRL + X”, чтобы выйти из редактора.
Затем сделайте скрипт исполняемым с помощью следующей команды.
Теперь ваш скрипт готов к запуску.
Вы можете просто выполнить свой скрипт прямо на терминале.
Чтобы вывести результаты на экране, вы можете раскомментировать последнюю строку.
При успешном выполнении, если скрипт нашел какой-либо публичный репозиторий в вашем аккаунте GitHub, вы получите уведомление по электронной почте на свой в почтовый ящик.
Планирование работы скрипта с помощью Crontab
Вы можете запланировать выполнение этого скрипта на день, неделю или два раза в неделю.
Следующий пример crontab будет запускать этот скрипт ежедневно в 12:00 утра.
## Check GitHub public repositories 0 0 * * * bash check-github-public-repos.sh
Заключение
Очень важно сохранять нашу тяжелую работу в безопасности.
Этот скрипт предупредит вас о публичных репозиториях в вашем аккаунте GitHub.
Вы можете изменить скрипт в соответствии с вашими требованиями.
Вы также можете внести свои улучшения в комментарии.
см. также: