Запускаем сценарий загрузки от имени администратора Иван Коробко Листинг. 1. Пакетный файл LOGON.BAT start /wait wscript.exe %0\..\inventory.vbs start /wait wscript.exe %0\..\network.vbs … start /wait wscript.exe %0\..\admin.vbs Листинг 2. Обращение к интернет-ресурсу Set IE=CreateObject("InternetExplorer.Application") 'Ожидание пока не загрузится браузер Do While (IE.Busy) WScript.Sleep 100 Loop IE.Visible =0 IE.Navigate("http://RemoteRegistry") 'Ожидание пока не загрузится браузер Do While (IE.Busy) Wscript.Sleep 100 Loop IE.Quit() Листинг 3. Управление имперсонализацией в файле web.config ----------------------------------------------------------------------------------------------------------------- Устанавливаем и настраиваем службу управления ключами в Windows Server 2008/Windows Vista Иван Квасников script C:\windows\system32\slmgr.vbs /ipk cscript C:\windows\system32\slmgr.vbs /ato ----------------------------------------------------------------------------------------------------------------- Такие разные пароли Иван Квасников dn: "CN=Domain Admins PSO, CN=Password Settings Container, CN=System,DC=dc01,DC=domain,DC=corp" changetype: add objectClass: msDS-PasswordSettings msDS-MaximumPasswordAge:-1728000000000 msDS-MinimumPasswordAge:-864000000000 msDS-MinimumPasswordLength:8 msDS-PasswordHistoryLength:24 msDS-PasswordComplexityEnabled:TRUE msDS-PasswordReversibleEncryptionEnabled:FALSE msDS-LockoutObservationWindow:-18000000000 msDS-LockoutDuration:-18000000000 msDS-LockoutThreshold:0 msDS-PasswordSettingsPrecedence:20 msDS-PSOAppliesTo:"CN=Domain Admins,CN=Users,DC=dc01,DC=domain,DC=corp" ldifde –i –f pso.ldf dsget user "CN=Administrator,CN=Users,DC=domain,DC=corp" –effectivepso ----------------------------------------------------------------------------------------------------------------- Настройка Exchange 2007 для отправки электронной почты на внешние адреса Сергей Крутилин new-SendConnector -Name 'Send connector to Internet' -Usage 'Internet' -AddressSpaces 'smtp:*;1' -DNSRoutingEnabled $true -UseExternalDNSServersEnabled $false -SourceTransportServers 'MAIL' ----------------------------------------------------------------------------------------------------------------- VMware Player 2.5 Иван Коробко VMware-player-2.5.1-126130.exe /v "/qn" ----------------------------------------------------------------------------------------------------------------- Безболезненная замена устаревшего или отказавшего контроллера домена на базе Windows Server Кирилл Семаев dsquery server –hasfsmo schema dsquery server –hasfsmo name dsquery server –hasfsmo rid dsquery server –hasfsmo pdc dsquery server –hasfsmo infr dsquery server –forest -isgc regsvr32 schmmgmt.dll ntdsutil.exe roles connections connect to server имя_сервера (того, кому хотим отдать роль) q dcdiag dcdiag /v /fix netdiag netdiag /v /fix dcdiag /test:dns ----------------------------------------------------------------------------------------------------------------- Fedora 8 > Fedora 10: не пора ли обновиться? Павел Закляков, Глеб Рыжаков # tar czf /tmp/etc-`date +%F`.tar.gz /etc && mv /tmp/etc-*.tar.gz /home # su -l postgres -c pg_dumpall > psql-dump.sql # /etc/rc.d/init.d/postgresql stop # mv -f /var/lib/pgsql /var/lib/pgsql.old # /etc/rc.d/init.d/postgresql initdb # /etc/rc.d/init.d/postgresql start # su -l postgres -c "psql -f /home/psql-dump.sql" # mysqldump --all-databases > /home/mysql-dump.sql # /etc/rc.d/init.d/mysqld restart # mysql < /home/mysql-dump.sql # yum install preupgrade # /usr/bin/preupgrade # mv /boot/initrd-$(uname -r).img /boot/initrd-$(uname -r).img.old # mkinitrd /boot/initrd-$(uname -r).img $(uname -r) # yum clean all # package-cleanup --orphans # package-cleanup —orphans | xargs rpm -e # yum update # yum update имя_пакета # yum check-update # package-cleanup --leaves # package-cleanup --leaves | xargs rpm -e #!/usr/bin/python import sys, rpm ts = rpm.TransactionSet() def findwhatprovides(requirement): prov = [] r = requirement mi = ts.dbMatch('provides', r) if mi.count() == 0: mi = ts.dbMatch('basenames', r) if mi.count() > 0: for p in mi: prov.append("%s" % (p['name'])) else: sys.stderr.write("Unprovided requirement: %s" % r) return [] return prov def finddepsOneIter(p): deps = set() mi = ts.dbMatch('name', p) if mi.count() == 0: sys.stderr.write("package %s not found.\n" % p) return [] h = mi.next() for requirement in h.dsFromHeader('requirename'): requirement = requirement[0].split(' ')[1] if requirement.find("rpmlib") == 0: continue deps|=set([findwhatprovides(requirement)[0]]) return deps def finddeps(p): depall=set() depdop=set([p]) while(len(depdop)>0): depnew=set() for eldep in depdop: depnew|=finddepsOneIter(eldep) depall=depall|depdop depdop=depnew-depall return sorted(depall) for dep in finddeps('wine'): print dep # yum groupinstall LXDE # find /etc/rc.d -follow -type l -delete # ls /etc/rc.d/init.d/*.rpmnew # ls /etc/rc.d/init.d/*.rpmsave # rm -f /etc/rc.d/init.d/*.rpmsave # cd /etc/rc.d/init.d/ && for f in *.rpmnew; do mv -f $f `basename $f .rpmnew`; done # cd /etc/rc.d/init.d; for f in *; do /sbin/chkconfig $f resetpriorities; done # rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rp # rpm -Uvh http://mirror.yandex.ru/fedora/russianfedora/russianfedora/free/fedora/updates/10/$ARCH/russianfedora-free-release-$VERSION.noarch.rpm http://mirror.yandex.ru/fedora/russianfedora/russianfedora/fixes/fedora/updates/10/$ARCH/russianfedora-fixes-release-$VERSION.noarch.rpm http://mirror.yandex.ru/fedora/russianfedora/russianfedora/nonfree/fedora/updates/10/$ARCH/russianfedora-nonfree-release-$VERSION.noarch.rp # yum install xneur ----------------------------------------------------------------------------------------------------------------- Обзор Open Source ECM-системы Alfresco Сергей Яремчук $ chmod +x Alfresco-Labs-3Stable-Linux-x86-Install $ sudo Alfresco-Labs-3Stable-Linux-x86-Install > cd c:\alfresco c:\alfresco> alf_start export PATH=$PATH:/usr/java/jdk/bin rem Set any default JVM options set JAVA_OPTS=-Xms128m -Xmx512m -Xss96k -XX:MaxPermSize=128m -server classpath:alfresco/extension/custom-repository.properties # Sample database connection properties db.name=alfresco db.username=alfresco db.password=alfresco #db.pool.initial=10 #db.pool.max=100 # External locations ooo.exe=C:/Alfresco/OpenOffice.org/program/soffice ooo.user=${dir.root}/oouser img.root=C:/Alfresco/ImageMagick swf.exe=C:/Alfresco/bin/pdf2swf # Derby connection db.driver=org.apache.derby.jdbc.EmbeddedDriver db.url=jdbc:derby:C:/Alfresco/alf_data/derby_data/alfresco;create=true # MySQL connection #mysql#db.driver=org.gjt.mm.mysql.Driver #mysql#db.url=jdbc:mysql://localhost:3306/alfresco Russian ----------------------------------------------------------------------------------------------------------------- Создаём шлюз с системой учёта трафика на слабом компьютере Николай Емашев # cd /usr/ports/www/squid/ # make install clean # /usr/ports/www/lightsquid # make install clean Alias /statistica "/usr/local/www/lightsquid" AddHandler cgi-script .cgi AllowOverride All $logpath ="/usr/local/squid/logs/"; $skipurl = "get.theon.ru|91\.144\.144\.|penzadom.ru"; $lang ="ru-koi8"; $templatename ="ric"; $bigfilelimit = 20*1024*1024; $perusertrafficlimit = 300*1024*1024; 192.168.2.7 Есин Виктор 192.168.2.8 Калинин Владимир # echo 'ipcad_enable="YES"' >> /etc/rc.conf # ee /usr/local/etc/ipcad.conf capture-ports enable; // Интерфейс заменить на свой interface rl0 filter "ip and dst net 192.168.2.0/24 and not src net 192.168.2.0/24"; // Считаем все адреса aggregate 0.0.0.0/0 strip 32; // Теперь укажем, какие порты как отображать aggregate 1-19 into 65535; aggregate 20-21 into 21; aggregate 22-23 into 22; aggregate 25 into 25; aggregate 24 into 65535; aggregate 26-79 into 65535; aggregate 80-81 into 0; aggregate 82-109 into 65535; aggregate 110 into 110; aggregate 111-442 into 65535; aggregate 443 into 443; aggregate 444-3127 into 65535; aggregate 3128 into 0; aggregate 3129-65535 into 65535; // Настройки rsh-сервера, с помощью которого будет просматриваться статистика rsh enable at 127.0.0.1; rsh root@127.0.0.1 admin; rsh root@127.0.0.1 backup; rsh root@127.0.0.1; rsh 127.0.0.1 view-only; rsh ttl = 3; rsh timeout = 30; chroot = /var/log/ipcad; dumpfile = ipcad.dump; pidfile = ipcad.pid; 1. #!/bin/sh 2. # Диапазон адресов локальной cети, указываем подсеть 3. net="192.168.2" 4. ttime=`/usr/bin/rsh localhost sh ip acco|grep 'Accounting data saved'|awk '{print ($4)}'` 5. /usr/bin/rsh localhost clear ip accounting 6. /usr/bin/rsh localhost show ip accounting checkpoint|grep $net|awk -v vtime=$ttime '{print (vtime".000",1,$2,"TCP_MISS/200",$4,"CONNECT",$1":"$5,"-","DIRECT/"$1,"-")}' >>/usr/local/squid/logs/access.log options IPFIREWALL # Логгинг пакетов, если в правиле написано `log` options IPFIREWALL_VERBOSE # Защита от атак типа флудинга options IPFIREWALL_VERBOSE_LIMIT=50 # Перенаправление пакетов options IPFIREWALL_FORWARD # Трансляция адресов options IPDIVERT # Разрешающее последнее правило, что делает брандмауэр открытым # (на случай каких-либо ошибок в конфигурационных скриптах) options IPFIREWALL_DEFAULT_TO_ACCEPT # Сбросим список ipfw -q -f flush # Установим префикс команды для набора правил cmd="ipfw add" ########################squid############################ # Разрешаем исходящий трафик с сервера $cmd 50 allow all from me to any # Разрешаем входящий трафик к серверу $cmd 50 allow all from any to me # Делаем прозрачный прокси $cmd 100 fwd 127.0.0.1,3128 tcp from 192.168.2.0/24 to any 80 chmod 755 /usr/local/scripts/firewall.sh firewall_enable="YES" firewall_script="/usr/local/scripts/firewall.sh" # arp -an | awk -v OFS="\t" '{print(substr($2, 2, length($2)-2), $4)}' > /usr/local/etc/mac_control # arp -d -a # arp -f /usr/local/etc/mac_control #!/bin/sh # Static ARP-table loader # http://www.opennet.ru/base/net/arp_fix_bsd.txt.html # Сергей Супрунов amsand@yandex.ru. case $1 in start) arp -d -a > /dev/null arp -f /usr/local/etc/mac_control > /dev/null echo 'Static ARP-table is loaded' ;; stop) arp -d -a > /dev/null echo 'Static ARP-table is unloaded' ;; restart) arp -d -a > /dev/null arp -f /usr/local/etc/mac_control > /dev/null echo 'Static ARP-table is reloaded' ;; status) arp -an ;; *) echo "Usage: `basename $0` {start|stop|restart|status}" >&2 ;; esac exit 0 ifconfig_rl0="inet 192.168.x.x netmask 255.255.255.0 staticarp" # СЕТЕВЫЕ ОПЦИИ # Указываем, на каком порту будет крутиться наш прокси и делаем его прозрачным http_port 3128 transparent # Указываем, какие url не кэшировать, а отправлять запросы напрямую acl QUERY urlpath_regex cgi-bin \? cmd dst dk?st.cmd no_cache deny QUERY # РАЗМЕРЫ КЭША И ПАМЯТЬ # Объем занимаемой памяти cache_mem 23 MB # При достижении данного уровня заполнения кэша - в процентах, # начинается ускоренный процесс удаления старых объектов cache_swap_high 95 # Процесс удаления старых объектов заканчивается, если достигнут данный уровень cache_swap_low 90 # Максимальный и минимальный объект в кэше maximum_object_size 1096 KB minimum_object_size 37 KB # Максимальный объект в памяти maximum_object_size_in_memory 1024 KB # ЛОГ-ФАЙЛЫ И ПАПКИ С КЭШЕМ # Расположение папки с кэшем и его размер (в данном случае 400 Мб) cache_dir ufs /usr/local/squid/cache 400 16 256 # Формат логов logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %a %Ss/%03Hs %h] [%a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h" "%{User-Agent}>h" %Ss:%Sh # Папка с логами access_log /usr/local/squid/logs/access.log squid cache_log /usr/local/squid/logs/cache.log cache_store_log /usr/local/squid/logs/store.log # Ротация логов (не забудьте добавить задание в cron) logfile_rotate 1 # НАСТРОЙКИ ДЛЯ ВНЕШНИХ ПРОГРАММ # Под каким анонимным пользователем заходить на ftp ftp_user anonimous@mail.ru # Ширина листинга ftp ftp_list_width 64 # Пассивный или активный режимы ftp_passive off hosts_file /etc/hosts # ТОНКАЯ НАСТРОЙКА КЭША # Используется для определения устаревания объекта в кэше # (подробнее о значениях можно узнать здесь - http://www.bog.pp.ru/work/squid.html) refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 # Некоторые негативные ответы тоже кэшируются - connection refused и 404 not found - ttl # задает их время жизни в кэше negative_ttl 5 minutes positive_dns_ttl 15 hours negative_dns_ttl 1 minute # КОНТРОЛЬ ДОСТУПА # ------------------------------------------------------- #acl password proxy_auth REQUIRED acl fileupload req_mime_type -i ^multipart/form-data$ acl javascript rep_mime_type -i ^application/x-javascript$ # Обозначаем диапазоны адресов: acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 # К каким портам разрешать доступ acl SSL_ports port 443 563 5223 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 5190 # icq acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 5222 # jabber acl Safe_ports port 1025-65535 # unregistered ports acl CONNECT method CONNECT # Only allow cachemgr access from localhost http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_reply_access allow all icp_access allow all # АДМИНСКИЕ ПАРАМЕТРЫ # Почтовый адрес, на который будет послано письмо, если в Squid возникнут проблемы cache_mgr schmel@xak-faq.info # Если запустить Squid от имени root, то поменять UID на указанный cache_effective_user squid # Не показывать версию Squid httpd_suppress_version_string on # Отображаемое имя хоста visible_hostname unknown # Память для пулов, можете поставить свое значение, в зависимости от мощности машины # memory_pools on # memory_pools_limit 25 MB # Скрываем, что идем через прокси forwarded_for off header_access Via deny all # Сбор статистики о клиентах client_db on coredump_dir /usr/local/squid/cache #####НАСТРОЙКА ПУЛОВ И ДОСТУПА К ОПРЕДЕЛЕННЫМ САЙТАМ###### # В этом файле записываются url, которым мы не будем резатьскорость # (чаще – это внутренние ресурсы провайдера) acl provider url_regex -i "/usr/local/etc/squid/acl/provider" # Белый список acl good_url url_regex "/usr/local/etc/squid/acl/good_url" # Список слов, запрещенных в url acl bad_urlpath urlpath_regex "/usr/local/etc/squid/acl/bad_urlpath" # Список запрещенных сайтов acl bad_url url_regex "/usr/local/etc/squid/acl/bad_url" # Список сайтов с клубничкой acl porno_url url_regex "/usr/local/etc/squid/acl/porno_url" # Рекламные сайты acl banner_url url_regex "/usr/local/etc/squid/acl/banner_url" # Все вышеперечисленные файлы можно брать из баз rejik или SquidGuard # Доступ к локальному веб-серверу (для статистики и ошибок) acl web_server_users src 192.168.2.0/24 acl web_server src 192.168.2.1 http_access allow good_url http_access allow provider ###############ЗАПРЕТ ДОСТУПА И ОШИБКИ################### http_access deny bad_urlpath !good_url http_access deny bad_url !good_url http_access deny porno_url !good_url http_access deny banner_url !good_url # Поставим редирект на прозрачную картинку deny_info http://192.168.2.1/squid/rek/1x1.gif bad_urlpath deny_info http://192.168.2.1/squid/rek/1x1.gif bad_url deny_info http://192.168.2.1/squid/rek/1x1.gif banner_url deny_info http://192.168.2.1/squid/rek/1x1.gif porno_url ########ДЕЛИМ КАНАЛ НА ВСЕХ ПОЛЬЗОВАТЕЛЕЙ################ # В этом файле IP-адрес тех, кому разрешим доступ acl InternetUsers src "/usr/local/etc/squid/acl/InternetUsers" # Админу отдельный пул, без ограничений acl admin src 192.168.2.3 # В этом файле сайты, доступные всем разрешенным, даже тем, кто попал в бан-лист acl no_quota url_regex -i "/usr/local/etc/squid/acl/no_quota_url" # Список пользователей, превысивших лимит трафика и попавших в бан-лист acl banusers src "/usr/local/etc/squid/acl/user_deny" # Дневное время acl day time 08:00-23:59 ################ДЕЛИМ КАНАЛ В ДНЕВНОЕ ВРЕМЯ############### # Количество пулов – 2 (дневной и ночной) delay_pools 2 # Класс пула 2й delay_class 1 2 # Первые 300 Кб закачиваются на максимальной скорости, потом скорость не более 18 Кб\с delay_parameters 1 -1/-1 18000/300000 # Сайты в provider и пользователь admin обходят эти ограничения delay_access 1 allow InternetUsers day !provider !admin delay_access 1 deny all ##############НОЧНОЙ ДОСТУП########################### # Здесь снимаем ограничения на скорость скачивания delay_class 2 2 delay_parameters 2 -1/-1 -1/-1 delay_access 2 allow !day InternetUsers !admin delay_access 2 deny all # А здесь - наоборот, режем до минимума тем, кто решил закачку на ночь поставить #delay_class 2 2 # Первые 50 Кб – на максимальной скорости, далее не более 4 Кб\с #delay_parameters 2 -1/-1 4000/50000 #delay_access 2 allow !day InternetUsers !admin #delay_access 2 deny all ################################################ http_access allow admin # Разрешим пользователям внутренней сети доступ к веб-серверу, для отображения статистики и ошибок http_access allow web_server_users web_server # Блокировка пользователей, которые превысили лимит (файл user-deny), # и разрешение доступа только к тем IP и сайтам, которые перечислены в файле # no_quota_url http_access allow InternetUsers !banusers http_access allow no_quota banusers http_access deny banusers all http_access deny all # Cоздадим файл ERR_DENIED. Представляет собой html-страницу с грозными заявлениями о вреде расхищения # корпоративного трафика. Поместить в папку с другими ошибками (например /usr/local/etc/squid/errors/Russian-1251) deny_info ERR_DENIED all ########РЕДИРЕКТОР########################## # Если вы все-таки решили установить rejik #url_rewrite_program /usr/local/rejik/redirector /usr/local/rejik/redirector.conf #url_rewrite_children 15 # Директория с ошибками error_directory /usr/local/etc/squid/errors/Russian-1251 traf_limit.pl #!/usr/bin/perl # Довесок на LightSquid Project (c) 2004-2005 Sergey Erokhin aka ESL # Скрипт создает файл user_deny для ограничения Интернета по трафику # Автор: Иван Лонин loninia@apksouz.ru 2008 год use File::Basename; # Не очень хорошо напрямую писать путь к конфигурационному # файлу, но не хотелось sh-файл для сron делать require "/etc/squid/traf_limit/config"; #($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)= localtime(time); @dat=localtime(time); $year =1900+$dat[5]; $month=1 + $dat[4]; $filter="$year$month"; #print "$log_path/$filter*\n"; @daylist=glob("$log_path/$filter*"); foreach $daypath (sort @daylist) { open FF,"<$daypath/.total"; $totaluser=;chomp $totaluser;$totaluser=~s/^user: //; $totalsize=;chomp $totalsize;$totalsize=~s/^size: //; while () { ($user,$size,$hit)=split; $h{$user}{size}+=$size; $h{$user}{hit}+=$hit; } close FF; } # $cummulative=0; open RES,">$res_file"; print RES "# файл содержит пользователей, превысивших квоту.\n# автоматически переписывается скриптом traf_limit.pl\ndolzhen_bit_odin_user\n"; foreach $user (sort {$h{$b}{size}<=>$h{$a}{size}} keys %h) { $all4user=$h{$user}{size}/1024/1024; if ($vip_user{$user}{size} > 0) { $limit=$vip_user{$user}{size}; }else{ $limit=$all_limit; } if ($all4user >= $limit) { print RES "$user\n"; # print "$h{$user}{size}\n"; }; } #!/usr/bin/perl # путь к логам lightsquid $log_path="/www/lightsquid/report"; # Файл, в который пишутся пользователи, превысившие лимит $res_file="/usr/local/etc/squid/acl/user_deny"; # Лимит трафика в мегабайтах $all_limit=1500; # Привилегированные пользователи с повышенным или пониженным # лимитом для каждого пользователя строка формата: #$vip_user={<имя_пользователя}{size}=<лимит_в_мегабайтах>; $user1="192.168.2.3"; $vip_user{user1}{size}=7000; # chmod 775 /etc/squid/traf_limit/config # chmod 775 /etc/squid/traf_limit/traf_limit.pl # crontab –e # В 4:55 сбрасывать трафик из коллектора ipcad в логи прокси-сервер 55 04 * * * /usr/local/scripts/ipcad.sh # В 5:05 снимать статистику LightSquid 05 05 * * * /usr/local/www/lightsquid/lightparser.pl # В 5:15 запускать скрипт лимита по трафику 15 05 * * * /usr/local/etc/squid/traf_limit/traf_limit.pl # 5:25 производить ротацию логов 25 05 * * * /usr/local/sbin/squid -k rotate # Запуск скрипта, удаляющего старые логи 35 05 * * * /usr/local/scripts/rmsquidlogs.sh #!/bin/sh rm /usr/local/squid/logs/access.log.0 rm /usr/local/squid/logs/cache.log.0 rm /usr/local/squid/logs/store.log.0 ----------------------------------------------------------------------------------------------------------------- Устанавливаем связку Squid + squidGuard + с-icap Олег Палухин #cd /usr/ports/www/squid30/ #make config #make && make install && make clean # Привилегированный пользователь acl BosS src 172.25.1.3 # Наша локальная сеть – источник запросов к прокси-серверу acl LocalneT src 172.25.0.0/16 # ICQ, как и любой другой порт, можно разрешить или закрыть, ниже будет понятно как acl IcQ port 5190 # На каком порту принимает запросы Squid, опцию transparent здесь не указываем, так как Squid # собран с поддержкой прозрачного проксирования с помощью пакетного фильтра pf (опция SQUID_PF) http_port 8080 # Пускаем всех из локальной сети в Интернет http_access allow LocalneT # Запрещаем всем остальным http_access deny all # Здесь указываем программу-редиректор, у нас — это squidGuard. В предыдущих версиях Squid этот параметр # назывался redirect_program url_rewrite_program /usr/local/bin/squidGuard -c /usr/local/etc/squid/squidGuard.conf # Управление скоростью доступа в Интернет посредством пулов # Количество пулов доступа delay_pools 2 # Первая цифра — номер пула, вторая — класс пула, мы используем пулы только первого класса, # без деления на подсети delay_class 1 1 # Отдельному пользователю 10 Кб/с delay_class 1 1 delay_parameters 1 100000/100000 delay_access 1 allow BosS delay_access 1 deny all # Всем остальным – 15 Кб/с delay_class 2 1 delay_parameters 2 150000/150000 delay_access 2 allow LocalneT delay_access 2 allow LoopbacK delay_access 2 deny all # Учетная запись, с правами которой работает Squid cache_effective_user squid cache_effective_group squid # Местонахождение log-файлов cache_log /var/log/squid_debug.log access_log /usr/local/squid/logs/access.log # Поддержка функционала icap-клиента: icap_enable on icap_preview_enable on icap_preview_size 128 icap_send_client_ip on icap_service service_avi_req reqmod_precache 0 icap://localhost:1344/avscan icap_service service_avi respmod_precache 1 icap://localhost:1344/avscan icap_class class_antivirus_req service_avi_req # Для каждого имени icap_service указываем отдельную строку icap_class, а не все сервисы # в одной строке, как предлагается в configuration guide на сайте проекта c-icap: # «icap_class class_antivirus service_avi service_avi_req», иначе Squid при запуске выдаст сообщение: # «WARNING: Multiple ICAP services per icap_class # are not yet supported.» icap_class class_antivirus service_avi # Соответственно получаем две строки icap_access для двух классов icap_class icap_access class_antivirus_req allow all icap_access class_antivirus allow all #make && make install && make clean # Место расположения блэклистов и логов dbhome /var/db/squidGuard/blacklists logdir /var/log # Можно задавать ограничения доступа по времени и дням # сокращения для дней недели: #s = sun, m = mon, t =tue, # w = wed, h = thu, f = fri, a = sat # У нас описаны дневные часы ежедневно c 6 утра # до 10 вечера, что будет использовано ниже time WORKHOURS { weekly * 06:00 — 22:00 date *.*.01 06:00 — 22:00 } # От кого будут приходить запросы source LOCALNET { ip 172.25.0.0/16 } # Далее идут собственно описания ресурсов (так называемые # DESTINATION CLASSES), доступ к которым запрещен (blacklists) # или разрешен (whitelists) - указание на содержимое dbhome; # мы будем использовать только блэклисты # Название подкаталога блэклистов destination adult { # Указание на блэклист доменов, здесь указываются, # какие домены блокируются, — т.е. если в файле # указан domen.com, то закрыт доступ к домену # полностью и к host.domen.com и к games.foo.domen.com # и т. д. Могут быть указаны также только поддомены, # например subdomen.host.com: это закрывает доступ # только к поддомену и ко всем его cобственным # поддоменам, а доступ к host.com остается открытым. # Но обратите внимание! Если в файле доменов указаны # и domen.com и subdomen.domen.com, то доступ будет # закрыт только к этим двум доменам, а, скажем, # foo.domen.com будет доступен domainlist adult/domains # Указание на блэклист URL, т.е. блокируется доступ # к конкретным страницам, если указано # example.com/some/path/to/page.html, то блокируется # доступ только к # http://www.example.com/some/path/to/page.html, # http://example.com/some/path/to/page.html, # http://ftp.example.com/some/path/to/page.html urllist adult/urls } destination audio-video { domainlist audio-video/domains urllist audio-video/urls # Файл регулярных выражений в URL запроса, используется # стандартный синтаксис, который можно узнать # по man regex; здесь можно запретить, например, # всевозможные мультимедиа-файлы: # (\.mp3|\.wmv|\.flv|\.avi|\.mp4)$ expressionlist audio-video/expressions } destination blog { domainlist blog/domains urllist blog/urls # Так включается запись в лог нарушителей, пытавшихся # пройти на запрещенные ресурсы log violaters.log } . . . destination agressif { domainlist agressif/domains urllist agressif/urls expressionlist agressif/expressions } destination publicite { domainlist publicite/domains urllist publicite/urls expressionlist publicite/expressions } # И, наконец, пишем кому (LOCALNET), когда (within WORKHOURS) # и куда запрещен/разрешен доступ, здесь у нас запрещен # доступ по всем вышеописанным блэклистам acl { LOCALNET within WORKHOURS { pass !adult !astrology !blog !celebrity !dangerous_material !dating !financial !forums !games !liste_bu !malware !manga !marketingware !mixed_adult !phishing !radio !in-addr !hacking !warez !gambling !drogue !filehosting !audio-video !agressif !redirector !publicite any } default { pass none # URL, заменяющий запрещенный к доступу — то, # что увидит пользователь – любитель фривольных # ресурсов; это может быть сделанная вами # бан-страница и расположенная на локальном # веб-сервере, это может быть даже главная # страница вашего корпоративного ресурса # в Интернете redirect http://host/ban.html } } #squidGuard -C all #chown -R squid:squid /path/to/blacklists #sudo -u squid $(which squidGuard) -C all #tail -n 10 /var/log/squidGuard.log | grep "emergency mode" || echo OK #echo "http://adult.com 172.25.1.3/ - - GET" | squidGuard -c /usr/local/etc/squid/squidGuard.conf # http://host/ban.html 172.25.1.3/- - - # /usr/local/etc/rc.d/squid start # make && make install && make clean #./configure —prefix=/usr/local #make&&make install # файл хранения pid основного процесса icap-сервера PidFile /var/run/c-icap.pid # Параметр можно не указывать, но файл сокета управления # по умолчанию должен находиться именно здесь, его нужно # создать командой «touch /var/run/c-icap/c-icap.ctl» #CommandsSocket /var/run/c-icap/c-icap.ctl # Время в секундах, после которого неактивное соединение # закрывается Timeout 300 # Icap-сервер старается не закрывать соединение с клиентом, # ожидая новых запросов KeepAlive On # Максимальное число незакрываемых соединений в ожидании # новых запросов MaxKeepAliveRequests 100 # Максимальное время в секундах ожидания новых запросов KeepAliveTimeout 600 # Начальное число процессов сервера, каждый процесс # генерирует треды для обслуживания запросов StartServers 3 # Максимальное число процессов сервера MaxServers 30 # Если число запущенных тредов меньше указанного, # icap-сервер генерирует новые MinSpareThreads 10 # Если число тредов больше указанного, icap-сервер # убивает дочерние MaxSpareThreads 300 # Начальное число тредов для каждого дочернего процесса ThreadsPerChild 30 # Максимальное число запросов, которое может обслужить # дочерний процесс, как только оно достигнуто, процесс # умирает, 0 — отключает параметр MaxRequestsPerChild 0 # Порт, на котором принимает запросы icap-сервер Port 1344 # Учетная запись - владелец процессов icap-сервера User cicap # Группа владельцев процессов icap-сервера Group cicap TmpDir /var/tmp/c_icap # Максимальный объем памяти в байтах, занимаемый объектом, # обрабатываемым c-icap MaxMemObject 131072 # Лог-файлы ServerLog /var/log/c_icap/server.log AccessLog /var/log/c_icap/access.log # Каталог модулей c-icap ModulesDir /usr/local/lib/c_icap # Строка-префикс каждого сообщения в логах, # если используем syslog sys_logger.Prefix "C-ICAP:" # Метод ведения логов sys_logger.Facility local1 # Куда пишутся логи - либо в отдельный файл (наш случай), # либо в syslog: sys_logger Logger file_logger # Контроль доступа по acl - подобно acl в Squid: acl localproxy_respmod src 127.0.0.1 type respmod acl localproxy src 127.0.0.1 acl externalnet src 0.0.0.0/0.0.0.0 icap_access allow localproxy_respmod # Разрешаем только самому себе обращаться к icap-серверу icap_access allow localproxy icap_access deny externalnet # Расположение сервисов ServicesDir /usr/local/lib/c_icap # Сервис echo Service echo_module srv_echo.so # Сервис проверки URL Service url_check_module srv_url_check.so # Сервис проверки на вирусы Service antivirus_module srv_clamav.so # Алиас сервиса антивируса для указания в squid.conf # значения параметра icap_service ServiceAlias avscan srv_clamav?allow204=on&sizelimit=off&mode=simple # Список групп типов файлов для сканирования, поддерживаемые # типы указываются в файле /usr/local/etc/c-icap.magic, # о котором сказано ниже srv_clamav.ScanFileTypes TEXT DATA EXECUTABLE ARCHIVE GIF JPEG MSOFFICE # Какой процент данных будет отдаваться сервером icap # до выполнения проверки всех данных запроса srv_clamav.SendPercentData 5 # Если файл больше указанного размера, то включается # предыдущий параметр SendPercentData srv_clamav.StartSendPercentDataAfter 2M # Максимальный размер файлов, которые сканируются ClamAV srv_clamav.MaxObjectSize 5M # Максимальное количество файлов в архиве, используется # библиотекой ClamAV, 0 отключает параметр srv_clamav.ClamAvMaxFilesInArchive 0 # Максимальный размер архива srv_clamav.ClamAvMaxFileSizeInArchive 50M # Максимальный уровень рекурсии srv_clamav.ClamAvMaxRecLevel 5 # Следующие директивы описывают режим работы # viralator like, srv_clamav проверяет тип файла, и если # он указан в директиве srv_clamav.VirScanFileTypes — # загружает файл для проверки на вирусы и только потом # отдает его пользователю ссылкой на локальном веб-сервере # Место для скачиваемых файлов, на эту директорию должны # быть права у вашего локального веб-сервера srv_clamav.VirSaveDir /var/tmp/c_icap # Интервал в секундах между сообщениями о ходе закачки # файла для проверки srv_clamav.VirUpdateTime 15 # Тип файлов или группы типов файлов, для которых # используется предварительная закачка для проверки # на вирусы; типы указаны все в том же файле c-icap.magic srv_clamav.VirScanFileTypes ARCHIVE EXECUTABLE # Ссылка на локальном веб-сервере на закачанный файл, # отдаваемая пользователю после проверки файла на вирусы, # для этого используется скрипт get_file.pl, # расположенный в директории contrib дистрибутива c-icap srv_clamav.VirHTTPServer "http://localhost/cgi-bin/get_file.pl?usename=%f&remove=1&file=" 0:MZ:MSEXE:DOS/W32 executable/library/driver:EXECUTABLE 0:LZ:DOSEXE:MS-DOS executable:EXECUTABLE 0:\177ELF:ELF:ELF unix executable:EXECUTABLE 0:\312\376\272\276:JavaClass:Compiled Java class:EXECUTABLE . /etc/rc.subr name="c_icap" rcvar=`set_rcvar` command="/usr/local/bin/c-icap" pidfile="/var/run/c-icap.pid" required_dirs="/var/tmp/c_icap" required_files="/usr/local/etc/c-icap.conf" stop_postcmd="rm -f $pidfile" load_rc_config "$name" : ${c_icap_enable="NO"} : ${c_icap_flags=""} run_rc_command "$1" c_icap_enable="YES" squid_enable="YES" clamav_clamd_enable=«YES" clamav_freshclam_enable="YES" ----------------------------------------------------------------------------------------------------------------- IPython как инструмент системного администратора Сергей Супрунов # cd /usr/ports/devel/ipython # make install [amsand@pcbsd /usr/home/amsand]$ ipython In [18]: s = 'string' In [19]: s? In [31]: pwd In [32]: pwd = 12*3 In [33]: pwd In [34]: import s In [53]: !ps In [66]: 3**2 In [67]: Out[66]/3 In [66]: 3**2 In [67]: _/3 In [69]: ,open /etc/passwd r In [105]: %alias In [106]: !date In [107]: history 3 [/usr~]|3> dhist [/usr~]|4> cd -2 [usr~/.ipython]|9> bookmark lc /usr/local/etc [usr~/.ipython]|10> cd -b lc [usr~/itest]|29> def issimple(d): |..> for i in xrange(2,d): |..> if not d % i: return False |..> return True |..> [usr~/itest]|30> for i in [i for i in range(1,15) if issimple(i)]: |..> touch ${i}.txt |..> |..> [usr~/itest]|31> ls [/usr~]|1> curdir = !pwd [/usr~]|2> cd /var/log [var/log]|3> cnt = !grep 'su:' messages | wc -l [var/log]|4> print int(cnt[0]) [var/log]|5> cd $curdir[0] [/usr~]|6> macro sucnt 1-5 [usr~]|7> sucnt ----------------------------------------------------------------------------------------------------------------- Автоматическая загрузка объектов в PHP Антон Гришан ‘/home/web/html/classes/user.php’, ‘DBDriver’ => ‘/home/web/html/classes/DB/mysql.php’, ); // подключаем нужный файл include $files[$className]; } ?> getMessage(); } set_exception_handler('exception_handler'); function __autoload($className) { // Класс не существует, поэтому файл не может быть найден if((@include $className.'.php') === false) { throw new Exception('Error: can\'t find class '.$className); } } // Пытаемся создать объект не объявленного класса try { $obj = new AnyNonExistantClass(); } catch (Exception $e){ var_dump($e); } ?> ----------------------------------------------------------------------------------------------------------------- WIMP – Windows, IIS, MySQL, PHP Установка PHP-приложения ISS/Windows 2008 Server Кирилл Сухов C:\PHP>php start.php -----------------------------------------------------------------------------------------------------------------