Forwarded from Inside
Telegraph
Город 26
Мама сказала, что отдыхала в одном лагере с детьми из города 26 и о разглашении о нем грозили расстрелом всей семьи. Сейчас информацию рассекретили, но ведутся споры, я нашла много информации о том, что там построят не новую лабораторию, а настоящий могильник…
Убитый контейнер докера не запускается
Ошибка:
#docker #troubleshooting #networking
Ошибка:
endpoint with name XXXX already exists in network bridge.
Решение:docker network disconnect --force bridge <Container ID or Endpoint ID or Container NAME>
Это не для тех, кто не умеет гуглить, а для того чтобы наоборот каждый раз не гуглить когда такое возникает=)#docker #troubleshooting #networking
Запускаем задачу в background в докер контейнере через ansible
Особо ничего сложного, nohup да &, однако процесс все равно не отпускает консоль, посему ansible зависает. Чтобы этого не происходило, можно применить такую конструкцию:
Особо ничего сложного, nohup да &, однако процесс все равно не отпускает консоль, посему ansible зависает. Чтобы этого не происходило, можно применить такую конструкцию:
- name: run bg job#docker #ansible
shell: docker exec -i <container> sh -c 'nohup CMD &'
async: 45
poll: 0
RBAC on docker registry
Поигрался тут на днях с одним сервисом который позволяет использвать token-based аутентификацию пользователя с docker registry. Стандартный вариант логин-пароль уже не удовлетворяет потребностям и пришлось искать что-то другое. В итоге набрел на готовое решение от cesanta/docker_auth. Написано на go, легковестный token-сервис с поддержкой различных способов аутентификации пользователей и также, что самое главное - это ACL. С помощью acl можно задавать кто, и какие репозитории может пушить и пуллить, с точностью до регулярного выражения. В качестве базы хранения пользователей-acl можно выбрать статический файл, mongodb, ldap и некоторые другие. В том числе можно использовать и сторонний софт, хоть самопис. токен будет выдаваться в зависимости от кода ответа этого софта. И тут уже можно сделать все что угодно - хоть выдавать токены в зависимости от времени суток. Поковырявшись в этом собрал готовое решение, запускаемое через docker-compose. Оно содержит набор из 3 контейнеров: docker_auth, docker registry и mongo. После старта docker-compose все что нужно сделать - загрузить список правил и пользователей в mongo через простейший shell-скрипт.
https://github.com/bykvaadm/docker_auth
#docker #auth
Поигрался тут на днях с одним сервисом который позволяет использвать token-based аутентификацию пользователя с docker registry. Стандартный вариант логин-пароль уже не удовлетворяет потребностям и пришлось искать что-то другое. В итоге набрел на готовое решение от cesanta/docker_auth. Написано на go, легковестный token-сервис с поддержкой различных способов аутентификации пользователей и также, что самое главное - это ACL. С помощью acl можно задавать кто, и какие репозитории может пушить и пуллить, с точностью до регулярного выражения. В качестве базы хранения пользователей-acl можно выбрать статический файл, mongodb, ldap и некоторые другие. В том числе можно использовать и сторонний софт, хоть самопис. токен будет выдаваться в зависимости от кода ответа этого софта. И тут уже можно сделать все что угодно - хоть выдавать токены в зависимости от времени суток. Поковырявшись в этом собрал готовое решение, запускаемое через docker-compose. Оно содержит набор из 3 контейнеров: docker_auth, docker registry и mongo. После старта docker-compose все что нужно сделать - загрузить список правил и пользователей в mongo через простейший shell-скрипт.
https://github.com/bykvaadm/docker_auth
#docker #auth
GitHub
bykvaadm/docker_auth
example of cesanta/docker_auth. Contribute to bykvaadm/docker_auth development by creating an account on GitHub.
Git commit messages
Как правильно комиттить в гит. Хорошая статья с хабра:
https://habr.com/post/416887/
#thirdparty #read #git
Как правильно комиттить в гит. Хорошая статья с хабра:
https://habr.com/post/416887/
#thirdparty #read #git
Хабр
Как следует писать комментарии к коммитам
Предисловие от переводчика На протяжении многих лет разработки ПО, будучи участником многих команд, работая с разными хорошими и опытными людьми, я часто наблю...
progit_v2.1.3.epub
5.7 MB
Книга про гит на русском. Это для тех людей, кто вдруг ее еще не видел. Или вдруг еще даже не пользовался никогда гитом. Самое время начать!
#git
#git
Выпуск Debian 9.5
Доступно пятое корректирующее обновление дистрибутива Debian 9, в которое включены накопившиеся обновления пакетов и устранены недоработки в инсталляторе. Выпуск включает 91 обновление с устранением проблем со стабильностью и 100 обновлений с устранением уязвимостей.
Доступно пятое корректирующее обновление дистрибутива Debian 9, в которое включены накопившиеся обновления пакетов и устранены недоработки в инсталляторе. Выпуск включает 91 обновление с устранением проблем со стабильностью и 100 обновлений с устранением уязвимостей.
Kubernetes restart all pods
#kubernetes
kubectl -n NS get po --show-labels
## pickup necessary labels
kubectl -n NS delete po -l app=xxxx
#kubernetes
Лулз
источник: http://absurdopedia.wikia.com/wiki/Linux#.D0.A4.D0.B0.D0.B1.D1.80.D0.B8.D0.BA.D0.B0_.D0.BF.D0.B8.D0.BD.D0.B3.D0.B2.D0.B8.D0.BD.D0.BE.D0.B2?li_source=LI&li_medium=wikia-footer-wiki-rec
#include <stdlib.h>
#include <stdio.h>
#include <cerr.h>
#include <bash.h>
#define INFINITE ~0u
int main(int argc, char *argv[]) {
printf("Hello world!\n");
while(INFINITE) {
printf("login: ");
char login[8];
scanf("%s", login);//buffer overflow, i have no beer for fix it
printf("passsword: ");
char pwd[8];
scanf("%s", pwd);//wtf?! beer! beer! beer!
if(0.25 > rand() / (float)RAND_MAX) {
startBash(login);
} else {
printf("Login is incorrect!\n");
}
if(0.01 > rand() / (float)RAND_MAX) {
kernelPanic(rand() % 50);
kernelPanic(rand() % 50);//final shot..DIE! or beer..
}
}
return 0;
}
источник: http://absurdopedia.wikia.com/wiki/Linux#.D0.A4.D0.B0.D0.B1.D1.80.D0.B8.D0.BA.D0.B0_.D0.BF.D0.B8.D0.BD.D0.B3.D0.B2.D0.B8.D0.BD.D0.BE.D0.B2?li_source=LI&li_medium=wikia-footer-wiki-rec
Абсурдопедия
Linux | Абсурдопедия | FANDOM powered by Wikia
— К логопеду! ~ Анонимус про Линупс. Linux — название чугунного ведра для операционной системы ГНУ, используемой пингвинами. Является предметом поклонения линуксоидов (также известных как…
Лаба по повышению привилегий в Linux
https://in.security/lin-security-practise-your-linux-privilege-escalation-foo/
#security #learning #thirdparty
https://in.security/lin-security-practise-your-linux-privilege-escalation-foo/
#security #learning #thirdparty
In.Security
Lin.security – practise your Linux privilege escalation foo
Have a go at our vulnerable Linux VM Lin.security, that provides mulitple ways to escalate privileges and get root.
Cleanup docker registry
Проверено для версии 2.6.2
1. добавить в конфиг registry эти строки и перезапустить:
2. получаем список тегов для репозитория и выбираем список на удаление
3. помечаем объекты на удаление через api
4. заходим внутрь контейнера и запускаем garbage-collector.
Итого наша задача - получить список тегов, выбрать нужные на удаление. На каждый тег получить sha256 манифеста (docker-content-digest в заголовке ответа), а затем пометить этот заголовок на удаление. К концу 3-го пункта никакие данные еще не удалены. Удаление происходит не вручную, а с помощью нативного сборщика мусора. согласно помеченным манифестам будут удалены выбранные теги.
#docker #registry
Проверено для версии 2.6.2
1. добавить в конфиг registry эти строки и перезапустить:
storage:
delete:
enabled: true
2. получаем список тегов для репозитория и выбираем список на удаление
curl -u <user>:<password> https://<registry_host>/v2/<repo_name>/tags/list
3. помечаем объекты на удаление через api
repo="REPO_PATH"
tag_list='TAG LIST separated by space'
user="USER"
pwd="PASSWORD"
registry_host="<registry_host>"
header="Accept: application/vnd.docker.distribution.manifest.v2+json"
for tag in ${tag_list}; do
digest=$(curl -I -u $user:$pwd -H "$header" "https://${registry_host}/v2/${repo}/manifests/${tag}" 2>/dev/null| awk '$1 == "docker-content-digest:" {print $2}'| tr -dc '[[:print:]]')
curl -XDELETE -u $user:$pwd -H "$header" "https://${registry_host}/v2/${repo}/manifests/${digest}"
done
4. заходим внутрь контейнера и запускаем garbage-collector.
registry garbage-collect /etc/docker/registry/config.yml
Итого наша задача - получить список тегов, выбрать нужные на удаление. На каждый тег получить sha256 манифеста (docker-content-digest в заголовке ответа), а затем пометить этот заголовок на удаление. К концу 3-го пункта никакие данные еще не удалены. Удаление происходит не вручную, а с помощью нативного сборщика мусора. согласно помеченным манифестам будут удалены выбранные теги.
#docker #registry
Curl resolve w\o dns
Иногда нужно протестировать какой-то домен здесь и сейчас (особенно когда он работает через прокси и\или https), лезть при этом делать dns неохото, прописывать в hosts - тоже долго, поскольку это можно сделать не отходя далеко от курла:
Иногда нужно протестировать какой-то домен здесь и сейчас (особенно когда он работает через прокси и\или https), лезть при этом делать dns неохото, прописывать в hosts - тоже долго, поскольку это можно сделать не отходя далеко от курла:
curl --resolve foo.example.com:443:127.0.0.1 https://foo.example.com:443/#curl
.bashrc vs .bash_profile
разница между ними в том что .bash_profile исполняется при прямом логине в shell, тогда как .bashrc выполняется для non-login shells. Таким образом если вы например хотите настроить алиасы для работы в консоли на удаленном сервере - ваш файл bash_profile, если это будет отличный от прямого входа в shell - тогда настраиваем bashrc.
But, if you’ve already logged into your machine and open a new terminal window (xterm) then .bashrc is executed before the window command prompt. .bashrc is also run when you start a new bash instance by typing /bin/bash in a terminal.
#bash_tips_and_tricks
разница между ними в том что .bash_profile исполняется при прямом логине в shell, тогда как .bashrc выполняется для non-login shells. Таким образом если вы например хотите настроить алиасы для работы в консоли на удаленном сервере - ваш файл bash_profile, если это будет отличный от прямого входа в shell - тогда настраиваем bashrc.
But, if you’ve already logged into your machine and open a new terminal window (xterm) then .bashrc is executed before the window command prompt. .bashrc is also run when you start a new bash instance by typing /bin/bash in a terminal.
#bash_tips_and_tricks
Смотрим какое правило маршрутизации применится к ip адресу
ip r g x.x.x.x
Forwarded from GitHub'ненько
This media is not supported in your browser
VIEW IN TELEGRAM
A fully-modern text-based browser, rendering to TTY and browsers
#terminal
https://github.com/browsh-org/browsh
#terminal
https://github.com/browsh-org/browsh
wheezy to stretch update
При изменение репоса wheezy -> stretch и выполнении команды
Поможет доустановка пакетов:
#troubleshooting
При изменение репоса wheezy -> stretch и выполнении команды
apt-get update
может вылезти ошибка связанная с отсутствием ключей.W: There is no public key available for the following key IDs:
Поможет доустановка пакетов:
apt-get install debian-keyring debian-archive-keyring
#troubleshooting
Включаем coredump для ОС c systemd на борту
1. ставим пакет для управления - systemd-coredump
2. разрешаем дампить coredump процессам:
в файле /etc/systemd/system.conf правим
3. опционально разрешаем это для root:
в файле /etc/security/limits.d/core.conf
4. задаем поведение для демона, создающего дампы:
в файле /etc/sysctl.d/coredumps.conf
5. применение:
6. проверка:
в /var/lib/coredumps (или /var/tmp по-умолчанию) создастся coredump.
З.Ы. без каких либо настроек после установки пакета можно сразу управлять дампами через команду
#troubleshooting #coredump
1. ставим пакет для управления - systemd-coredump
2. разрешаем дампить coredump процессам:
в файле /etc/systemd/system.conf правим
DefaultLimitCORE=infinity
3. опционально разрешаем это для root:
в файле /etc/security/limits.d/core.conf
root hard core unlimited
root soft core unlimited
4. задаем поведение для демона, создающего дампы:
в файле /etc/sysctl.d/coredumps.conf
kernel.core_pattern = /var/lib/coredumps/core-%e-sig%s-user%u-group%g-pid%p-time%t
kernel.core_uses_pid = 1
fs.suid_dumpable = 2
5. применение:
systemctl daemon-reexec
или reboot
6. проверка:
kill -11 <PID>
в /var/lib/coredumps (или /var/tmp по-умолчанию) создастся coredump.
З.Ы. без каких либо настроек после установки пакета можно сразу управлять дампами через команду
coredumpctl list
и coredumpctl dump
#troubleshooting #coredump
перезапуск гнома
alt+F2 -> ввести букву r -> нажать enter
Окна при этом не будут закрыты. Аналог команды для терминала:
#troubleshooting
alt+F2 -> ввести букву r -> нажать enter
Окна при этом не будут закрыты. Аналог команды для терминала:
gnome-shell --replace
#troubleshooting
Forwarded from Кавычка (Bo0oM)
При внедрении собственных шаблонов в серверные шаблонизаторы (уязвимость SSTI) — эксплуатацию можно автоматизировать с помощью утилиты tplmap. Она и шаблонизатор подберет, и удобный шелл откроет для выполнения произвольного кода. Еще и плагин к Burp Suite имеет.
https://github.com/epinna/tplmap
https://github.com/epinna/tplmap
GitHub
GitHub - epinna/tplmap: Server-Side Template Injection and Code Injection Detection and Exploitation Tool
Server-Side Template Injection and Code Injection Detection and Exploitation Tool - epinna/tplmap
Kubernetes 1.10.x -> 1.11.x
Грабли! Грабли! Грабли! куда же без них...
Традиционно выкладываю свой опыт обновления тестового кластера на новую мажорную версию. Итак, прежде чем обновляться, читаем:
Тыц: https://github.com/kubernetes/kubernetes/issues/65863
и Тыц: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md
#kubernetes #troubleshooting
Грабли! Грабли! Грабли! куда же без них...
Традиционно выкладываю свой опыт обновления тестового кластера на новую мажорную версию. Итак, прежде чем обновляться, читаем:
Тыц: https://github.com/kubernetes/kubernetes/issues/65863
и Тыц: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md
#kubernetes #troubleshooting
GitHub
failed to load Kubelet config file /var/lib/kubelet/config.yaml after kubelet update · Issue #65863 · kubernetes/kubernetes
Is this a BUG REPORT or FEATURE REQUEST?: Uncomment only one, leave it on its own line: /kind bug What happened: /var/lib/kubelet/config.yaml got removed after kubelet update. What you expected to ...