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

VIDCONTROL FreeBSD

VIDCONTROL(1) Справочник основных команд FreeBSD VIDCONTROL(1)

НАЗВАНИЕ
vidcontrol — утилита конфигурации и управления системной консолью

СИНТАКСИС
vidcontrol [-CdLHPpx] [-b цвет] [-c форма_курсора] [-f [размер] файл]
[-g геометрия] [-h размер] [-i adapter | mode]
[-l карта_экрана] [-M символ] [-m on | off]
[-r цвет_текста цвет_фона] [-S on | off] [-s номер]
[-t N | off] [режим] [цвет_текста [цвет_фона]] [show]
Читать далее

Команды для аккаунтинга

Сколько CPU времени использовал каждый юзер в системе
ac -p
Какие команды запускал каждый пользователь и сколько CPU и памяти
было использовано при их выполнении:
sa -u

Возвращаемся к резервному копированию. 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

Samba 3.5 String terminator not present or outside string boundaries

Столкнулся с проблемой при включении фряшки в домен.
wbinfo -t обрабатывает нормально, а wbinfo -u / wbinfo -g выдают пустые результаты, при этом в логах винбинда пишется

[2011/06/10 14:01:03.638663, 1] ../librpc/ndr/ndr.c:395(ndr_pull_error)
ndr_pull_error(1): String terminator not present or outside string boundaries
[2011/06/10 14:01:07.666080, 1] ../librpc/ndr/ndr.c:395(ndr_pull_error)
ndr_pull_error(1): String terminator not present or outside string boundaries
[2011/06/10 14:05:14.054471, 1] ../librpc/ndr/ndr.c:395(ndr_pull_error)
ndr_pull_error(1): String terminator not present or outside string boundaries

Поправил сменой кодировки в smb.conf в частности

display charset = utf8
unix charset = utf8

Ветка 3,5 походу не хочет c koi8-r работать

Централизованный сбор логов с нескольких серверов 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



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