Архив за месяц: Апрель 2010

Настройка шлюза локальной сети под управлением 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 с доступом в интернет для доменных пользователей.

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

Шаг 7: Ставим самбу

Ставим Самбу и вводим в домен
Во избежание ошибок ввода в домен необходимо синхронизировать время присоединяемого компьютера с временем домена.
ntpdate system-itdc01.system-it.lh
cd /usr/ports/net/samba34/
make config && make && make install && make clean

[X]ADS
[X]WINBIND
[X]SYSLOG

Rehash

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Если самба при компиляции падает — помогает установка правильного времени в BIOS )))))))
После чего даем make clean
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Writing Makefile for Locale::gettext
==> Your Makefile has been rebuilt. <==
==> Please rerun the make command. <==
false
*** Error code 1

Stop in /usr/ports/devel/p5-Locale-gettext/work/gettext-1.05.
*** Error code 1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Samba используется только для работы с доменом, расшаренных ресурсов на сервере нет
cat /usr/local/etc/smb.conf

[global]
workgroup = system-it
realm = system-it.lh
password server = 192.168.25.101
netbios name = gatekeeper
server string = gateway
interfaces = em0
bind interfaces only = yes
socket address = 192.168.1.4
socket options = SO_RCVBUF=8192 SO_SNDBUF=8192 TCP_NODELAY
smb ports = 139
hosts allow = 192.168. 127.
security = ADS
idmap backend = tdb
idmap cache time = 604800
idmap uid = 1000000-2000000
idmap gid = 1000000-2000000
encrypt passwords = yes
winbind separator = +
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
load printers = no
log file = /var/log/samba34/log.%m
log level = 3
max log size = 1000
name resolve order = host bcast
local master = no
domain master = no
dns proxy = no
preferred master = no
display charset = koi8-r
unix charset = koi8-r
dos charset = cp866
deadtime = 5

Внесем в файл /etc/rc.conf строку, разрешающую запуск winbind:
winbindd_enable=»YES»

Проверим конфигурацию
Testparm
Теперь с помощью команды net производим присоединение компьютера к домену, указав имя доменного пользователя и его пароль
# net join -U gateadmin
Enter admins’s password:
Using short domain name — System-it.lh
Joined ‘gatekeeper’ to realm ‘system-it.lh’
6. Теперь необходимо внести изменения в конфигурационный файл системных баз данных и переключателя сервисов имен /etc/nsswitch.conf, чтобы указать системе, каким образом искать базы с именами доменных пользователей и доменными группами безопасности.
# nano -w /etc/nsswitch.conf
group: files winbind
passwd: files winbind
shadow: files winbind
group_compat: nis
hosts: files dns
networks: files
passwd_compat: nis
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files

/usr/local/etc/rc.d/samba start

wbinfo -p
wbinfo -g
wbinfo -u

Всё. Домен видим!

Настройка шлюза локальной сети под управлением 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’а

Сброс пароля на cisco 2950

Сброс пароля на коммутаторе Cisco Catalyst 2950 [исправить]


Подключиться к консоли на коммутаторе с помощью кабеля COM-RJ45

Параметры терминального соединения:
- бит в секунду (бод): 9600
- бит данных: 8
- четность: нет
- стоп-бит: 1
- контроль передачи: Xon/Xoff

2. Отключить кабель питания коммутатора.

3. Нажать и удерживать кнопку Mode на коммутаторе, снова подключить кабель питания к коммутатору.

4. Чтобы предотвратить автоматическую загрузку коммутатора (произойдет через 15
секунд), нажать break-последовательность (Ctrl+Break в HyperTerminal).

5. После загрузки и появления строки приглашения набрать команду flash_init.

6. Набрать команду load_helper.

7. Набрать команду "dir flash:" (ошибка многих статьей указание набирать "dir
flash", нужно именно на конце ":"). Появится список файлов, содержащихся во
flash-памяти коммутатора, среди них должен быть файл конфигурации - config.text.

8. Набрать команду rename flash:config.text flash:config.old для переименования
конфигурационного файла.

9. Набрать команду boot.

10. В конце процесса загрузки нажать n, чтобы начать процесс установки.

11. Набрать enable для входа в привилегированный режим, набрать команду rename
flash:config.old config.text.

12. Набрать команды: configure terminal, no enable secret (для сброса пароля,
если он был установлен), enable password cisco (устанавливаем новый пароль cisco).

13. Нажать Ctrl+Z, набрать команду write memory для сохранения параметров.

Таким образом вся операция заняла минут 15-20, из них больше половины времени
пришлось на уговоры HyperTerminal

Организация проверки загружаемых файлов на вирусы в 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 заново.
  • Конфиги, которые нужно скопировать на новый сервер нужно оформлять в виде пакета, что повышает трудоемкость задачи.