Wednesday, August 26, 2009

Садистские упражнения

В предыдущем посте я писал, как меня напрягают админы использующие для частных сетей (с выходом в инет)
произвольные адреса. Как и следовало ожидать, в вопросах администрирования у таких "спецов" тоже несколько своеобразный подход. Несколько примеров, замеченных мной на РЕАЛЬНЫХ рабочих серверах.

1. Как без заморочек сменить свой логин шелл.
 %cat .shrc
# $FreeBSD: src/share/skel/dot.shrc,v 1.3 2002/07/23 12:28:16 jmallett Exp $#
# .shrc - bourne shell startup file
#
# This file will be used if the shell is invoked for interactive use and
# the environment variable ENV is set to this file.
#
# see also sh(1), environ(7).
#
csh
exit
[...]

2. Как без заморочек настроить ротацию логов apache (FreeBSD specific).
%cat apache22/extra/httpd-vhosts.conf
[...]
CustomLog "|/usr/ports/www/apache22/work/httpd-2.2.11/support/.libs/rotatelogs /usr/home/nowby/now.by/logs/access_log 86400" "combined"
ErrorLog "|/usr/ports/www/apache22/work/httpd-2.2.11/support/.libs/rotatelogs /usr/home/nowby/now.by/logs/error_log 86400"
[...]

ЗЫ. Будет весело, если тот же комрад откроет для себя `portsclean -C`! Подлая FreeBSD..

3. Как без заморочек запретить логин через ssh по ключу пользователю root.

Меняем владельца файла /root/.ssh/authorized_keys на любого другого и готово.

4. Ну и напоследок, rc.conf фряхи, на которой крутится приличное число сервисов, хз как запущенных:
%cat /etc/rc.conf
defaultrouter="bla-bla"
hostname="bla-bla"
ifconfig_rl0="bla-bla"

webmin_enable="YES"


16 comments:

  1. первый способ с изменением csh на logout мной использовался на свиссхосте для тестирования всех суппортов, претендующих на звание админа :)
    2 - кстати зря ты наезжаешь, сей способ используется повсеместно, ибо апач везде одинаков, а logrotate - нет. на аиксах у нас так на всех сделано.
    4 - оно еще живо? о_О

    ReplyDelete
  2. >первый способ с изменением csh на logout мной использовался на свиссхосте для тестирования всех суппортов, претендующих на звание админа :)
    Кто-то проходил тест ?
    >2 - кстати зря ты наезжаешь, сей способ используется повсеместно, ибо апач везде одинаков, а logrotate - нет. на аиксах у нас так на всех сделано.
    Я про другое.
    Папка /usr/ports/www/apache22/work - времменая. Обновление портов или тот же portsclean -C (очищение /usr/ports/*/*/work) снесет ее нахер. Мне лично меньше всего хотелось бы помнить об этом
    ЗЫ. если установить апач как положено из портов, то rotatelogs ложится в /usr/local/sbin/rotatelogs
    >4 - оно еще живо? о_О
    Живо, если не ребутать :-)

    ReplyDelete
  3. 1) проходили, но не прошли :) на тест давались сутки времени и акк судоера.
    2) епт, я слово ports не заметил :)

    ReplyDelete
  4. >3. Как без заморочек запретить логин через ssh по ключу пользователю root.
    >Меняем владельца файлов /root/.ssh/id_* на любого другого и готово!
    авторизация ведется по паблик ключам из /root/.ssh/authorized_keys.
    asterisk:~# ls -la .ssh/
    total 20
    drwx------ 2 root root 4096 Aug 17 19:04 .
    drwxr-xr-x 17 root root 4096 Aug 26 11:39 ..
    -rw-r--r-- 1 root root 216 Aug 6 17:43 authorized_keys

    ReplyDelete
  5. вроде как меняли через vipw, а не в .shrc

    ReplyDelete
  6. Я про входящий логин на сервер. Если на серваке сделать
    chown www /root/.ssh/id_*
    то ты на него (под рутом) со своим публичным ключом не зайдешь.

    ReplyDelete
  7. я тоже про входящий логин :)
    slayer@support-6:~$ ssh root@80.94.164.22
    Linux asterisk 2.6.26-2-686 #1 SMP Sun Jun 21 04:57:38 UTC 2009 i686
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    Last login: Wed Aug 26 17:43:36 2009 from support-6.bas-net.by
    asterisk:~# chown nobody /root/.ssh/id_*
    chown: cannot access `/root/.ssh/id_*': No such file or directory

    ReplyDelete
  8. SSH(1) BSD General Commands Manual
    The file ~/.ssh/authorized_keys lists the public keys that are permitted for logging in. When the user logs in, the ssh program tells the server
    which key pair it would like to use for authentication. The client proves that it has access to the private key and the server checks that the
    corresponding public key is authorized to accept the account.
    id_rsa хранится у тебя на компе в ~/.ssh/id_rsa, откуда(с компа) ты заходишь на сервер.
    после генерации ключей в ~/.ssh/id_rsa.pub получаем public key, который и надо класть на серверах в /root/.ssh/authorized_keys

    ReplyDelete
  9. типа я зашел на сервак по ключу, а на нем нету файликов /root/.ssh/id_*. только authorized_keys

    ReplyDelete
  10. Re: SSH(1) BSD General Commands Manual
    Блин, конечно authorized_keys ))
    Я чето подкинулся на то что все файлы в .ssh были с другим владельцем.
    Все правильно: http://www.openssh.org/faq.html#3.14
    ЗЫ. Хотя правильным по-прежнему такой метод трудно назвать.

    ReplyDelete
  11. Витюньке менял на генте, и Фаллену на дебиане. Витюнька почти допер, а вот Фаллен сдулся :)

    ReplyDelete
  12. Я бы попробовал команду "ssh user@host bash" :-)
    А еще какие варианты ?

    ReplyDelete
  13. и благополучно разлогинился бы. bashrc же :)
    вариантов было много, вплоть до кронтабов :) это я-то, параноик, регулярно смотрю в профайл и рц. и как минимум еще одного такого параноика воспитал :)

    ReplyDelete
  14. А вот и нет. .bashrc в этом случае идет на йух. Попробуй.

    ReplyDelete
  15. упс, перепутал. не logout, а exit - логаут же сработает только для логин-шелла, для которого дергается .bash_profile
    с экзитом все кошерно:
    leave@moonbase:~$ echo "logout" >> .bashrc
    leave@moonbase:~$ echo "exit" >> .bashrc
    leave@moonbase:~$ ssh localhost bash
    leave@localhost's password:
    /home/leave/.bashrc: line 16: logout: not login shell: use `exit'
    leave@moonbase:~$
    забавно, что алиасы не подсасываются О_о

    ReplyDelete
  16. Прикольно что варианты:
    ssh localhost "bash -norc"
    ssh localhost "bash --rcfile /dev/null"
    не дают скинуть .bashrc %) %)

    ReplyDelete