Postfix: диагностируем и устраняем неисправности
Андрей Бешков
# ps -ax | grep master
# service postfix status
# netstat -na | grep LISTEN | grep 25
# postfix check
# postfix stop
# postfix start
cleanup unix n - - - 0 cleanup -v
# /usr/sbin/postfix -v
# postconf | grep version
# postconf -m
# grep /var/log/maillog F29D3562E
# sendmail -v vasa@unreal.net
# sendmail -bv vasa@unreal.net
debug_peer_level = 2
debug_peer_list = yandex.ru, mail.ru pochta.ru 10.10.10.23/32 10.10.10.0/24
-----------------------------------------------------------------------------------------------------------------
Asterisk и Linux – миссия IP-телефония
Михаил Платов
# cd /usr/src
# export CVSROOT=:pserver:anoncvs@cvs.digium.com:/usr/cvsroot
# cvs login # введите пароль anoncvs
# cvs checkout -r v1-0 zaptel libpri asterisk
# cd zaptel
# make clean install
# cd ../libpri
# make clean install
# cd ../asterisk
# make clean install samples
# asterisk -vvvvvcd
[general]
context=default
allowguest=no
bindport=5060
bindaddr=0.0.0.0
[200] ; xlite phone
type=friend
host=dynamic
username=200
secret=user1_password
nat=no
canreinvite=no
context=office
callerid=”User1” <200>
allow=gsm
allow=ulaw
allow=alaw
[201] ;sjphone
type=friend
host=dynamic
username=201
secret=user2_password
dtmfmode=rfc2833
context=office
callerid=”User2” <202>
allow=gsm
allow=ulaw
allow=alaw
[203] ; ms messenger
type=friend
host=dynamic
username=202
secret=user3_password
dtmfmode=rfc2833
context=office
callerid=”User3” <203>
allow-ulaw
allow-alaw
[demo]
exten => s,1, Wait,1
exten => s,n, Answer
exten => s,n, SetVar(TIMEOUT(digit)=5)
exten => s,n, SetVar(TIMEOUT(response)=10)
exten => s,n(restart), BackGround(demo-congrats)
exten => s,n(instruct), BackGround(demo-instruct)
exten => s,n, WaitExten
exten => 2,1, BackGround(demo-moreinfo)
exten => 2,n,Goto(s,instruct)
exten => 3,1, SetVar(Language()=fr)
exten => 3,2, Goto(s, restart)
exten => 8500, 1, VoiceMailMain
exten => 8500, n, Goto,s
exten => 1000, 1, Goto(default,s,1)
[office]
exten => 200,1, Macro(stdexten,200,SIP/200)
exten => user1, 1, Goto(200|1)
exten => 201,1, Macro(stdexten,201,SIP/201)
exten => user2, 1, Goto(201|1)
exten => 202,1, Macro(stdexten,202,SIP/202)
exten => user3, 1, Goto(202|1)
include => demo
[macro-stdexten]
exten => s, 1, Dial (${ARG2},20,t)
exten => s, 2, Goto(s-$(DIALSTATUS),1)
exten => s-NOANSWER, 1, Voicemail(u${ARG1})
exten => s-NOANSWER, 2, (Goto(default,s,1))
exten => s-BUSY, 1, Voicemail(b,${ARG1})
exten => s-BUSY, 2, (Goto(default,s,1))
exten => _s-., 1, Goto(s-NOANSWER)
exten => a, 1, VoiceMailMain(${ARG1})
[general]
format=wav49
maxmessage=300
[office]
200 => 123, User1, user1@mail.company.com,,attach=yes
201 => 456, User2, user2@mail.company.com,,attach=yes
202 => 789, User3, user3@mail.company.com,,attach=yes
;mailcmd=/usr/sbin/sendmail -t
Enabled - Yes
Display Name - Asterisk
Username – 200
Authorization User – 200
Password – user1_password
Domain/Realm - asterisk
SIP Proxy – 192.168.0.20
Outbound Proxy – 192.168.0.20
Register – Always
callgroup=1
pickupgroup=1
exten => *8,1,PickUP()
[general]
parkext => 700
parkpos => 701-720
context => parkedcalls
xfersound =beep
xferfailsound = beeper
featuredigittimeout = 1000
[featuremap]
blindxfer => #1
include => parkedcalls
[tario_out]
type=peer
host=адрес_сервера_tario
username= номер_лицевого_счета_tario
fromusername=номер_лицевого_счета_tario
fromdomain=домен_tario
secret= пароль_tario
usereqphone=yes
register => номер_лицевого_счета_tario:пароль@tario_in
[tario_in]
type=user
context=tario_inc
host=ip_адрес_сервера_tario
exten => _8, Dial(SIP/${EXTEN:1}@tario_out,20,rT)
[tario_inc]
exten => s,1,Wait, 1
exten => s, 2, Answer
exten => s,3, BackGround(local-welcomе)
exten => s,4, WaitExten
exten => 200,1, Macro(stdexten,200,SIP/200)
exten => 201,1, Macro(stdexten,201,SIP/201)
exten => 202,1, Macro(stdexten,202,SIP/202)
exten => 8500,1, VoiceMailMain
exten => 8500,n, Hangup
include => office
[office]
include => [office-rules]
exten => _8, Dial(SIP/${EXTEN:1}@tario_out,20,rT
-----------------------------------------------------------------------------------------------------------------
Испытываем Antmon – новую систему мониторинга
Сергей Жуматий
Листинг 1. Кольцевая конфигурация
heads head1 head2 serv
# Используем 3 головных сервера с именами head1, head2 и serv
topo 1 2 3 2
# Описываем топологию.
# Кратко – 1–й сервер будет посылать пакеты 2–му для подтверждения того, что он «жив», 2–й – 3–му, а 3–й – 2–му.
#
# Если 1–й сервер откажет, об этом узнает только 2–й (но он «расскажет» 3–му)
head_ping 120
# Посылаем ping (точнее keep_alive) остальным серверам каждые 2 минуты
head_tmout 300
# Если в течение 5 минут нет сигнала от другого сервера, он считается сбойным
action mail_servfail action_mail root@superserver.ru
action_line Server $addr fails.
# Описываем действие – передать на вход модулю action_mail указанную строку, сам модуль action_mail
# запускается с параметром – адресом администратора
action mail_status action_mail root@superserver.ru
action_line $name on server $addr is $state
# Ещё одно действие – тоже отсылка письма
action down action_shutdown
action_line $addr
# Другой вариант реагирования – зайти на указанный сервер по ssh и выполнить shutdown
action log action_log /var/log/Antmon_log
action_line $addr $name $val $state
# Реагирование в виде записи в файл журнала
on_head_death mail_servfail
# В случае сбоя головного сервера оповестить администратора с помощью описанного выше действия mail_servfail
#####################################################
# Описание параметров мониторинга.
# Все инструкции описывают шаблон для параметра – диапазон значений, реакции на события и т. п.
#
# Инструкции names или addr_set «актуализируют» шаблон, реализуя описанные параметры на сервере из инструкции
# addresses или на указанных серверах с именем из инструкции name соответственно.
#
# Шаблон не обнуляется после «актуализации», так что нет необходимости описывать каждый параметр
# заново – достаточно модифицировать предыдущий
addressess host1
# Имя хоста, на котором работает агент
min 200
max 200
# Диапазон допустимых значений кода веб–страницы
min_ret 200
max_ret 200
# Диапазон значений для возврата в состояние «ОК»
bad_count 2
# Один сбой странички допускаем, 2 – уже нет
ret_cout 1
# Для возврата в состояние «ОК» достаточно одного «хорошего» результата её опроса
on_fail mail_state log
# При сбое – информировать администратора и сделать запись в журнале
on_ret mail_state log
# При возврате в состояние «ОК» – тоже address serv1 проверять будем на агенте на head1
mons 1 2
# Проверять могут мониторы head1 и head2.
# head1 имеет приоритет
names http.antmod test_url
# Формат: имя модуля [аргументы] название
# В этот момент происходит объявление сенсора с указанным именем на агенте по адресам, указанным в последней
# инструкции addr либо addresses (тогда объявляются сенсоры на всех перечисленных хостах)
addresses host1 host2 host3
min 5000
max 100000
min_ret 5500
max_ret 100000
ret_count 2
# Меняем параметры сенсоров.
# Описанные ранее параметры, которые не изменены, не сбрасываются!
# Проверяем на 3-х хостах
on_fail down
mons 2 3
# Ответственные мониторы – head2 и serv.
# head2 имеет приоритет
names fans.antmod w83781-isa-0290 w83781-isa-0290 fan1
# Объявляем сенсор
adsdresses node1 node2 node3 node4
# Объявляем сенсоры с указанным ранее в инструкции names именем на узлах node1-node4
#
# Проверяем вентилятор процессора на узлах node1-node4, используя их локальные агенты
Листинг 2. Три площадки
heads site1 site2 site3
# Головные сервера площадок – site1, site2 и site3
topo 1 2 3 1
# Все контролируют друг друга
action mail_fail action_mail root@superserver.ru
action_line $name fails.
action sms_servfail action_sms 1234567
action_line Server $addr fails.
action log action_log /var/log/Antmon_log
action_line $addr $name $val $state
action restart_base action_baserst
action_line restart
on_head_death sms_servfail
# Шлём sms, если один из серверов помер
addr 192.168.10.10
# Сервер баз данных
min 0
max 0
# Код успешного статуса базы данных
min_ret 0
max_ret 0
# Диапазон значений для возврата в состояние «ОК»
bad_count 1
# Первый же сбой фатален
ret_cout 1
on_fail mail_fail restart_base log
# При сбое базы – перестартовать её.
# Информировать администратора и сделать запись в журнале
on_ret log
mons 1
# Проверять будет только site1
names dbcheck.antmod database
addr 1.2.3.4
# Вторая площадка с реальными адресами
on_fail mail_fail log
mons 2 1 3
# Первая и третья площадки могут быть «на подхвате»
names smtp.antmod mail.myserv.ru; http.antmod www.myserv.ru
# В инструкции names можно определить и несколько сенсоров
addr 5.6.7.8
# Третья площадка с реальными адресами
mons 3 2 1
names smtp.antmod mail.serv2.ru; http.antmod www.serv2.ru
# За этот сенсор ответственны все
mons 3
min 0
max 70
min_ret 0
max_ret 60
names fantemp.antmod w83781-isa-0290 w83781-isa-0290 fan1
# Вентилятор на 5.6.7.8 контролирует только site3
Листинг 3. Кластер и внешняя площадка.
heads clusterhead friend.ru
topo 1 2 1
# Оба контролируют друг друга
action mail_fail action_mail root@superserver.ru
action_line $name fails.
action sms_servfail action_sms 1234567
action_line Server $addr fails.
action log action_log /var/log/Antmon_log
action_line $addr $name $val $state
on_head_death sms_servfail
# Шлём sms, если один из серверов помер
on_fail action_log mail_fail
on_ret action_log
addresses node1 node2 node3 node4 node5 node6 node7 node8
mons 1
min 0
min_ret 0
max 2.3
max_ret 1.9
# Максимально допустимая нагрузка на 2-процессорный узел
bad_count 3
ret_cout 2
names sysstat.antmod loadavg
max 70
# Максимальная температура
names fantemp.antmod w83781-isa-0290 w83781-isa-0290 fan1
max 2
bad_count 1
ret_cout 1
names sysstat.antmod eth0_rcv_errs
names sysstat.antmod eth0_sent_errs
names sysstat.antmod eth0_sent_colls
names sysstat.antmod nfs_retrans
on_fail mail_fail log
on_ret log
mons 1 2
min 200
min_ret 200
max 201
max_ret 201
addresses localhost
# Небольшое жульничество, каждый головной сервер будет опрашивать локального агента, но сначала это будет
# делать только первый
names http.antmod www.server.com
-----------------------------------------------------------------------------------------------------------------
Автоматизация MS Windows, или AutoIt как мечта эникейщика
Часть 3
Алексей Барабанов
Листинг 1. Содержимое исходного диска, примонтированного в точке /cdrom
/cdrom # ls -als
Листинг 2. Рабочая директория после копирования исходного диска
/heap/Windows/uawsp2 # ls -als
Листинг 3. Файл автозапуска
/heap/Windows/uawsp2 # cat autorun.inf
Листинг 4. Поддиректории с дистрибутивными файлами
/cdrom # ls -als I386 | grep dr-x
Листинг 5. Дистрибутивные поддиректории, которые надо составить
/heap/Windows/uawsp2 # ls -als I386 | grep dr-x
Листинг 6. Объем оставшегося дистрибутива
/heap/Windows/uawsp2 # du -sh
Листинг 7. Подстроки, выделенные из загрузчика
/heap/Windows/uawsp2 # strings boot/ntboot.bin
Листинг 8. Подстрока сообщения, сопровождающего загрузку
/heap/Windows/uawsp2 # strings I386/BOOTFIX.BIN
Листинг 9. Содержимое директории boot
/heap/Windows/uawsp2 # ls -als boot
Листинг 10. Конвертация в cp866
# iconv -f koi8-r -t cp866 WINNT.SIF.koi8r | awk '{print $0 "\015"}' > /heap/Windows/uawsp2/I386/WINNT.SIF
[Data]
; Включим режим ручного выбора раздела установки.
AutoPartition=0
[Unattended]
; Запрещаем автоматическое переразбиение диска.
Repartition=No
Листинг 11. Размещение дополнительных обоев
/heap/Windows/uawsp2 # ls -als \$OEM\$/\$\$/Web/Wallpaper
Листинг 12.Размещение дополнительных программ
/heap/Windows/uawsp2 # ls -als \$OEM\$/\$\$/System32
Листинг 13. Размещение дополнительных команд
/heap/Windows/uawsp2 # ls -als \$OEM\$/\$1/Documents\ and\ Settings
[GuiUnattended]
; Задаем пароль Администратора.
AdminPassword="admin»
EncryptedAdminPassword=No
[GuiUnattended]
; Установим режим автоматического входа в систему от имени Администратора
AutoLogon=Yes
; Число автоматических входов.
AutoLogonCount=2
[UserData]
; Подставляем установочный ключ для Windows XP
ProductID=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
[UserData]
; Задаем случайное имя.
ComputerName=*
[Networking]
; Зададим сетевые настройки по умолчанию
InstallDefaultComponents=Yes
[TerminalServices]
; разрешить RDP
AllowConnections=1
Листинг 14. Содержимое Cmdlines.txt
[Commands]
"mkusers.cmd"
Листинг 15. Содержимое mkusers.cmd
net user localadmin admin /add
net localgroup Администраторы localadmin /add
net accounts /maxpwage:unlimited
[GuiUnattended]
; Запретим запрос о создании пользовательских бюджетов
AutoLogonAccountCreation=No
Листинг 16. Исправление в реестре для подключения в домен на Samba
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]
"requiresignorseal"=dword:00000000
Листинг 17. Исправление в реестре для разрешения работы нужных сетевых служб
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List]
"3389:TCP"="3389:TCP:192.168.0.0/255.255.255.0,192.168.10.0/255.255.255.0:Enabled:@xpsp2res.dll,-22009"
"161:UDP"="161:UDP:LocalSubNet:Enabled:SNMP"
Листинг 18. Команда обновления реестра
%systemdrive%\windows\regedit /s %systemdrive%\InstData\WinXP_SignOrSeal.reg
Листинг 19. Установка MS Office
%systemdrive%\InstData\install_office.exe %systemdrive%\InstData\OfficeXP\SETUP.EXE
Run ( $CmdLine[1] )
Листинг 20. Команды дополнительных настроек
copy %systemdrive%\InstData\farmanag.lnk "%systemdrive%\Documents and Settings\All Users\Главное меню\Программы\FAR manager\FAR manager.lnk" /b /y
copy %systemdrive%\InstData\farmanag.lnk "%systemdrive%\Documents and Settings\All Users\Рабочий стол\FAR manager.lnk" /b /y
copy /Y "%systemdrive%\Documents and Settings\usersetup.cmd" "%systemdrive%\Documents and Settings\Default User\Главное меню\Программы\Автозагрузка\"
copy /Y "%systemdrive%\Documents and Settings\usersetup.cmd" "%systemdrive%\Documents and Settings\Администратор\Главное меню\Программы\Автозагрузка\"
copy /Y "%systemdrive%\Documents and Settings\usersetup.cmd" "%systemdrive%\Documents and Settings\localadmin\Главное меню\Программы\Автозагрузка\"
[GuiRunOnce]
; запусим установку прикладных программ
"%systemdrive%\InstData\GuiRunOnce.cmd"
; удалим дистрибутивы прикладных программ
"%systemdrive%\WINDOWS\system32\cmd.exe /c rmdir %systemdrive%\InstData /s /q"
; запустим перезагрузку компьютера
"%systemdrive%\WINDOWS\system32\shutdown -r -f -t 180"
copy /Y %systemdrive%\InstData\step4.cmd "%USERPROFILE%\Главное меню\Программы\Автозагрузка\"
bootcfg /raw «"/fastdetect /safeboot:minimal /sos /bootlog /noguiboot" /id 1
Листинг 21. Сборка загрузочного диска
# mkisofs -v -J -N -D -relaxed-filenames -no-iso-translate \
-input-charset koi8-r \
-P «Ivan Ivanovich» \
-p «Handy Man» \
-V «WXPSP2_RU» \
-A «mkisofs» \
-b boot/ntboot.bin -no-emul-boot -c boot/boot.catalog \
-hide boot -hide-joliet boot \
-o wxpsp2_ru.iso \
/heap/Windows/uawsp2
-----------------------------------------------------------------------------------------------------------------
Решаем нестандартные задачи с помощью стандартного Windows Scripting Host
Михаил Кошкин
' Получение доступа к объектам FileSystem Object
Dim fso : Set fso = WScript.CreateObject("Scripting.FileSystemObject")
' Перебираем все диски (HDD, FDD, CD и др.), имеющиеся в системе
Dim i
For Each i In fso.Drives
….
Next
Sub WorkSubFolder(sdrivename)
Dim sfolder : set sfolder=fso.getfolder(sdrivename)
' Для работы с подкаталогами источника
Dim ssfolder : set ssfolder=sfolder.SubFolders
' Для работы с файлами каталога источника
Dim ssfiles : set ssfiles=sfolder.Files
Dim fo
' Цикл обработки подкаталогов каталога источника
For Each fo In ssfolder
WorkSubFolder SDriveName&"\"&fo.name
Next
' Для всех файлов текущего каталога вызывается процедура WorkForFile
Dim fi : For Each fi In ssfiles : WorkForFile sfolder&"\"&fi.name : Next
End sub
Dim wshshell : Set wshshell = WScript.CreateObject("WScript.Shell")
Dim shortcut : Set shortcut = wshshell.CreateShortcut(fullnamefilelnk)
' Вывод информации с названием и полным путем к запускаемому файлу
WScript.Echo( shortcut.TargetPath )
Dim fso : Set fso=CreateObject("Scripting.FileSystemObject")
Dim filelnk : Set filelnk = fso.getfile(строка с полным названием файла-ярлыка)
' Вывод информации о дате создания файла-ярлыка
WScript.Echo( filelnk.DateCreated )
On Error Resume Next
Dim wordapp : Set wordapp = WScript.CreateObject("Word.Application")
' Открываем файл fullnamefile с документом Word с паролем " "
Dim doc
Set doc = wordapp.Documents.Open(fullnamefile, _
False, _
blnReadOnly,_
False,
" ")
If Err.Number = 5408 then
' Обработка файла с документом Word, который имеет пароль
End if
' Метаданные с пользовательскими свойствами документа
Dim propitem
For Each propitem In wordapp.ActiveDocument.CustomDocumentProperties
' В цикле обрабатываются propitem.Type и propitem.Value
Next
' Метаданные со стандартными свойствами документа
For Each propitem In wordapp.ActiveDocument.BuiltInDocumentProperties
' В цикле обрабатываются propitem.Type и propitem.Value
Next
Err.Clear
On Error GoTo 0
Dim wshshell : Set wshshell = WScript.CreateObject("WScript.Shell")
Dim wshproenv : Set wshproenv = wshshell.Environment("PROCESS")
wshproenv (var_env)
' Подключение к службе WMI локального компьютера
Dim wbemservices
Set wbemservices = GetObject("winmgmts://127.0.0.1/Root/Cimv2")
Dim objectitems
Set objectitems = wbemservices.ExecQuery("Select * from Win32_NetworkAdapter")
Dim objectitem
For Each objectitem In objectitems
If objectitem.MacAddress<>"" then
WScript.echo("Сетевая карта название: " + objectitem.Name + Chr(13) + _ " производитель: " & objectitem.Manufacturer + Chr(13) + _ " MAC: " & objectitem.MacAddress)
End if
Next
-----------------------------------------------------------------------------------------------------------------
Solaris 10 в качестве десктопа?
Пробуем!
Андрей Маркелов
# useradd -d /export/home/user -m -s /bin/bash user
-----------------------------------------------------------------------------------------------------------------
Файловые системы пространства пользователя
Сергей Яремчук
# tar -xzvf fuse-2.2.1.tar.gz
# cd fuse-2.2.1
# ./configure && make
# make install
# /sbin/modprobe fuse
# /sbin/lsmod | grep fuse
# cat /proc/filesystems | grep fuse
#./fusexmp /mnt/fuse/ -d
# encfs ~/.crypt ~/crypt
# cd crypt/
# echo «Это зашифрованное сообщение» > testfile
# cat testfile
# fusermount -u ~/crypt
# ls ./.crypt/
# encfsctl ./.crypt
shfsmount[user@]host:[dir]] mountpoint [options]
# mount -t shfs sergej@somewhere.com: /mnt/local
# ln-s /sbin/mount.shfs /sbin/shfsmount
# mount -t shfs sergej@somewhere.com: /mnt/local
# sshfs sergej@somewhere.com:/tmp /mnt/local
# mount | grep shfs
# crontab -e
# mkdir ~/net
# fusermount ~/net fusesmb &
# ./mount.wayback ~/wayback/ /mnt/disk
# /sbin/rmmod fuse
# ./mount.wayback ~/wayback/ /mnt/disk
# mount | grep fuse
# echo «test» > /mnt/disk/test
# ls /mnt/disk/
# ls ~/wayback/
# echo «test2» >> /mnt/disk/test
# echo «test3» >> /mnt/disk/test
# ls ~/wayback/
# ls -la /OPUSH
/OPUSH/SE_T630
/OPUSH/myPalm
# cp file.txt /OPUSH/myPalm
-----------------------------------------------------------------------------------------------------------------
Ускоряем Ms SQL Server
Юлия Шабунио
DBCC TRACEON(1204, -1)
declare @l tinyint select @l = 1 from A with (tablockx) where 1 = 2
-----------------------------------------------------------------------------------------------------------------
bugtraq стр. 48
http://[target]/index.php?mod=editnews&action=editnews&id=[id]&source=
-----------------------------------------------------------------------------------------------------------------
MySQL 5 – что нового предлагают нам разработчики?
Кирилл Сухов
CREATE PROCEDURE p ()
LANGUAGE SQL
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT 'A Procedure' <--
SELECT CURRENT_DATE, RAND() FROM t
mysql> call p2()
CREATE FUNCTION factorial (n DECIMAL(3,0))
RETURNS DECIMAL(20,0)
DETERMINISTIC
BEGIN
DECLARE factorial DECIMAL(20,0) DEFAULT 1;
DECLARE counter DECIMAL(3,0);
SET counter = n;
factorial_loop: REPEAT
SET factorial = factorial * counter;
SET counter = counter - 1;
UNTIL counter = 1
END REPEAT;
RETURN factorial;
END
INSERT INTO t VALUES (factorial(pi))
SELECT s1, factorial (s1) FROM t
UPDATE t SET s1 = factorial(s1)
WHERE factorial(s1) < 5
CREATE PROCEDURE p1 (IN parameter1 INT)
BEGIN
DECLARE variable1 INT;
SET variable1 = parameter1 + 1;
IF variable1 = 0 THEN
INSERT INTO t VALUES (17);
END IF;
IF parameter1 = 0 THEN
UPDATE t SET s1 = s1 + 1; <--
ELSE
UPDATE t SET s1 = s1 + 2;
END IF;
END;
mysql> CALL p2(0) // Query OK, 2 rows affected (0.28 sec)
mysql> SELECT * FROM t
CREATE PROCEDURE p3 ()
BEGIN
DECLARE v INT;
SET v = 0;
WHILE v < 5 DO
INSERT INTO t VALUES (v);
SET v = v + 1;
END WHILE;
END;
CREATE PROCEDURE p25 (OUT return_val INT)
BEGIN
DECLARE a,b INT;
DECLARE cur_1 CURSOR FOR SELECT s1 FROM t;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET b = 1;
OPEN cur_1;
REPEAT
FETCH cur_1 INTO a;
UNTIL b = 1
END REPEAT;
CLOSE cur_1;
SET return_val = a;
END;
CREATE TABLE t22 (s1 INTEGER)
CREATE TRIGGER t22_bi
BEFORE INSERT ON t22
FOR EACH ROW
BEGIN
SET @x = ‘Trigger was activated!’;
SET NEW.s1 = 55;
END;
mysql> INSERT INTO t22 VALUES (1)
mysql> SELECT @x, t22.* FROM t22 // вызывается триггер
mysql> CREATE VIEW v AS SELECT column1 FROM t;
mysql> INSERT INTO v VALUES (1);
mysql> SELECT * FROM v;
mysql> SELECT table_name, table_type, engine
-> FROM INFORMATION_SCHEMA.tables
-> WHERE table_schema = ‘tp’
-> ORDER BY table_type ASC, table_name DESC;
mysql> SELECT * FROM
-> INFORMATION_SCHEMA.COLUMN_PRIVILEGES\G
-----------------------------------------------------------------------------------------------------------------
bugtraq стр. 45
USER (A x 80) (Following 4 Bytes = New Return Point)
PASS 0wn3r
PORT 127,0,0,1,18,12 (Must be same as connecting IP)
-----------------------------------------------------------------------------------------------------------------
FreeBSD tips: повышаем безопасность с помощью одноразовых паролей
Сергей Супрунов
root# opiepasswd -c test
serg$ opieinfo
serg$ opiekey -n 5 498 ko5623
permit 192.168.0.0 255.255.255.0
# permit 0.0.0.0 0.0.0.0
options ndots:3
-----------------------------------------------------------------------------------------------------------------
Изучаем принцип работы Неimdal Kerberos
Михаил Кондрин
mike@alex ~\$ klist
\$ telnet -F relay
\$klist
\$telnet -F kenga
mike@kenga:~\$ ftp kenga
-----------------------------------------------------------------------------------------------------------------
Защищенная почтовая система с Tiger Envelopes
Сергей Яремчук
Имя: Test User
Почтовый адрес: test@tigerprivacy.local
Пароль: 256 AV Audio
Имя: Test User2
Почтовый адрес: test2@tigerprivacy.local
Пароль: Memory F4800000
-----------------------------------------------------------------------------------------------------------------
Насколько неуязвима ваша беспроводная сеть?
Крис Касперски
Листинг 1. Псевдокод функции KSA(A), инициализирующей массив S, используемый впоследствии для генерации псевдослучайной последовательности
// инициализация
for(i = 0; i < N; i++) S[i] = i;
j = 0;
// перемешивание байт, оно же
// скремблирование (scrambling)
for i = 0; i< 140
block in log level local3.info quick on xl0 proto udp from any to 195.195.195.1
# Разрешаем только правильные tcp-запросы к публичному сервису
pass in quick on xl0 proto tcp from any to 195.195.195.1 port = 25 flags S/S
pass in quick on xl0 proto tcp from any to 195.195.195.1 port = 25 flags A/A
pass in quick on xl0 proto tcp from any to 195.195.195.1 port = 25 flags AP/AP
pass in quick on xl0 proto tcp from any to 195.195.195.1 port = 25 flags AF/AF
# Нормализация трафика автоматически отфильтрует нестандартные пакеты атакующего, изменит TTL
scrub in on xl0 all fragment reassemble min-ttl 20 max-mss 1440
scrub on xl0 all reassemble tcp
# можно манипулировать IP-опциями, например, сбрасывать флаг DF в 0
scrub out on xl0 all no-df
# Фильтрация TCP-флагов
block in quick proto tcp from any to 195.195.195.1 flags SF/SFRA
block in quick proto tcp from any to 195.195.195.1 flags SFUP/SFRAU
block in quick proto tcp from any to 195.195.195.1 flags FPU/SFRAUP
block in quick proto tcp from any to 195.195.195.1 flags F/SFRA
block in quick proto tcp from any to 195.195.195.1 flags U/SFRAU
block in quick proto tcp from any to 195.195.195.1 flags P/P
# Разрешаем ICMP только echo request и echo reply
pass in quick on xl0 proto icmp from any to 195.195.195.1 icmp-type echoreq
pass in quick on xl0 proto icmp from any to 195.195.195.1 icmp-type echorep
pass out quick on xl0 proto icmp from 195.195.195.1 to any icmp-type echoreq
pass out quick on xl0 proto icmp from 195.195.195.1 to any icmp-type echorep
block in log-all quick on xl0 proto icmp from any to any
block out log-all quick on xl0 proto icmp from any to any
# Блокируем закрытые порты
block in log-all quick on xl0 proto tcp from any to 195.195.195.1 port 136 >< 140
block in log quick on xl0 proto udp from any to 195.195.195.1
# Фильтруем входящие пакеты на публичный сервис
pass in quick on xl0 proto tcp from any to 195.195.195.1 port = 25 flags S/SA synproxy state
# Разрешаем исходящие ping
access-group 101 in interface outside
access-list 101 permit icmp any host 209.165.200.246 echo-reply
# Разрешаем входящие ping
access-list 101 permit icmp any host 209.165.200.246 echo
# Включаем анализатор протоколов приложений. Какие точно правила фильтрации использует PIX, не ясно. Но тот факт,
# что реально клиент устанавливает соединение не с сервером приложений, а с PIX затрудняет fingerprinting
fuxup protocol ftp 21
fixup protocol smtp 25
# Для фильтрации нестандартных или неправильных TCP/IP-пакетов PIX использует встроенную IDS
# с фиксированным набором сигнатур
ip audit name fingeraudit atack action alarm drop
ip audit name fingeraudit info action alarm drop
# Выберем только те сигнатуры, которые имеют отношение к fingerprinting
# Нужные нам сигнатуры:
# ID Название Тип
400000 1000 IP options-Bad option list Informational
400002 1002 IP options-Timestamp Informational
400007 1100 IP Fragment Attack Attack
400008 1101 IP Unknown IP Protocol Attack
1102 Impossible IP Packet Attack
400009 1103 IP Fragments Overlap Attack
400023 2150 Fragmented ICMP Traffic Attack
400026 3040 TCP NULL flags Attack
400027 3041 TCP SYN+FIN flags Attack
400028 3042 TCP FIN only flags Attack
# Остальные сигнатуры можно исключить из политики
no ip audit name fingeraudit signature sigN
ip audit interface outside fingeraudit
# Параметр ID в заголовке IP-пакета генерируется случайно
Options random_ip_id
# Отбрасываются пакеты с флагами syn+fin
Options tcp_drop_synfin
Options icmp_bandlim # Включаем контроль над ICMP
# Определяем реакцию системы при получении пакета на закрытый TCP-порт
sysctl net.inet.tcp.blackhole=2
# Определяем реакцию системы при получении пакета на закрытый UDP-порт
sysctl net.inet.udp.blackhole=1
# Определяем размер окна TCP-соединения
sysctl net.inet.tcp.sendspace=64395
sysctl net.inet.tcp.recvspace=64395
# Определяем TTL в заголовке IP-пакета
sysctl net.inet.ip.ttl=128
sysctl net.inet.tcp.drop_synfin=1
# Указываем ОС изменять параметры window и timestamps в соответствии с RFC 1323.
sysctl net.inet.tcp.rfc1323=1
# Запрет ICMP echo (ping):
echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_all
# Изменяем IP TTL по умолчанию
echo “128” > /proc/sys/net/ipv4/ip_default_ttl
Скорость генерации ICMP пакетов (по умолчанию 100)
echo “70” > /proc/sys/net/ipv4/icmp_ratelimit
# Количество повторных отсылок пакетов, на которые не получен ответ
echo “5” > /proc/sys/net/ipv4/tcp_synack_retries
echo “5” > /proc/sys/net/ipv4/tcp_syn_retries 5
# Устанавливаем стандартный размер TCP window
echo “64395” > /proc/sys/net/core/rmem_default
echo “64395” > /proc/sys/net/core/wmem_default
# Изменять параметры TCP window и timespamp в соответствии с 1323.
echo “1” > /proc/sys/net/ipv4/tcp_window_scaling
echo “1” > /proc/sys/net/ipv4/tcp_timestamps
# Разрешить использование SACK в соответствии с RFC2018 (SACK будет добавляться в tcp options)
Echo “1” > /proc/sys/net/ipv4/tcp_sack
# Изменяем стандартное значение maximux segmet size.
ndd -set /dev/tcp tcp_mss_def 546
# Отключим «path MTU discovery» и система перестанет ставить бит «don’t fragment»
ndd -set /dev/ip ip_path_mtu_discovery 0
# Устанавливаем закон генерации ISN действительно случайным образом.
ndd -set /dev/tcp tcp_strong_iss 2
# Изменяем стандартное значение tcp window size
ndd -set /dev/tcp tcp_xmit_hiwat 64395
ndd -set /dev/tcp tcp_recv_hiwat 64395
# Изменяем стандартное время жизни пакета (TTL)
ndd -set /dev/tcp tcp_ip_ttl 128
# define SERVER_BASEPRODUCT “Apache”
# define SERVER_BASEREVISION “X.X.X”
# define SERVER_BASEPRODUCT “Microsoft-IIS”
# define SERVER_BASEREVISION “5.0”
# IIS не ставит подпись в рапортах об ошибках
ServerSignature Off
# Для того чтобы выдавать только ту информацию, которую мы изменили
ServerTokens Min
MASQUERADE_AS(mail.somedomain.com)
MASQUERADE_DOMAIN(mailoffice.somedomain.com)
smtpd_banner = secure SMTP server
# SMTP initial login message (old $e macro)
O SmtpGreetingMessage=$j secure SMTP server; $b
smtpd_banner = secure SMTP server
# sysctl net.ipv4.tcp_timestamps=0
net.ipv4.tcp_timestamps = 0
-----------------------------------------------------------------------------------------------------------------
bugtraq стр. 76