- @freefd: *шоэтабыло?o_O *linux *chmod *SELinux *CentOS6*NIS
Не иллюзорные кирпичи выросли подо мной, когда одна из машин для внутренних сервисов отказалась принимать авторизацию через NIS. Дело в том, что вся авторизация по ssh у нас организована в виде sshd вкупе с патчем AuthorizedKeysCommand + NIS + nscd.
NIS "доставляет" на сервер passwd, group и, ненужный в нашем случае, shadow, nscd их кеширует. В свою очередь, sshd забирает публичный ключ пользователя не из .ssh/authorized_keys2, а из вывода исполняемого файла директивы AuthorizedKeysCommand. В качестве такого файла выступает скрипт getkeys.sh следующего содержания:
#!/bin/bash
USER=$1
curl --connect-timeout 2 --cacert /etc/pki/tls/certs/company.domain "https://nis.company.domain/getkey/$USER/`hostname -s`/0.4.3/`uname`/`uname -m`/`cat /etc/issue | head -1 | sed -e 's/ /%20/g'`"
Как видно, ключ запрашивается с кластера nis.company.domain по , используя клиентский сертификат и REST. Со стороны кластера присутствует простейший интерфейс управления разрешениями пользователей (их public ssh keys) относительно групп серверов. Парольная авторизация пользователей по ssh отключена, исключительно ключи.
Казалось, бы, причем здесь SELinux?
[root@blg-intsvcs ~]# grep abled /etc/sysconfig/selinux
SELINUX=disabled
[root@blg-intsvcs ~]# ls -la /usr/bin/getent
-rwxr-xr-x 1 root root 27776 Дек 6 19:42 /usr/bin/getent
[root@blg-intsvcs ~]# ls -la /usr/bin/getkeys.sh
-rwxr-xr-x. 1 root root 368 Ноя 25 20:17 /usr/bin/getkeys.sh
Обратите внимание на отличие в "." после x. Данный аспект достаточно не очевиден и порой даже незаметен в листинге. Точка означаете применение к данному файлу SELinux ACL, в логах sshd появляется:
Jan 20 03:37:44 blg-intsvcs sshd[15631]: error: bad ownership or modes for AuthorizedKeysCommand path component ""
Исправляется данное недоразумение простым
setfattr -h -x security.selinux /usr/bin/getkeys.sh
После чего
[root@blg-intsvcs ~]# ls -la /usr/bin/getkeys.sh
-rwxr-xr-x 1 root root 368 Ноя 25 20:17 /usr/bin/getkeys.sh
К чему я это всё? Для любой, даже отлично продуманной экосистемы, найдётся сущность, которая создаст аварийную ситуацию в этой системе. Недооценивайте чужую глупость и роботов.
Единственное, что меня интересует — на этой машине SELinux отключен, КАК на этом файле появились дополнительные ACL? - @freefd: *opennet *DoS *языки *perl *developmentПроблеме подвержены все языки программирования и фреймворки, в которых не используется дополнительная рандомизация значений в функциях хэширования, например, уязвимы Java (Tomcat, Geronimо, Jetty, Glassfish), JRuby, PHP, Python, Rubinius, Ruby 1.8.7, V8 JavaScript Engine и ASP.NET. Проблема не затрагивает язык Perl и ветку Ruby 1.9.x, так как в этих языках уже используется внесение случайных изменений при формировании хэшей. В Perl проблема была устранена ещё в 2003 году, после публикации отчёта о возможности совершения подобной атаки.
via opennet.ru1 month ago - @freefd: *work *cisco *catalyst *убитьвсехлюдейПродолжая #1421414
И вот, 7 сентября состоялся релиз ROMMON cat4500-ios-promupgrade-122_31r_SGA7, что исправляет CSCtr65301. И теперь, таки да, прекрасно загружается и cat4500-entservicesk9-mz.122-54.sg1.bin, и даже cat4500-entservicesk9-mz.150-2.sg2.bin.
Спасибо, Cisco, ОЧЕНЬ вовремя, вашу мать. - @ugnich: *политика *readonlyПечально наблюдать, как толпы наивных и глупых халявщиков затевают "революции", слепо следуя за, то ли авантюристами, то ли мошенниками. Они думают, что можно ничего не делать, а стоит только свергнуть Путина/Кучму/Лукашенко/... и сразу же в стране воцарит порядок, перестанут воровать и вообще жизнь пойдет на поправку. Проще всего обвинять во всех бедах власть, переложить ответственность на неё и слепо верить, что она — источник всех проблем.
Страна, общество, в котором вы живете — это, прежде всего, люди, а не власть. Пока не изменятся люди, не изменится ничего.
Устройте "революцию" в своем подъезде, дворе: посадите дерево, покрасьте бордюры, наведите порядок. А то ерунда какая-то получается: у всех во дворе бардак и разруха, зато каждый второй знает, как страной управлять надо. Начните с малого, сделайте хоть что-нибудь для общества, или заткнитесь и не нойте, революционеры хреновы.1 month ago - @freefd: *openssh *patches *AuthorizedKeysCommand *linux *opensourceДля openssh примерно с версии 5.3 существует отличный патч, позволяющий читать публичные ключи не из authorized_keys, а получать их выполнением команды после авторизации юзера. Увы, патч неполноценен, так-как флаги с configure не помогают, но для 5.9 удалось собрать следующим образом:
tar zxf openssh-5.9p1.tar.gz
patch -p0 < openssh-5.9p1-2auth.patch
patch -p0 < openssh-5.9p1-akc.patch
cd openssh-5.9p1
./configure --with-pam --with-ssl-engine
sed -i 's/DHAVE_CONFIG_H/DHAVE_CONFIG_H -DWITH_AUTHORIZED_KEYS_COMMAND/' Makefile
make
sed -i '#AuthorizedKeysCommand/AuthorizedKeysCommand/g' sshd_config
Протестировать корректность сборки с нужным нам функционалом можно посредством:
strings sshd | grep KeysCommand
./sshd -T -f sshd_config
Патчи openssh-5.9p1-2auth.patch и openssh-5.9p1-akc.patch забирались из git репозитория проекта ipfire (git.ipfire.org), openssh обычный ванильный из openssh.linux-mirror.org




