Я просто не могу об этом молчать =) Пятничный вброс, вообще не по теме канала. Все эти годы нам просто морочили голову!
https://lenta.ru/news/2018/03/23/mozhno/
https://lenta.ru/news/2018/03/23/mozhno/
lenta.ru
Россиянам разрешили мочить манту
Пробу на туберкулез (реакция Манту) можно мочить, сообщила главный внештатный специалист фтизиатр Минздрава России Ирина Васильева. «Нельзя расчесывать. Теребить нельзя, тереть мочалкой», — уточнила она. По словам медика, с реакцией Манту «все не так строго»…
Для ребятушек, которые пользуются windows и RDP, будьте бдительны:
https://xakep.ru/2018/03/26/no-patch-no-rdp/
https://xakep.ru/2018/03/26/no-patch-no-rdp/
xakep.ru
Пользователи Windows, которые не установят патч для уязвимости в CredSSP, останутся без RDP
Представители Microsoft подтвердили, что для ликвидации уязвимости в протоколе CredSSP они готовы пойти на самые решительные меры, вплоть до отключения RDP для тех, кто не установит обновления.
[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.
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.
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.
anonymous poll
да, выборочно – 53
👍👍👍👍👍👍👍 52%
нет, это лишнее – 38
👍👍👍👍👍 37%
да, все обновления – 9
👍 9%
нет, я читаю это в других источниках – 2
▫️ 2%
👥 102 people voted so far.
Фиксируем версию пакетов в пределах заданных версий
Например, для того чтобы обновлять кластер k8s только в пределах 9-й ветки, можно сделать так:
создаем файл
В результате, при выполнении поиска пакета:
Как видите более новая версия есть, но кандидат на установку - 1.9.x
#apt #kubernetes
Например, для того чтобы обновлять кластер 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 апреля
codeib-xakep-month
активировать до 1 апреля
Обслуживание puppet
Puppet хавает inode достаточно активно. со временем (месяц-два-три) их накапливается достаточное количество, которое забивает весь диск. Для очистки можно воспользоваться следующей командой:
которая найдет файлы, к которым не обращались более недели и удалит их. Проблема основана на том, что на каждый чих папет хранит diff файла который был изменен агентом. дифф - это еще один новый файл. новый файл - новая inode..
#puppet #troubleshooting
Puppet хавает inode достаточно активно. со временем (месяц-два-три) их накапливается достаточное количество, которое забивает весь диск. Для очистки можно воспользоваться следующей командой:
find /var/lib/puppet/clientbucket/ -type f -mtime +7 -atime +7 -delete
которая найдет файлы, к которым не обращались более недели и удалит их. Проблема основана на том, что на каждый чих папет хранит diff файла который был изменен агентом. дифф - это еще один новый файл. новый файл - новая inode..
#puppet #troubleshooting
Вжух! и неожиданность. Оказывается можно ставить сразу несколько тегов при сборке образа:
например, тегаем нашу сборку тегом v1.80.3 и сразу тегом latest. Может для кого очевидно, для меня открытие =)
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\файла с большим спектром возможностей. как пример - поиск строк по паттерну, введя вот такую конструкцию:
4) | - pipe, конвейер. ну, куда же без него. pipe - перенаправление стандартного потока вывода на стандартный поток ввода. В нашем случае это важный иструмент передачи данных между фильтрами.
5) ack - красочный поиск
6) grep - собственно самый главный инструмент. Тот самый инструмент, который и выполняет основную функцию фильтрования.
Искусство фильтрования кроется в умении объединять эти инструменты через pipe, правильной подаче входных данных на инструмент фильтрования и написание самих фильтров.
Что значит правильная подача данных?
Давайте сразу условимся, что работаем мы не с файлами на 50 строчек, а, например, с логами размером пару десятков гигабайт. Подача данных - это то, что мы отдадим фильтру на вход. Здесь есть несколько вариантов. Вариант первый - мы точно знаем что искать и вариант второй - мы не знаем, что на самом деле ищем. Второй случай - когда мы знаем, что-то происходило в такой-то период. За данный период у нас было несколько сотен тысяч записей. Что же делать? нужно пытаться подавать на вход фильтру ограниченное количество данных, а дальше смотреть глазами на получившийся вывод, стараясь понять какие записи в логах нам точно не нужны, снова фильтровать, исключая эти записи и так до тех пор, пока не останется вменяемо количество информации, которое можно анализировать.
Для подачи информации могут пригодиться команды cat, tail, head:
В первом случае мы подали ограниченное количество информации из конца файла, которую будем анализировать. Следующий этап - выкинуть лишние строчки из вывода. Кроме того, мы можем, например посчитать количество полученных строк после фильтрации, это можно сделать с помощью
Есть еще одно правило, которое гласит "don't pipe cats" - не пропускайте кошек через трубы. Правильнее (и менее трудозатратно) писать так:
И так дальше, убирая все больше и больше лишних строк, приходим к нужному результату. За отбрасывание ненужного паттерна отвечает ключ -v.
Также полезно знать и помнить о том, что не всегда логи находятся в открытом виде - иногда могут быть и сжаты разными алгоритмами. Я уже писал про это ранее, но повторюсь:
Вот простой пример использованая grep для фильтрования веб-трафика (ловим пакеты от нужных url):
Одна из немаловажных вещей - умение использовать регулярные выражения при осуществлении поиска. Самый банальный пример - поиск логов в указанный период. для этого нам вновь поможет grep, но здесь о нас заранее позаботились. можно использовать ключ, а можно написать egrep\fgrep. И они такж могут быть скомбинированы с bz\z, например
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-адреса в логах:
#grep
Очень часто (и это действительно так) приходится что-то фильтровать. Это может быть все что угодно - логи, конфиги, проекты, чужие наработки - набор данных в которых нужно что-то найти, 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 недели:
конструкция для фильтрования поступающих в real-time данных:
поиск пользователя в логах за последние 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.
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:
#kubernetes #jenkins #git
Исходные данные:
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.
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.