Запускаем сценарий загрузки от имени администратора
Иван Коробко
Листинг. 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
-----------------------------------------------------------------------------------------------------------------