Size: a a a

Админим с Буквой

2018 February 18
Админим с Буквой
источник
Админим с Буквой
источник
Админим с Буквой
День открытых дверей в МИРЭА:) самый короткий в мире патч-корд
источник
2018 February 19
Админим с Буквой
1 запись conntrack занимает 304 байта
источник
Админим с Буквой
Переслано от iDjorik ★
В московском офисе Яндекса 5 марта пройдёт очередной OWASP Russia Meetup — встреча российского отделения сообщества, на которой соберутся специалисты по информационной безопасности.

OWASP (Open Web Application Security Project) объединяет крупные компании, образовательные организации и частных лиц со всего мира. Участники сообщества пишут статьи и учебные пособия, создают документацию, инструменты и технологии. Все разработки OWASP есть в открытом доступе.

На этот раз темой для обсуждения станет построение цикла разработки безопасных приложений (SDLC). Докладчики поделятся опытом построения SDLC в больших компаниях и расскажут о реальных примерах внедрения контролей ИБ. В конце встречи состоится круглый стол.

Количество мест ограничено, поэтому нужно заранее зарегистрироваться.

Программа

18:30 Регистрация
19:00 Блеск и нищета SAST, Андрей Ковалев, Яндекс
19:30 Хочешь SDLC? Научись программировать!, Иван Ёлкин, Qiwi
20:00 Перерыв
20:15 SDLC, Bug Bounty и разбор фильтров, Сергей Белов, Mail.Ru Group
20:45 Круглый стол

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

https://www.meetup.com/ru-RU/OWASP-Russia/events/247958426/
источник
2018 February 20
Админим с Буквой
Небольшая лабораторка по использованию apt и dpkg. Лекцию, на которую я ссылаюсь в этом файле, можно найти в канале несколькими месяцами ранее.
——
updated:
- dpkg-reconfigure
- purge

#lab
источник
Админим с Буквой
git blame

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

git blame ./group_vars/whatever_servers | grep whatever_variable
325ac9b0 (Username 2018-01-24 13:47:19 +0300  7) whatever_variable: "{{ whatever_variable | default(true) }}"


#git
источник
2018 February 21
Админим с Буквой
copy partition tables

В ситуации, когда у вас помер диск в софтовом рейде, первое, что необходимо сделать после замены - скопировать таблицу разделов с соднего диска. сделать это можно всего-навсего в одну строчку:

# sfdisk -d /dev/sda | sfdisk /dev/sdb


#utils #troubleshooting
источник
2018 February 22
Админим с Буквой
Ставите ли вы обновления от spectre и meltdown?
anonymous poll

Только софтовые обновления и только из репозиториев – 29
👍👍👍👍👍👍👍 28%

Буква лучший – 27
👍👍👍👍👍👍👍 26%

Да кому я нужен? – 18
👍👍👍👍 18%

Да, везде всё обновил – 16
👍👍👍👍 16%

Мне особо обновлять и нечего - что-то где-то и обновил – 6
👍 6%

Обновляю прошивки микроконтроллеров по мере возможности. – 3
👍 3%

Обновляю прошивки микроконтроллеров по мере возможности - планирую обновить всё по-максимуму. – 2
▫️ 2%

Устанавливаю только сотовые обновления – 1
▫️ 1%

👥 102 people voted so far.
источник
Админим с Буквой
смотрим stdout журнала systemd в режиме tailf

journalctl -u whatever.service -b --no-pager -f


appending -e will start the log at the end removing the need to scroll, but without printing the entire log beforehand.
appending --no-pager will print full log, so you wont have to scroll
appending -f will follow (print) updates to the log
appending -b will print logs for current boot

#logs #systemd #troubleshooting
источник
Админим с Буквой
что нужно биндить для chroot

для разных целей, например в rescue-mode для выполнения update-grub.

for fs in /dev /proc /sys /run; do mount --bind $fs /mnt/$fs; done


#chroot #bind #grub #troubleshooting
источник
2018 February 25
Админим с Буквой
удаление файла, начинающегося с тире

rm воспринимает такое имя как ключ, поэтому для того чтобы заставить rm прекратить воспринимать ключи нужно поставить двойное тире:

rm -rf -- -filename
источник
2018 February 26
Админим с Буквой
О современных системах мониторинга. Диалог автора самого с собой.

http://bit.ly/2AHQRa9

#thirdparty #read
источник
2018 February 27
Админим с Буквой
Переслано от dukeBarman
Если есть студенты, знающие С или Qt/C++ или Rust, и при этом не знающие куда податься летом, то предлагаем поучаствовать в разработке opensource проекта в рамках GSoC https://habrahabr.ru/post/350044/ (не за бесплатно и удалённо)
источник
Админим с Буквой
openvpn configuration

Годный ман по настройке маршрутизируемого openvpn

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-16-04
источник
Админим с Буквой
Есть ли среди вас девушки, имеющие отношение к IT?
anonymous poll

Я мужик, но очень хочется куда-нибудь ткнуть – 100
👍👍👍👍👍👍👍 61%

хватит глупого контента! – 40
👍👍👍 25%

Я девушка! – 12
👍 7%

да – 6
▫️ 4%

Мы встречаемся – 5
▫️ 3%

👥 163 people voted so far.
источник
2018 February 28
Админим с Буквой
Забавная история о том, как у автора тормозил курсор на рабочей станции с 24-ядерным процессором.

https://randomascii.wordpress.com/2017/07/09/24-core-cpu-and-i-cant-move-my-mouse/

#en #reading #thirdparty #debug
источник
Админим с Буквой
git restore removed commit

Что делать если случайно удалил коммит, а потом также случайно пошел и запушил с форсом в репозиторий?

В таком случае, если известен ID коммита, его можно достаточно просто восстановить:

git reset --hard ID

В случае, если вы уже после этого что-то наделали, коммит можно попробавть накатить сверху:

git cherry-pick ID
источник
2018 March 01
Админим с Буквой
Настраиваем Dynamic Volume Provisioning в k8s с ceph

Как и обычно, все что можно поставить одной командой не описывают в мануалах. К сожалению просто настроить StorageClass для автоматизации - мало. Самая главная проблема заключается в том, что kube-controller-manager не включает в себя самой малости, ну, казалось бы, абсолютно лишней детали - бинарника rbd. Нет бинарника - контроллер уже никаким образом не может управлять внешними образами и контактировать с ceph. Замечу, что для автопровижена и последующего mount'a используются разные бинарники rbd. в случае создания образов - бинарник находится внутри контейнера, а в случае монтирования томов - это действие выполняет сама ОС ноды. и поставить туда их нужно также, правда здесь это можно сделать пакетным менеджером - пакет ceph-common.

Поэтому мы будем поднимать сторонний контроллер, в котором нужный бинарник присутствует. Все приведенные примеры актуальны для версии куда 1.9+ и могут быть несовместимы с ранними.

1. Создать права. Если вы используете RBAC, то для того чтобы наш сторонний контроллер получил доступ, нужно дать ему права. Можно дать существующие, но я предпочитаю создавать отдельное правило. Итак, создадим аккаунт rbd-provisioner и правило на его основе.

kubectl create serviceaccount --namespace kube-system rbd-provisioner
kubectl create clusterrolebinding rbd-provisioner-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:rbd-provisioner


2. Создать секреты для админа в kube-system и для attach-пользователя в конкретном ns. Здесь речь идет о пользователях ceph. Первый - пользователь с правами создания образов в пуле, второй - пользователь с правами монтирования образов к контейнерам. т.е. по замыслу первый - системный, его надо завести в пространстве kube-system, а второй - просто предоставляет право читать\писать данные из образа в контейнере. И этот серет должен быть в каждом пространстве, где вы хотите испольховать автопровижн. Это может на самом деле быть один и тот же пользователь - зависит от вашей паранои.

apiVersion: v1
data:
 key: XXXXXXXXXXXXX
kind: Secret
metadata:
 name: ceph-secret-real-admin
type: kubernetes.io/rbd
---
apiVersion: v1
data:
 key: XXXXXXXXXXXXXX
kind: Secret
metadata:
 name: ceph-secret
 namespace: mkctf
type: kubernetes.io/rbd


3. Создаем StorageClass. Это как раз та самая штука, которая знает по каким правилам, кому, где и как создавать нужные образа. Что важно: имя - выбирать то, которое вы потом будете указывать в claim. т.е. в зависимоти от георасположения\скорости\ваших любых других идей вы в claim указываете именно тот StorageClass который отвечает вашим требованиям. второе - "provisioner: ceph.com/rbd" это то имя, с которорым в апи авторизуется наш сторонний storage controller. Сменить его видимо только через компиляцию бинарника. Это я к вопросу о том, как связаны контейнер нашего стороннего контроллера и StorageClass.

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
 name: ceph
provisioner: ceph.com/rbd
parameters:
 monitors: 10.10.0.21:6789,10.10.0.22:6789,10.10.0.23:6789
 adminId: admin
 adminSecretName: ceph-secret-real-admin
 adminSecretNamespace: kube-system
 pool: kubernetes
 userId: kube
 userSecretName: ceph-secret
 imageFormat: "2"
 imageFeatures: "layering"
источник
Админим с Буквой
4. Создаем deployment storage-controller'a. Для того чтобы контейнер с rbd, наш сторонний контроллер работали всегда - создадим deployment. Контейнер взят из обсуждения на github: https://github.com/kubernetes/kubernetes/issues/38923#issuecomment-315255075. там же несколькими ответами выше предлагают готовый докер файл для билда собственного контроллера - для тех, кто предпочитает испольовать свои наработки.

apiVersion: apps/v1
kind: Deployment
metadata:
 name: rbd-provisioner
 namespace: kube-system
 labels:
   app: rbd-provisioner
spec:
 replicas: 1
 selector:
   matchLabels:
     app: rbd-provisioner
 template:
   metadata:
     labels:
       app: rbd-provisioner
   spec:
     containers:
     - name: rbd-provisioner
       image: "quay.io/external_storage/rbd-provisioner:v0.1.1"
     serviceAccount: rbd-provisioner
     serviceAccountName: rbd-provisioner

5. Создаем deployment и pvc. Здесь в качестве примера я взял контейнер монги и попытался ей создать 1-гигабайтное хранилище. здесь как раз мы и указываем имя storageClassName: ceph, таким образом теперь pvc знает к кому обратиться за pv, а pv - знает как и где создать образ, который подцепится. Не забудьте также подумать о том, какие политики использовать при освобождении ресурса. по-умолчанию это - удалить все. (см. persistentVolumeReclaimPolicy)

apiVersion: apps/v1
kind: Deployment
metadata:
 name: mongodb-deployment-test
 labels:
   app: mongodb-test
spec:
 replicas: 1
 selector:
   matchLabels:
     app: mongodb-test
 template:
   metadata:
     labels:
       app: mongodb-test
   spec:
     containers:
     - name: mongodb-test
       image: mongo:3.6
       ports:
       - containerPort: 27017
       volumeMounts:
       - name: mongodb-test
         mountPath: /data/db
     volumes:
     - name: mongodb-test
       persistentVolumeClaim:
         claimName: mongodb-test
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
 name: mongodb-test
spec:
 accessModes:
   - ReadWriteOnce
 volumeMode: Filesystem
 resources:
   requests:
     storage: 1Gi
 storageClassName: ceph

результат:

deployment:
NAME                      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE       CONTAINERS     IMAGES                             SELECTOR
mongodb-deployment-test   1         1         1            1           1h        mongodb-test   mongo:3.6                          app=mongodb-test

pods:
NAME                                       READY     STATUS    RESTARTS   AGE       IP            NODE
mongodb-deployment-test-6f9b57b85b-2846f   1/1       Running   0          1h        10.244.2.98   kube3

pvc:
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM                 STORAGECLASS   REASON    AGE
pvc-59f66df1-1d50-11e8-9198-000c2968bfa9   1Gi        RWO            Delete           Bound     mkctf/mongodb-test    ceph                     1h

pv:
NAME            STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
mongodb-test    Bound     pvc-59f66df1-1d50-11e8-9198-000c2968bfa9   1Gi        RWO            ceph           1h
источник