Linux и Security

Linux и Security

 
  • Linux и Security
  • Запуск X-овой программы из под другого пользователя
  • Просмотреть открытые TCP-порты
  • Конфигурирование tcp-wrapper'а
  • Inetd и Xinetd
  • HTTPS дешево и сердито с помощью stunnel
  • Конфигурим sendmail, pop3, imap4 с SSL
  • PPP over SSL
  • А какой версии sendmail на вашей машине?

    * Имеющий доступ к консоли Linux может стать суперюзером *

  • 1. Booting to single-user mode
  • 2. Указать альтернативную программу init
  • 3. Задать другой root-partition
  • Лечение

    * kerneld and ifconfig *

  • Дырка в X
  • Security и lilo
  • Кое какие закрывашки в RedHat 5.2
  • Подозрительные services: Какой процесс висит на порту
  • Генерация ключей для беспарольного входа по ssh2

  • Запуск X-овой программы из под другого пользователя


    su - user -c "xauth add `xauth list $DISPLAY`; exec env DISPLAY=$DISPLAY program"

    Просмотреть открытые TCP-порты



          Список
    netstat -an netstat -an | grep LISTEN netstat -a | grep ESTABLISH

          Кто работает с портом:
    lsof -i tcp:3128

    Конфигурирование tcp-wrapper'а


    Перекрыть доступ снаружи на узловую машину: В файл /etc/hosts.deny вставить строчку
    ALL : ALL
    Открыть доступ на узловую машину с машин локальной сети 195.0.1.0 В файл /etc/hosts.allow вставить строчки
    ALL : \ 127.0.0.1
    ALL : \ 195.0.1.0/255.255.255.0

    Inetd и Xinetd


    Начиная с RedHat 7.3 inetd заменен на xinetd, кофигур теперь лежит не в /etc/inetd.conf а в /etc/xinetd.d/
    для каждого сервиса - отдельный файл, например:
    /etc/xinetd.d/swat service swat {
          disable = yes
          port = 901
          socket_type = stream
          wait = no
          only_from = 127.0.0.1 www.lib.ru 195.0.0.0/24 # only_from = 195.0.0.0/255.255.255.0 127.0 - а вот так нельзя

          user = root
          server = /usr/sbin/swat
          log_on_failure += USERID }
    # А так делается проброс порта
    service russianproxy {
          port = 8888
          bind = 195.0.0.3
          socket_type = stream
          protocol = tcp
          user = root
          group = root
          redirect = 195.0.0.1 80
          type = UNLISTED
          wait = no
          only_from = 195.0.0.0/24 127.0.0.0/24 }
    # если захочется отключить логгинг коннектов, то закомментировать # в файле /etc/xinetd.conf строку # log_type = SYSLOG auth

    HTTPS дешево и сердито с помощью stunnel

    если недосуг поднимать HTTPS в самоом апаче, можно просто завернуть его в SSL-wrapper stunnel: ДОбавляем в конфигур xinetd.conf
    service https {
          port = 443
          socket_type = stream
          protocol = tcp
          user = root
          wait = no
          disable = no
          type = UNLISTED
          server = /usr/sbin/stunnel
          server_args = -p /etc/webmin/miniserv.pem -r 80 }

    Конфигурим sendmail, pop3, imap4 с SSL


    stunnel -d 465 -r smtp stunnel -d 993 -r localhost:imap stunnel -d 993 -l /usr/sbin/imapd imapd stunnel -d 995 -l /usr/sbin/in.pop3d -- in.pop3d -s

          -d port - daemon mode
          -r port - connect to port
          -l programm - start inetd-style programm
    И добавляем в /etc/services
    https 443/tcp smtps 465/tcp imaps 993/tcp pop3s 995/tcp
    И добавляем в /etc/hosts.allow
    localhost.imap : ALL

    PPP over SSL

    Server (-L for pty mode)
          stunnel -d 2020 -L /usr/sbin/pppd -- pppd local
    Client system
          stunnel -c -r server:2020 -L /usr/sbin/pppd -- pppd local


    А какой версии sendmail на вашей машине?



          Date: 10 апр 97
    Кстати CERT советует ставить Sendmail 8.8.5. Более ранние версии позволяют удаленно выполнять любые команды от имени суперпользователя на вашей машине.

    * Имеющий доступ к консоли Linux может стать суперюзером *



          Способы:

          0. Загрузка со своей загрузочной дискеты
          1. Загрузка с single user mode
          2. Указать альтернативную программу init
          3. Задать другой root-partition

    1. Booting to single-user mode


    LILO: linux single

          или
    LILO: linux 1
    Debian обходит это поправками в /etc/initab, а RedHat - пропускает
    # What to do in single-user mode. ~~:S:wait:/sbin/sulogin

    2. Указать альтернативную программу init



          Против лома нет приема:
    LILO: linux init=/bin/bash
    mount -o remount,rw /

    3. Задать другой root-partition


    LILO: linux root=/dev/hda1

          Если создать в отдельной партиции всю положенную для корня структуру, то можно будет с нее загрузиться.
          Эту возможность можно получить, например, если /tmp монтируется в отдельную партицию. Или машина поддерживает UMSґ DOS и имеет досовский раздел.

    Лечение



          Закрыть паролем BIOS-setting и отключить возможность загрузиться с дискеты.

          Закрывайте возможность перехвата LILO-prompt

          A workaround can be achieved by using PASSWORD and RESTRICT options in /etc/lilo.conf.

          Внимание: /etc/lilo.conf должен быть root.root 600, чтоб никто не смог этот пароль подсмотреть.

    * kerneld and ifconfig *


    Команда
    /sbin/ifconfig module-name
    позволяет _любому_ пользователю загрузить модуль из каталога /lib/modules используя kerneld.
    Лечение: Пока не залечено в промышленном масштабе. Отключайте kerneld или явно указывайте модули, которые можно грузить, уберите все лишние модули доставшиеся вам после инсталляции.

    Дырка в X


    Xserver -xkbdir 'id > /tmp/I_WAS_HERE;'
    Quick fix:
    1. as usual chmod u-s,g-s all installed Xserver binaries (*) 2. use xdm or a SAFE and PARANOID wrapper to start Xserver

    Security и lilo


    А вы знаете, что загрузчик lilo может запустить после загрузки root-овый shell?
    Lilo boot: linux init=/bin/sh rw

    Кое какие закрывашки в RedHat 5.2


    chmod 700 /usr/sbin chmod 700 /usr/X11R6 chmod -s /usr/lib/emacs/20.3/i386-redhat-linux/movemail rm /usr/libexec/mail.local # -- это надо? вроде, procmail уже есть. rm /usr/sbin/userhelper # - дыряв - кусок GUI для админов новичков
    rpm -Uvf lpr-0.48-0.5.2.i386.rpm # взять из updates
    http://www.openwall.com/bind/
    rpm -U vixie-cron-3.0.1-37.5.2.i386.rpm
          ps axuw|grep -i cron root 1151 0.0 0.1 864 416 ? S 21:03 0:00 CROND root 1804 1.5 0.1 864 496 ? S 21:04 0:00 crond
          неплохо бы создать группу crontab и -rwsr-x--- 1 root crontab 20200 Aug 27 19:12 crontab ии на файл crontab тогда root.crontab, chmod 4710 /usr./bin/crontab crond'а.
    поправить ftpaccess'овый regex (чтобы из .файлов давал только .forward) создавать, а лучше - вообще никаких. и sendmail (чтобы у таких .forward не позволял запускать скрипты)

    Подозрительные services: Какой процесс висит на порту


    netstat -an | egrep -v ':80 |udp|:53 '
    lsof: продвинутый fuser (открытые файлы, порты и т.д. ftp://vic.cc.purdue.edu/pub/tools/unix/lsof/ sockstat: (послабее, но попроще) fuser -v 6012/tcp
    http://www.bog.pp.ru/work/linux.html#firewall

    Генерация ключей для беспарольного входа по ssh2


    на клиенте: 1) ssh-keygen -t dsa -b 2048 -f ~/.ssh/id_dsa 2)
    Host * # для новых версий ssh AddressFamily inet # компьютер с несколькими интерфейсами или алиасами BindAddress исходящий-адрес ChallengeResponseAuthentication no HostKeyAlgorithms ssh-dss PreferredAuthentications publickey,password Protocol 2 RSAAuthentication no StrictHostKeyChecking yes ForwardAgent yes ForwardX11 yes # если обзавёлся publickey на t02 PasswordAuthentication no PreferredAuthentications publickey
    3) в системный или свой known_hosts добавляем паблик ключ сервера dsa
          (ssh-keyscan -t dsa сервер) на сервере 1) в .ssh/authorized_keys добавляем клиентский ~/.ssh/id_dsa.pub
    кровавые подробности тут: http://bog.pp.ru/work/ssh.html#config
    /etc/ssh/ssh_config или ~/.ssh/config


    Home | UK Shop Center |Contact | Buy Domain | Directory | Web Hosting | Resell Domains


    Copyleft 2005 ruslib.us