В чем разница

1. В чем разница между символической и жесткой ссылкой

Как вы знаете команда ln позволяет создавать ссылки в Linux. Она может создавать два типа ссылок — обычные (жесткие) и символические если передать опцию -s. Обе они указывают на файл. Разница лишь в виде этого указателя.

Символическая ссылка указывает на файл по имени. В файле ссылки устанавливается специальный бит, с помощью которого система определяет, что этот файл нужно открывать прочитав имя и запросив нужный файл. Вы можете менять содержимое файла, но не его имя. Если изменить имя, ссылка станет нерабочей, ведь она будет указывать на имя файла которого уже не существует. Такой вид ссылок можно сравнить с ярлыками Windows, но это сравнение условное.

Жесткая ссылка основана на файловой системе. Она указывает на место на диске, где расположены данные файла (номер иноды). Вы можете полностью изменять файл включая его имя. По сути во время создания файла создается одна ссылка не него, если вы создаете жесткую ссылку с помощью ln, то их становится уже две. И даже если вы удалите первую, вторая все равно будет указывать на тот же файл, потому что эти ссылки равноправны и место на диске может быть очищено только если ссылок не осталось вовсе.

2. В чем разница между adduser и useradd

Обе команды создают нового пользователя в системе. Но они очень сильно отличаются.

Adduser — утилита для добавления пользователей и групп с систему. Программа учитывает политики дистрибутива по желаемому UID и GID, создает домашний каталог, копирует туда файлы по умолчанию и запускает специальные сценарии.

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

Рекомендуется использовать adduser.

3. В чем разница между /etc/init и /etc/init.d

Папка /etc/init.d содержит скрипты, используемые системой инициализации SysVinit. Это стандартная система инициализации для многих дистрибутивов Linux. Обычно, это сценарии оболочки, используемые для запуска, остановки и перезапуска сервисов.

Папка /etc/init содержит файлы конфигурации системы инициализации Upstart используемой в ubuntu. Поскольку Ubuntu постепенно переходит на Upstart, в системе есть и те и другие скрипты, многие /etc/init.d скрипты выполняются как слой совместимости с Upstart

4. В чем разница между /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

/bin — каталог для бинарных файлов, которые используются системой еще до того как cмонтирован раздел /usr на самом раннем этапе загрузки. Также здесь содержаться те команды, которые вы используете при запуске в одно-пользовательском режиме и режиме восстановления.

/sbin — то же самое, только для бинарных файлов, для выполнения которых требуются права суперпользователя.

/usr/bin — для обще-системных бинарных файлов

/usr/bin — то же самое, только для запуска которых нужны права суперпользователя.

/usr/local/bin и /usr/local/sbin — аналогично двум предыдущим, только для ваших собственных сценариев и программ, которые не устанавливаются с помощью менеджера пакетов.

5. В чем разница между sudo su, sudo -i, sudo /bin/bash

Команда su позволяет изменить текущего пользователя терминала на другого. Команда sudo выполняет команду от имени root пользователя. Теперь разберем сам вопрос.

sudo su — выполняет команду su от имени суперпользователя. Таким образом сначала используется sudo чтобы получить права суперпользователя, а затем пользователь меняется на root с помощью su. При этом вы останетесь в той же директории потому что выполняется ваш .bashrc. А также .profile пользователя root поэтому вы окажетесь в окружении root.

sudo -i — похожая команда, опция -i указывает утилите что нужно переключится в консоль от имени суперпользователя. На этот раз вы уже окажетесь в домашней папке root, и будет выполнен его .bashrc и .profile.

sudo /bin/bash — запускает еще одну оболочку bash от имени суперпользователя. Файлы конфигурации не читаются, но выполняется только .bashrc вашего пользователя. Вы не окажетесь в окружении root, а просто останетесь в своем окружении с правами суперпользователя.

6. В чем разница между терминами консоль, терминал, командная строка

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

В терминологии UNIX, терминал — это любой файл устройства, который реализует ряд специальных команд для чтения и записи. Под эмуляторами терминалов подразумеваются программы, обеспечивающие доступ к этим Unix терминалам через некоторую прослойку ядра. Это могут быть такие программы как Xterm, Terminator, программы обеспечивающие изоляцию между приложениями — screen, tmux, программы удаленного доступа — ssh и т д.

Консоль — это как правило терминал в физическом смысле. Главный терминал, реализуемый ядром, находящийся непосредственно на машине. В Linux консолью называют несколько терминалов TTY, между которыми можно переключатся с помощью сочетаний клавиш Ctrl+Alt+F(n)

Командная строка — это интерфейс, где пользователь вводит свою команду и нажимает Enter чтобы ее выполнить.

7. В чем разница между dpkg и apt-get

dpkg — это утилита для установки deb пакетов. То есть при выполнении команды dpkg -i file.deb, этот пакет будет установлен, если ему нужны какие либо зависимости, утилита уведомит вас об этом. Но сами зависимости установлены не будут и пакет не будет установлен если зависимости не разрешены.

apt-get — это система управления пакетами, для дистрибутивов на базе Debian. Вы можете очень просто устанавливать, обновлять и удалять пакеты.

Здесь есть еще один инструмент — gdebi, это как бы среднее звено между dpkg и apt-get. Во время установки deb пакета утилита может разрешать и сама устанавливать зависимости.

8. В чем разница между service и /etc/init.d

Как мы уже говорили, /etc/init.d — содержит скрипты инициализации SysVinit. Это старый способ запускать сервисы. Эти сервисы запускаются в определенной последовательности и не могут быть настроены более сложные зависимости.

Upstart была разработана с целью заменить все /etc/init.d скрпты на более совершенные конфигурационные файлы /etc/init.

service позволяет плавно перейти от скриптов /etc/init.d к конфигурационным файлам upstart. Эта утилита позволяет работать с обоими типами сервисов.

9. В чем разница между #!/bin/bash и #!/bin/sh

bash и sh это две разные оболочки. Bash — более новая и функциональная, с расширенными возможностями синтаксиса. Большинство команд работают одинаково, но они разные.

В современных системах чаще всего /bin/sh, это всего лишь ссылка на /bin/bash.

10. В чем разница между пакетами i386 и amd64

Эти пакеты собраны для разных архитектур. i386 — для 32 битной версии, а amd64 (x86_64) — для 64 разрядной версии процессора Intel или AMD

Intel 80386, еще известный как i386, это 32 битный процессор выпущенный компанией Intel в 1985 году. Эта архитектура еще называется x86, IA-32 или просто i386.

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

Даже если у вас процессор Intel, вы будете использовать amd64 пакеты для установки 64 битной системы, здесь используются те же наборы инструкций, это стандарт.

11. В чем разница между killall и pkill

Обе эти утилиты делают почти то же самое — уничтожают процессы, но по разному.

pkill находит процесс по разным параметрам, например pid, ppid, cmd, uid, и посылает ему сигнал завершения.

killall находит процесс по имени и завершает все совпавшие процессы, есть режим регулярных выражений и интерактивный режим, которых нет в pkill.

12. В чем разница между PGP и GPG

PGP — формат ключей и зашифрованных сообщений, оформленный и стандартизированный как OpenPGP. А также программное обеспечение Pretty Good Privacy, для шифрования, написанное Филом Зумерманом и сейчас принадлежащее компании Symantec.

GPG- независимая программная реализация стандарта OpenPGP, вы можете использовать ее для обмена сообщениями с людьми, даже теми кто использует ПО от Symantec.

13. В чем разница между режимом сна и гибернации

В режиме сна ваш компьютер не отключается полностью. Система оставляет все периферийные устройства в режиме энергосбережения. Если батарея разрядится или компьютер отключится по каким либо другим причинам текущая сессия и настройки будут потеряны

Гибернация сохраняет состояние вашего компьютера на жесткий диск и полностью выключает. При включении сохраненное состояние восстанавливается.

14 В чем разница между Ctrl+C, Ctrl+Z, Ctrl+D

Сочетание клавиш Ctrl+C (intr) отправляет сигнал SIGINT приложению. Обычно после этого приложение завершает свою деятельность и закрывается.

Ctrl+Z или susp, отправляет сигнал SIGSTP, приложение приостанавливает свою деятельность и сворачивается в фоновый режим. Потом его можно восстановить с помощью команды fg. Посмотреть свернутые процессы можно командой jobs.

Ctrl+D — полностью завершает сеанс терминала.

15. В чем разница между gksu и pkexec

Обе программы позволяют выполнять графические приложения от имени супер пользователя.

Pkexec работает на основе PolicyKit. PolicyKit более настраиваемая, показывает полный путь к программе, и позволяет использовать политики для настройки поведения программы, например настройки запроса пароля и т д.

Вопросы с собеседований на позицию Системного Администратора Linux

Вакансия №1:

1. Как из обычного сайта на LAMP сделать отказоустойчивый сайт?
2. Как должна выглядеть правильная схема релиза кода сайта из Git репозитория?
3. Чем отличаются способы создания реплики в MySQL, какой их них стоит использовать? Почему?
4. У нас есть крон для отправки SMS сообщений из очереди. Как правильно организовать мониторинг этой подсистемы? Какие метрики будут учитываться?

Вакансия №2:

1. Как в nginx привязать соеденения для конкретного апстрима
2. Виды репликаций в Mysql,Postresql. Сильные и слабые стороны
3. У меня есть ip адрес как обеспечить отказоустойчивость
4. Клиент жалуется что при заходе на сервер он набирает mc и mc загружется долго. Как диагностировать проблему? В чем может быть проблема
5. Основные отличия между innodb и MyISAM
6. У меня есть файл 600Гб(резервная копия) как мне его скопировать в раздел где свободно только 500 Гб
7. Напешите не большой скрипт который в зависимости от https: статуса выводить то или ино сообщение, к примеру если у меня 200 пишет ОК, если 400 то not found, если 500 то Alert
8. Что такое CARP?

Вакансия №3:

Есть VPS с CentOS 6 и панелью управления VestaCP. Необходимо:
1. Обновить PHP до версии 5.6
2. Проверить работоспособность PhpMyAdmin/RoundCube
3. Обновить ionCube
4. Перевести Apache с prefork на ITK
5. Установить какой-либо socks прокси

Вакансия №4:

1. Какую технологию ты узнал вчера, на этой неделе, недавно? Естесно связанную с хостингом
2. Можешь мне рассказать о самой большой ошибке которую делал на серверах?
3. Разницу между 0, 1, 5 и 10 рейдом расскажешь кратко? А что такое диск четности?
4. Как посмотреть зону для домена на нужном нс?
5. Расскажи какие LoadAverage в топе светятся и что это такое(la) вообще. Что оно показывает
6. Что такое свап и зачем он нужен? А можно ли отключить свап через sysctl? А в каких ситуациях ты бы рекомендовал вырубать свап?
7. Что такое снмп и приходилось ли использовать? А что он может делать для управления?
8. Что такое chroot jail?
9. Что такое ARP и для чего оно используется? На каком уровне используется этот протокол?
10. В чем разница между пингом и трассировкой
11. В чем разница между tcp и udp? Если я по udp отправляю пакет, я контролирую дошел ли он до получателя?
12. Найди текст test в файлах в папке и всех вложенных. Например хочешь найти пароль к базе данных, а где конфиг не знаешь

Вакансия №5:

1. В чем недостаток установки софта из исходников?
2. Что такое BBU и есть ли смысл в его использовании?
3. Как настроить новый slave для MySQL для одной БД размером 40Gb, в которой есть как innodb так и myisam?
4. LA 8 это много или мало?
5. Допустим Вам поставлена задача настроить https:s only сайт example.com в nginx для production. Приведите пример ssl настроек для этого сайта (location, logs, тюнинг не нужны — нужны только опции касающиеся ssl)
6. Есть некая программа без исходников которая раньше работала и вдруг перестала запускаться в какой-то момент.
Условия:
— Попросить помощи у ее разработчиков нет;
— в логах никаких ошибок не пишет;
— просто при запуске сразу возвращает управление;
— как можно попытаться понять причину проблему.
7. Хостинг Провайдер выдал нам сервер с CentOS указав доступ для ssh входа на него.
IP: x.x.x.x (реальный IP)
login: root
pass: qwerty
С чего начнете настраивать сервер?
8. date -d@$[$(date -d ‘2009-10-25 00:00:00’ +%s) + 24*60*60]
Sun Oct 25 23:00:00 EET 2009
Добавили 24 часа а получили 23:00. Как такое могло получится?
9. Чем отличается find  -maxdepth 1 -name ‘*txt’  -printf «%f\n» от shopt  -s dotglob; ls -dC1a *txt; shopt  -u dotglob
и в каких ситуациях вывод будет различаться
Важно именно отличие в выводе STDOUT (не STERR)
Сортировка роли не играет
Есть ситуация в которой эти команды будет выдавать разный результат
10. Есть миллион строк в которых очень много дублей
нужно показать из них уникальные (т.е. убрать дубликаты чтобы вместо всех дубллей была всего одна строка)

Вакансия №6:

1. Каким образом (командой) можно просмотреть загруженность диска операциями ввода-вывода?
2. Какой командой можно посмотреть общий объем и оставшееся свободное место на диске?
3. Каким образом вы будете делать бэкап базы MySQL объёмом 10 Гб и использующей хранилище InnoDB? А если хранилище MyISAM?
4. Необходимо ограничить процессы пользователя uXXXX, чтобы они потребляли в сумме не более 512 мб памяти. Как это можно сделать?
5. Написать команду вывода файлов в каталоге /var/www/ в тексте которых содержится текст «Button».
6. Запретить всем кроме IP-адреса 1.2.3.4 в файрволе доступ к серверу на порт 22
7. Дан linux сервер. В нём два диска по 250 Gb. Диски собраны в софтовый linux-raid1, поверх рейда используется LVM. На LVM уже созданы разделы для ОС. В качестве ОС стоит proxmox, самый большой раздел на LVM как раз отдан под раздел /var/lib/vz
Нужно заменить в сервере диски на пару по два террабайта и расширить раздел для VPS, чтобы использовать всю доступную ёмкость новых дисков.
Возможно ли это? Можно ли это сделать без перезагрузки, если сервер поддерживает горячую замену дисков? Если возможно, приведите пожалуйста общий алгоритм действий. Можно и примерную последовательность комманд.
8. Есть web-проект (php+mysql) с довольно сложной структурой базs данных. Исторически сложилость, что далеко не все SQL запросы хорошо оптимизированы. Достаточно часто выполняются выборки больших массивов данных с последующей сортировкой без использования индексов, объединение нескольких таблиц (тоже не используя индексы) и т.п. При этом, в выбираемых данных есть поля типа BLOB или TEXT.
Типы таблиц смешанные. Есть как InnoDB,так и MyISAM
На сервере есть 8Gb памяти, один процессор xeon (4 ядря с hyper-threading), 4 диска, собранные в raid10
Используется связка nginx+php-fpm
Какие меры Вы предпримите для обеспечения наиболее оптимального быстродействия как сервера баз данных? Будет отлично, если сможете сделать какие-то замечания и по оптимизации nginx, php-fpm.
9. На приведённый выше сервер идёт атака через крупный ботнет (https:-flood). Одновременно на сервер приходит порядка от 20 до 100 тысяч запросов к разным url сайта. Сервер подключен к сети на скорости 100 мегабит в секунду
Можно ли отбить такую атаку только средствами сервера? Если нет, то почему.
Если да, как Вы это будете делать?

Вакансия №7:

Необходимо развернуть тестовый кластер на контейнерах с опомощью ansible.
Для контейнеров советую использовать proxmox 3.4 можно и 4.0 но раньше ansible с ним не работал из-за изменений в API.

Например создаете виртуальную машинe в VirtualBox туда ставите proxmox
И с помощью ansible (лучше ставить из git’a только в 2.0 версии сделали плагин для proxmox) написать playbook который будет удалять все контейнеры и создавать заново (образ дефолтного контейнера тоже прийдется сделать самому, инфы в интернете полно по сути нужен контейнер с минимальной версией убунты или дебиан + возможно некоторые пакеты для ansible если они потребуются, мне например потребовался образ с новой версией python’a)

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

Кластер должен сотсоять из 6ти контейнеров первые 2 это контенеры с nginx, другие 3 это контенеры с php-fpm (весь софт должен устанавливаться с помощью ansible, конфиги и прочее тоже должны генерироваться через ansible и добавление новой ноды в кластер должно быть простое, без внесения изменений в конфиги) каждый nginx должен уметь load-balancing между php-fpm контейнерами. в php контенейры можно добавить какой-нибудь простой php скрипт, который и будет выполняться.

Т.е у вас должен получится образ 1го контейнера для proxmox на котором чистая ubuntu + минимум пакетов для ansible и playbookов которые разворачивают на основе этого образа кластер.

Вакансия №8:

1. Развернуть на vps (можно взять любую, с бесплатным тестовым периодом, AWS например) стек mariadb, nginx (proxy to apache vhosts), apache2, php-fpm, php 5.6, exim, memcached. Образ можно использовать последний стабильный debian или ubuntu lts.
2. Настроить кеширование в mysql (mariadb) для любых запросов( result query >=1).
3. Настроить конфигурацию innodb заточенную именно для этой vps (под конкретный размер памяти OЗУ).
4. Предоставить пример конфигурации my.ini для сервера баз данных, если бы у сервера было 32 гигабайта памяти и 16 ядер процессора.
5. Настроить тестовый виртуальный хост на nginx, который проксирует запросы на php-fpm, сделать тестовую станицу index.php которая выводит информацию о конфигруации php (<?php phpinfo(); ?>).
6. Поставить доп модули для php —  memcached, pdo_mysql, mongo-db, xdebug (если нет в основном репозитории, подключить сторонний).
7. Включить xdebug в конфигурации, (активация отладки — по куке).
8. Добавить пользователя test, и дать беcпарольный доступ к серверу (ssh key).
9. Настроить sudo и дать доступ выполнение команды apt-get apt-cache пользователю test.
10. Настроить на nginx — кеширование fastcgi запросов (если запрос содержит куку сессии, PHPSESSIONID — не кешировать).
11. Обновить пакеты на сервере.
12. Написать скрипт, который показывает какой скрипт или процесс использует максимально а. Диск, б. Процессор. Отсортировать список по убыванию.
13. Занести измененные файлы конфигурации в git (а еще круче если это будет puppet или другая тузла для централизованного конфигурирования сервера).

Вакансия №9:

Настроить LAMP + nginx.
Создать виртуальный хост test.domain.com, в index.php поместить вывод
функции phpinfo.
Нужно, чтобы в информации выводился ip, с которого пришел запрос.
Установить memcached и настроить хранение php-сессий в memcached.
Средствами nginx сделать перенаправление любых ссылок на главную страницу, настроить кеширование статики.
Установить Percona Server, настройки оптимизировать под характеристики сервера.
Настроить dkim (ключи для внесения в ДНС выслать).
Добиться, чтобы почта проходила спам-проверку в сервисе verifier.port25.com.
Поставить mutt, проверять ссылкой echo ‘test’ | mutt -e ‘set from=’noreply@rosslab.info» -e ‘set realname=’User» -e ‘set smtp_url=’smtp://localhost:25» -s ‘DKIM’ check-auth-ak=southbridge.ru@verifier.port25.com
В качестве основного репозитория рекомендуется использовать тот, который тут https:://rpms.southbridge.ru (выбрать подходящий)

Вакансия №10:

1. Нормальный LA на сервере виртуального хостинга колеблется от 0 до 2. LA резко увеличивается до 50. Как понять причину повышения нагрузки? Напишите команды для анализа проблемы и вероятные причины начиная с самой вероятной.
2. Каким образом можно гарантированно ограничить каждого пользователя виртуального хостинга от выедания им всех ресурсов cpu и памяти linux сервера, учитывая что mod_php/mod_perl не установлены?
3. Какие методы для борьбы с исходящим спамом через web скрипты и sendmail существуют в mta postfix и exim? Spamassasin и другие спам фильтры рассматривать не нужно.
4. Как организовать ежедневное резервное копирование сервера виртуального хостинга создавая при этом минимум нагрузки на него, учитывая, что он содержит около 10-ти миллионов файлов, а общий объем данных около 300Гб?
5. На одного из клиентов виртуального хостинга направлена DDOS атака. Ваши действия по его предотвращению? Как можно настроить linux сервер так, чтобы воздействие ddos атаки на одного клиента минимально сказалось на общей производительности и доступности сервера?
6. На OpenVZ ноде LA достигает 300. Как понять причину повышения нагрузки? Напишите команды для анализа проблемы и вероятные причины начиная с самой вероятной.
7. Как смигрировать Xen domU с одной ноды на другую с минимальным даунтаймом при условии что общее дисковое хранилище не используется и в качестве виртуальных дисков используется lvm? Опишите несколько вариантов.
8. Предложите способы ограничения количества одновременных подключений с одного ip (система: LAMP + nginx)? Каковы условия применимости каждого из указанных способов?

Вакансии, найденные на просторах интернета

Вакансия №1:

1. Как узнать, кто из клиентов потребляет больше резидентной памяти в данный момент своими процессами (построить топ по потреблению). Вывод ps (не полный) выглядит так. Всего в ps процессов несколько сотен:
Исходник:
ps axu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
u5867    32518  0.0  0.0 214036 12764 ?        S    21:34   0:00 /usr/bin/php-cgi5.2
u425     32532  1.1  0.0 139736 24556 ?        S    21:34   0:01 /usr/bin/php-cgi5.3
u6363    32535  1.1  0.0 183444 20240 ?        S    21:34   0:01 /usr/bin/php-cgi5.2
u12124   32548  0.2  0.0 174432 28360 ?        S    21:34   0:00 /usr/bin/php-cgi5.2
2. По какому принципу работает программа traceroute?
3. Вам понадобилось выделить подсеть размером в 30 ip-адресов. Можете ли в уме посчитать, какой должна быть маска получившейся сети?
4. Расскажите, что такое Path MTU.
5. Расскажите, что такое TCP Window.
6. Какой тип DNS-записи мы будем использовать при указании того, какой сервер отвечает за приём почты определённого домена?
7. Как выглядит HTTP-запрос для проверки корректности работы настроек веб-сервера для отдачи сжатого контента при его поддержке клиентом (на примере /index.html)?
8. Расскажите, в чём заключаются различия между симлинком и хардлинком.
9. Каким образом в sh/bash можно обработать какой-либо сигнал? Например, по завершении скрипта необходимо удалить временные файлы, созданные в процессе работы, причём выполнить это необходимо даже том случае, если выполнение скрипта было прервано извне. Обработку каких сигналов мы не можем выполнить?
10. Вам необходимо обеспечить максимальную доступность одного сервиса (программы). Расскажите, каким образом можно обеспечить автоматический запуск/перезапуск сервиса в случае его внештатного завершения.
11. Для нового сервера, на котором будут работать базы данных, необходимо подготовить дисковую систему. Пожалуйста, расскажите, чем вы будете руководствоваться при настройке дисков, какие настройки raid будете применять, какой io scheduler?
12. Как посмотреть, с какими параметрами запущено ядро linux?
13. Приходилось ли вам сталкиваться с tun/tap устройствами? В чём заключается их различие?
14. Допустимо ли полностью отключать своп на сервере? Почему?
15. Каким образом можно просмотреть загруженность диска операциями ввода-вывода?
16. На сервере настроены два интерфейса: eth0 и eth1. Используемый по умолчанию шлюз доступен через eth0. Запросы поступают на сервер через оба интерфейса. Каким образом можно настроить использование другого шлюза для отправки ответов на пришедшие через eth1 запросы? Предполагается, что запрос может придти с произвольного ip-адреса.
17. Каким образом вы будете делать бэкап базы MySQL объёмом 10 Гб и использующей хранилище InnoDB? А если хранилище MyISAM?
18. С какими трудностями/проблемами вам приходилось сталкиваться при поддержке репликации в MySQL, если есть такой опыт? Каким образом вы чинили развалившуюся репликацию?

19. Предположим, у вас есть какой-то веб-сайт, работающий под LAMP. На этот сайт началась атака типа https:-flood. Какие действия Вы бы предприняли для самостоятельной борьбы с этой атакой?
20. Имеется некоторое большое (несколько десятков) количество одинаковых систем, настроенных под одну задачу (хостинг). Каким образом вы будете производить работы по установке нового ПО, обновлению; следить за актуальностью и однотипностью конфигурационных файлов?
21. В каких ситуация целесообразно применять Jumbo Frames?
22. Если вам была бы поставлена задача построить отказоустойчивый кластер для обеспечения работы веб-сайта на LAMP, какие технологии вы для этого использовали и почему?
23. Необходимо запретить доступ к размещенным на сервере сайтам всем клиентам с User-Agent: MegaXakep. Как бы Вы это сделали?
24. В чем отличие между KVM, XEN и OpenVZ. Какие преимущества и недостатки каждой из этих технологий вы знаете?
25. Необходимо ограничить процессы пользователя uXXXX, чтобы они потребляли в сумме не более 512 мб памяти. Как это можно сделать?
26. Какие режимы репликации изменений базы поддерживаются MySQL?
27. В каких случаях на slave-ах может быть необходимо ведение binlog-а?
Пруф: https:://www.e1.ru/talk/forum/read.php?f=125&t=33520&i=33603&page=1&#33603

Вакансия №2:

В ответах следует учитывать что под ОС Unix может пониматься как Linux так и Solaris/HP UX

1. У вас на сервере под управлением ОС Unix файловая система из нескольких разделов, смонтированных в несколько точек. Необходимо узнать в какую точку смонтирован каждый раздел и сколько места на каждом разделе свободно/занято (в кб, мб или гб).
2. У вас на сервере под управлением ОС Unix файловая система из нескольких разделов, смонтированных в несколько точек. Внезапно закончилось свободное место на одном из разделов. Вам необходимо определить, какие именно файлы исчерпали место на диске.
3. У вас на сервере под управлением ОС Unix имеется много (>>1000) файлов вида esb_ora_DDDDDD.trc, где DDDDDD — произвольный набор цифр. Необходимо найти все файлы такого вида, узнать их кол-во, размер и удалить все файлы кроме 10 самых новых.
4. Есть два сервера под управлением ОС Unix с ip 10.50.0.3 и 10.50.0.4. С вашей рабочей станции имеется доступ по ssh к обеим машинам. На 10.50.0.4 должен работать веб-сервер на порту 8080 к которому должен быть доступ с 10.50.0.3. Необходимо проверить, что веб-сервер на 10.50.0.4 действительно запущен, слушает правильный порт и с 10.50.0.3 к нему есть доступ.
5. Вам предоставлен доступ по ssh к серверу 10.50.0.3 с вашей рабочей станции и к серверу 10.50.0.4 с сервера 10.50.0.3. Напишите sh скрипт, после запуска которого, вы сможете зайти с 10.50.0.3 на 10.50.0.4 без ввода пароля.
6. На сервере 10.50.0.4 работает управляющая web-консоль сервера glassfish по адресу https:://10.50.0.4:4848/. С вашей рабочей станции доступ к порту 4848 закрыт, имеется только доступ по ssh. Необходимо попасть в управляющую консоль.
7.  На сервере 10.50.0.3 имеется структура файлов, часть из которых периодически модифицируется. На сервере 10.50.0.4, к которому есть доступ по ssh имеется копия этой структуры. Необходимо периодически (раз в сутки) обновлять файлы на 10.50.0.4 не пересоздавая всю структуру заново.
8. При помощи команд ps, awk, gawk, grep определите суммарный размер памяти, используемой процессами oracle.
9. Поступает жалоба что одно из приложений на сервере приложений glassfish сильно тормозит. Необходимо произвести анализ из-за какого из системных ресурсов (процессор, память, диски и т.д.) приложение тормозит. Так же необходимо собрать статистику потребления системных ресурсов сервера за определенный интервал времени. Ваши действия.
10. Вам необходимо узнать какая из программ, запущенных на сервере сильнее всего нагружает 3-е ядро 4-х ядерного процессора. Как вы это сделаете?
11. Сервер внезапно начал тормозить, предварительный анализ показал, виртуальная и физическая память занята процессами sendmail и остальные приложения работают в swap. Каким образом вы измените приоритет выполнения процессов sendmail на сервере для освобождения памяти?
12. Внезапно происходит отказ одного из модулей памяти, производительность резко падает. В каком файле (файлах) логируются события  аппаратных отказов? Какие из ниже перечисленных системных демонов вы остановите для освобождения памяти:
Svc
https:d
nfs
syslogd
xinetd
crond
cupsd
ntpd
snmpd
13. Как вы узнаете процессор с какой арихитектурой используется в сервере.
14. Вы работаете на сервере, где установлен glassfish. БД ORACLE работает на другом физическом сервере. Как вы узнаете с какого сетевого интерфейса сервер, на котором вы работаете, взаимодействует с сервером oracle
15. Как вы можете посмотреть локальную таблицу маршрутизации сервера
16. Какая консольная команд позволяет посылать icmp – запросы на удаленные хосты с целью проверки их доступности.
17. cервер glassfish не может установить соединение с БД Oracle, расположенной на другом физическом сервере в другом сегменте сети. Каким образом вы убедитесь, что запросы с сервера glassfish маршрутизируются корректно и проблема с сервером БД Oracle
Пруф: https:://hydrobiont.livejournal.com/107182.html#cutid1

Вакансия №3:

1. Расскажите, пожалуйста, о типах packet filters, о разнице между stateful и
stateless поведением,
о Packet filters в различных системах.
2. Способ организации packet filter rulesets.
Дана машина с одним внешним интерфейсом. Составьте группы правил (в любой
форме, можно в свободной) для следующих
условий: открытые сервисы: ftp, ssh, smtp, named, https:. ftp должен работать
как в passive, так и active режиме,
исходящие соединения разрешены.
3. а) Репликация MySQL.
На двух серверах настроена репликация БД. Как убедиться, что с репликацией
всё в порядке?
Что делать, если репликация «сломалась»?
б) Есть база db. В ней 3 таблицы staff(id1, name), phone(id2, number),
office(id3, room).
Как составить 1 запрос, который выводит сотрудников, которые находятся в
комнате 13
и их телефонный номер начинается на 13 в формате «имя, телефон, комната».
4. Приведена tcp сессия. Объясните особенность данной сессии.
Что она означает?
pastebin.com/LawY6C5D
5. На продакшен сервере после нештатной перезагрузки не проходит
проверка дисков и
вы видите сообщение bad superblock. Ваши действия?
6. Приведите небольшой фрагмент вашего кода на Bash с описанием его работы?
7. Вносили ли вы изменения в существующий код чужих программ? Приведите,
пожалуйста, пример (в виде diff).
8. Какими способами можно увеличить производительность web приложений?
Можно ли обслуживать с помощью apache 1000-2000 одновременных коннектов?
Каким образом можно снизить нагрузку на сервер в этом случае?
9. Виртуализация.
а) Какие программные реализации использовали в работе?
б) В чем принципиальное различие между OpenVZ и KVM?
в) Какие тонкие настройки, модификации осуществляли при работе с системами
виртуализации для разграничения использования дисковой подсистемы?
г) Выполняли ли оптимизацию работы с памятью в системе виртуализации KVM? Если да, то какой технологией пользовались?
10. Какие системы контроля версий ПО вы использовали в работе? Какие инструменты
для организации коллективной работы использовали?
Пруф: https://toster.ru/q/20266

Полезные утилиты для Linux

1. w

Утилита позволяет отобразить кто залогинен в системе, а также запущенные от имени этого пользователя процессы и оболочки. Например:


 

Ashampoo_Snap_2016.03.27_16h17m08s_013_

Для вызова справки наберите:

Для текущего пользователя:

Ashampoo_Snap_2016.03.27_16h18m51s_014_

2. Nmon

Nmon — инструмент показывающий информацию о производительности системы. Для установки в Ubuntu наберите:

После завершения установки можно запускать:


Ashampoo_Snap_2016.03.27_16h21m26s_015_

Nmon может отобразить информацию связанную с сетью, центральным процессором, памятью или дисковым пространством.

Ashampoo_Snap_2016.03.27_16h23m59s_016_

3. Ncdu

Ncdu — консольная утилита с интерфейсом ncurses, на основе du. Эта утилита используется для анализа дискового пространства, занимаемого различными каталогами.

Для установки в Ubuntu наберите:

Затем для запуска:


Вывод программы:

Ashampoo_Snap_2016.03.27_16h27m28s_017_

Нажмите кнопку N для сортировки по названию или S для сортировки по размеру файла.

4. slurm

Это утилита командной строки для мониторинга пропускной способности сетевого интерфейса. Программа будет рисовать график в с помощью символов ASCI. Для установки в Ubuntu используйте:

Примеры:


Ashampoo_Snap_2016.03.27_16h33m40s_018_

Опции программы:

  • Нажмите L, чтобы отобразить lx/tx
  • Нажмите C, чтобы переключится в классический режим
  • Нажмите R, чтобы обновить экран
  • Нажмите Q, для выхода

5. findmnt

Команда findmnt используется для поиска примонтированных файловых систем. Она используется для поиска монтированных устройств, а также может монтировать или размонтировать их при необходимости. Команда входит в набор util-linux.

Для запуска наберите:

$ findmnt
Ashampoo_Snap_2016.03.27_16h35m11s_019_

Отображение в виде списка:


Ashampoo_Snap_2016.03.27_16h36m30s_020_

Файловые системы смонтированы в формате fstab:


Ashampoo_Snap_2016.03.27_16h37m56s_021_

Список файловых систем по типу ФС:


Ashampoo_Snap_2016.03.27_16h39m03s_022_

6. dstat

Комбинированный и очень гибкий инструмент, который может быть использован для мониторинга памяти, процессора, производительности, сети или дискового пространства. Это отличная замена ifstat, iostat, dmstat и т д.

Для установки используйте:

Подробная информация о процессоре, жестком диске и сети:


Ashampoo_Snap_2016.03.27_16h40m58s_023_

Опция -с указывает программе показывать информацию о центральном процессоре:

Ashampoo_Snap_2016.03.27_16h42m19s_024_

Более подробная информация о процессоре:


Ashampoo_Snap_2016.03.27_16h43m35s_025_

Опция -d выводит информацию о диске:


Ashampoo_Snap_2016.03.27_16h44m37s_026_

7. ccze

Утилита украшающая ваши логи.

Установка:

Примеры:


Ashampoo_Snap_2016.03.27_16h55m07s_027_

Список модулей утилиты:

$ ccze -lAshampoo_Snap_2016.03.27_16h56m03s_028_

Сохранить лог в HTML:


 

 

Set Up a Proper Terminal ConEmu

I don’t know how to put this politely but the command-line experience on Windows sucks*. If you are using the default terminal in Windows, whether with CMD, PowerShell or Bash, you may not realize just how much better it could be. In this tutorial, you will setup an alternative terminal that supports fun stuff: window resizing, tabs, intuitive copy/paste and pretty colors.

Before we start, let’s get some definitions out of the way: the term shell refers to a command-line interpreter that executes text commands (such as CMD, PowerShell or Bash) and terminal is the graphical window that hosts a shell.

  1. Install ConEmu
    • If you have Chocolatey, run choco install conemu.
    • Otherwise download the installer and run it, accepting all defaults.
  2. Run ConEmu by selecting “ConEmu” from the Start Menu.

Congratulations, you now have a civilized terminal installed and ready to use! You could just stop right here and call it a day. I wouldn’t blame you. Take it for a spin and you’ll see that you can resize the window, select text with your mouse to copy it, and CTRL+V will paste. Huzzah!

However, a little bit of configuration is worth the effort. Below are some tweaks that I find useful:

Initial Configuration

Basic Vim configuration

Open the terminal (ConEmu) and CD into the home folder (usually C:\Users\YourUserName). Create Vimconfiguration file .vimrc here:

Open .vimrc and add following lines:

Colors and themes

ConEmu supports terminal with 256 colors and it is possible to configure Vim to use color syntax highlighting in it. There are some issues with different Vim versions and color schemes which is described on ConEmu page.

Before enabling colors in Vim, install the theme first. I am using zenburn theme.

When you first start ConEmu, an initial configuration prompt is displayed. It is safe to accept the defaults, but here are a few suggested changes:

  • Select a default shell, e.g. CMD, Bash or PowerShell.
  • Choose a color scheme, my favorite is Monokai.
  • Opt-in to automatic updates for stable releases.

    Now configure Vim to use 265 colors in terminal (as described on ConEmu page) and set theme:

Replace Default Terminal

This is ConEmu’s killer feature. It is so frustrating to setup a terminal just the way you like it, then be sent back to the dark ages when another process pops up a terminal.

  1. Open ConEmu.
  2. Go to Settings > Integration > Default term.
  3. Check “Force ConEmu as default terminal” and “Register on OS Startup”.

Voilà! Now when Visual Studio pops open a terminal, you are rewarded with ConEmu, instead of the stinky old Windows command prompt.

Tweaking Paste

The default keybindings for paste are interesting but not what I expected out of the box. CTRL+Vwill only paste the first line in your clipboard. SHIFT+INS will paste the entire contents of your clipboard (including newlines). It also prompts you if pasting new lines.

I prefer that CTRL+V pastes everything and doesn’t give me any guff about it. See the screenshot below for where to find the hotkeys.

  • Map CTRL+V to paste everything. Settings > Keys and Macro > User CTRL+V
  • Unmap paste first line. Settings > Keys and Macro > User SHIFT+INS
  • Disable the newline warning. Settings > Keys and Macro > Paste > Confirm <ENTER> keypress

Making things pretty

This is purely aesthetics. Here is what you need to change if you want to match my screenshots:

  • Use the monokai scheme. Settings > Features > Colors > Scheme
  • Use the consolas font, size 16 pt. Settings > Main
  • Hide the search bar. Settings > Appearance > Show search field in tab bar
  • Hide the status bar. Settings > Features > Status bar > Show the status bar

My current config has 2 tabs.

  • 1st with far instance running (Options>Editor settings> «C:\Program Files (x86)\Notepad++\notepad++.exe» «!\!.!» -new_console)
  • 2nd with vim for editing files and coding + 2 msysgit instances and 1 cmd line running

Ashampoo_Snap_2016.03.27_15h40m08s_012_

This setup gives me a nice environment for editing files not related to Visual Studio and .NET. Another neat functionality are customized Tasks. I am using those to store different project workspaces. One task equals one workspace. Thanks to that I can easily start another ‘project’ and initialize it by opening specific folders and specific files in Vim. It is a lot faster than doing everything manually. To get this setup: * Settings -> Startup -> Tasks * create new predefined task with + sign *And add this code

What does those commands do ? 1. Creates new screen and opens Vim in my Dropbox folder context 2. Creates new screen with Vim pointing to D:\ 3. Initializes shell in new window and splits current screen into 75%/25% Horizontaly

75_25

Initializes shell in new window and splits up the existing window into 33.3%/66.6% Vertically

75_25_66

Initializes shell in new window and splits up the existing window into 50%/50% Vertically

75_25_66_50

I have barely scratched the surface of the ConEmu and cmder awesomeness. Its functionality is more powerful than just split screen functionality.

How to configure vim with plugins on windows and which version to use ? You can install GVim which is vim with Gui-like interface for Windows. One of the plugins in the screen is NerdTree. To install it you just need to copy paste this file NERD_tree.vim to C:\Program Files (x86)\Vim\vimfiles\plugin. If you have multiple plugins then pathogen.vim is also recommended. For starters with vim, it is better to start with vim-tutorial then move to vim as a Notepad replacement.

CONFIGURING CONEMU AND PUTTY
Настройка ConEmu

Волшебные скиллы-2016

начало
2013
https:://ru-sysadmins.livejournal.com/2145115.html
https:://ru-sysadmins.livejournal.com/2140153.html
2015
https:://ru-sysadmins.livejournal.com/2415286.html
https:://scif-yar.livejournal.com/1481729.html

Обновление про сети
3А Начинающий админ винды / Админство по винде базовое пока оставлю
Сети. тоже оставлю.

3Б Начинающий админ систем на опернсорсе / Админство по Linux/Free = станет 3В

Добавлено:
3Б Начинающий админ по сетям / сетевик.
Вынося отсюда https://habrahabr.ru/post/277609/
и отсюда
импортозамещение 03-2015 https:://ru-sysadmins.livejournal.com/2378658.html
импортозамещение 06-2015 https:://ru-sysadmins.livejournal.com/2401941.html
обучение
https:://ru-sysadmins.livejournal.com/2410691.html
https:://scif-yar.livejournal.com/1551273.html

Итак, что должен мочь и уметь начинающий админ по сетям / желающий затем углубиться в тему сетей.
3Б-1 Теория
3Б-2 Физика вообще
3Б-3 Отдельно оптика
3Б-4 Железо в целом, L2/L3
3Б-5 L7 и прочий инфобез.

3Б-1 Теория
В первую очередь прослушать курсы ICND1+2 —
Курс ICND1 2.0 — Использование сетевого оборудования Cisco, часть 1
(Interconnecting Cisco Network Devices, part 1)

Курс ICND2 2.0 — Использование сетевого оборудования Cisco, часть 2
(Interconnecting Cisco Network Devices, part 2)
Затем все же сдать хотя бы 1-й экзамен. Можно сразу два. Можно 1+2.

3Б-2 Физика вообще
После этого стоит получить представление о физике —
в первую очередь научиться (вообще — это очень странно «не уметь») обжимать патчкорд, забивать кабель в патч-панель, отличать SM/MM, если повезет — варить оптику.
Вообще SM/MM для меня — больная тема. Так сложилось, что на одном из моих прошлых мест работы попадались три типа разъемом (круглые, большие квадратные и мелкие квадратные —
Multimode FC, SC, LC
https:://svarka-optiki.ru/photos/image/Tablica_opticheskih_konnektorov.html

Цветовая маркировка кабелей обычно рулит, НО! не всегда ее видно, документация проебана, и между парой зданий ВНЕЗАПНО оказался SM. Ну не пиздец ли ? В остальных местах был мультимод.

3Б-3 Отдельно оптика
Определиться с различиями 1G/10G/40G в оптике, отличиями SM от MM и узнать о существовании параллельной галактики 1/2/4/8/16 — SAN. В том числе и у Cisco —
https:://www.cisco.com/c/en/us/products/storage-networking/mds-9000-series-multilayer-switches/index.html

FC 101-WBT Introduction to Fibre Channel Concepts
https:://www.brocade.com/en/education/courses/introduction-to-fibre-channel-concepts.html
https://www.youtube.com/watch?v=9aDMrO9a52s
https://www.youtube.com/watch?v=q4veZ-sdV28
https:://h20195.www2.hp.com/V2/GetPDF.aspx%2F4AA4-7060ENW.pdf

И еще мене тут нехорошие люди обещали побить с использованием нетрадиционных не конфессиональных FC270, FC271

3Б-4 Железо в целом, L2/L3
3Б-4 Затем стоит иметь представление о мировом рынке сетевого оборудования (L2/L3) и о отечественных неимеющиханалогов импортозаместительных темах.
Краткое отступление


Мировой рынок по L2 представлен:
— неуправляемым говнищем разного рода (плюс унаследованное говнище всех видов),
— web-управляемым говнищем тоже пары тысяч видов, например 12-портовыми d/tp/ прочая — link ами. Не то чтобы они совсем конченое говно, нет — если у вас 5 (пять) ПК и один роутер типа любимого т. vovney dlink dir-100, или даже asus какой-то там с вайфаем, то почему нет — на пять рабочих мест покупать .. как бы так извратиться .. скажем Cisco 4500-X или Nexus 3000 — ЗАЧЕМ ?
море всякой китайчатины — https:://www.sugon.com/en/

— более-менее управляемым (читай — консоль) оборудованием.
Это импортный производитель —
Cisco, Extreme, Avaya, Juniper, HP, Dell, Brocade, Huawei, ZTE, Zyxel. Микротик кстати, хотя надо по модельному ряду уточнить, вроде они скорее l3+nat
Может еще Аруба, хотя это вай-фай. Netgear, Allied Telesis .. общем, их есть.

Насчет D-Link .. не знаю. Сколько сталкивался — все время было какое-то говно на этапе конфигурирования и после года работы, и сплошной веб-менеджмент. Но на домах и в регионах у людей стоит, работает.
Что там говорить — в одной дружественной конторе их 4 штуки, и они даже работают, но порой так глючат — типа, питания хватает на 6 POE устройств из 12, а потом начинается лажа.

Отечественный производитель и вариации под линуксом (Open vSwitch)
Говоря о отечественном производителе для L2 и выше (т.е. без мультиплексоров) — 03/2016, надо понимать, что с своими чипами в РФ никак. Их нет — поэтому внутри стоит Broadcom, Marvel или какие-то китайцы, или еще кто с аутсорса. Впрочем, та же картина (аутсорс) и у многих других «типа вендоров». Лично мне отечественный производитель в руки не попадался и за информацией я не особо слежу.
Так что по отечественному будет перечень, местами с комментариями. Качество .. ну, они работают. Оценок по глюкам ввиду малой распространенности в целом — я не видал.
Пишут на хабре:
Zelax: предположительно DCN — Digital China Netwroks (быстрый пруф)
Qtech: сдираем наклейку — видим OEM (сдирал сам), возможно EdgeCore
РКСС: старые наработки Alcatel-Lucent (быстрый пруф)
Русьтельтех: франшиза Marvell, ПО ROS 1.1 (вероятно, концы ведут на Larch Networks)

Алситек https:://www.alstec.ru/node/133
Ангстрем телеком https:://www.angtel.ru/catalog/
Булат — https:://bulat-opk.ru/
Полигон — Арлан-3226GE-S: https://plgn.ru/catalog/602/2682/
РКСС — Российская корпорация средств связи- Коммутатор локальной сети серии RSОS6250
https:://www.pkcc.ru/products/kommutator-lokalnoy-seti-serii-rsos6250
Клевещут, что это вообще alcatel-lucent
Русьтелетех https:://rusteletech.ru/seriya-rtt-a300
Супертел — Оборудование коммутации пакетов информации (K21/K23)
https:://www.supertel.info/k21k23.html
Eltex — Элтекс https:://eltexcm.ru/lp/#oborudovanie
Etegro https:://www.etegro.ru/ . Кстати делают еще и СХД.
Метротек — https:://metrotek.spb.ru/x10-24.html, но они L2+L3, и 10/40/1000 — т.е. другой класс.
Nateks
NAG (серия SNR) https:://shop.nag.ru/catalog/00001.Kommutatory/04963.SNR/17638.SNR-S2965-24T
QTech
Zelax
ЗАО «Информтехника и Связь» — маршрутизирующие коммутаторы «Поток-КМ-122» и «Поток -К-242»
Морион Коммутатор уровня доступа на российской элементной базе КАМ‑1082
https:://www.morion.ru/products/kommutatory-i-oborudovanie-ethernet/kommutator-urovnya-dostupa-na-rossiyskoy-elementnoy-baze-kam-1082
Elsicom — опять же на хабре поминают в комментах https://habrahabr.ru/post/277609/


Хватит отступления.

Картина по L3 как-то принципиально не отличается от картины по L2 — есть много вендоров, плюс импортозамещение.
Проблема в другом — если у крупных (Cisco, Avaya, Juniper) есть курсы по их оборудованию, причем даже на русском и не совсем плохие, то с сегментом «обучение» творится определенная жопа. У Avaya я спрашивал — эмуляторов их железок нет. За Juniper ничего не скажу.
У (или «для») Cisco же эмуляторы есть — packet tracer, GNS3, Cisco on unix и так далее.
У отечественного производителя — не в курсе, что у них.

3б-5 L7 и прочий инфобез.
Обязательно стоит пересмотреть https://www.youtube.com/watch?v=8sYTi4WtEuY

Вообще с инфобезом (и как следствие — DPI и даже DLP) картина странная.
Если мы говорим о простой фильтрации по destination, которая была реализована еще в ISA 2006, и сейчас запилена практически всеми,
— причем Avaya запилила фильтрацию в wifi точке по группам , типа Social network / online video / proxy / прочее
то с этим вопросов особо нет. Ну, разве что любимый многими Dir-100 не может так вот сразу в блокировку.

Если же мы говорим о чем-то более интересном, применительно к сетям, то это —
для Cisco ASA — CSC-SSM-10, ASA with FirePOWER (применительно к ASA NGFW) —
https://habrahabr.ru/company/cisco/blog/237759/

В комментах традиционно ругают Palo Alto —
Что касается сравнения, то, это, как всегда, субъективный вопрос 🙂 Есть ли у Palo Alto функция ретроспективной безопасности? А репутация файлов? А анализ траектории? А что с корреляцией событий? А что с закрытием всего функционала, который есть в FirePOWER for ASA и интеграцией в инфраструктуру защиты? Например, у нас на FireSIGHT заводится и информация по управлению уязвимостями, и песочница, и управления агентами на оконечных устройствах, и антивирус, и SIEM. У Palo Alto для этого требуются отдельные консоли. У нас одна.

Для PA курсы —

Firewall Configuration Essentials 101
https://live.paloaltonetworks.com/t5/Learning-Articles/Firewall-Configuration-Essentials-101/ta-p/54664

PAN-EDU 201 Palo Alto Networks: Essentials 1
PAN-EDU-205 Palo Alto (Essentials 2: Extended Firewall Management)
https:://www.globalknowledge.com/training/category.asp?pageid=9&catid=583&country=United+States

Про Fortinet ничего не знаю
https:://www.fortinet.com/

Update
Возникшие по ходе написания вопросы.
1. По эмуляции циски вопросов нет — https:://ru-sysadmins.livejournal.com/2424873.html
1.1 Cisco Packet Tracer https:://habrahabr.ru/post/252085/
https://ru.wikipedia.org/wiki/Cisco_Packet_Tracer

1.2 GNS3 + Dynamips https:://habrahabr.ru/post/164001/
1.3 Cisco on Unix (IOU) —
https:://habrahabr.ru/post/164001/
https:://habrahabr.ru/post/196228/
https:://xgu.ru/wiki/Cisco_IOU

У ХП есть — HP Comware Lab (HCL) https:://habrahabr.ru/company/hp/blog/261505/
У хуявея есть Huawei eNSP — https://toster.ru/q/26167, там еще про разное

Вот еще псто про повышенной кошерности UNenLab (Unified Networking Lab, UNL)
https:://habrahabr.ru/post/262027/

Вопрос про «прочих вендоров» — что у них по обучению
а) теории
б) построению софтово-эмуляционной лабы на их железе

2. По собственно безопасности на уровне сети.
Про аплу альту понятно, см. выше, про циску тоже. Про остальных ничего не знаю и пока не интересно.

Как предотвратить модификацию файлов в Linux с помощью команды chattr

chattr (Change Attribute) — это утилита командной строки в linux, которая используется для установки/снятия специальных атрибутов файлов для предотвращения случайной модификации и удаления файлов или директорий, даже если вы авторизованы как root.

Нативные файловые системы в Linux, такие как ext2, ext3, ext4, btrfs, поддерживают все флаги для файлов. Никто не сможет удалить или модифицировать файл/директорию, защищенный атрибутами, установленными с помощью команды chattr, даже имея полный доступ ко всем операциям с файлом. Очень полезно защитить атрибутами такие файлы , как passwd и shadow, содержащие информацию о пользователе.

Синтаксис chattr:

Атрибуты и флаги

Ниже приведен список часто используемых атрибутов и соответствующих флагов, которые согут быть установлены с помощью команды chattr.
1. Если обращаются к файлу с установленным атрибутом «А», его запись atime не обновляется.
2. Если модифицируется файл с установленным атрибутом «S», изменения синхронизируются с диском.
3. Если установлен атрибут «a», файл может быть открыт для записи только в режиме добавления текста.
4. Если установлен атрибут «i», файл нельзя модифицировать (immutable). Это значит нельзя переименовывать, создавать символьные ссылки, исполнять и записывать, снять этот втрибут может только суперпользователь.
5. Если установлен атрибут «j», то при модификации файла сначала будет обновлена информация о файле в журнале ext3, а затем уже сам файл.
6. Если установлен атрибут «t», файл нельзя объединять с другими файлами.
7. Файл с атрибутом «d» не будет являться кандидатом для резервного копирования при запуске процесса dump.
8. При удалении файла с атрибутом «u» его данные сохраняются, и пользователь сможет восстановить его.

Операторы

+ : добавляет атрибут к существующим у файла атрибутам.
— : удаляет атрибут файла.
= : оставляет существующие у файла атрибуты.

Теперь мы продемонстрируем вам несколько примеров применения команды chattr.

1. Как защитить файл от удаления

Для демонстрационных целей мы будем использовать директорию demo и файл important_file.conf. Сначала посмотрим, какие атрибуты у них установлены, с помощью команды ls -l. Как можно видеть ниже пока никаких атрибутов нет.

Для установки атрибута мы используем оператор +, для снятия — оператор -. Давайте защитим файл от удаления кем бы то ни было, даже суперпользователем.

Замечание: Бит +i может быть установлен только суперпользователем, либо пользователем с привилегиями sudo.
Давайте проверим установленные атрибуты с помощью команды ‘lsattr’.

Теперь, попытавшись удалить, переименовать или изменить права доступа к файлу, вы увидите сообщение: «Operation not permitted».

2. Как снять атрибут с файла

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

Теперь снова проверим наличие атрибутов с помощью команды ‘lsattr’.

Флаг ‘-i’ удален, поэтому мы спокойно можем удалить файлы и директории.

3. Как защитить файлы /etc/passwd и /etc/shadow

Предотвратив модификацию файлов /etc/passwd или /etc/shadow, мы защитим их от случайного удаления или подмены, а также отключим создание пользовательских аккаунтов.

Теперь попробуем создать создать нового пользователя, и получаем сообщение об ошибке ‘cannot open /etc/passwd’.

Таким образом вы можете защитить важные файлы от удаления.

4. Добавление данных в файл без изменения уже существующих

Если вы хотите разрешить только добавление данных файл, без редактирования уже существующих данных, это можно сделать с помощью установки атрибута ‘a’:

Теперь файл можно открыть на запись только в режиме добавления данных. Попробовав заменить существующее содержимое файла example.txt, вы увидите сообщение об ошибке ‘Operation not permitted’:

Попытаемся добавить в файл новый контент и проверить результат:

5. Как защищать директории

Для защиты всей директории вместе с содержащимися в ней файлами используется флаг ‘-R’ (рекурсия) вместе с ‘+i’.

После рекурсивной установки атрибута попробуем удалить директорию вместе со всеми файлами:

Права доступа в Linux, еще одна маленькая шпаргалка

Очередная шпаргалка которая поможет быстро получить информацию об управлении правами доступа в ОС UNIX.

Общие понятия:

У каждого объекта в Linux есть свой идентификатор, а так же права доступа, применяемые к данному идентификатору. Идентификатор есть у пользователя — UID, у группы — GID, у файла — inod. Собственно inode является, как идентификатором файла/каталога, так и сущностью, которая содержит в себе информацию о файле/каталоге. Например такую, как: принадлежность к владельцу/группе, тип файла и права доступа к файлу.

Чтобы визуально лицезреть права доступа к файлу или каталогу, его тип и владельцев, а так же, если необходимо, и сам номер inode, необходимо выполнить следующую команду:

Из вывод команды видно (рассмотрим первую строку):

это есть номер inode

это есть те самые права доступа и тип файла (об этом ниже)

количество жестких ссылок на файл

имя владельца файла

имя группы владельца файла

размер файла

дата создания файла

имя файла/каталога

Для каждого объекта файловой системы в модели полномочий Linux есть три типа полномочий: полномочия чтения (r от read), записи (w от write) и выполнения (x от execution). В полномочия записи входят также возможности удаления и изменения объекта.  Право выполнения можно установить для любого файла. Потенциально, любой файл в системе можно запустить на выполнение, как программу в Windows. В Linux является ли файл исполняемым или нет, определяется не по его расширению, а по правам доступа. Кроме того, эти полномочия указываются отдельно для владельца файла, членов группы файла и для всех остальных.

Собрав вышесказанное в кучу, то есть представив 3 правила (rwx) для трех групп (владелец, группа, остальные) запись прав доступа будет выглядеть вот так: rwx rwx rwx(то есть владельцу разрешено чтение, выполнение и запись, группе разрешено то же самое и остальным). Рассмотрев права на папку /bin в выше приведенном листинге, можно представить такую картину:

Кроме указанного представления полномочий доступа (символьного), существует так же и числовое представление. Для общего понимания, приведу таблицу соответствия числового (двоичного и десятичного) значения прав доступа и буквенного:

владелец группа остальные
буквенное rwx r-x r—
числовое (десятичное) 421 401 400
итоговое 7 5 4

В приведенной таблице показано, что право чтения, соответствует значению 4, право записи — 2, право выполнения — 1, отсутствие права — 0, складывая данные показатели, можно представлять и назначать права в числовом виде. Для примера, права rwx r-x r— будут соответствовать значению 754, потому что: rwx (4+2+1=7) r-x (4+0+1=5) r— (4+0+0=4).  Так же, довольно распространена комбинация rw- (4+2+0=6). Думаю данный пример достаточно нагляден.

Особенности прав доступа для каталогов

Права доступа для каталогов немного отличаются. Это в первую очередь связано с тем, что система трактует операции чтения и записи для каталогов отлично от остальных файлов. Правочтения каталога позволяет Вам получить имена (и только имена) файлов, находящихся в данном каталоге. Чтобы получить дополнительную информацию о файлах каталога (например, подробный листинг команды ls -l), системы придется «заглянуть» в метаданные файлов, что требует права на выполнения для каталога. Право на выполнение также потребуется для каталога, в который Вы захотите перейти (т.е. сделать его текущим) с помощью команды cd. Итого, право чтения на каталог, позволяет читать имя содержимого, право выполнения — чтение содержимого с метаданными (правами и др.)

Управление правами доступа

Управление правами доступа происходит с помощью команды chmod, управление владельцем файла происходит с помощью команды chown.

Синтаксис команд следующий:

или

где:

может быть u (от user) — владелец-пользователь, g (от group) — владелец-группа, o (от other) — остальные пользователи, a (от all) — все вышеперечисленные группы вместе

может быть + — добавить, — -убрать, = — присвоить указанное

может быть: r- чтение, w — запись, x — выполнение

соответственно — имя или путь к файлу

числовое обозначение прав доступа (755, 644 и т.п.)

пример:

это будет аналогично:

а так же:

Использование команды chown выглядит следующим образом:

chown user:group file

сменить владельцев файла file на user:group.

Дополнительные атрибуты файлов в Linux (sticky bit, SGID, SUID)

В Linux кроме прав чтения, выполнения и записи, есть еще 3 дополнительных атрибута:

1. Sticky bit (он же бит закрепления в памяти)

sticky bit появился в пятой редакции UNIX в 1974 году для использования в исполняемый файлах. Он применялся для уменьшения времени загрузки наиболее часто используемых программ. После закрытия программы код и данные оставались в памяти, а следующий запуск происходил быстрее. (отсюда и название — бит закрепления в памяти)

Сегодня sticky bit используется в основном для каталогов, чтобы защитить в них файлы. В такой каталог может писать ЛЮБОЙ пользователь. Из такой директории пользователь может удалить только те файлы, владельцем которых он является. Примером может служить директория /tmp, в которой запись открыта для всех пользователей, но нежелательно удаление чужих файлов.

2. SUID (он же Set User ID)

Атрибут исполняемого файла, позволяющий запустить его с правами владельца. В Unix-подобных системах приложение запускается с правами пользователя, запустившего указанное приложение. Это обеспечивает дополнительную безопасность т.к. процесс с правами пользователя не сможет получить доступ на запись к важным системным файлам, например /etc/passwd, который принадлежит суперпользователю root. Если на исполняемый файл установлен бит suid, то при выполнении эта программа автоматически меняет «эффективный userID» на идентификатор того юзера, который является владельцем этого файла. То есть, не зависимо от того — кто запускает эту программу, она при выполнении имеет права хозяина этого файла.

3. SGID (он же Set Group ID)

Аналогичен SUID, но относиться к группе. При этом, если для каталога установлен бит SGID, то создаваемые в нем объекты будут получать группу владельца каталога, а не пользователя.

Хотелось бы так же провести аналогию с ОС Windows. В указанной операционной системе права регулируются на основе списков ACL. В Linux тоже такое возможно, это реализуется с помощью пакета acl, но данный вопрос в текущей теме  я рассматривать не буду. Еще одно важное замечание! В Windows можно определить права доступа на каталог, и они автоматически распространяются на все файлы и поддиректории (если вы явно не указали иного). В Linux права доступа сохраняются в inode файла, и поскольку inode у каждого файла свой собственный, права доступа у каждого файла свои. Так же, права доступа пользователя и группы не суммируются, как в Windows. Если программа выполняется с правами пользователя и группы, которым принадлежит файл — работают только права хозяина файла.

Исполняемый файл с установленным атрибутом suid является «потенциально опасным». Без установленного атрибута, файл не позволит обычному пользователю сделать то, что выходит за пределы прав пользователя (пример, программа passwd позволяет пользователю изменить только собственный пароль). Но, даже незначительная ошибка в такой программе может привести к тому, что злоумышленник сможет заставить её выполнить ещё какие-нибудь действия, не предусмотренные автором программы. Стоит очень осторожно относиться к данным атрибутам!

При создании новой директории в директории с уже установленным SGID-битом, у созданной директории SGID-бит устанавливается автоматически!

Обозначение атрибутов Sticky, SUID, SGID

Специальные права используются довольно редко, поэтому при выводе программы ls -l символ, обозначающий указанные атрибуты, закрывает символ стандартных прав доступа. Пример:rwsrwsrwt, где s — SUID, s — SGID, t — Sticky. В приведенном примере не понятно, rwt — это rw- или rwx? Определить, стоит ли символ стандартных прав доступа под символами s и t — просто. Если t маленькое, значит x установлен. Если T большое, значит x не установлен. То же самое правило распространяется и на s.

В числовом эквиваленте данные атрибуты определяются первым символом при четырехзначном обозначении (который часто опускается при назначении прав), например в правах 1777 — символ 1 обозначает sticky bit. Остальные атрибуты имеют следующие числовое соответствие:

  • 1 — sticky bit
  • 2 — SGID
  • 4 — SUID

Права доступа к символьным ссылкам

Если посмотреть на права символьных ссылок, то они всегда выглядят так: rwxrwxrwx. Дело в том, что права на символьную ссылку не имеют особого значения. При использования ссылки драйвер файловой системы пересчитывает реальный путь к файлу и применяет права доступа, определенные для реального пути уже без учета символьной ссылки.

Права доступа по-умолчанию для вновь создаваемых объектов ФС (umask)

В Linux, при создании какого-либо файла или каталога предоставляемые права определяются по определенному алгоритму (формуле). Не вдаваясь в подробности и для большего понимания сути. Скажу, что есть исходные права доступа (0666- для файлов и 0777 — для каталогов), и есть такая штука как umask, которая задана для каждого пользователя и хранится в виде строчкиumask значение_umask в файле .bash_profile. Итого, у вновь создаваемого каталога будут права =исходные права доступаumask.

Узнать текущий umask можно, введя команду umask без параметров.

Пример:

Как видно из примера, umask установлен 0022, исходные права доступа равны 0666- для файлов и 0777 — для каталогов. В результате получаем:

0666 — 0022 = 0644 (что соответствует правам -rw-r—r— для file)
0777 — 0022 = 0755 (что соответствует правам -rwxr-xr-x для каталога test)

Давайте попробуем подвести итог нашему прочитанному материалу:

Существует 3 разновидности прав rwx, которые соответствуют чтение запись исполнение соответственно. Так же, права назначаются для 3х сущностей: rwx rwx rwx, что соответствует владелец, группа и все остальные соответственно. Буквенному обозначению прав доступа соответствуют числовые аналоги для упрощения управления.  Права доступа к файлам и директориям имеют различное значение. Для файлов:
r — право на чтение данных из файла.
w — право на изменение содержимого файла (запись).
x — право на исполнение файла.

Права доступа к директориям имеют другое значение:
r — право на чтение директории. Прочитать содержимое директории — получить список файлов.
w — право на изменение содержимого директории — создание и удаление файлов в этой директории.
x — право на «вхождение» в директорию.

Так же есть дополнительные атрибуты sticky bit, SUID и SGID, которые позволяют производить дополнительные специфические манипуляции с объектами файловой системы.

Права в Linux регулируются программной chmod, владельца объекта файловой системы можно изменить с помощью команды chown.

При создание новых файлов и каталогов в Linux есть права «по-умолчанию», которые заданы значением umask.

Полезно

Онлайн калькулятор прав: https:://permissions-calculator.org/
https:://www.k-max.name/linux/prava-dostupa-v-linux-eshhe-odna-malenkaya-shpargalka/

Права доступа в Linux

Одним неотъемлемым атрибутом любой файловой системы являются права доступа к файлам и папкам. Linux унаследовал классическую UNIX-систему прав, они не так гибки, как хотелось бы, но обеспечивают приемлемый уровень гибкости и безопасности для простых систем.

Права доступа к файлу (а как мы помним, в Linux все есть файл) хранятся в специальном 16-битовом поле атрибутов файла:Ashampoo_Snap_2016.03.20_13h08m12s_017_ Continue reading «Права доступа в Linux»

Sublime Text 3 for Python development

So I decided to give  Sublime Text 3 a try, and then in December 2015 I switched almost completely.

Why switch to Sublime Text 3?

For me, these are the reasons:

  • Sublime Text 3 is sooo pretty
  • it’s also so freaking fast, way faster than Sublime Text 2
  • and has vast range of plugins, and easy configuration.

Not much, you say? It was enough to made me switch editors. Continue reading «Sublime Text 3 for Python development»