This media is not supported in your browser
VIEW IN TELEGRAM
Вызываем демона отслеживания пакетов 👹
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣16👍4🔥4
Дядя Джонни снова с вами, итак, полезная подборка актуальных задач и вопросов с собеседований, которые помогут вам подготовиться как к практике, так и к теории и получить работу.
1. Вопросы для интервью системного администратора Linux/DevOps
2. Вопросы системного администратора
3. 100 важных вопросов на собеседовании по Linux с ответами
4. Подборка вопросов для собеса с системным администратором Linux/DevOps
5. Дополнительные вопросы для собеседования с системным администратором
6. Полезный материал для подготовки к собеседованию на должность инженера DevOps: Исчерпывающее руководство
#Linux #DevOps #SysAdmin #Interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
1. Физический уровень
2. Канальный уровень
3. Сетевой уровень
4. Транспортный уровень
5. Сеансовый уровень
6. Уровень представления
7. Прикладной уровень
#Network #OSI |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Цель этого поста: показать технику отладки в debian/ubuntu, связанную с "поиском первоисточника" в системном конфигурационном файле.
update-initramfs: Generating /boot/initrd.img-4.15.0-54-generic
W: initramfs-tools configuration sets RESUME=/dev/mapper/U1563304817I0-swap
W: but no matching swap device is available.
I: The initramfs will attempt to resume from /dev/dm-1
I: (/dev/mapper/foobar-swap)
I: Set the RESUME variable to override this.
Шаг номер 1: Откуда пришёл RESUME?
# cd /etc
# grep -r RESUME
initramfs-tools/conf.d/resume:RESUME=/dev/mapper/U1563304817I0-swap
Мы рекурсивно (-r) ищем упоминание этой переменной в каталоге /etc (там, где большинство конфигов). Мы находим conf.d сниппет, который явно используется пакетом initramfs-tools.
Теперь новый вопрос, а откуда этот сниппет? - есть три варианты:
1. Магический артефакт(кто-то положил и забыл
2. Конфиг из пакета
3. Конфиг, сгенерированный каким-то скриптом из системных пакетов
Теперь проверяем c помощью dpkg -S он позволяет нам поискать по базе установленных файлов и найти к какому пакету файл относится.
dpkg -S initramfs-tools/conf.d/resume
dpkg-query: no path found matching pattern *initramfs-tools/conf.d/resume*
Вот пример удачного поиска:
dpkg -S resolv.conf
manpages: /usr/share/man/man5/resolv.conf.5.gz
systemd: /lib/systemd/resolv.conf
Возвращаемся к нашей задаче: файл initramfs-tools/conf.d/resume не устанавливается в систему из пакета. Может быть он генерируется в postinst/preinst скрипте пакета? Проверяем третью версию
# cd /var/lib/dpkg/info/
# grep -r initramfs-tools/conf.d/resume *
initramfs-tools-core.postrm: rm -f /etc/initramfs-tools/conf.d/resume
В каталоге /var/lib/dpkg/info/ лежат распакованные версии всех "метафайлов" пакетов (скрипты установки/удаления, описания пакетов и т.д.). Удивительно, но этот файл удаляется в postrm (при удалении) пакета initramfs-tools-core. Посмотрим содержимое его postinst… Ничего, касающегося conf.d директории.
Давайте взглянем на файлы из состава пакета initramfs-tools-core.
# dpkg -L initramfs-tools-core
...
/usr/share/initramfs-tools/hooks/resume
...
Команда dpkg -L позволяет посмотреть все файлы, которые есть в системе от указанного пакета. Я выделил интересный для изучения файл. Изучение файла показывает как эта переменная используется, но не отвечает откуда он появляется.
#Debian #Ubuntu #dpkg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥1
Сетевик Джонни // Network Admin
Получается, это чей-то артефакт. Чей? Перед тем, как нырять в инсталлятор, глянем ещё в одну важную инфраструктуру Debian — ответы на вопросы. Каждый раз, когда пакет задаёт вопрос, и во многих случаях, когда он вопроса не задаёт, но использует вариант по-умолчанию, и вопрос, и ответ фиксируются в специальной базе в Debian, которая называется debconf.
— Мы можем посмотреть на базу ответов (и даже выставить их до установки самого пакета — debconf-set-selections), для этого нам потребуется утилита debconf-get-selections из состава debconf-utils. К сожалению, ничего интересного не нашлось: (debconf-get-selections |grep -i resume вернул пусто).
debian-installer
У установщика есть своя база ответов на вопросы: /var/log/installer/cdebconf/questions.dat. К сожалению, там тоже нет ни слова про наш resume.
Зато рядом есть логи, в т.ч. syslog, куда пишется весь лог инсталляции. Там упоминается пакет base-installer, и на его странице мы можем видеть ссылку на сырцы.
resume="$(mapdevfs "$resume_devfs")"; then
...
if [ "$do_initrd" = yes ]; then
...
resumeconf=$IT_CONFDIR/resume
....
echo "RESUME=$resume" >> $resumeconf
mapdevfs — это утилита с понятным назначением, а интересная нам функция это get_resume_partition, которая читает /proc/swaps и выбирает там самую большую. Swap же у нас приходит от partman'а.
Ответ на наше тестовое задание: файл создаётся инсталлятором в /target'е в момент установки, т.е. мы говорим про well-known, но артефакт. В существующих в системе пакетах нет никого и ничего, чтобы меняло этот файл.
#Linux #DevOps #debconf |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍4🤯3
Прошлый пост(click) оказался для вас hard-level, поэтому сегодня тема попроще(
~/.ssh/known_hosts. Узнать, где какой ключ нельзя (ибо несекьюрно).— Если ключ сервера поменялся (например, сервер переустановили), SSH вопит от подделки ключа. Обратите внимание, если сервер не трогали, а SSH вопит, значит вы не на тот сервер ломитесь (например, в сети появился ещё один компьютер с тем же IP, особо этим страдают всякие локальные сети с 192.168.1.1, которых в мире несколько миллионов). Сценарий «злобной man in the middle атаки» маловероятен, чаще просто ошибка с IP, хотя если «всё хорошо», а ключ поменялся — это повод поднять уровень паранойи на пару уровней (а если у вас авторизация по ключу, а сервер вдруг запросил пароль — то паранойю можно включать на 100% и пароль не вводить).
ssh-keygen -R server. При этом нужно удалить ещё и ключ IP (они хранятся раздельно): ssh-keygen -R 127.0.0.1.Ключ сервера хранится в
/etc/ssh/ssh_host_rsa_key и /etc/ssh/ssh_host_rsa_key.pub. Их можно:а) скопировать со старого сервера на новый.
б) сгенерировать с помощью
ssh-keygen. Пароля при этом задавать не надо (т.е. пустой). Ключ с паролем ssh-сервер использовать не сможет.know_hosts при этом лучше убрать, иначе SSH будет ругаться на duplicate key.#SSH #host |
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Сетевик Джонни // Network Admin
🥷 Джонни вещает: проброс портов
Мы переходим к крайне сложной для понимания части функционала SSH, позволяющей осуществлять головоломные операции по туннелированию TCP «из сервера» и «на сервер».
🆘 Для понимания ситуации пример ниже будет ссылаться на…
Мы переходим к крайне сложной для понимания части функционала SSH, позволяющей осуществлять головоломные операции по туннелированию TCP «из сервера» и «на сервер».
🆘 Для понимания ситуации пример ниже будет ссылаться на…
👍34🔥2
Есть задача создать подсеть, в которой будет 300 хостов. Какую маску стоило бы выбрать, для максимально эффективного адресного пространства? (ответ префиксом маски)
Anonymous Quiz
14%
/25
12%
/20
65%
/23
10%
/26
👍18👎4
Усложним задачу: теперь нам хочется показать коллеге приложение, запущенное на localhost на сервере с адресом
10.1.1.2 (на 80ом порту).ssh -L 192.168.0.2:8080:127.1:9999 user@8.8.8.8 ssh -L 127.1:9999:127.1:80 user2@10.1.1.2
#SSH #TCP |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38🔥3⚡1
Сетевик Джонни // Network Admin
Перенаправление трафика с нескольких портов на удаленный сервер:
ssh -D 3000 ssh-server. Тут мы поднимаем SOCKS-прокси на порту 3000 для всех интерфейсов в локальной системе. Теперь трафик, отправленный через прокси-сервер на SSH-сервер, можно адресовать на любой порт или конечный хост.— По умолчанию используется протокол SOCKS5, поддерживающий TCP и UDP.
ssh -D 127.0.0.1:3000 ssh-server (поднимаем SOCKS-прокси на 127.0.0.1:3000 в локальной системе)При работающем SOCKS-прокси можно настроить браузер на его использование для доступа к ресурсам так, как будто соединения исходят от SSH-сервера. Например, если у SSH-сервера есть доступ к другим серверам в частной сети, с помощью SOCKS-прокси можно заходить на эти серверы локально (словно вы находитесь в той же сети), и не нужно настраивать VPN.
curl -x socks5://127.0.0.1:12345 https://example.org#SSH #Socks #Proxy |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥6
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣28👍3
Теория в "двух словах": SSH может авторизоваться не по паролю, а по ключу. Ключ состоит из открытой и закрытой части. Открытая кладётся в домашний каталог пользователя, «которым» заходят на сервер, закрытая — в домашний каталог пользователя, который идёт на удалённый сервер. Половинки сравниваются (я утрирую) и если всё ок — пускают.
Генерация ключа и его структура: cвой ключ можно сгенерировать с помощью команды
ssh-keygen. Если не задать параметры, то он сохранит всё так, как надо. Сменить пароль на ключ можно с помощью команды ssh-keygen -p.~/.ssh/id_rsa.pub — открытый ключ. Его копируют на сервера, куда нужно получить доступ.~/.ssh/id_rsa — закрытый ключ. Его нельзя никому показывать. Если вы в письмо/чат скопипастите его вместо pub, то нужно генерировать новый ключ. (Я не шучу, примерно 10% людей, которых просишь дать ssh-ключ постят id_rsa).#SSH |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54🔥6⚡3🤣2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣33🔥12👍3