2007/04/26

Перенос системы с одного диска на другой

1. Скопировать разметку диска с первого (рабочего) на второй (новый), если диски идентичные:
sfdisk -d /dev/hda | sfdisk /dev/hdb

если разные - вручную с помощью утилиты cfdisk разбить второй диск в соответствии с разметкой рабочего

cfdisk /dev/hdb

2. Отформатировать созданные разделы в желаемом формате

mkfs.ext3 /dev/hdb1
mkswap /dev/hda5

3. Перегрузиться в singleuser-режиме, смонтировать требуемые разделы и выполнить клонирование

mount /dev/hdb1 /mnt
cd /mnt
dump 0af - / | restore xf -
...
set owner/mode for '.'? [yn] y

4. Если необходимо, грузиться с нового диска, необходимо переписать mbr (используется grub загрузчик)

# grub
grub> device (hd0) /dev/hdb
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

Ссылки:

  1. Часто задаваемые вопросы по FreeBSD 4.X, 5.X и 6.X
  2. http://www.opennet.ru/base/sys/freebsd_dup.txt.html
  3. Boot with GRUB

2007/04/20

Clamav + Squid

Данное описание применимо к Debian 4.0 (Etch). Все сервисы, кроме squidclamav, установлены из доступных в репозитарии, пакетов. Перед началом необходимо убедиться в наличии и рабочем состоянии следующих сервисов (пакетов):
  • Squid (2.6.5)
  • Apache (1.3.34)
  • ClamAv (0.90.1)
  • libcurl3-dev (7.15.5)
  • libcurl3 (7.15.5)

Apache и ClamAv не требуют дополнительной настройки после установки через apt-get. Описание "Установка Debian-маршрутизатора с возможностями прозрачного proxy-сервера" содержит подборную установку и настройку Squid.

Связующим звеном между Squid и ClamAv является редиректор squidclamav (написан на С, на момент написания этих строк последней версией была версия 3.0). Существует еще один редиректор squidclamav, но он написан на python и мною не тестировался.

Перед тем, как остановить свой выбор на squidclamav, я рассмотрел еще 3 реализации антивирусной проверки на базе Squid + Clamav:

  • i-cap - так как хотелось использовать Squid из Debian репозитария, пришлось отбросить данный вариант, так как в дебиановской сборке отсутствует поддержка i-cap, и мне не удалось найти i-cap патча для ручной пересборки.
  • squidclam - очень сырой, так и не удалось добиться работоспособности
  • viralator - требует наличия squidGuard, но заставить работать мне его так и не удалось. Запрашиваемые файлы передаются на обработку этому скрипту, но он только показывает popup, а сам ничего не выполняет. Да и popup - для каждого скачиваемого файла - очень неудобно.
Лог действий:

1. Собрать из исходников данный редиректор
tar zxf squidclamav-x.x.tar.gz
cd squidclamav
./configure --prefix=/usr/local/squidclamav
make
make install

2. Отредактировать конфигурационный файл, взяв за основу идущий в дистрибутиве

cp squidclamav.conf.dist /etc/squidclamav.conf

Пример рабочего конфигурационного файла (проверяет все файлы c mime-type application и с расширениями .dll):

logfile /var/log/squid/squidclamav.log
redirect http://192.168.1.254/cgi-bin/clwarn.cgi
debug 0
force 1
stat 1
clamd_local /var/run/clamav/clamd.ctl
timeout 60
abort ^.*\.php$
abort ^.*\.gz$
abort ^.*\.bz2$
abort ^.*\.pdf$
abort ^.*\.js$
abort ^.*\.html$
abort ^.*\.css$
abort ^.*\.xml$
abort ^.*\.xsl$
abort ^.*\.js$
abort ^.*\.ico$
aborti ^.*\.gif$
aborti ^.*\.png$
aborti ^.*\.jpg$
aborti ^.*\.swf$
content ^.*application\/.*$
regexi ^.*\.dll$

3. Добавить описание редиректора в основной конфигурационный файл Squid'a - /etc/squid/squid.conf

redirect_program /usr/local/squidclamav/bin/squidclamav
redirect_children 15

4. Разместить в cgi-bin директории файл clwarn.cgi, на который будет пересылаться запрос в случае обнаружения вируса

cp clwarn.cgi /usr/lib/cgi-bin/clwarn.cgi

5. Перезапустить Squid, проверить в логах Squid'а запустились ли процессы squidclamav-редиректора. Если всё ок, попробовать скачать файл, содержащий вирус. Тестовые вирусы можно найти здесь.

Ссылки:

  1. Squidclamav
  2. eicar THE ANTI-VIRUS OR ANTI-MALWARE TEST FILE

2007/04/18

Установка Debian-маршрутизатора с возможностями прозрачного proxy-сервера

1. Установить Debian 4.0 (Etch). Описание тестировалось на netinstall-дистрибутиве, eth0 - локальная сеть 192.168.1.0/24, eth1 - внешний интерфейс. Данная версия Debian содержит Squid 2.6.5, а для этой версии несколько изменились настройки для прозрачного proxy.

2. Создать скрипт /etc/network/if-up.d/00-firewall следущего содержания:

#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

#
# удалить все действующие правила
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Всегда принимать трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT

# Разрешить соединения, которые инициированы изнутри (eth0)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешить доступ из LAN-сети к внешним сетям
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# Запретить forward извне во внутреннюю сеть
iptables -A FORWARD -i eth1 -o eth1 -j REJECT

# Включить forward
echo 1 > /proc/sys/net/ipv4/ip_forward

3. Установить proxy-сервис squid, перед этим удостоверившись, что в файле /etc/hosts указан fqdn-имя для данного сервера, иначе squid будет ругаться.

apt-get install squid

4. Поправить конфигурационный файл squid'а - /etc/squid/squid.conf

http_port 127.0.0.1:3128
http_port 192.168.1.254:3128 transparent
cache_mgr admin@example.com
acl office src 192.168.1.0/24

5. Добавить в /etc/network/if-up.d/00-firewall строки для того, чтобы была возможность использовать squid прозрачно (transparent)

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 3128

После этого перегрузить для чистоты эксперимента сервер и попробовать обратиться с внутренней сети к какому-нибудь внешнему сайту. Если всё хорошо, то сайт должен открыться как и прежде, а в логах squid (/var/log/squid/access.log) должны появиться соответствующие записи.

Ссылки:

  1. Setting up a simple Debian gateway
  2. Transparent proxies via Squid
  3. Accelerator Mode - Squid User's Guide

2007/04/17

Настройка разрешения по-умолчанию для терминала SunRay 2

По-умолчанию терминал SunRay 2 использует разрешение 1280х1024, что не всегда удобно, так как многие мониторы не поддерживают таких цифр. Решается проблема одной командой, для этого необходимо войти любым пользователем с данного терминала и в консоли набрать
/opt/SUNWut/bin/utxconfig -r 1024x768

Теперь на данном терминале будет установлено разрешение по-умолчанию 1024х768. Чтобы изменения вступили в силу, достаточно сделать Log Out.

Остается вопрос - где система сохраняет внесенные изменения?

2007/04/13

c:\mysql\share\charsets\?.conf' not found (Errcode: 2)

При использовании Windows + MySQL 4.1 (установлен в каталог c:\Program Files\MySQL) + PHP 4.x + Webserver (любой) при обработке php-скриптов наверняка столкнетесь с ошибкой
File 'c:\mysql\share\charsets\?.conf' not found (Errcode: 2)
Character set '#33' is not a compiled character set and is not specified in the 'c:\mysql\share\charsets\Index' filee

Появляется она из-за того, что PHP 4 имеет встроенную поддержку MySQL версии только 3.23.49 (а используется 4.1.x). Используемая старая версия не имела Index-файлов для кодировки UTF-8.

Решение:

В my.cnf вместо default-character-set=utf-8 указать default-character-set=latin1

2007/04/12

Экспорт/импорт DNS-службы в Windows 2000/2003

Dumpdns - отличный скрипт [16Kb], помогающий выполнить экспорт/импорт существующего DNS-сервиса (всей конфигурации, всех существующих зон, даже тех, что Active Directory-Integrated), функционирующего в Windows 2000/2003. Отлично помогает при переносе сервера на другое железо.
SYNTAX - DNSdump [IMPORT|EXPORT] [data directory] [optional install root]

* [IMPORT] imports a previously dumped DNS service configuration
* [EXPORT] exports the current DNS service configuration
* [data directory] is a local, writable directory path
* [install root] is the local absolute path used by the DNS service

* DNSdump requires -
- administrative permission
- local execution on the DNS server
- Windows 2000 or an uplevel operating system

* DNSdump provides import and export of -
- DNS service configuration
- Active Directory integrated zones
- standard zone files

* IMPORTANT NOTES -
- existing Active Directory zone content will NOT be overwritten during IMPORT
- DNS service and zone configuration WILL be overwritten during IMPORT
- zone files WILL be overwritten during IMPORT
- registry keys are purged prior to IMPORT

DNSdump - Ready to proceed, configuration as follows -

* Security context is "JSIINC\Jerry"
* Active Directory distinguished name is "DC=JSIINC,DC=COM"
* Mode of operation is "EXPORT"
* DNS installation root is "C:\WINDOWS\System32\DNS"
* Data directory is "d:\dnsdump"

STATUS - Processing the following tasks ...

- exporting registry keys
- backing up DNS files from "C:\WINDOWS\System32\DNS"
- exporting Active Directory integrated Zones
- preparing exported data for future import

2007/04/04

log4j.properties

Пример использования mysql-аппендера для сбора логов в базу
log4j.logger.edu.internet2.middleware.shibboleth=INFO,idp
log4j.appender.idp=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.idp.driver=com.mysql.jdbc.Driver
log4j.appender.idp.URL=jdbc:mysql://192.168.1.1:3306/log_db?autoReconnect=true
log4j.appender.idp.user=log_user
log4j.appender.idp.password=log_pass
log4j.appender.idp.sql=INSERT INTO logging_event (time, level, class, message) VALUES ('%d', '%p', '%c', '%m')
log4j.appender.idp.layout=org.apache.log4j.PatternLayout

Ссылки:

  1. Гибкое журналирование с помощью log4j
  2. Short introduction to log4j