Админим с Буквой
5.52K subscribers
303 photos
8 videos
59 files
1.16K links
Канал о системном администрировании, DevOps и немного Инфобеза.

По всем вопросам обращаться к @bykva. Рекламу не размещаю.
Download Telegram
Forwarded from Сюда иди!
[SECURITY] [DSA 4154-1] net-snmp security update

Package : net-snmp
CVE ID : CVE-2015-5621 CVE-2018-1000116
Debian Bug : 788964 894110

A heap corruption vulnerability was discovered in net-snmp, a suite of Simple Network Management Protocol applications, triggered when parsing the PDU prior to the authentication process. A remote, unauthenticated attacker can take advantage of this flaw to crash the snmpd process (causing a denial of service) or, potentially, execute arbitrary code with the privileges of the user running snmpd.
[SECURITY] [DSA 4142-1] uwsgi security update

Package : uwsgi
CVE ID : CVE-2018-7490
Debian Bug : 891639

Marios Nicolaides discovered that the PHP plugin in uWSGI, a fast, self-healing application container server, does not properly handle a DOCUMENT_ROOT check during use of the —php-docroot option, allowing a remote attacker to mount a directory traversal attack and gain unauthorized read access to sensitive files located outside of the web root directory.
Стоит ли постить в таком формате информацию об онвовлениях безопасности в debian?
anonymous poll

да, выборочно – 53
👍👍👍👍👍👍👍 52%

нет, это лишнее – 38
👍👍👍👍👍 37%

да, все обновления – 9
👍 9%

нет, я читаю это в других источниках – 2
▫️ 2%

👥 102 people voted so far.
Обновляем только выбранные пакеты

apt install --only-upgrade package [package]


#apt
Фиксируем версию пакетов в пределах заданных версий

Например, для того чтобы обновлять кластер k8s только в пределах 9-й ветки, можно сделать так:

создаем файл /etc/apt/preferences.d/kube-binaries.pref со следующим содержимым:

Package: kubelet kubeadm kubectl
Pin: version 1.9.*
Pin-Priority: 600


В результате, при выполнении поиска пакета:

# apt-cache policy kubeadm
kubeadm:
Installed: 1.9.6-00
Candidate: 1.9.6-00
Version table:
1.10.0-00 500
500 http://reporepo/kubernetes kubernetes-xenial/main amd64 Packages
*** 1.9.6-00 600
500 http://reporepo/kubernetes kubernetes-xenial/main amd64 Packages
100 /var/lib/dpkg/status
......


Как видите более новая версия есть, но кандидат на установку - 1.9.x

#apt #kubernetes
многопользовательский промокод на журнал ][akep от @pirotech
codeib-xakep-month

активировать до 1 апреля
Forwarded from Bo0oM
Когда хотфиксы поехали в продакшн
Обслуживание puppet

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

find /var/lib/puppet/clientbucket/ -type f -mtime +7 -atime +7 -delete


которая найдет файлы, к которым не обращались более недели и удалит их. Проблема основана на том, что на каждый чих папет хранит diff файла который был изменен агентом. дифф - это еще один новый файл. новый файл - новая inode..

#puppet #troubleshooting
Forwarded from Bo0oM
Приведение типов
Вжух! и неожиданность. Оказывается можно ставить сразу несколько тегов при сборке образа:

docker build -t <docker_registry>:v1.80.3  -t <docker_registry>:latest


например, тегаем нашу сборку тегом v1.80.3 и сразу тегом latest. Может для кого очевидно, для меня открытие =)
Греп - главный инструмент администратора (с)

Очень часто (и это действительно так) приходится что-то фильтровать. Это может быть все что угодно - логи, конфиги, проекты, чужие наработки - набор данных в которых нужно что-то найти, stdout... Умение пользоваться функционалом программ поиска\фильтрования может порой сэкономить вам кучу времени.

Какие инструменты используются для такой фильтрации?
1) cat - вывести файл на stdout
2) tail - вывести последие n строк из файла
3) less - утилита для просмотра stdout\файла с большим спектром возможностей. как пример - поиск строк по паттерну, введя вот такую конструкцию: /pattern для поиска по документу.
4) | - pipe, конвейер. ну, куда же без него. pipe - перенаправление стандартного потока вывода на стандартный поток ввода. В нашем случае это важный иструмент передачи данных между фильтрами.
5) ack - красочный поиск
6) grep - собственно самый главный инструмент. Тот самый инструмент, который и выполняет основную функцию фильтрования.

Искусство фильтрования кроется в умении объединять эти инструменты через pipe, правильной подаче входных данных на инструмент фильтрования и написание самих фильтров.

Что значит правильная подача данных?
Давайте сразу условимся, что работаем мы не с файлами на 50 строчек, а, например, с логами размером пару десятков гигабайт. Подача данных - это то, что мы отдадим фильтру на вход. Здесь есть несколько вариантов. Вариант первый - мы точно знаем что искать и вариант второй - мы не знаем, что на самом деле ищем. Второй случай - когда мы знаем, что-то происходило в такой-то период. За данный период у нас было несколько сотен тысяч записей. Что же делать? нужно пытаться подавать на вход фильтру ограниченное количество данных, а дальше смотреть глазами на получившийся вывод, стараясь понять какие записи в логах нам точно не нужны, снова фильтровать, исключая эти записи и так до тех пор, пока не останется вменяемо количество информации, которое можно анализировать.

Для подачи информации могут пригодиться команды cat, tail, head:

tail -n 1000 very_big_log | less
cat *.log | less


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

bzcat error.log.201803290* | grep -v 'upstream prematurely closed connection' | wc -l


Есть еще одно правило, которое гласит "don't pipe cats" - не пропускайте кошек через трубы. Правильнее (и менее трудозатратно) писать так:

bzgrep -v 'upstream prematurely closed connection' error.log.201803290* | less


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

bzcat error.log.201803290* | grep -v 'upstream prematurely closed connection' | grep -v 'overlimit resources' |less


Также полезно знать и помнить о том, что не всегда логи находятся в открытом виде - иногда могут быть и сжаты разными алгоритмами. Я уже писал про это ранее, но повторюсь:

bzcat, bzgrep, bzless - для алгоритма bzip
zcat, zgrep, zless - для gzip.


Вот простой пример использованая grep для фильтрования веб-трафика (ловим пакеты от нужных url):

tcpdump -i eth1 -A|grep example.com


Одна из немаловажных вещей - умение использовать регулярные выражения при осуществлении поиска. Самый банальный пример - поиск логов в указанный период. для этого нам вновь поможет grep, но здесь о нас заранее позаботились. можно использовать ключ, а можно написать egrep\fgrep. И они такж могут быть скомбинированы с bz\z, например bzegrep.

egrep = grep -E
Interpret PATTERN as an extended regular expression
fgrep = grep -F
Interpret PATTERN as a list of fixed strings (instead of regular expressions), separated by newlines, any of which is to be matched.

Ищем ip-адреса в логах:

egrep '(46.200.110.19|13.104.34.97)' /var/log/nginx/...


#grep
Сообщение оказалось слишком длинным, поэтому доп. примеры вынесу отдельно.

поиск пользователя в логах за последние 2 недели:
zgrep -n -H user@mail.ru $(find /var/log/ -name mail*log*gz -mtime -14


конструкция для фильтрования поступающих в real-time данных:
tail -f  /var/log/nginx/access.log | grep <pattern>
[SECURITY] [DSA 4161-1] python-django security update

Package : python-django
CVE ID : CVE-2018-7536 CVE-2018-7537

James Davis discovered two issues in Django, a high-level Python web development framework, that can lead to a denial-of-service attack. An attacker with control on the input of the django.utils.html.urlize() function or django.utils.text.Truncator's chars() and words() methods could craft a string that might stuck the execution of the application.
обращение по DNS в kubernetes между namespace

Исходные данные:
service name = jenkins
namespace = jenkins

Тогда, например, для пуша в jenkins можно сформировать такой web-hook:

http://<user>:<token>@jenkins.jenkins.svc.cluster.local:8080/job/my-super-job/build


#kubernetes #jenkins #git
Как вы думаете, что значит эта ошибка?
Так вот, боли и гнева сообщение. Данная ошибка у меня возникла при установке bareos клиента на шиндоус. И возникала она из-за того, что в пути до исполняемого файла присутствовали русские буквы. т.е. ну, мать его, 3 других программы из этого же каталога установились, а четвертая - нет. С - стабильность! Вы все еще ставите русифицированные ОСи? тогда баги идут к вам.
[SECURITY] [DSA 4164-1] apache2 security update


Package: apache2
CVE ID: CVE-2017-15710 CVE-2017-15715 CVE-2018-1283 CVE-2018-1301 CVE-2018-1303 CVE-2018-1312

Several vulnerabilities have been found in the Apache HTTPD server.

CVE-2017-15710

Alex Nichols and Jakob Hirsch reported that mod_authnz_ldap, if configured with AuthLDAPCharsetConfig, could cause an of bound write if supplied with a crafted Accept-Language header. This could potentially be used for a Denial of service attack.

CVE-2017-15715

Elar Lang discovered that expression specified in <FilesMatch> could match '$' to a newline character in a malicious filename, rather than matching only the end of the filename. This could be exploited in environments where uploads of some files are are externally blocked, but only by matching the trailing portion of the filename.

CVE-2018-1283

When mod_session is configured to forward its session data to CGI applications (SessionEnv on, not the default), a remote user could influence their content by using a "Session" header.

CVE-2018-1301

Robert Swiecki reported that a specially crafted request could have crashed the Apache HTTP Server, due to an out of bound access after a size limit is reached by reading the HTTP header.

CVE-2018-1303

Robert Swiecki reported that a specially crafted HTTP request header could have crashed the Apache HTTP Server if using mod_cache_socache, due to an out of bound read while preparing data to be cached in shared memory.

CVE-2018-1312

Nicolas Daniels discovered that when generating an HTTP Digest authentication challenge, the nonce sent by mod_auth_digest to prevent reply attacks was not correctly generated using a pseudo-random seed. In a cluster of servers using a common Digest authentication configuration, HTTP requests could be replayed across servers by an attacker without detection.