Главная

Friday, 30 March 2018

Тестовый полигон Docker с Zabbix и Jenkins.

Всем привет. 

Недавно у меня появилась возможность попробовать руками СI/CD. Мне поручили развернуть полигон Docker+Zabbix+Jenkins. Это было мое тестовое задание.

Вкратце оно звучало так:
1. Развернуть машину на Centos 7.
1.1 Установить базовый софт и обновления.
1.2 Настроить доступ ssh по публичным ключам
2. Установить и настроить запуск docker
3. Поднять докер контейнер с zabbix внутри
4. Настроить zabbix на мониторинг localhost
5. Поднять контейнер с jenkins внутри
6. После настройки jenkins создать job который при запуске будет ротировать логи localhost
7. Настроить sftp доступ к логам zabbix (readonly)

По правде говоря для меня все было в новинку, кроме первого пункта. Далее я покажу мои шаги с возможными проблемами и попытками их решения. Скажу сразу что как для полного новичка в СI/CD у меня не все получалось. И скорее всего другие кандидаты его выполнили быстрее.

Старт.

1. Развернуть на виртуальном хосте Centos 7.
Тут элементарно. Можно использовать VirtualBox. Однако помните что 7-я Centos любит 64-х разрядную ОС и аппаратную поддержку виртуализации VT-x или AMD-V. Если ваш ЦП не поддерживает инструкции VT-x или AMD-V, то VirtualBox не предложит вам эмуляцию 64-х разрядной ОС.

1.1 Установить базовый софт и обновления.
Под базовым софтом подразумевается установка утилит
mc, nano, htop, ncdu    Ok
yum install bind-utils  Ok

1.2 Настроить доступ ssh по публичным ключам
На эту тему у меня получился пост ранее, читаем здесь.

2. Установить и настроить docker
docker search zabbix
docker pull zabbix

Tuesday, 20 March 2018

Как подключить внешний монитор к ноутбуку.

Всем привет.

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

Работая над очередным проектом онлайн я решил себе сделать два монитора чтобы в одном у меня был сеанс PuTTY, а на другом я мог бы вычитывать инструкции по настройке.

Для начала следует уточнить какие интерфейсы присутствуют у вашего ноутбука:
  • VGA – данный интерфейс относится к устаревшим, но все еще часто встречается в ноутбуках.
  • DVI – более современный разъем, встречается практически во всех моделях, может немного отличаться по конструкции.
  • HDMI – современный высокоскоростной интерфейс передачи данных высокого качества, его особенность в том, что он передает видео и аудио,  используя один кабель. Это полезно для передачи сигналов на телевизор, хотя бывают и модели мониторов со встроенным звуком.
  • DisplayPort – часто используемый интерфейс, по своим параметрам схож с HDMI.

После этого надо провести ревизию разъемов у вашего большого монитора. Возможно что-то из них занято, например, на десктоп. У меня десктоп видеосигнал отдает по DVI, поэтому мне в мониторе достался только свободным VGA. К сожалению интерфейса HDMI в моем ноутбуке нет.

Saturday, 17 March 2018

PuTTY - отключение аутентификации по паролю.

Всем привет.

На днях я писал как создать доступ по SSH-ключу. Все получилось замечательно кроме одной фишки - для тех кто хотел избавиться от ввода пароля новость оказалась не очень Ибо вместо одного пароля пользователя теперь система начала запрашивать парафразу самого ключа.

И вот я натыкаюсь на заметку где описана процедура отключения аутентификации по паролю.

В двух словах предлагают следующее. 
  • подключитесь к серверу по SSH, используя пароль, и откройте файл sshd_config для редактирования: sudo vi /etc/ssh/sshd_config.
  • убедитесь, что указан правильный путь к открытым ключам SSH, поставьте значение параметра PasswordAuthentication no.
  • перезапустите службу sshd: service sshd restart

Все готово. Можете подключится к серверу по SSH без использования пароля пользователя. 

Например, запустите PuTTY, проверьте, что во вкладке Connections -> Auth содержится путь к закрытому ключу (ppk) и откройте подключение.

В случае успешной аутентификации по SSH-ключу вы получите доступ к командной строке сервера и сообщение вида Authenticating with public key "rsa-key-20170510", где rsa-key-20170510 - имя примененного закрытого ключа, указанное вами в файле authorized_keys.

Так вот эта процедура НЕ ОТМЕНЯЕТ ввода парафразы. Более того, если вы решите отказаться от входа по SSH и удалите путь к закрытому ключу (ppk) в PuTTY, то система вас вообще теперь не пустит - приглашение к вводу пароля пользователя не появится.

Такие дела.

Thursday, 15 March 2018

Implementing Windows PowerShell Security.

Hi there.

Recently I have well done online great course about PowerShell Security. This course is on EDX web-portal and his name is "INF251x: Implementing Windows PowerShell Security".

To my mind it was one of the best free courses about PowerShell. I got many new features about scripting technology. 

The Windows PowerShell team has put significant effort into securing and hardening its product. This effort included a comparative analysis of security across most popular shells and scripting languages. The analysis was based on the following criteria:
  • Event Logging – The engine logs audit events of important operational events.
  • Transcription – The engine logs application inputs and outputs.
  • Dynamic Evaluation Logging – The engine logs the content of all content evaluation, including those generated or composed at runtime.
  • Application Whitelisting – The engine allows enforcement of code integrity / application whitelisting policies, including user-authored documents / scripts.
  • Antimalware Integration – The engine actively integrates with antimalware software to evaluate the safety of code generated at runtime.
  • Local Sandboxing – The engine allows sandboxing of behavior for local and interactive use.
  • Remote Sandboxing – The engine allows sandboxing of behavior when accessed remotely.
  • Untrusted Input Tracking – The engine allows script developers to track and make security decisions based on whether a variable or input was influenced by user input.


Also I would like to pay your attention to one moment - authors of course give us some examples about PowerShell penetration cases. It's wonderful. 

Monday, 12 March 2018

Не найден необходимый драйвер носителя при установке Windows 7.

Всем привет.

При установке Windows 7 на современный компьютер или ноутбук пользователь может столкнуться с ошибкой типа «Не найден необходимый драйвер для дисковода оптических дисков. Если у вас есть дискета, CD, DVD или флэш-накопитель USB с этим драйверов, вставьте этот носитель». 

А нужен ли этот драйвер? В нем ли дело?

Столкнулся и я с этим вопросом на днях. Проведя апдгрейд ПК сыну я по привычке попытался переустановить Windows 7, на материнку MSI H110M PRO-D. Неплохая такая системная плата со всеми наворотами. Поскольку до этого был IDE DVD-RAM (а материнка поддерживает только SATA), то я решил использовать внешний USB DVD-привод. И получил то самое сообщение которое я никогда ранее не видел. Чему был несказанно удивлен.(


Причина этого, которая озвучена в Интернет - отсутствие поддержки USB версии 3.1 в Windows 7.  По обилию решений этой проблемы я понял что положительного результата может и не быть.) Все способы преодоление кризиса в недрах Windows 7 по отношению к USB версии 3.1 похожи на авось. Ни игры с BIOS, ни переключение на разъемы USB 2.0, ни использование загрузочной флешки не поменяли сообщение на моем экране. Windows 7 упорно стояла на своем - она хотела некий мифический драйвер, и что самое интересное, никак не давала возможность его ей подкинуть (для поддержки USB 3.1, мало ли). Ни оптики, ни флешки как накопителя в обзоре инсталятора не значилось... Т.е. инсталятор вас просто приглашал на выход.

Sunday, 11 March 2018

Значение NULL или просто Нет Данных.

Привет.

В SQL-запросах все хорошо до тех пор пока не попадается значение NULL. Значение NULL или просто Нет Данных.

Основная особенность NULL-а заключается в том, что он не равен ничему, даже другому NULLу. С ним нельзя сравнить какое-либо значение с помощью любых операторов: =, <, >, like… Даже выражение NULL != NULL не будет истинным, ведь нельзя однозначно сравнить одну неизвестность с другой. Кстати, ложным это выражение тоже не будет, потому что при вычислении условий Oracle, например, не ограничивается состояниями ИСТИНА и ЛОЖЬ. Из-за наличия элемента неопределённости в виде NULLа существует ещё одно состояние - НЕИЗВЕСТНО. Красота, а вы думали что логика это только черное или белое?)

Сравнение с NULLом.

Существуют специальные операторы IS NULL и IS NOT NULL, которые позволяют производить сравнения с NULL-ами. IS NULL вернёт истину, если операнд имеет значение NULL и ложь, если он им не является. 

Соответственно, IS NOT NULL действует наоборот: вернёт истину, если значение операнда отлично от NULL-а и ложь, если он является NULL-ом.

Кроме того, есть пара исключений из правил, касающихся сравнений с отсутствующими значениями. Во-первых, это функция DECODE, которая считает два NULL-а эквивалентными друг другу. Во-вторых, это составные индексы: если два ключа содержат пустые поля, но все их непустые поля равны, то Oracle считает эти два ключа эквивалентными.

Оператор NVL(value, new_value) помогает явно бороться с неизвестностью. Если value есть NULL, то возвращаемый результат будет new_value. Например NVL(NULL, 0) вернет 0.

Логические операции и NULL.

Обычно, состояние НЕИЗВЕСТНО обрабатывается так же, как ЛОЖЬ. Например, если вы выбираете строки из таблицы и вычисление условия x = NULL в предложении WHERE дало результат НЕИЗВЕСТНО, то вы не получите ни одной строки. Однако, есть и отличие: если выражение НЕ(ЛОЖЬ) вернёт истину, то НЕ(НЕИЗВЕСТНО) вернёт НЕИЗВЕСТНО.

С отрицанием NOT:
not(null  = null) - UNKNOWN
not(null != null) - UNKNOWN
not(null  = 'a')  - UNKNOWN
not(null != 'a')  - UNKNOWN
not(null <> 'a')  - UNKNOWN

С оператором OR:
null or true    - TRUE    
null or false   - UNKNOWN
null or null    - UNKNOWN

С оператором AND:
null and true   - UNKNOWN
null and false  - FALSE   
null and null   - UNKNOWN

Запомнить легко, всего лишь в 2-х случаях неизвестность (UNKNOWN) переходит в определенность. Кстати из-за особенностей трёхзначной логики NOT IN вообще не дружит с NULL-ами: как только NULL попал в условия отбора, данных на выходе не будет.

NULL и пустая строка эквивалентны:
'' is null = TRUE

Также:
NULL+NULL=NULL
NULL+100=NULL

Такие дела.

Friday, 9 March 2018

Доступ SSH по публичному ключу.

Всем привет.

У меня есть линуксовый полигон. Надо включить на него безопасное соединение по SSH-ключам.

SSH-ключи обеспечивают более безопасный вход на виртуальный выделенный сервер, чем при использовании пароля. Если пароль можно взломать во время атаки методом подбора ключа, SSH-ключи расшифровать таким образом практически невозможно. Создав пару ключей, вы получаете две длинные строки символов: открытый и закрытый ключ. Открытый ключ можно разместить на любом сервере, а потом разблокировать его при помощи клиента, у которого есть закрытый ключ. Когда ключи совпадают, система пустит вас без запроса пароля. Можно усилить безопасность, защитив закрытый ключ идентификационной фразой (passphrase).

Как создать пару SSH-ключей, где их хранить совершенно не секрет. Вот здесь например описано подробно. Даже если у вас Windows то можете воспользоваться для генерации либо PuttyGen либо Git-клиентом.

Для полигона мне нужен был локальный Git поэтому ключик я делал в нем. Если вы не хотите в будущем вводить пароль при входе то passphrase лучше не вводить.) При копировании открытого  ключа на целевой ПК (сервер) командой
ssh-copy-id username@123.45.56.78
в вашей папке .ssh должен появится файлик known_hosts. Есть? Отлично. 


Используем Putty для логина. И получаю сообщение:
Unable to use key file "D:\.ssh\id_rsa" (OpenSSH SSH-2 private key)

Sunday, 4 March 2018

PortReporter - бесплатный сниффер сети.

Всем привет.

В заметке "PortQry - бесплатный сканер сетевых портов" было описано одно из двух средств Microsoft, которые могут помочь определить, какие программы обращаются к сетевым портам вашего компьютера. Подобные средства важны, если вам требуется наладить работу сетевых служб или обнаружить нежелательные программы. Средство PortQry является ориентированным на Microsoft сканером сетевых портов с функциями наблюдения за локальным узлом. 

Сегодня я хочу рассказать о средстве PortReporter (устанавливается как служба), которое позволяет контролировать сетевую активность на отдельном компьютере в течение длительного времени. В отличие от средства PortQry, обеспечивающего возможность просмотра в реальном времени работающих сетевых приложений и их поиск в сети, служба PortReporter протоколирует активность портов TCP и UDP, собирает хронику сетевой активности и работы соответствующих приложений в течение некоторого периода времени, так что вы можете просмотреть результаты позже. PortReporter также предоставляет возможность многословного протоколирования в случаях, когда основные приложения меняют сетевые соединения, например, когда они принимают новое соединение. Можно вручную просмотреть эту информацию, чтобы установить, например, какие приложения принимают или порождают сетевые соединения. Служба PortReporter также отмечает библиотеки DLL, используемые приложениями, так что вы будете точно знать, какой код обращается к сети.

В зависимости от объема трафика, журналы службы PortReporter часто становятся слишком большими для анализа. Для таких журналов можно использовать другое бесплатное средство Microsoft PortReporterParser - чтобы интерпретировать и анализировать данные и представлять их в удобном формате. Давайте познакомимся с этими двумя средствами.

Friday, 2 March 2018

Комбінація подорожі.

Всім туристам привіт!

З отриманням безвізу до Європи у нас з`явилася чудова можливість подорожувати будь-коли. Я розумію що не всі готові це робити самостійно. Тобто хто робив це самостійно (на мультивізі) той так і продовжує, а хто користувався пакетними турами то має вибір. Тому і тур-агенства подорожей стараються як можуть, щоб не залишитись без прибутку.

Уявимо що у вас вже є біо-паспорт. Бінго. Що може зараз пакетний турист?  

По перше, як на мене, нема сенсу хапатися за "раннє бронювання". Навіщо ризикувати своїми грошима та наражатися на "група не зібралась". Економія грошей? Аж ніяк. Ось приклад.

В тур-оператора Танго-тревел берем пакетний тур "L'amour en trois: ти, я і Париж". Відпускна ціна 199 євро. Знижка на раннє бронювання за 2 місяці 8%, що становить ціну 183 євро.

А тепер переходимо в розділ Акції і знаходмио цей тур за 150 євро. Виїзд через 3 дні. Ось так. Все чим ви ризикуєте це місцем десь в другій половині автобуса. І то не факт). Але ви точно знаєте що тур відбудеться! І ваша економія до 25% від вартості туру! Встигнете владнати собі відпустку? Впевнений що так).

По друге, подивимися на це з і ншого боку. Названий тур має маршурт "Львів - Берлін - Париж - Disneyland - Прага - Краків - Львів". Головная атракція це Париж. Давайте зкомбінуємо щоб отримати той самий результат. Летимо Киев, Жуляны (IEV)  в Кельн (CGN) за 1689 грн лоукостом WizzAir, тільки ручна валіза. А на місці берем знову ж таки пакетний тур в Париж на 2 дні від локального оператора Victoria Resien. Поточна ціна 108 євро. Покаталися, подивилися, і гайда додому тим же WizzAir-ом. Що в нас накапає в підсумку? Якщо нам пощастить з авіарейсами то це буде не більше 250 євро. Трохи дорожче за додатковий комфорт. І треба гратися з бронюванням рейсу та туру.

Але тут вам відкривається інша можливість - ви можете з того ж таки Кельну обрати більше ніж один одноденний тур, чи довше. Виїзди вранці. І побачити більше справжньої Європи з середини. Не витрачаючі два-три дні на переїзди дорогами.

Варто спробувати!


Thursday, 1 March 2018

Фразовые глаголы как не логические пары.

Привет.

Все мы в Английском приходим к фразовым глаголам. Они украшают язык и делают нашу речь более богатой. Как же их запомнить?

Многие утверждают что фразовые глаголы похожи на смысловые (логические) пары и поэтому о назначении многих можно просто догадаться. Например put on. Что значит "надеть" на себя. Логично? Без вопросов. Так и многие другие.

Но есть такие которые имели ввиду нашу логичность в паре. Особенно сбивает с толку пары с up. Наречие up должно повышать или поднимать что-либо, как нам кажется. 

Однако смотрим:
act up - болеть, мучить
blow up - ругать
give up - бросать, сдаваться
screw up - испортить
put up with - мириться с
back up - задний ход.

Кто бы мог подумать? Такие вот фишки фразовых глаголов.