четверг, 31 января 2008 г.

SSH как SOCKS-сервер

Спасибо Коле Колдунову, афтару статьи «SSH и сёрфинг». Без него никогда бы не нашел эту опцию в man :(
Так, о чем я?

-D [bind_address:]port

Опция, по сути, превращает ssh в SOCKS-сервер. Все входящие соединения на прослушиваемый порт будут перенаправлены по защищенному каналу удаленной машине и далее запросы будут исходить от неё. По умолчанию порт открывается на интерфейсе lo0. Но при желании можно назначить порту другой имеющийся в наличии локальный интерфейс. В настоящий момент поддерживаются протоколы версий 4 и 5.

Пример команды: ssh -D 7070 login@remote.host.ru

Очень полезная опция. :)

среда, 23 января 2008 г.

Логотип для Firefox :)



<delph> http://www.woueb.net/images/dossiers/firefox/logo-firefox.jpg
<zeka> yes
<zeka> =))
<zeka> лису нафиг грудь оставьте
<delph> это не лиса, котенок
<delph> бедолаго
<zeka> ну дык firefox
<zeka> же
<zeka> лиса тобиш
<kosta> переименовать в firecat

вторник, 22 января 2008 г.

«Хитрое» зеркалирование репозиториев на freebsd

Недавно натолкнулся на статью, описывающую создание зеркала репозитория дистрибутива N, способного загружать с основного репозитория только запрашиваемые пользователями файлы. Но, поскольку все это действие предлагалось проводить с linux + fuse + че-то-там-еще, статья не вызвала особого энтузиазма.
Но что-то подобное хотелось иметь и для freebsd. В итоге родилась идея «хитрого» зеркалирования репозитория убунту. Для этого требуется: apache2.0 (mod_cache + mod_proxy + mod_rewrite) и perl.

1. Настройка apache 2.0
1.1. Сперва требуется включить проксирование (mod_proxy) в apache20. Если вы ставите apache2.0 из портов

# cd /usr/ports/www/apache20
# make WITH_PROXY_MODULES=yes all install clean

или в /etc/make.conf добавить
.if ${.CURDIR} == ${PORTSDIR}/www/apache20
WITH_PROXY_MODULES = yes
.endif

и затем
# cd /usr/ports/www/apache20
# make all install clean
1.2. Изменения в файле конфигурации apache2/httpd.conf
# Включаем необходимые модули
LoadModule cache_module modules/mod_cache.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
# Создаем виртуальный хост
<VirtualHost *:80>
ServerAdmin webmaster@ubuntu.local
DocumentRoot /www/ubuntu.local
ServerName ubuntu.local
ServerAlias ubuntu.our-office.com
ErrorLog /var/log/apache2/ubuntu.local-error_log
CustomLog /var/log/apache2/ubuntu.local-access_log common
<Directory "/www/ubuntu.local/">
Options FollowSymLinks
Order Deny,Allow
Allow from All
</Directory>

<Directory "/www/ubuntu.local/ubuntu/">
Options Indexes FollowSymLinks
Order Deny,Allow
Allow from All
</Directory>

<LocationMatch "^[^/]+">
Deny from all
</LocationMatch>

# Включаем mod_rewrite
RewriteEngine On
# Ставим уровень детализации логов.
# Настоятельно не рекомендуется ставить больше 2, разве что для отладки.
# По умолчанию в лог не пишется (0).
RewriteLogLevel 1
# Пишем в лог.
RewriteLog "/var/log/apache2/ubuntu.local-rewrite.log"

# Проверяем существование запрашиваемого файла в локальном репозитории
RewriteCond %{SCRIPT_FILENAME} !-f
# Не нашли? Идем с поклоном к вышестоящему репозиторию
RewriteRule ^/ubuntu/pool/(.*)$ http://mirror.ubuntu.optilink.ru/ubuntu/pool/$1 [P,L]

# Настраиваем кеширование (mod_cache)
# Кешируем только .deb файлы.
CacheEnable disk /ubuntu/pool/
# Указываем размещение кеша.
CacheRoot /var/ubuntu.mirror/
# Размер кеша 5 гигов, с копейками (в килобайтах).
CacheSize 5120000
CacheDirLevels 2
CacheDirLength 3
# Задаем максимальное время кеширования файлов (в секундах).
CacheMaxExpire 86400

# Вырубаем левые прокси-запросы
ProxyRequests Off
# Наш местный репозиторий
ProxyPassReverse /ubuntu/pool/ http://mirror.ubuntu.optilink.ru/ubuntu/pool/
# Apache стоит внутри jail и внешний интернет ему доступен только через прокси-сервер.
ProxyRemote * http://127.0.0.2:3128

<Proxy *>
Order Deny,Allow
Deny from all
# Разрешаем запросы только с локальной сети
Allow from 192.168.0.0/24
</Proxy>
</VirtualHost>
1.3. Создаем директории /www/ubuntu.local/ubuntu и /var/ubuntu.mirror. В /www/ubuntu.local/ubuntu/ будет располагаться зеркало репозитория; в /var/ubuntu.mirror - кеш mod_proxy. Владельцем созданных директорий назначаем пользователя, под которым работает веб-сервер (обычно это www) и разрешаем ему писать.

1.4. В /www/ubuntu.local/ubuntu/ создаем dists и pool. В dists из основного репозитория заливаем файлы описаний
# sudo -u www /usr/bin/env http_proxy="127.0.0.2:3128" /usr/local/bin/wget -nH -R 'index.html*' --cut-dirs=2 -r -P/www/ubuntu.local/ubuntu/dists --no-parent http://mirror.ubuntu.optilink.ru/ubuntu/dists/
1.5. Теперь пишем скрипт на перле, копирующий кешированные файлы в зеркало репозитория. За качество кода сильно не бить :) Скрипт сохраним как /usr/local/script/move-from-cache.pl
#!/usr/bin/perl -w

use strict;

# Потрошим файл описания кешированного в mod_proxy объекта.
sub extract_name {
my $data = shift;

# iiIIqqqq
# i1 i1 I1 I1 q1 q1 q1 q1
my ($format,$status,$name_len,
$entity_version,$date,$expire,
$request_time,$response_time, $ext) = unpack('i1i1I1I1q1q1q1q1a*', $data);
my ($name) = unpack ("a$name_len", $ext);

$name =~ s/[?]?$//;
return $name;
}
# Приведенный ниже код подпрограммы взят отсюда.
# Accepts one argument: the full path to a directory.
# Returns: nothing.
sub process_files {
my $path = shift;

# Open the directory.
opendir (DIR, $path) or die "Unable to open $path: $!";

# Read in the files.
# You will not generally want to process the '.' and '..' files,
# so we will use grep() to take them out.
# See any basic Unix filesystem tutorial for an explanation of the +m.
my @files = grep { !/^\.{1,2}$/ } readdir (DIR);

# Close the directory.
closedir (DIR);

# At this point you will have a list of filenames
# without full paths ('filename' rather than
# '/home/count0/filename', for example)
# You will probably have a much easier time if you make
# sure all of these files include the full path,
# so here we will use map() to tack it on.
# (note that this could also be chained with the grep
# mentioned above, during the readdir() ).
@files = map { $path . '/' . $_ } @files;

my @value = ();

for (@files) {

# If the file is a directory
if (-d $_) {
# Here is where we recurse.
# This makes a new call to process_files()
# using a new directory we just found.
push @value, process_files ($_);

# If it isn't a directory, lets just do some
# processing on it.
} else {
# Do whatever you want here =)
# A common example might be to rename the file.
push @value, $_;
}
}
return @value;
}

# Дальше мое сочинение
# С командной строки передаются два параметра:
# Путь к кешу mod_proxy
my $ubuntu_cache = $ARGV[0] if defined $ARGV[0];
# Префикс директории локального репозитория
my $mirror_prefix = $ARGV[1] if defined $ARGV[1];

unless (defined($ubuntu_cache) && defined($mirror_prefix)) {
print "Usage: ./script.pl /path/to/ubuntu/cache /path/mirror/prefix\n\n";
exit;
}

# Формируем список файлов в кеше.
my @files = process_files ($ubuntu_cache);

foreach my $filename (@files)
{
my $file;
my $data = '';
# Если это файл описания, потрошим
if ($filename =~ /^(.*?)\.header$/) {
my $cache_file = $1 . '.data';
open $file, "<${filename}" or die "Error. Can't open file.";
while (!eof($file)) {
my $buf;
$data .= $buf if read ($file, $buf, 4096);
}
close $file;
my @path = split('/', extract_name ($data));
shift (@path);
my $name = join ('/', @path);

my $new_file = $mirror_prefix . '/' . $name;
# Если кешированный файл отсутствует в репозитории, то копируем его
unless (-e $new_file) {
print "$name\n";
my @m_path = split ('/', $new_file);
pop (@m_path);

my $a = '/';
# Проверяем и создаем отсутствующие директории
foreach my $i (@m_path) {
$a .= $i . '/';
mkdir $a unless -e $a;
}
# Копируем кешированный файл куда надо.
system ("/bin/cp $cache_file $new_file");
}
}
}

# Формат файла описания кешированных объектов в mod_proxy.
=pod
/* Our on-disk header format is:
*
* disk_cache_info_t
* entity name (dobj->name) [length is in disk_cache_info_t->name_len]
* r->headers_out (delimited by CRLF)
* CRLF
* r->headers_in (delimited by CRLF)
* CRLF
*/
#define DISK_FORMAT_VERSION 0
typedef struct {
/* Indicates the format of the header struct stored on-disk. */
int format;
/* The HTTP status code returned for this response. */
int status;
/* The size of the entity name that follows. */
apr_size_t name_len;
/* The number of times we've cached this entity. */
apr_size_t entity_version;
/* Miscellaneous time values. */
apr_time_t date;
apr_time_t expire;
apr_time_t request_time;
apr_time_t response_time;
} disk_cache_info_t;
=cut
2. Настраиваем cron
$ sudo crontab -u www -e
# Запускается каждый час
0 * * * * /usr/local/script/move-from-cache.pl /var/ubuntu.mirror/ /www/ubuntu.local/
# Обновление файлов описаний.
# Запускается один раз в день
1 3 * * * /usr/bin/env http_proxy="127.0.0.2:3128" /usr/local/bin/wget -R 'index.html*' -nH --cut-dirs=2 -r -N -P/www/ubuntu.local/ubuntu/dists --no-parent http://mirror.ubuntu.optilink.ru/ubuntu/dists/


3. Вот собственно и все. Не забываем ребутнуть веб-сервер.

суббота, 19 января 2008 г.

Анонс FreeBSD 6.3-RELEASE

Анонсирован выход FreeBSD 6.3-RELEASE. Можно отметить следующие новшества:

  • Из OpenBSD/NetBSD портирован драйвер для объединения каналов в виртуальный сетевой интерфейс с возможностью обеспечения бесперебойной работы - lagg;
  • В утилите обновления freebsd-update появилась поддержка команды "upgrade", для бинарного обновления системы до нового релиза;
  • В PCI подсистему ядра добавлена поддержка Message Signaled Interrupts (MSI) и Extended Message Signaled Interrupts (MSI-X);
  • Новая реализация файловой системы unionfs;
  • Драйверы:
    • coretemp - мониторинг температуры процессоров семейства Intel Core;
    • Драйверы мультимедиа устройств: snd_envy24 (чип Envy24), snd_envy24ht (чипы серии VIA Envy24HT), snd_hda (поддержка Intel High Definition Audio), snd_spicds (аудио кодек I2S SPI);
    • В сетевых драйверах axe, vge появилась поддержка altq; Сетевые устройства: cxgb (10 Gigabit Ethernet на базе чипсетов Chelsio T3 и T3B); msk (Marvell/SysKonnect Yukon II Gigabit Ethernet); mxge (Myricom Myri10GE 10 Gigabit Ethernet);
    • Сетевой драйвер em синхронизирован с версией драйвера 6.7.2 от Intel;
    • В беспроводном 802.11 стеке протоколов появилась поддержка 900 MHz карт и половинной (15dBm) и четвертной (12dBm) выходной мощности каналов каналов для 802.11a;
    • В mpt драйвере появился ряд новых возможностей связанных с поддержкой RAID (опрос статуса, просмотр настроек, просмотр состояния ресинхронизации, ряд sysctl для управления и т.д.);
    • В драйвере mpt появилась частичная поддержка SAS HBA, 64-bit PCI, режима передачи больших порций данных;
    • Драйвер twa обновлен до версии 3.60.03.006 с сайта 3ware. Появилась поддержка AMCC 3ware 9650 серии SATA контроллеров;
    • Новый драйвер scsi_sg, который эмулирует большую часть Linux SCSI SG и позволяет запускать программы, использующее данное API, в Linux эмуляторе посредством /dev/sg*;
  • Протоколы
    • В if_bridge появилась поддержка RSTP (Rapid Spanning Tree Protocol, 802.1w);
    • Новый NetGraph узел ng_deflate с поддержкой Deflate сжатия для PPP;
    • Новый NetGraph узел ng_pred1 c поддержкой Predictor-1 сжатия для PPP;
    • ng_ppp переведен в разряд MPSAFE;
    • Исправлена ошибка FreeBSD 6.2 мешающая корректной работе IPv6 поверх gif туннелей;
  • В ftpd добавлена поддержка RFC2389 (FEAT) и RFC2640 (UTF8, включается через опцию -8);
  • Новая утилита ipfwpcap для захвата пакетов через divert сокет и сохранения их в формате pcap;
  • В команде top при помощи флага -j теперь можно увидеть идентификатор jail окружения в котором выполняется процесс;
  • Новые версии программ в базовой системе BIND 9.3.4, sendmail 8.14.2;
  • Обновлены порты KDE 3.5.8, GNOME 2.20.1, Xorg 7.3.
Источник: www.opennet.ru

среда, 16 января 2008 г.

Интеграция VPN-сервера mpd4 с доменом на базе Samba 3 при посредничестве freeradius

Последовательность действий:

  1. Пропатчить исходники и собрать новое ядро FreeBSD.
  2. Установить и настроить в отдельной клетке (jail) samba как члена домена.
  3. Установить в той же клетке freeradius и настроить на взаимодействие с локальным samba.
  4. Установить в основной системе mpd4 и настроить авторизацию посредством ранее установленного freeradius.
  5. Проверка работоспособности.
  6. Бонус.

1. Сборка ядра FreeBSD.
1.1. В моем случае ядро было собрано с приведенными ниже опциями
options         NETGRAPH
options NETGRAPH_ETHER
options NETGRAPH_NETFLOW
options NETGRAPH_SOCKET
options NETGRAPH_TEE
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_MPPC_COMPRESSION
options NETGRAPH_BPF
options NETGRAPH_IFACE
options NETGRAPH_KSOCKET
options NETGRAPH_PPP
options NETGRAPH_PPTPGRE
options NETGRAPH_TCPMSS
options NETGRAPH_VJC
options NETGRAPH_ONE2MANY
options NETGRAPH_RFC1490
options NETGRAPH_TTY
options NETGRAPH_UI

1.2. Перед сборкой ядро следует пропатчить, чтобы задействовать сжатие данных (опция NETGRAPH_MPPC_COMPRESSION).
Патч без проблем ложится на исходники ядра версий 6.x и 7.0-RC3 (патч лежит тут: http://www.mavhome.dp.ua/MPPC/).
Краткая инструкция по сборке:
1.2.1. Скачать архив и распаковать его содержимое в /usr/src/sys/net.
1.2.2. Изменить директорию на /usr/src/sys/modules/netgraph/mppc.
1.2.3. В Makefile изменить линию
    NETGRAPH_MPPC_COMPRESSION?=     0

на
    NETGRAPH_MPPC_COMPRESSION?=     1

1.2.4. Перейти в директорию /usr/src и запустить компиляцию ядра
# make kernel KERNCONF=YOUR-KERNEL

1.2.5. После успешной компиляции и установки перезагрузить систему
# shutdown -r now

2. Установка Samba 3 (на момент установки версия: samba-3.0.26a_1,1).
2.2. Создаем отдельную клетку и устанавливаем туда Samba 3 из портов.
2.3. Конфигурационный файл smb.conf
[global]
dos charset = cp866
unix charset = koi8-r
display charset = koi8-r
workgroup = CMYK
server string = Samba Server
interfaces = SELF-INTERFACE-IP/24
bind interfaces only = Yes
security = DOMAIN
auth methods = winbind
password server = PDC-SERVER-NAME
log file = /var/log/samba/log.%m
max log size = 50000
load printers = No
show add printer wizard = No
dns proxy = No
wins proxy = Yes
wins server = PDC-SERVER-IP
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
winbind refresh tickets = Yes
hosts allow = 192.168.0.
case sensitive = No
hide unreadable = Yes

2.4. Редактируем файл /etc/nsswitch.conf
passwd: files winbind
group: files winbind

2.5. Вводим samba в домен.
# net rpc join -S PDC-SERVER-NAME -I PDC-SERVER-IP -U Administrator%password

2.6. В файл /etc/rc.conf добавляем: winbindd_enable="YES"

3. Устанавливаем freeradius из портов (версия: freeradius-1.1.7_2).
3.1. Настраиваем freeradius. В /usr/local/etc/raddb редактируем конфиги:
3.1.1. radiusd.conf
prefix = /usr/local
exec_prefix = ${prefix}
sysconfdir = ${prefix}/etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log
raddbdir = ${sysconfdir}/raddb
radacctdir = ${logdir}/radacct
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/radiusd
log_file = ${logdir}/radius.log
libdir = ${exec_prefix}/lib
pidfile = ${run_dir}/radiusd.pid
# user = nobody
# group = nobody
max_request_time = 30
delete_blocked_requests = no
cleanup_delay = 5
max_requests = 1024

listen {
ipaddr = SELF-INTERFACE-IP
port = 0
type = auth
}

hostname_lookups = no
allow_core_dumps = no
regular_expressions = yes
extended_expressions = yes
log_stripped_names = no
log_auth = yes
log_auth_badpass = yes
log_auth_goodpass = yes
usercollide = no
lower_user = no
lower_pass = no
nospace_user = no
nospace_pass = no
checkrad = ${sbindir}/checkrad

security {
max_attributes = 200
reject_delay = 1
status_server = no
}

proxy_requests = no
$INCLUDE ${confdir}/clients.conf
snmp = no
$INCLUDE ${confdir}/snmp.conf

thread pool {
start_servers = 5
max_servers = 32
min_spare_servers = 3
max_spare_servers = 10
max_requests_per_server = 0
}

modules {
pap {
encryption_scheme = crypt
}

chap {
authtype = CHAP
}

pam {
pam_auth = radiusd
}

unix {
cache = no
cache_reload = 600
radwtmp = ${logdir}/radwtmp
}

$INCLUDE ${confdir}/eap.conf

mschap {
authtype = MS-CHAP
use_mppe = yes
require_encryption = yes
require_strong = yes
with_ntdomain_hack = yes
# Так как требовалось предоставлять доступ
# только отдельным пользователям домена, я
# создал группу "Remote Access Users" и ука-
# зал SID созданной группы в параметре
# --require-membership-of=SID-or-Name
ntlm_auth = "/usr/local/bin/ntlm_auth --require-membership-of=S-1-5-21-952150225-1155300134-1448941184-21001 --request-nt-key --username=%{Stripped-User-Name:-%{User-Name:-None}} --challenge=%{mschap:Challenge:-00} --nt-response=%{mschap:NT-Response:-00}"
}

preprocess {
huntgroups = ${confdir}/huntgroups
hints = ${confdir}/hints
with_ascend_hack = no
ascend_channels_per_line = 23
with_ntdomain_hack = no
with_specialix_jetstream_hack = no
with_cisco_vsa_hack = no
}

files {
usersfile = ${confdir}/users
acctusersfile = ${confdir}/acct_users
preproxy_usersfile = ${confdir}/preproxy_users
compat = no
}

detail {
detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d
detailperm = 0600
}

detail auth_log {
detailfile = ${radacctdir}/%{Client-IP-Address}/auth-detail-%Y%m%d
detailperm = 0600
}

detail reply_log {
detailfile = ${radacctdir}/%{Client-IP-Address}/reply-detail-%Y%m%d
detailperm = 0600
}

detail pre_proxy_log {
detailfile = ${radacctdir}/%{Client-IP-Address}/pre-proxy-detail-%Y%m%d
detailperm = 0600
}

detail post_proxy_log {
detailfile = ${radacctdir}/%{Client-IP-Address}/post-proxy-detail-%Y%m%d
detailperm = 0600
}

acct_unique {
key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port"
}

# $INCLUDE ${confdir}/sql.conf

radutmp {
filename = ${logdir}/radutmp
username = %{User-Name}
case_sensitive = yes
check_with_nas = yes
perm = 0600
callerid = "yes"
}

radutmp sradutmp {
filename = ${logdir}/sradutmp
perm = 0644
callerid = "no"
}

attr_filter {
attrsfile = ${confdir}/attrs
}

counter daily {
filename = ${raddbdir}/db.daily
key = User-Name
count-attribute = Acct-Session-Time
reset = daily
counter-name = Daily-Session-Time
check-name = Max-Daily-Session
allowed-servicetype = Framed-User
cache-size = 5000
}

always fail {
rcode = fail
}

always reject {
rcode = reject
}

always ok {
rcode = ok
simulcount = 0
mpp = no
}

expr {
}

digest {
}

exec {
wait = yes
input_pairs = request
}

ippool main_pool {
# указанные ниже параметры фиктивны, т.к. выдаваемые
# IP адреса прописаны в настройках mpd4
range-start = 192.168.1.230
range-stop = 192.168.1.250
netmask = 255.255.255.0

cache-size = 800
session-db = ${raddbdir}/db.ippool
ip-index = ${raddbdir}/db.ipindex
override = no
maximum-timeout = 0
}
}

instantiate {
}

authorize {
preprocess
auth_log
attr_filter
mschap
eap
}

authenticate {
Auth-Type PAP {
pap
}

Auth-Type CHAP {
chap
}

Auth-Type MS-CHAP {
mschap
}
pam
eap
}

preacct {
preprocess
acct_unique
files
}

accounting {
detail
main_pool
}

session {
radutmp
}

post-auth {
main_pool
reply_log
}

pre-proxy {
}

post-proxy {
eap
}

3.1.2. clients.conf
client SELF-INTERFACE-IP {
secret = password-change-me
shortname = localhost
nastype = other
}

3.1.3. users
# Добавить в конец файла
DEFAULT Auth-Type := MS-CHAP
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 192.168.0.161+,
Framed-IP-Netmask = 255.255.255.255

3.1.4. acct_users
DEFAULT
Service-Type == Framed-User,
Service-Type == Login-User,
Login-Service == Telnet,
Login-Service == Rlogin,
Login-Service == TCP-Clear,
Login-TCP-Port <= 65536,
Framed-IP-Address == 255.255.255.254,
Framed-IP-Netmask == 255.255.255.255,
Framed-Protocol == PPP,
Framed-Protocol == SLIP,
Framed-Compression == Van-Jacobson-TCP-IP,
Framed-MTU >= 576,
Framed-Filter-ID =* ANY,
Reply-Message =* ANY,
Proxy-State =* ANY,
Session-Timeout <= 28800,
Idle-Timeout <= 600,
Port-Limit <= 2

3.1.5. naslist
localhost               local           portslave
SELF-INTERFACE-IP local portslave

Остальные файлы остаются без изменений.

3.2. В /etc/rc.conf прописать
radiusd_enable="YES"

4. Настройка mpd4 (версия: mpd-4.4)
4.1. В основной системе из портов устанавливаем mpd4.
4.2. Правим mpd.conf
default:
load pptp0
load pptp1
load pptp2

pptp0:
new -i ng0 pptp0 pptp0
set ipcp ranges GW-IP-ADDR/32 NG0-IP-ADDR/32
load pptp_standart

pptp1:
new -i ng1 pptp1 pptp1
set ipcp ranges GW-IP-ADDR/32 NG1-IP-ADDR/32
load pptp_standart

pptp2:
new -i ng2 pptp2 pptp2
set ipcp ranges GW-IP-ADDR/32 NG2-IP-ADDR/32
load pptp_standart

pptp_standart:
set iface disable on-demand
set bundle enable multilink
set bundle yes crypt-reqd
set bundle enable compression
set link yes acfcomp protocomp
set link no pap chap
set link enable chap
set link keep-alive 60 180
set ipcp yes vjcomp
set ipcp dns DNS-IP
set ipcp nbns PDC-SERVER-IP
set iface enable proxy-arp
set ccp yes mppc
set ccp yes mpp-e40
set ccp yes mpp-e56
set ccp yes mpp-e128
set ccp yes mpp-stateless
set ccp yes mppe-policy
set pptp self 0.0.0.0
set pptp enable incoming
set pptp disable originate
set pptp enable always-ack
set pptp disable windowing

set iface mtu 1460
set link mtu 1460

set radius server FREERADIUS-JAIL-IP password-change-me 1812 1813
set radius timeout 10
set radius retries 3
set auth enable radius-auth

4.3. mpd.links
pptp0:
set link type pptp
pptp1:
set link type pptp
pptp2:
set link type pptp

4.4. Создаем пустой файл mpd.secret
# touch mpd.secret

4.5. В /etc/rc.conf основной системы вписываем
mpd_enable="YES"

5. Проверка работы.
5.1. Запускаем в клетке:
# /usr/local/etc/rc.d/samba start
# /usr/local/etc/rc.d/radiusd start
5.2. Запускаем mpd4 в основной системе:
# /usr/local/etc/rc.d/mpd4 start

5.3. Пробуем соединиться с впн-сервером.
5.4. Для выявления проблем с mpd4 требуется запустить mpd4 без параметров
# mpd4

5.5. freeradius ведет лог в файле /var/log/radius.log. Так же его можно запустить с отладочном режиме
# radiusd -A -X


6. С виндовых клиентов (с Windows XP например), после соединения с сервером VPN, можно шариться в рабочих компьютерах домена. Для этого требуется назначить домен рабочей группой компьютера и указать его на форме соединения как домен входа.

вторник, 15 января 2008 г.

Уязвимости во FreeBSD

FreeBSD-SA-08:02.libc - переполнение буфера в реализации функции inet_network в системной библиотеке FreeBSD 6.2 и более поздних экспериментальных версий. Злоумышленник, при отсутствии проверки валидности пользовательского ввода в атакуемом приложении, который используется как параметр функции inet_network(), может вызвать отказ в обслуживании или выполнить свой код через такую программу (проблема больше теоретическая, маловероятно, что найдётся сетевое приложение подставляющие непроверенные пользовательские параметры в функцию inet_network()).
FreeBSD-SA-08:01.pty - начиная с FreeBSD 5.0 в libc_stdlib / libutil присутствует уязвимость в коде изменения прав доступа к pty устройству, которую атакующий может использовать для просмотра текста вводимого пользователем в терминале, если пользователь использует при этом программу script.

Источник: www.opennet.ru

пятница, 11 января 2008 г.

Новый опрос на блоге

Чьи интересы, по вашему мнению, защищает новый закон РФ об авторском праве?

четверг, 10 января 2008 г.

На улице -45 по Цельсию

dmesg:

acpi_tz0: _TMP value is absurd, ignored (-6.0C)
acpi_tz0: _TMP value is absurd, ignored (-6.0C)
acpi_tz0: _TMP value is absurd, ignored (-7.0C)
acpi_tz0: _TMP value is absurd, ignored (-7.0C)
acpi_tz0: _TMP value is absurd, ignored (-6.0C)
acpi_tz0: _TMP value is absurd, ignored (-7.0C)
acpi_tz0: _TMP value is absurd, ignored (-7.0C)

Ядро FreeBSD 7.0 в шоке от якутских холодов.

Пара интересных утилит

В просторах Интернета наткнулся на сайт gpl.internetconnection.net с интересными утилитами, распространяемыми по лицензии GPL. Среди них мне приглянулись две утилиты: mtftar и samdump.

  • mtftar преобразовывает созданные Windows Backup файлы в архивы tar. Заявлена поддержка режимов: Incremental, Differential, Copy, Normal - но предупреждается, что если все свалено в одну кучу (то есть если в одном файле записаны архивы в разных режимах), то может и не распознать.
  • samdump конвертирует стандартные учетные записи пользователей из копии регистра Windows версий NT и 2k (привет mtftar) в формат smbpasswd.

среда, 9 января 2008 г.

Смена root-пароля в MySQL

Сменить утерянный пароль достаточно просто и требуется проделать следующие шаги:
1. Остановить mysql-сервер

# /usr/local/etc/rc.d/mysql-server stop
2. Запустить mysqld с опцией --skip-grant-tables
# mysqld_safe --skip-grant-tables &
3. Соединиться с mysql-сервером
# mysql -u root
4. Установить пароль root
mysql> use mysql;
mysql> update user set password=PASSWORD('root_password') where user='root' and host='localhost';
mysql> flush privileges;
mysql> quit
5. Остановить сервер
# killall mysqld_safe
6. Запустить сервер и проверить новый пароль.

вторник, 8 января 2008 г.

Squid 2.6 может слушать на нескольких портах

Достаточно в squid.conf прописать несколько раз параметр http_port с нужными значениями:

# Например:
# Сюда форвардятся запросы пользователей из локальной сети
http_port 127.0.0.1:3128 transparent
# Через этот порт ходят программы из jail'ов
# т.к. не могут соединиться на порт 3128 по адресу 127.0.0.1
# (FreeBSD 7.0)
http_port 127.0.0.3:3128

В логах Squid пишет что-то вроде этого:
2008/01/08 20:15:47| Accepting transparently proxied HTTP connections at 127.0.0.1, port 3128, FD 13.
2008/01/08 20:15:47| Accepting proxy HTTP connections at 127.0.0.3, port 3128, FD 15.

вторник, 1 января 2008 г.

Интернет-магазин опенсурцного ПО

Наткнулся на сайт интернет-магазина «Antarctica», где я нашел очень мне нужный срез Gentoo Distfiles. В скором времени обещают делать подобные срезы и для FreeBSD distfiles.
Особенно понравилась идея «Качалки» - заказ свободного ПО, отсутствующего в ассортименте. Если, например, самому качать очень дорого (безлимитные тарифы есть не везде), то его можно заказать магазину и нужное вам ПО будет выслано по почте.