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

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

Настраиваем QEMU виртуализацию под консольным FreeBSD

Добрый день уважаемые Коллегы!
В данной статье я расскажу про настройку виртуальной машины под консольным FreeBSD.
Для простоты я не буду углубляться в подробности настроек.

Имеем: Сервер. FreeBSD 8.0-RELEASE. Порты обновлены. X не установлены.
Задача: Настроить дополнительно виртуальную машину на данном сервере.

Поехали:

Qemu ставим из портов.


cd /usr/ports/emulator/qemu
make -DWITH_KQEMU
make install clean

Включаем модуль акселерации и модуль асинхронного ввода-вывода:


kldload if_tap
kldload kqemu
kldload aio

Для автоматического подключения при загрузке добавляем в /boot/loader.conf


if_tap_load="YES"
kqemu_load="YES"
aio_load="YES"

На этом закончили с модулями ядра.

Поднимаем виртуальный сетевой интерфейс и мост для дальнейшего использования его на нашей виртуальной машине:


ifconfig tap0 create
ifconfig bridge0 create
ifconfig bridge0 addm em0 addm tap0 up

Чтобы мост создавался при загрузке, нужно добавить две строки в конфигурационный файл /etc/rc.conf:


cloned_interfaces="tap0 bridge0"
ifconfig_bridge0="addm em0 addm tap0 up"

Включаем автоматическое поднятие интерфейса tap0

sysctl net.link.tap.up_on_open=1

Разрешаем непривилегированному пользователю соединяться с интерфейсом tap0

sysctl net.link.tap.user_open=1

Чтобы эти переменные инициализировалась при загрузке, нужно добавить строки в конфигурационный файл /etc/sysctl.conf:


net.link.tap.up_on_open=1
net.link.tap.user_open=1

Разрешаем непривилегированному пользователю открывать устройство /dev/tap0

chmod 666 /dev/tap0

Файлы устройств пересоздаются каждый раз при загрузке системы, поэтому права доступа на файл после перезагрузки вернутся в исходное состояние (600). Поэтому следует задавать права доступа к устройству не через chmod, а через правила devfs. Для этого нужно добавить строку в конфигурационный файл /etc/devfs.conf:

perm tap0 0666

Создаем диск:


qemu-img create /data/windows.img 14096M

Стартуем

qemu -localtime -m 512 -boot d -cdrom /home/distrib/xp.iso -hda /data/windows.img -name "Windows" -vnc 192.168.0.2:1

Где 192.168.0.2 ip сервера.

Подключаемся удаленно к 192.168.0.2 через vnc и ставим ОС

Ну и, наконец, запускаем Windows.

qemu -localtime -m 512 -boot c -hda /data/windows.img -name "Windows" -net nic,macaddr=52:54:00:12:34:56 -net tap,ifname=tap0 -vnc 192.168.0.2:1&

Настраиваем FTP сервер с авторизацией в MySql

Имеем: Установленную машину с freebsd и поднятым Apache + MySQL
В пред постах всё есть

cd /usr/ports/ftp/pure-ftpd
make config

[x] MySQL
[x] PRIVSEP
[x] PERUSERLIMITS
[x] Throttling

make install clean

echo 'pureftpd_enable="YES"' >> /etc/rc.conf

cd /usr/local/etc
cp pure-ftpd.conf.sample pure-ftpd.conf
ee
pure-ftpd.conf

Расскоменнтируем секцию
# MySQL configuration file (see README.MySQL)
MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf

mysql -u root -p

INSERT INTO mysql.user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES('127.0.0.1','ftp',PASSWORD('password'),'Y','Y','Y','Y','N','N','N','N','N','N','N','N','N','N');

FLUSH PRIVILEGES;
CREATE DATABASE ftpusers;
USE ftpusers;

CREATE TABLE admin (Username varchar(35) NOT NULL default '',Password char(32) binary NOT NULL default '',PRIMARY KEY (Username))TYPE=MyISAM;

INSERT INTO admin VALUES ('Administrator',MD5('password'));

CREATE TABLE `users` (
`User` varchar(16) NOT NULL default '',
`Password` varchar(32) binary NOT NULL default '',
`Uid` int(11) NOT NULL default '14',
`Gid` int(11) NOT NULL default '5',
`Dir` varchar(128) NOT NULL default '',
`QuotaFiles` int(10) NOT NULL default '500',
`QuotaSize` int(10) NOT NULL default '30',
`ULBandwidth` int(10) NOT NULL default '80',
`DLBandwidth` int(10) NOT NULL default '80',
`Ipaddress` varchar(15) NOT NULL default '*',
`Comment` tinytext,
`Status` enum('0','1') NOT NULL default '1',
`ULRatio` smallint(5) NOT NULL default '1',
`DLRatio` smallint(5) NOT NULL default '1',
PRIMARY KEY (`User`),
UNIQUE KEY `User` (`User`)
) TYPE=MyISAM;

INSERT INTO users VALUES ('web',MD5('webpassuser'),65534, 31, '/usr/local/www', 100, 50, 75, 75, '*', 'www', '1', 0, 0);

Выходим из sql

cd /usr/local/www/ftpadmin
fetch "http://machiel.generaal.net/files/pureftpd/ftp_v2.1.tar.gz"

tar -xvzf ftp_v2.1.tar.gz
cd ftp
chown www config.php

идем на веб и-фейс
проходим 7 шагов. получаем готовый /usr/local/etc/pureftpd-mysql.conf
Сохраняем его.
Запускаем
/usr/local/etc/rc.d/pure-ftpd.sh start

Все

Переполнение /var/spool/clientmqueue в FreeBSD

1. Отключить sendmail в /etc/rc.conf

sendmail_enable="NONE"

cp /etc/defaults/periodic.conf /etc/periodic.conf

2. Меняем значение следующих опций с root на /dev/null


# cat /etc/periodic.conf|grep _output
daily_output="root" # user or /file
daily_status_security_output="root" # user or /file
weekly_output="root" # user or /file
monthly_output="root" # user or /file

3. cd /var/spool/clientmqueue
find . -delete

Полезные команды Freebsd

Как узнать размер папок в nix системах?

Размер папок:
du -hsx /
размер одной папки
du -hsx /var
Показ размера всех папок в конкретной папке.
du -h -d 1 /var

Как упаковать файлы в архив?

Запаковываем:
tar -zcf [название_архива] [что_хочешь_упаковать_включая_папки]
пример:
tar -zcf blabla.tgz /home/blabla.ru

Распаковать:
tar -zxf [название_архива]
пример:
tar -zxf blabla.tgz

Настраиваем соединение филиалов с головным офисом через 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

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

Как заставить mpd писать лог

Изначально можно посмотреть, что происходит, только запустив mpd4 не как демон, а в фореграунд-режиме. Однако во время его работы на фоне, как демона, иногда хочется знать, почему пропадает соединение. На этот случай удобно настроить mpd4 на ведение log-файла через syslogd.

Для этого добавляем (например в самый конец) /etc/syslog.conf:
!mpd
*.* /var/log/mpd.log

Для «вращения» log-файла добавляем в /etc/newsyslog.conf:
/var/log/mpd.log root:network 640 3 100 * JC

По аналогии с имеющейся записью о файле ppp.log.

Добавляем ключик «-s mpd» (значит представляться syslog’у как «mpd») в /etc/rc.conf:
mpd_enable=»YES»
mpd_flags=»-s mpd -b»

Создаем сам log-файл:
> sudo touch /var/log/mpd.log
> sudo chown root:network /var/log/mpd.log
> sudo chmod 640 /var/log/mpd.log

Заставляем сислог перечитать конфиг и перезапускаем мпд:
> sudo /etc/rc.d/syslogd reload
> sudo /etc/rc.d/newsyslog restart

> sudo /usr/loca/etc/rc.d/mpd4 restart

найдено на http://alexander.mokrov.info/2010-06-26/topic122/

Freebsd updown net iface

#Restart FreeBSD network service:

/etc/rc.d/netif restart

#После рестарта сетевых интерфейсов обновляем маршруты
/etc/rc.d/routing restart

Из удаленной сессии ssh,
чтобы не потерять с сервером коннекта

/etc/rc.d/netif restart && /etc/rc.d/routing restart

Авторизация SSH по ключу

su my_login
ssh-keygen -d
cd .ssh

id_dsa.pub — должен лежать на сервере. id_dsa ключ пользователя — пользователю

в sshd.conf должны быть раскомментированы 2 строки отвечающие за RSA аутентификацию. id_dsa.pub должен быть прописан как ключ сервера.

Всё.