Авторизация в Active Directory Рашид Ачилов cn=ldapread,cn=users,dc=shelton,dc=net cn=tom cat,ou=просто юзеры,dc=shelton,dc=net nss_base_passwd dc=shelton,dc=net?sub nss_base_shadow dc=shelton,dc=net?sub nss_base_group dc=shelton,dc=net?sub nss_base_group ou=группы домена,dc=shelton,dc=net?sub?(objectclass=group) nss_default_attribute_value loginShell /sbin/nologin nss_default_attribute_value unixHomeDirectory /usr/local/share/smbusers nss_override_attribute_value loginShell /sbin/nologin nss_override_attribute_value unixHomeDirectory /usr/local/share/smbusers host 10.54.200.1 base dc=shelton,dc=net ldap_version 3 binddn cn=ldapread,cn=users,dc=shelton,dc=net bindpw asdfghzxcv scope sub bind_policy soft nss_base_passwd dc=shelton,dc=net?sub nss_base_shadow dc=shelton,dc=net?sub nss_base_group dc=shelton,dc=net?sub nss_map_objectclass posixAccount user nss_map_objectclass shadowAccount user nss_map_attribute uid sAMAccountName nss_map_attribute homeDirectory unixHomeDirectory nss_map_attribute shadowLastChange pwdLastSet nss_map_objectclass posixGroup group nss_map_attribute uniqueMember memberOf nss_default_attribute_value loginShell /sbin/nologin nss_default_attribute_value unixHomeDirectory /usr/local/share/smbusers nss_override_attribute_value loginShell /sbin/nologin nss_override_attribute_value unixHomeDirectory /usr/local/share/smbusers nss_schema rfc2307bis nss_initgroups backlink referrals off passwd: files winbind group: files winbind passwd: files ldap group: files ldap # id -P jerry strNISContainer = "defaultMigrationContainer30" Set objRootDSE = GetObject("LDAP://rootDSE") strADsPath = objRootDSE.Get("defaultNamingContext") Set objNISDomain = GetObject("LDAP://" & "CN=" & strNISContainer & "," & strADsPath) For each objNIS in objNISDomain strNISDomain = objNIS.Get("name") Next lngNextGID = CLng(InputBox("Enter starting GID:", "Starting GID", 70000)) lngNextUID = CLng(InputBox("Enter starting UID:", "Staritng UID", 70000)) pam_login_attribute sAMAccountName pam_filter objectclass=User pam_password ad vmfree:[root] 121>telnet 127.0.0.1 110 ----------------------------------------------------------------------------------------------------------------- Поиск данных в Active Directory по GUID Иван Коробко Листинг 1. Определение имени текущего домена $domain = ([ADSI]"LDAP://RootDSE").defaultnamingcontext Write-Host $domain $objDomain = [ADSI]("LDAP://{0}" -f [string]$domain) $objDomain Листинг 2. Преобразование GUID для поиска в каталоге Active Directory function RelaceGUIDforSearch { $tmp=$args[0] $t="\" for ($i=0; $i -ne $tmp.Length ; $i=$i+1) { if (($i%2 -eq 1) -and ($i -ne $tmp.length-1)) { $t=$t+$tmp[$i]+"\" } else { $t=$t+$tmp[$i] } } return $t } Листинг 3. Поиск данных в каталоге Active Directory $obj = New-Object System.DirectoryServices.DirectorySearcher $obj.Filter = "(&(msExchMailboxGuid={0}))" -f $GUID $obj.SearchRoot = $objDomain $result=$obj.Findone() Write-Host $result.Name ----------------------------------------------------------------------------------------------------------------- Управление ИТ-инфраструктурой Linuxс помощью Spacewalk Сергей Яремчук # rpm -Uvh http://spacewalk.redhat.com/yum/1.6/Fedora/16/x86_64/spacewalk-repo-1.6-1.fc16.noarch.rpm # cat > /etc/yum.repos.d/jpackage-generic.repo << EOF [jpackage-generic] name=JPackage generic baseurl=http://mirrors.dotsrc.org/jpackage/5.0/generic/free/ enabled=1 gpgcheck=1 gpgkey=http://www.jpackage.org/jpackage.asc EOF # yum install postgresql-server # chkconfig postgresql on # postgresql-setup initdb # service postgresql start # su - postgres -c 'PGPASSWORD=spacepw; createdb spaceschema; createlang plpgsql spaceschema; yes $PGPASSWORD | createuser -P -sDR spaceuser' local spaceschema spaceuser md5 host spaceschema spaceuser 127.0.0.1/8 md5 host spaceschema spaceuser ::1/128 md5 # service postgresql reload # rpm -Uvh 'http://kojipkgs.fedoraproject.org/packages/selinux-policy/3.10.0/78.fc16/noarch/selinux-policy-targeted-3.10.0-78.fc16.noarch.rpm' http://kojipkgs.fedoraproject.org/packages/selinux-policy/3.10.0/78.fc16/noarch/selinux-policy-3.10.0-78.fc16.noarch.rpm' # setenforce 0 # vi /etc/selinux/config SELINUX=disabled # yum install spacewalk-postgresql # spacewalk-setup --disconnected spacewalk-setup --disconnected --answer-file= # /usr/sbin/spacewalk-service restart # rpm -Uvh http://spacewalk.redhat.com/yum/1.6/Fedora/16/x86_64/spacewalk-client-repo-1.6-1.fc16.noarch.rpm # yum install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin # rhnreg_ks --serverUrl=http://example.org/XMLRPC --activationkey=1-12345 ----------------------------------------------------------------------------------------------------------------- Подключаем FreeRADIUS и Kerberosк беспроводной сети Михаил Кондрин #radiusd -X # radtest -t pap guest passwd localhost 10 testinpass ./configure; make; make install CONFIG_EAPOL_TEST=y network={ ssid="example" key_mgmt=WPA-EAP proto=WPA2 identity="guest" password="passwd" eap=TTLS phase2="auth=PAP" } #eapol_test -c eapol.conf -s testinpass #iwlist wlan2 scan ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=100 eapol_version=1 ap_scan=1 fast_reauth=1 network={ scan_ssid=0 ssid="suslik" proto=WPA key_mgmt=WPA-EAP pairwise=CCMP TKIP group=CCMP TKIP eap=TTLS phase2="auth=PAP" } wpa_supplicant -D wext -c /etc/wpa_supplicant.conf -i wlan2 ----------------------------------------------------------------------------------------------------------------- Hardware Management Console. Управляем IBM грамотно Антон Борисов # aptitude install mkisofs syslinux # mount /home/anton/ISO/HMC_Recovery_V7R740_1.iso /media/space -o loop # cat /media/space/isolinux/initrd.gz | gzip -d > /home/anton/ISO/initrd_7.4.loop # mount /home/anton/ISO/initrd_7.4.loop /media/host -o loop case "$VPDINFO" in 8837*) busybox tar -xf /opt/hsc/data/7310CR3.tar ;; # Next 3 entries for megamouth support 8676*) busybox tar -xf /opt/hsc/data/7310CR2.tar ;; 7978*) busybox tar -xf /opt/hsc/data/7310CR4.tar ;; 7946*) busybox tar -xf /opt/hsc/data/7042CR5.tar ;; *) if [ -f /opt/hsc/data/$VPDINFO.tar ]; then busybox tar -xf /opt/hsc/data/$VPDINFO.tar else ShowInvalidVpdMSG $VPDINFO fi ;; esac # umount /media/host # cat /home/anton/ISO/initrd_7.4.loop | gzip > /home/anton/ISO/initrd_7.4.gz Листинг 1. Сборка модифицированного инсталляционного ISO для HMC v7 $ mkisofs -o /home/anton/Install/HMC_Recovery_V7R740_Patched.iso -V CDROM -no-emul-boot -boot-info-table -boot-load-size 4 -r -b isolinux/isolinux.bin -c isolinux/boot.cat /home/anton/hmc/base Листинг 2. Встроенная учетная запись hscroot использует ограниченный командный процессор hscroot@localhost:~> ps afx hscroot@localhost:~> /sbin/ifconfig Листинг 3. «Эмуляция» системы происходит с помощью модифицированного getHMCVPD anton@localhost:~> sudo vi /opt/hsc/bin/getHMCVPD #!/bin/bash if [ "$1" = "-b" ] then ### Для виртуальной HMC нужно выдавать заведомо известную информацию, ### а не определять параметры с помощью команды dmidecode ### /usr/sbin/dmidecode --string bios-version | sed -e 's/-\[//g' | sed -e 's/\]-//g' echo "2AKT51A"; elif [ "$1" = "-g" ] then /usr/sbin/dmidecode --string system-uuid | sed -e 's/-//g'| tr [:upper:] [:lower:] else x=`/usr/sbin/dmidecode --string system-product-name` if [ $? -eq 0 ] then echo $x | grep "\[" 2>&1 >/dev/null if [ $? -eq 0 ] then cmodel=`echo $x | cut -d':' -f2 | cut -d'[' -f 2 | cut -d ']' -f 1 | cut -c1-4` mtype=`echo $x | cut -d':' -f2 | cut -d'[' -f 2 | cut -d ']' -f 1 | cut -c5-7` else cmodel=$x mtype="" fi if [ "$1" = "-a" ] then sn=`/usr/sbin/dmidecode --string system-serial-number` ### Еще раз проводим «эмуляцию» заведомо рабочей системы, комментарий ниже – оригинальная команда ### echo "$cmodel$mtype*$sn" echo "7042CR4*10-1234A"; else ### и еще разок ### echo "$cmodel$mtype" echo "7042CR4"; fi exit 0 else exit 1 fi fi Листинг 4. «Правильный» dmidecode вызывает при необходимости оригинальную версию anton@localhost:~> sudo mv /usr/sbin/dmidecode /usr/sbin/dmidecode.bak anton@localhost:~> sudo vi /usr/sbin/dmidecode anton@localhost:~> sudo chmod a+x /usr/sbin/dmidecode anton@localhost:~> cat /usr/sbin/dmidecode #!/bin/bash DMIDECODE=/usr/sbin/dmidecode.bak if [[ "$2" == "bios-version" ]] then echo "1234-123" elif [[ "$2" == "system-product-name" ]] then echo "1234-123" else $DMIDECODE "$@" fi # mount / -o,remount,rw # chkconfig --set sshd on # sync # mount / -o,remount,ro # reboot anton@hmc7:~> sudo lssyscfg -r sys -F name anton@hmc7:~> sudo lssyscfg -r lpar -F name,state -m Server-9111-285-SN06ABB30 anton@hmc7:~> sudo mkvterm -m Server-9111-285-SN06ABB30 -p MainPartition anton@hmc7:~> sudo chsysstate -r lpar -o shutdown -m Server-9111-285-SN06ABB30 --id 1 anton@hmc7:~> sudo chsysstate -r lpar -o on -m Server-9111-285-SN06ABB30 --id 1 anton@hmc7:~> sudo lscod -t cap -m Server-9111-285-SN06ABB30 -c trial -r mem anton@hmc7:~> sudo lssyscfg -r sys ----------------------------------------------------------------------------------------------------------------- Резервное копирование ОС с дедупликацией Максим Сафонов "C:\bkp\vshadow64.exe" -p -nw -script="C:\bkp\setvar1.cmd" C: call "C:\bkp\setvar1.cmd" "C:\bkp\vshadow64.exe" -el=%shadow_id_1%,B: "C:\bkp\imagex.exe" /capture B: "\\server\backup\server\server_c.wim" "C drive %date% %time%" "%date% %time%" /verify /config "C:\bkp\conf.ini" /flags "ServerEnterprise" >> "C:\bkp\imagex.log" "C:\bkp\imagex.exe" /append B: "\\server\backup\server\server_c.wim" "C drive %date% %time%" "%date% %time%" /verify /config "C:\bkp\conf.ini" /flags "ServerEnterprise" >> "C:\bkp\imagex.log" [ExclusionList] \$ntfs.log \hiberfil.sys \pagefile.sys "\System Volume Information" \RECYCLER \Windows\CSC "*.mdf" "*.ldf" [CompressionExclusionList] *.mp3 *.zip *.cab \WINDOWS\inf\*.pnf Imagex /delete \\server\backup\server\server_c.wim 1 "C:\bkp\dosdev.exe" /D B: "C:\bkp\vshadow64.exe" -ds=%shadow_id_1% bmail.exe -s smtp.server.ru -t user@mail.ru -f user@mail.ru -h Header -a "Windows Server on %computername% %date%" -m log.log copype.cmd amd64 D:\tmp\winpe copy D:\tmp\winpe\winpe.wim D:\tmp\winpe\iso\sources\boot.wim copy "C:\Program Files\Windows AIK\tools\amd64\imagex.exe" D:\tmp\winpe\iso\ "C:\Program Files\Windows AIK\Tools\amd64\oscdimg.exe" -n -bD:\tmp\winpe\etfsboot.com D:\tmp\winpe\iso D:\tmp\winpe\win2k8r2boot.iso Net use z: \\server\d$\folder /user:domain\administrator * Z:\sources\setup.exe dism.exe /mount-wim /wimfile:D:\backup\server_c.wim /index:1 /mountdir:D:\backup\drivers\w2k8r2 dism.exe /Image: D:\backup\drivers\w2k8r2 /add-driver /recurse /driver:D:\drivers\w2k8r2 /forceunsigned dism.exe /unmount-wim /mountdir:D:\backup\drivers\w2k8r2 /commit diskpart list disk select disk 0 list partition clean create partition primary size=30000 select partition 1 format fs=ntfs quick assign letter=C active exit D:\imagex.exe /apply z:\sources\install.wim 1 C: /verify z:\boot\bootsect.exe /nt52 C: /force /mbr ----------------------------------------------------------------------------------------------------------------- DNS Amplification DDoS в контексте атаки и защиты Игорь Савчук nospoof on Options { ... recursion no; ...} additional-from-auth no; additional-from-cache no; use-id-pool yes; fetch-glue no; zone "example.com" { type master; file "db.example.com"; allow-update { localhost; key allowed-updater.; }; }; acl "trusted" { 11.22.33.44; 55.66.77.99; }; allow-notify { trusted; }; allow-transfer { trusted; }; ----------------------------------------------------------------------------------------------------------------- Система Suricata. Очередная революция в сетевой безопасности? Андрей Бражук # apt-get install libpcre3 libpcre3-dbg libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev # apt-get install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev libnfnetlink0 # apt-get install libmagic-dev # ./configure --enable-nfqueue # make # make install # ln -s /usr/local/lib/libhtp-0.2.so.1 /usr/lib/libhtp-0.2.so.1 # mkdir /etc/suricata # cp classification.config reference.config suricata.yaml /etc/suricata # mkdir /var/log/suricata # suricata -c /etc/suricata/suricata.yaml -i eth1 # suricata --build-info | grep NFQ # iptables -I FORWARD -j NFQUEUE # iptables -I INPUT -p tcp --dport 80 -j NFQUEUE # iptables -I OUTPUT -p tcp --sport 80 -j NFQUEUE # suricata -c /etc/suricata/suricata.yaml -q 0 ----------------------------------------------------------------------------------------------------------------- Финансовое ПО. Предмет разговора – справочники и календари Алексей Вторников ... double cb_rate = 0.00; ... if (cb_rate == X.XX) { ... } elif (cb_rate == Y.YY) { ... } elif (cb_rate == Z.ZZ) { ... } ... CREATE TABLE client ( id LONG NOT NULL, -- Идентификатор name STRING (255), -- Наименование type CHAR, -- Тип клиента fromdate DATE, -- Дата заведения клиента PRIMARY KEY (id), -- Первичный ключ AUTOINC (id) -- Условие на первичный ключ ); SELECT COUNT (*) AS 'Всего клиентов ЮЛ' FROM client WHERE type = 'Ю' AND fromdate BETWEEN 15.10.2007 AND 20.10.2007 CREATE TABLE detail ( id LONG NOT NULL, -- Идентификатор client_id LONG NOT NULL, -- Идентификатор клиента datatype STRING (10), -- Тип данных value STRING (255), -- Значение типа данных description STRING (255), -- Описание PRIMARY KEY (id, client_id), -- Условие на первичный ключ AUTOINC (id) ); CREATE TABLE account ( acc STRING (20) NOT NULL, -- Номер счета client_id LONG NOT NULL, -- Идентификатор клиента opendate DATE, -- Дата открытия счета closedate DATE, -- Дата закрытия счета kind STRING (2), -- Тип счета (А/П/АП) status STRING (20), -- Дополнительные признаки PRIMARY KEY (account) -- Условие на первичный ключ ); SELECT acc, opendate FROM account WHERE client_id = 100001327 ----------------------------------------------------------------------------------------------------------------- Информационные системы масштаба предприятия Константин Кондаков ab -n 100 -c 5 -f SSL2 https://api.certain.com/docs -----------------------------------------------------------------------------------------------------------------