dd
– служит для дублирования томов, а также для копирования их в файлы. dd
требует наличия входного файла if
, который может быть файлом любого типа, в том числе и блочным устройством, и выходного файла of
.
Продолжение под катом
Ох, долго мучался с выскакивающим в произвольное время окном авторизации на сквиде…
libsmb/ntlmssp.c:342(ntlmssp_update)
got NTLMSSP command 1, expected 3
Для файла 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 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 и обработку 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
Тех. характеристики: На всех филиалах в качестве шлюзовой машинки используется 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
Продолжение следует…
Идея заключается в следующем. Отправить почту с локальной консоли через gmail
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
Если письмо успешно дошло, значит все было сделано правильно.
Товарищи, ну сколько можно тупить? Для тех кто в танке ..
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
Шаг 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 )))
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 с доступом в интернет для доменных пользователей.