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

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

Шаг 4: Установка Apache
gatekeeper # cd /usr/ports/www/apache22
gatekeeper # make install clean
Проверяем запуск apache
gatekeeper # /usr/local/sbin/apachectl start

Правим

gatekeeper # ee /usr/local/etc/apache22/httpd.conf
1) проверяем на всех ли сетевых интерфейсах прописаны IP
2) Вносим в httpd.conf строку ServerName localhost
echo ‘accf_http_load=»YES» ‘ >> /boot/loader.conf
kldload accf_http
Комментим mod_ssl
mod_unique
Запускаем ещё раз.

Проверяем

gatekeeper# ps -ax | grep htt
721 ?? Ss 0:00.04 /usr/local/sbin/httpd -k start
722 ?? I 0:00.01 /usr/local/sbin/httpd -k start
723 ?? I 0:00.01 /usr/local/sbin/httpd -k start
724 ?? I 0:00.01 /usr/local/sbin/httpd -k start
725 ?? S 0:00.02 /usr/local/sbin/httpd -k start
726 ?? I 0:00.01 /usr/local/sbin/httpd -k start
737 ?? S 0:00.01 /usr/local/sbin/httpd -k start
743 p0 R+ 0:00.00 grep htt

Соотв. Apache стартовал! Пробуем зайти на http://192.168.1.4

Вносим в /etc/rc.conf строку
apache22_enable=»YES»

Шаг 5: Ставим php

gatekeeper # /usr/ports/lang/php5
gatekeeper # make install clean
При установке отметим так же галочку

[X] Apache module

gatekeeper # cd /usr/local/etc/
gatekeeper # cp php.ini-dist php.ini

снова правим
gatekeeper # ee /usr/local/etc/apache22/httpd.conf

Ищем строки AddType applications

добавляем туда 2 новые

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Ищем
DirectoryIndex index.html

Превращаем в
DirectoryIndex index.html index.php

Рестартим Apache

gatekeeper # /usr/local/sbin/apachectl restart
gatekeeper # cd /usr/local/www/apache22/data/
gatekeeper # ee info.php

Вносим в него следующий код

Сохраняем!

Открываем в браузере http://192.168.1.4/info.php

На этом установка php окончена.
Ушел курить…. продолжение следует Время 1:32 31 03 2010

Шаг6 : Устанавливаем MySQL

# cd /usr/ports/databases/mysql51-server
#make install clean
# /usr/local/bin/mysql_install_db
# chown -R mysql /var/db/mysql/
# chgrp -R mysql /var/db/mysql/

/usr/local/bin/mysqld_safe —user=mysql &
/usr/local/bin/mysqladmin -u root password toor
В rc.conf mysql_enable=»YES»
cd /usr/ports/databases/php5-mysql
make install clean
Осталось проверить как оно всё работает, а я устал и пошел спать 2:10 31.03.2010
Проверяем создав скрипт db.php в папке data

gatekeeper# cat db.php
<?php
$test=mysql_connect(«localhost»,»mysql»,»»);
if(!$test)
{
print «blya no connect»;
}
else
{
print «YES MYSQL connected»;
}
?>
gatekeeper#

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

Description:
будет использоваться
Имя компьютера — GATEKEEPER,
Домен — SYSTEM-IT.LH
Контроллер домена system-itdc01.system-it.lh IP 192.168.25.101
Уполномоченный доменный пользователь — gateadmin, пароль pass2domain
Внутренний сетевой интерфейс ale0 ip 192.168.1.4 сеть 192.168.0.0/16
Внешний сетевой интерфейс em0 ip 172.16.1.3 gw 172.16.1.1 dns 172.16.1.1 сеть 172.16.1.1/24
Сервер под управлением FreeBSD 7.2-RELEASE
кэширующий прокси — squid-3.0.24
winbind в составе samba34-3.4.5_ 1

Шаг 1: Предварительная настройка
Если компьютер имеет прямое подключение к интернет (не через proxy) данный шаг пропускаем!
Ввиду того, что выход в интернет в данный момент осуществляется через proxy пропишем в константы данные для аутентификации на proxy

gatekeeper # setenv HTTP_PROXY http://192.168.0.4:8080
gatekeeper # setenv HTTP_PROXY_AUTH basic:www:P@ssword
gatekeeper # setenv FTP_PROXY http://192.168.0.4:8080
gatekeeper # setenv FTP_PROXY_AUTH basic:www:P@ssword
Ввиду того, что в 7.2 при обновлении портов через portsnap возникает ошибка
metadata corrupt прописываем именно так!!!
Шаг 1.5 Настраиваем сеть и Firewall
gatekeeper# cat /etc/rc.conf

# — sysinstall generated deltas — # Wed Mar 31 07:10:22 2010
# Created: Wed Mar 31 07:10:22 2010
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
defaultrouter=»172.16.1.1″
gateway_enable=»YES»
firewall_enable=»YES»
natd_enable=»YES»
natd_interface=»ale0″
hostname=»gatekeeper.system-it.lh»
ifconfig_ale0=»inet 172.16.1.3 netmask 255.255.255.0″
ifconfig_em0=»inet 192.168.1.4 netmask 255.255.0.0″
inetd_enable=»YES»
linux_enable=»YES»
sshd_enable=»YES»

cat /etc/rc.d/rc.fw
gatekeeper# cat /etc/rc.d/rc.fw
ipfw -q -f flush
ipfw -q add divert natd ip from 192.168.0.1/16 to any out via ale0
ipfw -q add divert natd ip from any to 172.16.1.3 in via ale0
ipfw -q add pass all from any to any

chmod +x /etc/rc.d/rc.fw

halt -p now

Шаг 2:Обновление портов
Чтобы не ставить дырявые порты и удовлетворить все зависимости для начала обновим дерево портов
gatekeeper # portsnap fetch && portsnap extract && portsnap fetch update
Сейчас и в будущем для объединения команд используем &&
Если обновление прошло без ошибок идем дальше! Иначе http://google.ru
Шаг 3: Установка Midnight commander
gatekeeper # cd /usr/ports/misc/mc
gatekeeper # make install clean
gatekeeper # rehash
gatekeeper # mc
Жмем [F10] для выхода из Midnight commander’а

Организация проверки загружаемых файлов на вирусы в PureFTPd

Ниже представлена инструкция по интеграции в PureFTPd, работающем в Debian или
Ubuntu, функции проверки новых файлов на предмет наличия вирусов. При
обнаружении вируса загруженный файл удаляется.



Устанавливаем антивирусный пакет ClamAV:

sudo aptitude install clamav clamav-daemon

Настраиваем PureFTPd.
Создаем файл /etc/pure-ftpd/conf/CallUploadScript в который добавляем одну строку со словом "yes":

echo "yes" > /etc/pure-ftpd/conf/CallUploadScript

Создаем скрипт /etc/pure-ftpd/clamav_check.sh, который будет вызывать из
PureFTPd для проверки новых файлов в clamav:

#!/bin/sh
/usr/bin/clamdscan --remove --quiet --no-summary "$1"


Делаем скрипт исполняемым:

chmod 755 /etc/pure-ftpd/clamav_check.sh

Изменяем основой файл конфигурации PureFTPd /etc/default/pure-ftpd-common,
находим по ключевому слову строку UPLOADSCRIPT и указываем путь к скрипту
проверки, примерно так:

UPLOADSCRIPT=/etc/pure-ftpd/clamav_check.sh

Перезапускаем PureFTPd:

/etc/init.d/pure-ftpd-mysql restart

Установка freebsd по сети

Устанавливаем и настраиваем DHCP-сервер

# portinstall isc-dhcp3-server (из опций указывем только WITH_DHCP_PARANOIA)

В /etc/rc.conf добавляем:

# for PXE
dhcpd_enable="YES"
dhcpd_ifaces="em0"
dhcpd_chroot_enable="YES"

В /usr/local/etc/dhcpd.conf пишем

option domain-name “example.ru”;
option domain-name-servers 192.168.1.2, 192.168.1.3;

authoritative;

ddns-update-style none;

log-facility local4;

subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
use-host-decl-names on;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.1.100 192.168.1.200;
# адрес сервера на котором работает инсталлятор
next-server 192.168.1.5;
filename "pxeboot";
option root-path "192.168.1.5:/spool/pxe";
}

В /etc/syslog.conf добавляем

local4.* /var/log/dhcpd.log

В /etc/newsyslog.conf

/var/log/dhcpd.log 644 3 900 * JC
/etc/rc.d/syslogd reload

Копируем содержимое install CD в папку на диске

mdconfig -a -f /path/to/dist.iso
mount_cd9660 /dev/md0 /mnt/cdrom/
cp -r /mnt/cdrom/ /spool/pxe

tftp-сервер

mkdir /var/tftproot
cp /spool/pxe/boot/pxeboot /var/tftpboot
chown nobody /var/tftpboot
chmod 640 /var/tftpboot

В /etc/hosts.allow пишем

# tftp server for remote install
tftpd: 192.168.1.0/255.255.255.0 : allow
tftpd: ALL : deny

В /etc/inetd.conf пишем

tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /var/tftpboot -u nobody
/etc/rc.d/inetd reload

NFS сервер

В /etc/exports пишем

/spool/pxe -ro -network=192.168.1.0 -mask=255.255.255.0

В /etc/rc.conf

nfs_server_enable="YES"
rpcbind_enable="YES"

И запускаем все это

rpcbind
nfsd -u -t -n 4
mountd -r
# showmount -e
Exports list on localhost:
/spool/pxe 192.168.1.0

Редактируем loader.conf

Примерно так:

# cat > /spool/pxe/boot/loader.conf
mfsroot_load="YES"
mfsroot_type="mfs_root"
mfsroot_name="/boot/mfsroot"
autoboot_delay="5"
vfs.root.mountfrom="ufs:/dev/md0c"

Ключевым моментом является наличие последней строчки.

В принципе после всего этого можно уже ставить систему.

install.cfg

Для того, чтобы не отвечать вручную на все вопросы sysinstall это можно автоматизировать составив файл install.cfg

Файл install.cfg должен находиться внутри mfsroot.gz, скопировать его туда можно так:

cd /spool/pxe
gzip -d boot/mfsroot.gz
mdconfig -a -t vnode -f boot/mfsroot -u 9
mount /dev/md9 /mnt/tmp
cp install.cfg /mnt/tmp
umount /mnt/tmp
mdconfig -d -u 9
gzip boot/mfsroot

(этот набор команд лучше оформить в виде Makefile)

Пример install.cfg

Чтобы при установке ставилися набор пакетов их нужно создать:

cd /spool/pxe/packages/All/
pkg_crete -b bash-3.1.10
pkg_crete -b sudo-1.6.8.12_1
pkg_crete -b smartmontools-5.33_5

И прописать из в INDEX, например таким скриптом:

#!/bin/sh

dir=/spool/pxe/packages

cd $dir/All

rm $dir/INDEX

for file in *; do
echo ${file%.tgz}
egrep ^${file%.tgz} /usr/ports/INDEX-6 >> $dir/INDEX
done

Недостатки данного способа

  • Нужно прописывать в install.cfg имя интерфейса и имя диска, что неудобно, если железо не однотипное.
  • Нельзя установить систему на gmirror
  • Нужно прописывать полные (включая версию) имена всех устанавливаемых пакетов, после их обновления приходится прописывать все в install.cfg заново.
  • Конфиги, которые нужно скопировать на новый сервер нужно оформлять в виде пакета, что повышает трудоемкость задачи.

Доп параметры в ядрышко

options GEOM_BDE # поддержка шифрованых дисков
device md # Memory «disks»

Создаем директорию с диском

mkdir /usr/disk/
Ф
айл, где будет файловая система (размером 1000 мегабайт)

dd if=/dev/zero of=diskkrypt bs=1m count=1000

создаем девайс

mdconfig -a -t vnode -f /usr/disk/diskkrypt -u 0
disklabel -r -w md0 auto

Инициируем gbde

gbde init /dev/md0c -i -L /usr/disk/diskkrypt.lock

На экране появится конфиг для диска
Редактируем под себя после чего сохраняем.
Вводим пароль а лучше парольную фразу


Подключаем шифрованый раздел

gbde attach /dev/md0c -l /usr/disk/diskkrypt.lock

Создадим файловую систему на разделе

newfs -U /dev/md0c.bde

Создаём точку монтирования

mkdir /mnt/diskkrypt

Монтируем

mount /dev/md0c.bde /mnt/diskkrypt


END))) Удачной приватности

Скрипт для автоматического монтирования шифрованого раздела

#!/bin/sh

case "$1" in
start)
/sbin/mdconfig -a -t vnode -f /usr/disk/diskkrypt -u 0
/sbin/gbde attach /dev/md0c -l /usr/
disk/diskkrypt.lock
/sbin/mount /dev/md0c.bde /usr/cert/sslcert
;;
stop)
/sbin/umount /usr/cert/sslcert
/sbin/gbde detach /dev/md0c
/sbin/mdconfig -d -u 0
;;
*)
echo ""
echo "Usage: `basename $0` { start | stop }"
echo ""
exit 64
;;
esac


По вопросам man gbde man mdconfig

Бездисковая загрузка RDP к 2003 server Или настраиваем PXE на freebsd 7.2

Задача: Настроить бездисковые рабочие станции чтобы они загружались из сети и грузились сразу в терминальную сессию.
Качаем загрузочный образ с сайта http://nixts.org
http://nixts.org/doku.php?id=downloads

нам необходим тот, который pxe.

Настройка DHCP-сервера

cd /usr/ports/net/isc-dhcp30-server && make install clean
[X] DHCP_PARANOIA
mkdir -p /usr/local/etc && touch /usr/local/etc/dhcpd.conf

cat /usr/local/etc/dhcpd.conf
ddns-update-style none;
subnet 172.16.0.0 netmask 255.255.255.0 {
range 172.16.0.123 172.16.0.153;
next-server 172.16.0.1
filename «pxelinux.0»
}
Параметр next-server задаёт IP-адрес TFTP-сервера, параметр filename задаёт имя загрузчика. Так же следует указать правильные subnet, mask и range — адрес сети, маску сети и диапазон выдаваемых адресов соответственно.
добавим в /etc/rc.conf следующие строки:
dhcpd_enable=»YES»
dhcpd_ifaces=»em0″
это строки разрешают запуск DHCP-сервера и указывают имя сетевого интерфейса (em0), на котором следует принимать запросы от DHCP-клиентов. Узнать имена сетевых интерфейсов можно при помощи команды ifconfig.

/usr/local/etc/rc.d/isc-dhcpd start

Настройка TFTP-сервера

Откройте файл /etc/inetd.conf любым текстовым редактором и найдите в нем такую строку:
#tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot
и раскомментируйте её
Создайте корневой каталог TFTP-сервера и каталог для конфигурационных файлов загрузчика:
mkdir /tftpboot
mkdir /tftpboot/pxelinux.cfg
Скопируйте в каталог /tftpboot файлы из архива загрузчика
Разрешите запуск inetd. Для этого откройте файл /etc/rc.conf добавьте в конец файла следующую строку:
inetd_enable=»YES»
Запустите inetd, который в свою очередь запустит TFTP-сервер:
/etc/rc.d/inetd start

На машине, которая загружается с сервера ставим загрузку с сети. Всё…

Осталось поправить конфигурационные файлы в папке pxeboot/
Тут нет ничего сложного. Все параметры интуитивно понятны. А на сайте есть полное описание.

Убираем сообщения DHCPD с консоли и messages

Надоели сообщения об ошибке dhcpd падающие на консоль. Убираем.

ee /usr/local/etc/dhcpd.conf

Ищем строку log-facility local7;
если нет то добавляем.

Рестартим dhcpd

правим syslog.conf
ee /etc/syslog.conf

Смотрим на первые строчки

*.err;kern.warning;auth.notice;mail.crit;local7.none /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err;local7.none /var/log/messages

local7.none это мы туда добавили
Добавляем в конец файла
!dhcpd
*.notice /var/log/dhcpd.log

Сохраняем закрываем

touch /var/log/dhcpd.log
chown root:wheel /var/log/dhcpd.log
chmod 600 /var/log/dhcpd.log

/etc/rc.d/syslogd reload

Всё.

Debian asterisk howto

Итак- для начала установим дебиан — при установке выбирайте минимальную конфигурацию, настраивайте подключение к интернет,
и, зайдя под рутом, дайте
aptitude update
aptitude upgrade
reboot

после ребута поставим

aptitude install ssh ntp screen

Далее для нормальной работы нам будет необходимо скомпилить ядро с некоторыми изменениями, которые, если верить первоисточнику, влияют на работу конкретно Asterisk

для этого установим всё необходимое

aptitude install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential

Загрузим исходники ядра
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.12.tar.bz2
(можно посвежее)

распакуем
tar xjf linux-2.6.*

ln -s /usr/src/linux-2.6.23.12 /usr/src/linux
cd /usr/src/linux

Копируем текущую конфигурацию в /usr/src/linux:
make clean && make mrproper
cp /boot/config-`uname -r` ./.config
make menuconfig

в меню выбираем «Load alternate configuration…» и выбираем конфигурационный файл который скопировали в /usr/src/linux
— /usr/src/linux/.config

Нужно поправить несколько параметров в конфиге ядра
В разделе «Processor type and features» выбираем:
«Enable IRQ balancing» is disabled
«Timer frequency» change the value 250 Hz by 1000 Hz.
«High Resolution Timer Option» and «HPET Timer Support» as built-in.

После всего сохраняем конфиг и выходим
Компилим ядро и хедеры
make-kpkg clean
fakeroot make-kpkg —initrd —append-to-version=-custom kernel_image kernel_headers

Компилится долго. После этого должно появиться два .deb пакета в каталоге /usr/src/
Инсталлируем их:

cd /usr/src
dpkg -i linux-image-2.6.23.12-custom_2.6.23.12-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.23.12-custom_2.6.23.12-custom-10.00.Custom_i386.deb
reboot

Смотрим запустилось ли то ядро что нужно:
uname -a
Должно вывести что-то наподобие «Linux asterisk 2.6.23.12-custom».

Дабы удовлетворить зависимости в дальнейшем ставим:

aptitude install build-essential libcurl3-dev libvorbis-dev libspeex-dev unixodbc unixodbc-dev libiksemel-dev flex xsltproc
aptitude install linux-headers-`uname -r` g++ libncurses5-dev libnewt-dev libusb-dev subversion git-core

Качаем и распаковываем исходники:

cd /usr/src
wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
wget http://downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz
wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz
wget http://www.misdn.org/downloads/mISDN.tar.gz
wget http://www.misdn.org/downloads/mISDNuser.tar.gz
wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4-current.tar.gz
tar xvzf asterisk-1.4-current.tar.gz && tar xvzf zaptel-1.4-current.tar.gz && tar xvzf libpri-1.4-current.tar.gz && tar xvzf mISDN.tar.gz && tar xvzf mISDNuser.tar.gz && tar xvzf asterisk-addons-1.4-current.tar.gz

Ставим всё что нужно для работы Asterisk:
aptitude install build-essential libcurl3-dev libvorbis-dev libspeex-dev unixodbc unixodbc-dev libiksemel-dev flex xsltproc
aptitude install linux-headers-`uname -r` g++ libncurses5-dev libnewt-dev libusb-dev subversion git-core

Скачиваем и распаковываем:
cd /usr/src
wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
wget http://downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz
wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz
wget http://www.misdn.org/downloads/mISDN.tar.gz
wget http://www.misdn.org/downloads/mISDNuser.tar.gz
wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4-current.tar.gz
tar xvzf asterisk-1.4-current.tar.gz && tar xvzf zaptel-1.4-current.tar.gz && tar xvzf libpri-1.4-current.tar.gz && tar xvzf mISDN.tar.gz && tar xvzf mISDNuser.tar.gz && tar xvzf asterisk-addons-1.4-current.tar.gz

Ставим Zaptel:
cd /usr/src/zaptel-1.4*
./install_prereq test
./install_prereq install
./configure
make
make install
make config
modprobe ztdummy

Cтавим Libpri:
cd /usr/src/libpri-1.4*
make && make install

Ставим mISDN:
Не ставьте версию (1.1.7) с ядром (2.6.23.12). В доках написано что не работает. Я ставил всё самое последнее — работает.
cd /usr/src
git-clone git://git.misdn.org/git/mISDN.git/
git-clone git://git.misdn.org/git/mISDNuser.git/
cd /usr/src/mISDN
make
make install
cd /usr/src/mISDNuser/
make && make install

Конфигурим:
mISDN scan
mISDN config
будет создан /etc/mISDN.conf котрый можно смотреть и дополнять.
vi /etc/mISDN.conf
Если всё ок то стартуем:
mISDN start

Проверяем всё ли в порядке
misdnportinfo
Системные скрипты для старта mISDN:
/usr/sbin/update-rc.d mISDN defaults 15 30

Собственно установка Asterisk
cd /usr/src/asterisk-1.4*
./configure

Можно выбрать дополнительные звуковые дорожки для голосового меню
make menuselect
Выберите core-sounds которые будете использовать и другие если нужно . Выходите через «x» с записью изменений. Затем:
make
make install
make samples
make config
asterisk -vvvc
stop now
echo «ztdummy» >> /etc/modules

Если ошиблись и компиляция закончилась неудачно то
make clean
then
./configure
and
make install

снова.

Перезагрузитесь и проверьте как работает Asterisk.
reboot
asterisk -r
exit

Установка аддонов:
cd /usr/src/asterisk-addons*
./configure && make && make install
make samples

Установимl Asterisk-GUI
Конфиги сохраним
cp -r /etc/asterisk /etc/asterisk.bak

Скачаем и установим Asterisk-GUI:
cd /usr/src
svn checkout http://svn.digium.com/svn/asterisk-gui/trunk asterisk-gui
cd /usr/src/asterisk-gui
./configure && make && make install
make samples

Внесём несколько ньюансов в конфиг…
cat </etc/asterisk/http.conf
[general]
enabled=yes
enablestatic=yes
EOF

cat </etc/asterisk/manager.conf
[general]
displaysystemname = yes
enabled = yes
webenabled = yes
port = 5038
;httptimeout = 60
bindaddr = 0.0.0.0

[admin]
secret = admin
read = system,call,log,verbose,command,agent,config
write = system,call,log,verbose,command,agent,config
EOF
Checking configuration…
make checkconfig
asterisk -r
reload
exit

Заходите и администрируйте систему. логин/пароль по умолчанию admin/admin
адрес гуи:

http://IPADDRESS:8088/asterisk/static/config/setup/install.html
http://IPADDRESS:8088/asterisk/static/config/cfgbasic.html