Архив рубрики: freebsd 7

Возвращаемся к резервному копированию. Rsync,DD

dd – служит для дублирования томов, а также для копирования их в файлы. dd требует наличия входного файла if, который может быть файлом любого типа, в том числе и блочным устройством, и выходного файла of.

Продолжение под катом

Читать далее

squid ntlm доступ к кешу запрещен

Ох, долго мучался с выскакивающим в произвольное время окном авторизации на сквиде…

libsmb/ntlmssp.c:342(ntlmssp_update)
got NTLMSSP command 1, expected 3

Читать далее

Передача файлов средствами ssh

Для файла
tar zcf - ~/coding | ssh remotehost 'cat > coding.tgz'

Для каталога с локального хоста на удаленный
tar cf - source | ssh remotehost "(cd /target; tar xpf -)"

с удаленного хоста на локальный
ssh remotehost "tar cf - source" | (cd /target; tar xpf -)



Серьезная уязвимость во всех версиях FreeBSD

В FreeBSD 6.x, 7.x, 8.x, 9.x обнаружена серьезная уязвимость, эксплуатирующая особенности реализации локальных UNIX-сокетов.

Уязвимость позволяет локальному пользователю системы получить права root, а также выйти из jail.

Проблема весьма актуальна для хостеров, работающих на FreeBSD и дающих пользователям ssh-доступ.

Для решения проблемы необходима установка последних обновлений или же установка патча и последующая пересборка ядра.

http://security.freebsd.org/advisories/FreeBSD-SA-11:05.unix.asc
http://www.opennet.ru/opennews/art.shtml?num=31887

Централизованный сбор логов с нескольких серверов SQUID

Задача:
Реализовать сбор почты с нескольких серверов squid и обработку lightsquid-ом в головном офисе.

Поехали.
Обработчик на филиале,запускается в 00:00 по крону

cat updater.pl
#!/usr/bin/perl

system («bzip2 -fk -9 /usr/local/squid/logs/access.log > /access.log.bz2»);

use Net::FTP;
$ftp = Net::FTP->new(«ftp.mycompanyserver.ru», Timeout => 30, Debug => 0) || die «Can’t connect to ftp server.n»;
$ftp->login(«squid», «passnasquid») || die «Can’t login to ftp server.n»;
$ftp->cwd(«filial1») || die «Path $cfg_remote_path not found on ftp server.n»;
$ftp->binary();
#$ftp->rename(«old»,»new»);

#iz filiala v golovnoy

$ftp->put(«/usr/local/squid/logs/access.log.bz2», «access.log.bz2»);

#Sinhronizacia iz golovnogo ofisa v filial

$ftp->get(«squid.conf», «/usr/local/etc/squid/squid.conf»);
$ftp->get(«blocked.txt», «/usr/local/etc/squid/blocked.txt»);
$ftp->get(«internet_users», «/usr/local/etc/squid/internet_users»);

$ftp->quit();
system(«/usr/local/sbin/squid -k rotate»);

Обработчик головного офиса:

Запускается по крону в 6 утра

# cat traffrotator.sh
#!/bin/sh
day=`date +%d`
month=`date +%m`
year=`date +%Y`
times=`date ‘+%H:%M:%S’`;

echo «=============================================================================================»
echo «START filial1»
chmod 666 /ftp/squid/filial1/*
log=»/ftp/squid/filial1/access.log.bz2″
log_dir_filial1=»/ftp/squid/arch/filial1/${year}/${month}»
log_file_filial1=»${log_dir_filial1}/${day}_${times}_auth.log»
mkdir -p ${log_dir_filial1}

if [ -f ${log} ] ;
then
echo «FIle is EXIST»
echo «UNZIPPED»
bunzip2 ${log}
echo «Start parsing filial1»
perl /var/www/corp/stat/filial1/lightparser.pl
echo «Movie arch file filial1»
mv /ftp/squid/filial1/access.log ${log_file_filial1}
else
echo -e ‘E[31;40m File Not Exist’; tput sgr0
sendEmail -t log@mail.server.ru -s mail.server.ru -u ERROR_SQUID_UPD_filial1 -m ERROR_UPDATE_FILE_NOT_FOUND -xu log@mail.server.ru -xp pass2mailserver -f log@mail.server.ru
fi
echo «END filial1»
echo «=============================================================================================»

echo «=============================================================================================»
echo «START filial2»
chmod 666 /ftp/squid/filial2/*
log=»/ftp/squid/filial2/access.log.bz2″
log_dir_filial2=»/ftp/squid/arch/filial2/${year}/${month}»
log_file_filial2=»${log_dir_filial2}/${day}_${times}_auth.log»
mkdir -p ${log_dir_filial2}

if [ -f ${log} ] ;
then
echo «FIle is EXIST»
echo «UNZIPPED»
bunzip2 ${log}
echo «Start parsing filial2»
perl /var/www/corp/stat/filial2/lightparser.pl
echo «Movie arch file filial2»
mv /ftp/squid/filial2/access.log ${log_file_filial2}
else
echo -e ‘E[31;40m File Not Exist’; tput sgr0
sendEmail -t log@mail.server.ru -s mail.server.ru -u ERROR_SQUID_UPD_filial2 -m ERROR_UPDATE_FILE_NOT_FOUND -xu log@mail.server.ru -xp pass2mailserver -f log@mail.server.ru
fi
echo «END filial2»
echo «=============================================================================================»

Настраиваем соединение филиалов с головным офисом через OPENVPN

Задача: Соеденить филиалы с головным офисом посредством openvpn
Тех. характеристики: На всех филиалах в качестве шлюзовой машинки используется freebsd
Решение:

Устанавливаем openvpn

cd /usr/ports/security/openvpn
make install clean
mkdir -p /usr/local/etc/openvpn/{ccd,easy-rsa/keys}
cp /usr/local/share/doc/openvpn/easy-rsa/2.0/* /usr/local/etc/openvpn/easy-rsa/
ln -sf /usr/local/etc/openvpn/easy-rsa/keys /usr/local/etc/openvpn/

Если данный шлюза будет использоваться в качестве сервера то правим под себя
/usr/local/etc/openvpn/easy-rsa/vars
cd /usr/local/etc/openvpn/easy-rsa
sh
chmod +x *
. ./vars

Генерируем ключ сервера
./clean-all && ./build-ca && ./build-dh && ./build-key-server server

создадим файл /usr/local/etc/openvpn/server.conf

mode server
tls-server
daemon
ifconfig 192.168.10.1 255.255.255.0
port 9888
proto tcp-server
dev tap
ca /usr/local/etc/openvpn/keys/ca.crt
cert /usr/local/etc/openvpn/keys/server.crt
key /usr/local/etc/openvpn/keys/server.key
dh /usr/local/etc/openvpn/keys/dh1024.pem
client-config-dir /usr/local/etc/openvpn/ccd
push «route 192.168.10.0 255.255.255.0 192.168.10.1»

# Забегу вперед. Роуты на сети клиентов
route 172.161.250.0 255.255.255.0 192.168.10.101
route 172.161.252.0 255.255.255.0 192.168.10.102
route 192.16.0.0 255.255.255.0 192.168.10.111
#

keepalive 10 120
client-to-client
comp-lzo
persist-key
persist-tun
verb 3
log-append /var/log/openvpn.log

в rc.conf добавим

openvpn_enable=»YES»
openvpn_configfile=»/usr/local/etc/openvpn/server.conf»

Далее нужно подгрузить модуль для работы с tap-интерфейсами:
kldload if_tap

Чтобы модуль автоматически подгружался при загрузке нужно добавить в /boot/loader.conf строку:
if_tap_load=»YES»

Стартуем.
/usr/local/etc/rc.d/openvpn start

Правим PF

if_vpn = «tap0»
net_int = «xxx.xxx.0.0/24»
net_vpn = «192.168.10.0/24»

# Разрешаем исходящий трафик в сторону VPN-сети
pass out quick on $if_vpn from ($if_vpn) to $net_vpn
pass out quick on $if_vpn from $net_int to $net_vpn

# Разрешаем входящий трафик со стороны VPN-сети
pass in quick on $if_vpn from $net_vpn to any keep state

# Разрешаем обращение к нашему VPN-серверу снаружи
pass in quick on $ext_if inet proto tcp from any to ($ext_if) port 9888 flags S/SA keep state

Продолжение следует…

Настраиваем отправку почты с консоли freebsd через внешнюю почту на gmail

Идея заключается в следующем. Отправить почту с локальной консоли через gmail


cd /usr
/ports/mail/ssmtp

make && make install clean && rehash

Правим rc.conf

sendmail_enable=»NO»
sendmail_submit_enable=»NO»
sendmail_outbound_enable=»NO»
sendmail_msp_queue_enable=»NO»

Настройка:
Правим /etc/ssmtp/ssmtp.conf:

root=myaccount@gmail.com
mailhub=smtp.gmail.com:587
hostname=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=myaccount@gmail.com
AuthPass=mypassword
FromLineOverride=YES

Правим /etc/ssmtp/revaliases:

root:myaccount@gmail.com:smtp.gmail.com:587

Мувим сендмайл

mv /usr/sbin/sendmail /usr/sbin/sendmail.old

как вариант если не в sbin то в /usr/local/sbin

делаем симлинк на ssmtp, например так:

ln -s /usr/sbin/ssmtp /usr/sbin/sendmail


как вариант если не в sbin то тоже в /usr/local/sbin

Пытаемся послать тестовое письмо с помощью ssmtp:


echo "" | ssmtp -v -s Hello myhomeadress@mail.ru



Если письмо успешно дошло, значит все было сделано правильно.



KDE 4 Freebsd 8

Товарищи, ну сколько можно тупить? Для тех кто в танке ..
echo ‘dbus_enable=»YES»‘ >> /etc/rc.conf
/usr/local/etc/rc.d/dbus start
echo ‘hald_enable=»YES»‘ >> /etc/rc.conf
/usr/local/etc/rc.d/hald start
Xorg -config /root/xorg.conf.new -retro
cp /root/xorg.conf.new /etc/X11/xorg.conf
echo exec /usr/local/kde4/bin/startkde4 > ~/.xinitrc
startx

Настройка шлюза локальной сети под управлением freebsd 7.2 (часть5)

Шаг 8: Настраиваем VPN
#cd /usr/ports/net/mpd4
#make install clean
Правим mpd.conf
cd /usr/local/etc/mpd4
ee mpd.conf
————————
default:
load client1
load client2
client1:
new -i ng0 pptp1 pptp1
set ipcp ranges 10.100.100.1/32 10.100.100.10/32
load client_standard

client2:
new -i ng1 pptp2 pptp2
set ipcp ranges 10.100.101.1/32 10.100.101.10/32
load client_standard

client_standard:
set iface disable on-demand
set iface enable proxy-arp
set iface idle 0
set iface enable tcpmssfix
set bundle enable multilink
set link yes acfcomp protocomp
set link enable no-orig-auth
set link enable keep-ms-domain
set link no pap chap
set link enable chap
set link yes chap-msv1 chap-md5 chap-msv2
set link mtu 1460
set link keep-alive 10 60
set ipcp yes vjcomp
set ipcp dns 8.8.8.8
# set ipcp nbns 192.168.1.4
set bundle enable compression
set ccp yes mppc
set ccp yes mpp-e40
set ccp yes mpp-e128
set ccp yes mpp-stateless

ee mpd.secret
alex 123456 10.100.100.10/32
crazy testing123 10.100.101.10/32
В mpd.links
pptp1:
set link type pptp
set pptp self 10.100.100.1
set pptp enable incoming
set pptp disable originate
set pptp disable windowing
set pptp enable always-ack

pptp2:
set link type pptp
set pptp self 10.100.100.1
set pptp enable incoming
set pptp disable originate
set pptp disable windowing
set pptp enable always-ack

В rc.conf
mpd_enable=»YES»
reboot )))
Шаг Ч
Ставим анализатор рогов под lightsquid
Cd /usr/ports/www/lightsquid
Make install clean

На этом END )))

Настройка шлюза локальной сети под управлением freebsd 7.2 (часть4)

1) Ставим squid
cd /usr/ports/www/squid30

Редактируем файл /usr/local/etc/squid/squid.conf
# nano -w /usr/local/etc/squid/squid.conf

Находим секцию OPTIONS FOR AUTHENTICATION и производим в ней следующие изменения (конфигурируем squid на работу с winbind (ntlm, basic) авторизацией).

auth_param ntlm program /usr/local/bin/ntlm_auth —helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 15
auth_param ntlm keep_alive on
auth_param basic program /usr/local/bin/ntlm_auth —helper-protocol=squid-2.5-basic
auth_param basic children 10
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

acl our_network src 192.168.10.0/24
acl our_domain dst 192.168.0.0/16
http_access allow our_domain our_network
acl SQUID proxy_auth REQUIRED
external_acl_type nt_group ttl=10 %LOGIN /usr/local/libexec/squid/wbinfo_group.pl
acl deny_inet external nt_group deny

acl full_inet external nt_group full

http_access deny all deny_inet
http_access allow all full_inet
http_access deny all

Проверяем правильность
squid -f /usr/local/etc/squid/squid.conf -k parse
chown -R root:squid /var/db/samba34/winbindd_privileged
squid -z

Профилактический halt -p now )))

Смотрим лог онлайн ))
tail -f /usr/local/squid/logs/access.log
tail -f /usr/local/squid/logs/cache.log

В результате проделанной работы мы получили сервер FreeBSD в домене с настроенным прокси-сервером squid с доступом в интернет для доменных пользователей.