DNS + DHCP + NAT + Proxy + SSMTP + NTP + LAMP + Samba

Опубликовано: 2018-06-02

Обновляем репозитарии:

~# apt-get update

~# apt-get upgrade

bind9 лучше установить сразу, до изменения resolv.conf

~# apt-get install bind9


Бозовые настройки сети:

~# nano /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# Смотрит наружу (в данном случае ADSL модем)
auto eth0
iface eth0 inet static
     address 192.168.1.2
     netmask 255.255.255.0
     gateway 192.168.1.1

# The secondary network interface
# Смотрит во внутреннею сеть
auto eth1
iface eth1 inet static
     address 10.0.0.1
     netmask 255.255.255.0

~# nano /etc/resolv.conf

nameserver   127.0.0.1
domain         office.at

~# nano /etc/hosts

127.0.0.1    localhost
10.0.0.1      gate

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Настраиваем DNS:

Если не установлен bind9 устанавливаем:

~# apt-get install bind9

~# nano /etc/bind/named.conf.options

acl "lan" {
     10.0.0.0/24;
     127.0.0.1;
};

     options {
     directory "/var/cache/bind";

     // If there is a firewall between you and nameservers you want
     // to talk to, you may need to fix the firewall to allow multiple
     // ports to talk. See http://www.kb.cert.org/vuls/id/800113

     // If your ISP provided one or more IP addresses for stable
     // nameservers, you probably want to use them as forwarders.
     // Uncomment the following block, and insert the addresses replacing
     // the all-0's placeholder.

     # Если необходим рекурсивный, кеширующий NDS сервер закомментить,
     # иначе перенаправление на DNS провайдера.
     forwarders {
         10.1.37.254;      //DNS trion
         #213.179.249.132      //DNS office
         #213.179.249.133      //DNS office
     };

     auth-nxdomain no; # conform to RFC1035
     listen-on-v6 { none; };
     listen-on { lan; };
     allow-query { lan; };
     allow-recursion { lan; };
};

~# nano /etc/bind/named.conf.local

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "office.at" {
     type master;
     file "/etc/bind/master/office.at.zone";
};

zone "0.0.10.in-addr.arpa" {
     type master;
     file "/etc/bind/master/0.0.10.in-addr.arpa.zone";
};

Создаем Файлы мастер зон прямого и обратного преобразования.
Создаем каталог master и два файла office.at.zone; 0.0.10.in-addr.arpa.zone

~# mkdir /etc/bind/master

~# nano /etc/bind/master/office.at.zone

$TTL 30                
                   
$ORIGIN office.at.                
                   
@ SOA   gate root 2011091800 1h 10m 1d 30
  NS   gate            
  MX 10 gate            
                   
$GENERATE 100-130   ws$ A 10.0.0.$        
                   
gate       A 10.0.0.1        
dir100       A 10.0.0.2        
wifi-dsl-2600       A 10.0.0.3        
                   
miniatx       A 10.0.0.51        
notebook       A 10.0.0.52        
shutov       A 10.0.0.53        


~# nano /etc/bind/master/0.0.10.in-addr.arpa.zone

$TTL 30      
         
$ORIGIN 0.0.10.in-addr.arpa.      
         
@ SOA gate.office.at. (    
    root.office.at.    
    2011091800    
    1h    
    10m    
    1d    
    30 )    
         
  NS gate.office.at.    
         
$GENERATE 100-130 $ PTR ws$.office.at.
         
1     PTR gate.office.at.
2     PTR dir100.office.at.
3     PTR wifi-dsl-2600.office.at.
         
51     PTR miniatx.office.at.
52     PTR notebook.office.at.
53     PTR shutov.office.at.


Настраиваем DHCP сервер:

~# apt-get install dhcp3-server

~# nano /etc/default/dhcp3-server

# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/dhcp3-server by the maintainer scripts

#
# This is a POSIX shell fragment
#

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"

~# cat /etc/dhcp3/dhcpd.conf

option domain-name "office.at";
option domain-name-servers 10.0.0.1;
default-lease-time 600;
max-lease-time 259200; # Три дня
option routers 10.0.0.1;
authoritativ;

subnet 10.0.0.0 netmask 255.255.255.0 {
     range 10.0.0.100 10.0.0.130;
}

host miniatx {
     hardware ethernet 00:01:2E:23:18:FA;
     fixed-address miniatx.office.at;
}

host dir100 {
     hardware ethernet 00:21:91:3B:35:50;
     fixed-address dir100.office.at;
}

host notebook {
     hardware ethernet 70:5A:B6:55:BD:EC;
     fixed-address notebook.office.at;
}

host shutov {
     hardware ethernet 00:0D:61:46:FD:1A;
     fixed-address shutov.office.at;
}

Мак-адрес -
     hardware ethernet 08:00:27:cd:32:71;
     hardware ethernet 08:00:27:eb:fc:ee;
взят из файла:

~# cat /var/lib/dhcp3/dhcpd.leases


Настройки NAT:

~# mkdir /etc/firewall

~# nano /etc/firewall/iptables.sh

#! /bin/sh
#
#######################
# Настройка интерфейсов
#######################

# Internet (Поменяйте на ваш интернет-интерфейс)
Inet_Interface="eth0"

# Lan (поменяйте на ваш интерфейс сетевого моста)
Lan_Interface="eth1"

# Lo (локальный интефейс - петля)
Lo_Interface="lo"

# Описываем путь до iptables
IPT="/sbin/iptables"

# Определяем локальную подсеть и адрес сервера для перенаправления на squid
localNet="10.0.0.0/24"
serverSquid="10.0.0.1"

# Очищаем текущие правила (если вдруг есть какие-то правила)

$IPT -F
$IPT -t nat -F
$IPT -t mangle -F

$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Задаем политики по умолчанию

$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP

# Создаем цепочку для обработки неправильных пакетов.
# bad_packets

$IPT -N bad_packets

$IPT -A bad_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m conntrack --ctstate NEW -j REJECT --reject-with tcp-reset
$IPT -A bad_packets -p tcp \! --syn -m conntrack --ctstate NEW -j LOG --log-prefix "New not syn:"
$IPT -A bad_packets -p tcp \! --syn -m conntrack --ctstate NEW -j DROP

# Создаем цепочку для обработки входящих (из интернета) tcp соединений.
# tcp_p
$IPT -N tcp_p

# Чтобы, например, разрешить подключаться к нашему шлюзу из интернета по ssh:
ssh="22"
ssh_ip_allowed="0/0"

$IPT -A tcp_p -p tcp -s $ssh_ip_allowed --dport $ssh -j ACCEPT

$IPT -A tcp_p -p tcp -s 0/0 -j DROP

# Создаем цепочку для обработки входящих (из интернета) udp соединений.
# udp_p
$IPT -N udp_p

$IPT -A udp_p -p udp -s 0/0 -j DROP

# Создаем цепочку для обработки входящих (из интернета) icmp соединений.
# icmp_p
$IPT -N icmp_p

# Разрешаем "пинговать" наш шлюз из интернета:

$IPT -A icmp_p -p icmp -s 0/0 --icmp-type 8 -j ACCEPT
$IPT -A icmp_p -p icmp -s 0/0 --icmp-type 11 -j ACCEPT

$IPT -A icmp_p -p icmp -s 0/0 -j DROP

# Цепочка INPUT

$IPT -A INPUT -p tcp -j bad_packets

$IPT -A INPUT -p all -i $Lan_Interface -j ACCEPT
$IPT -A INPUT -p all -i $Lo_Interface -j ACCEPT

$IPT -A INPUT -p all -i $Inet_Interface -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp -i $Inet_Interface -j tcp_p
$IPT -A INPUT -p udp -i $Inet_Interface -j udp_p
$IPT -A INPUT -p icmp -i $Inet_Interface -j icmp_p

# Цепочка FORWARD

$IPT -A FORWARD -p tcp -j bad_packets

$IPT -A FORWARD -p all -i $Lan_Interface -j ACCEPT
$IPT -A FORWARD -p all -i $Lo_Interface -j ACCEPT
$IPT -A FORWARD -p all -i $Inet_Interface -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Цепочка OUTPUT

$IPT -A OUTPUT -p tcp -j bad_packets

$IPT -A OUTPUT -p all -o $Inet_Interface -j ACCEPT
$IPT -A OUTPUT -p all -o $Lan_Interface -j ACCEPT
$IPT -A OUTPUT -p all -o $Lo_Interface -j ACCEPT

# Цепочка POSTROUTING (таблица nat)

$IPT -t nat -A POSTROUTING -o $Inet_Interface -j MASQUERADE

# заворачиваем пакеты на 80 и 8080 порты на прокси. У кого нет - строчку удаляем.
$IPT -t nat -A PREROUTING -i $Lan_Interface \! -d $localNet -p tcp \
     -m multiport --dport 80,8080 -j DNAT --to $serverSquid:3128

# Включаем перенаправление ipv4.

echo "1" > /proc/sys/net/ipv4/ip_forward

echo "Firewall started"

exit 0

Далее нужно сделать этот скрипт исполняемым:

~# chmod +x /etc/firewall/iptables.sh

И установить его на автоматический запуск при инициализации сетевых служб:

~# ln -s /etc/firewall/iptables.sh /etc/network/if-up.d/firewall


Мониторинг соединений:

~# iptstate

~# conntrack -L

~# conntrack -F


Настройка сервера точного времени NTP:

~# apt-get install ntp

~# /etc/init.d/ntp stop

~# cat > /etc/ntp.conf

server ntp.ubuntu.com
server time.nist.gov
server europe.pool.ntp.org
restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap

//нажать ^D


~# /etc/init.d/ntp start

* Starting NTP server ntpd [ OK ]

Проверка работоспособности:

~# ntptrace

localhost: stratum 16, offset 0.000000, synch distance 0.003030

Логи сервера:

~# /var/log/ntpstats/

Проверка запросов:

~# ntpq –p


Разрешение доступа из локальной сети:
По умолчанию ваш сервер NTP будет доступен всем хостам в Интернет. Параметр restrict в файле /etc/ntp.conf позволяет вам контролировать, какие машины могут обращаться к вашему серверу. Если вы хотите запретить всем машинам обращаться к вашему серверу NTP, добавьте следующую строку в файл
/etc/ntp.conf: restrict default ignore

Если вы хотите разрешить синхронизировать свои часы с вашим сервером только машинам в вашей сети, но запретить им настраивать сервер или быть равноправными участниками синхронизации времени, то вместо указанной добавьте строчку
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap
/etc/ntp.conf/ может содержать несколько директив restrict
restrict 10.0.0.0 mask 255.0.0.0 noquery


Настройка Proxy:

Даже при широкополосном канале в сеть Интернет, более половины трафика от браузера повторяется от пользователя к пользователю. Частично с этим борется кеш самого браузера, но гораздо эффективнее и централизовано с этим справится серверный кеширующий прокси сервер. Также при помощи прокси сервера можно управлять доступом пользователей к определенным ресурсам, управлять скоростью, резать рекламные банеры и еще много чего. Сейчас мы сделаем лишь базовую настройку прокси. В качестве программы прокси сервера будем использовать Squid. На момент написания в репозиториях Ubuntu лежала третья версия этого старейшего и лучшего прокси.

Устанавливаем, останавливаем:

~# apt-get install squid

~# /etc/init.d/squid stop


Создаем и наполняем файлы со списками блокируемых сайтов, баннеров, медленно загружающихся сайтов и адресов с распределенной нагрузкой по скорости:

~# nano /etc/squid/blocksite

ya.ru
irbis-team.com

~# nano /etc/squid/banners

.?(count(\d|er|\.rbc)|hitbox|advertising|linkexchange|click\d|\dcount|adriver)
.*(/ad(s|v)|\.adnet\.ru|banview|banner|adriver|\dcount|bnr|bans\.|/sale|/pagead)
.*exaccess\.ru/asp/.
.*(spylog|warlog\.info|ipz.ru/cgi-bin/cm\.cgi\?|c\.mystat-in\.net|c\.bigmir\.net|online\.mirabilis|top\.winrate\.net|vipelita\.ru|cnews\.ru.*/informres).*
.*(brs\.trilan\.ru/images|google-analytics\.com|/informer|bantex\.ru|100-100\.ru).*
.?(hotlog|tours|sharereactor|&rand=|livejournal\.com/userpic).*
^(www\.)?ad\d?\..*
.?images\.rambler\.ru/upl.*
.*s1\.adward\.ru/\?r.*
.*(bhanvad)\.com.*
.*(dosugonline|blogonline|all-web|otvali|loveplanet|ziza|body\.imho|meganame)\.ru.*
.?(clx|gold-music)\.ru/.*
.*(nnm.ru|rambler|realcoding|kpnemo\.ru/advimg).*\.swf
.*/ad?.*
.?re(k|c)lama.*
.^(www\.)?(1001tur|jmp\.net|kmindex.ru/.*/\?|kreis\.trl\.ru|rot\.goup\.ru/\?|au-au\.ru).*
.?r\.mail\.ru/b.*\.swf
.?bs\.yandex\.ru/show.*
.?br\.gcl\.ru/cgi-bin/br.*
.?m1.nedstatbasic.net/basic.js
.*\.doubleclick\.net
.*an.yandex.ru/*
.*/adserver/*

~# nano /etc/squid/littletraffic

odnoklassniki.ru
odnoklasniki.ru
vkontakte.ru

~# nano /etc/squid/shorttraffic

facebook.com
mirpk.com.ua
phpforum.ru
rln.nnov.ru

Открываем конфиг для редактирования:

~# nano /etc/squid/squid.conf

ищем директиву http_port и переписываем (10.0.0.1 - адрес внутреннего интерфейса если нужно ограничить доступ только внутри локальной сети):
...
#ищем и коментируем строки:

acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

#и добавляем ниже:

acl localnet src 10.0.0.0/24 # ournet
acl gatehost src 10.0.0.1/32 # gatehost

acl blocksite url_regex "/etc/squid/blocksite" #Полное блокирование
acl banners url_regex "/etc/squid/banners" #Баннеры, полное блокирование
acl littletraffic url_regex "/etc/squid/littletraffic" #Почти полное блокирование
acl shorttraffic url_regex "/etc/squid/shorttraffic" #Равномерное распределение на небольшой скорости

...

http_access deny banners
http_access deny blocksite

http_access allow gatehost
http_access allow localnet

...
http_port 10.0.0.1:3128 transparent #(строка 1110)
...

...
icp_port 0 #(строка 3943)
...

#в конце файла

delay_pools 2
delay_class 1 1
delay_class 2 2

delay_parameters 1 300/300
delay_access 1 allow littletraffic
delay_access 1 deny all

delay_parameters 2 300/300 3000/3000
delay_access 2 allow shorttraffic
delay_access 2 deny all

Проверяем:

~# squid -k parse

Запускаем:

~# /etc/init.d/squid start


Для перечитывания конфигурационного файла:

~# squid -k reconfigure

Теперь строим кеш:

~# /usr/sbin/squid –z

Смотрим какие порты слушает squid:

~# netstat -lpn | grep squid

меняем в конфигурационном файле (не обезательно):

cache_dir ufs 4096 32 256

ищем и раскомментируем строку (не обезательно):

#http_access allow localnet

раскомментируем строку и даем 50 мегабайт (не обезательно):

memory_pools_limit 50 MB

задаем язык вывода ошибок для пользователя (не обезательно):

error_directory /usr/share/squid/errors/Russian-koi8-r
cache_mem 256 MB
maximum_object_size_in_memory 2000 KB

Просмотр статистики в потоке:

~# tail -fn 1 /var/log/squid/access.log


SSMTP – простейшая замена sendmail для отправки почты:

~# apt-get install mailtools

~# apt-get install ssmtp

Для отправки прикрепленных файлов(1)

~# apt-get install uuencode

~# apt-get install sharutils

Для отправки прикрепленных файлов (2), на мой взгляд лучше этот метод

~# apt-get install mpack

Вот встретил на просторах инета довольно маленький и удобный MTA, он прост и удобен в настройках и отличная замена sendmail (ИМХО так как он более сложен в настройке). Когда нужна только отправка писем (логи, регистрация пользователей на сайте, отправлять уведомления пользователям сайта и т.д), а поднимать для этого полноценный почтовый сервер – бессмысленно, ssmtp прекрасно подойдет. Что сделал и я, его функционала для моих нужд достаточно (отправлять регистрацию и уведомления для двух моих блогов). Процесс работы ssmtp довольно прост, при его помощи мы отправляем почту себе на аккаунт на gmail.com (все настройки можно проделать и c любым другим почтовиком, например, mail.ru, уandex.ru, мне достаточно и gmail), а тот рассылает ее указанным адресам.

Для начало заводим себе аккаунт на gmail.com – для примера что-то "myinfo@gmail.com" с паролем "123456".

~# nano /etc/ssmtp/ssmtp.conf

root=myinfo@gmail.com
mailhub=smtp.gmail.com:587
hostname=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=myinfo@gmail.com
AuthPass=123456
FromLineOverride=YES

~# nano /etc/ssmtp/revaliases

root:myinfo@gmail.com:smtp.gmail.com:587

Вот и все теперь проверяем, из командной строки выполняем:

~# echo "Наше тест-сообщения" | mail -v -s "Наш заголовак письма" проверочный@адрес

02 [<-] 220 mx.google.com ESMTP x54sm9783319eeh.17
03 [->] EHLO smtp.gmail.com
04 [<-] 250 ENHANCEDSTATUSCODES
05 [->] STARTTLS
06 [<-] 220 2.0.0 Ready to start TLS
07 [->] EHLO smtp.gmail.com
08 [<-] 250 ENHANCEDSTATUSCODES
09 [->] AUTH LOGIN
10 [<-] 334 VXNlcm5hbWU6
11 [->] bGludXhqb3VybmFsLnN1QGdtYWlsLmNvbQ==
12 [<-] 334 UGFzc3dvcmQ6
13 [<-] 235 2.7.0 Accepted
14 [->] MAIL FROM:
15 [<-] 250 2.1.0 OK x54sm9783319eeh.17
16 [->] RCPT TO:<проверочный@адрес>
17 [<-] 250 2.1.5 OK x54sm9783319eeh.17
18 [->] DATA
19 [<-] 354 Go ahead x54sm9783319eeh.17
20 [->] Received: by smtp.gmail.com (sSMTP sendmail emulation); Tue, 28 Dec 2010 20:35:30 +0200
21 [->] From: “root”
22 [->] Date: Tue, 28 Dec 2010 20:35:30 +0200
23 [->] To: проверочный@адрес
24 [->] Subject: Наш заголовак письма
25 [->] User-Agent: Heirloom mailx 12.4pre 6/29/08
26 [->] MIME-Version: 1.0
27 [->] Content-Type: text/plain; charset=us-ascii
28 [->] Content-Transfer-Encoding: 7bit
29 [->]
30 [->] Наше тест-сообщения
31 [->] .
32 [<-] 250 2.0.0 OK 1293549764 x54sm9783319eeh.17
33 [->] QUIT
34 [<-] 221 2.0.0 closing connection x54sm9783319eeh.17v

Вуаля, все отлично работает.
Теперь подстраиваем под наши нужды, идем в админпанель нашей CMS и указываем наш который будем использовать для администрирования. На этом и все, теперь когда у нас зарегистрируется новый пользователь – мы получим сообщения на указанный нами административный адрес, а также пользователь на свой указанный адрес с паролем.

Для сжания отправляемого файла или папки используем архиватор tar:

~# tar cjvf /home/boris/db.tb2 /var/lib/mysql/service/

Если нужно отправить двоичный файл письмом, можно его просто закодировать с помощью uuencode. Команда будет выглядет следующим образом:

~# uuencode /home/boris/db.tb2 | mail -s "db" BorisBelyaev@mail.ru

С помощью консольной утилиты mpack. Эта утилита пакует файл в сообщение и отсылает полученное сообщение туда, куда изволите.

~# mpack -s "db" /home/boris/db.tb2 BorisBelyaev@mail.ru


Дополнительно:


Варианты скрипта для контроля внешнего ip и внутренней структуры сети:

~# nano /var/test/test

#!/bin/bash
#Список хостов для проверки
HOSTS="ya.ru google.com trion.mk.ua"
#Количество итераций для пинга
N=3

#Подсеть локального сегмента
LAN0="192.168.0.1"
LAN1="10.0.0.0/24"

#Адрес yполучателя отчета
EMAIL="borisbelyaev@mail.ru"
PWD="/var/test"
FILE="test.txt"

{
echo
echo "Test date:" `date`
echo

for H in $HOSTS
do
     PING=`ping -c$N $H | tail -n 2 | head -n 1 | cut -b24`
     let "NGOOD=$N / 3"
     if [ -n "$PING" ]
     then
         if [ $PING -ge $NGOOD ]
         then
             echo "Were $PING ping on host $H"
         else
             echo "Ping on host $H = failed"
         fi
     else
         echo $PING
     fi
done

#определение своего IP адреса
MYIP=`wget -O - -q icanhazip.com`

echo
echo "WAN IP = $MYIP"

#nmap -sP $LAN | grep Host | cat >> $PWD/$FILE
#nmap -sP $LAN0
nmap -sP $LAN1

} > $PWD/$FILE

#отправляем данные на почту
mail -s "gate" $EMAIL < $PWD/$FILE

#показать результат
#cat $PWD/$FILE

exit 0

Далее нужно сделать этот скрипт исполняемым:

~# chmod +x /var/test/test


Добавляем в crontab для автозапуска каждые пол час

~# crontab -e

#Запуск скрипта для контроля внешнего ip и внутренней структуры сети каждые пол час
0,30 * * * * /var/test/test

Проверяем таблицу crontab

~# crontab -l


Установка и настройка LAMP (Linux+Apache+Mysql+Php) в Ubuntu:

~# apt-get install apache2 php5 php5-mysql mysql-server

После скачивания пакетов начнется настройка и вас попросят (точнее посоветуют) ввести пароль для рута для мускульного сервера. Сразу же проверим, как все прошло.

В браузере: http://localhost/, в результате видим, что "It works!" ;)


Фалы конфигурации apache2

/etc/apache2/ - Основная папка
|
|___ /mods-available - доступные модули apache
|
|___ /mods-enabled - подключенные модули apache
|
|___ /sites-available - доступные сайты
|
|___ /sites-enabled - подключенные сайты
|
|____apache2.conf - основной файл конфигурации apache2


В папке sites-available находятся файлы конфигурация виртуальных хостов.

А в папке sites-enabled находятся линки на файлы конфигураций из sites-available.

Это позволяет легко и быстро включать и выключать сайты, путем добавления или удаления линков из sites-enabled.


В apache2 для этого существуют специальные команды:

a2ensite, a2dissite, a2enmod, a2dismod. Всё что они делают - проставляют и удаляют ссылки в соответствующих каталогах.


Настройка mysql: (если это необходимо)
Mysql после установки работоспособна без дополнительных настроек. Так как пользователь базы root без пароля, нужно задать для него пароль:
Проверка базы:

~# mysql -u root -p

~# mysqladmin -u root password myPassword


Включаем модуль rewrite для работы "чистых ссылок"

~# a2enmod rewrite

Использование домашних каталогов

~# a2enmod userdir


Редактируем конфигурацию хостов:

~# nano /etc/apache2/sites-available/default

А именно, изменяем параметр AllowOverride None на AllowOverride All

Перезапускаем web-сервер:

~# /etc/init.d/apache2 restart

Готово.


Добавляем сайты:

~# cd /etc/apache2/sites-available/

~# cp ./default ./service

~# nano /etc/apache2/sites-available/service

<VirtualHost *:80>
     ServerAdmin webmaster@localhost
     DirectoryIndex index.php index.html index.htm # порядок поиска индексных файлов
     DocumentRoot /var/www/service

     <Directory />
         Options FollowSymLinks
         AllowOverride None
     </Directory>
     <Directory /var/www/service/>
         Options Indexes FollowSymLinks MultiViews
         AllowOverride all
         Order allow,deny
         allow from all
     </Directory>

     ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
     <Directory "/usr/lib/cgi-bin">
         AllowOverride None
         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Order allow,deny
         Allow from all
     </Directory>

     ErrorLog /var/log/apache2/error.log

     # Possible values include: debug, info, notice, warn, error, crit,
     # alert, emerg.
     LogLevel warn

     CustomLog /var/log/apache2/access.log combined

     Alias /doc/ "/usr/share/doc/"
     <Directory "/usr/share/doc/">
         Options Indexes MultiViews FollowSymLinks
         AllowOverride None
         Order deny,allow
         Deny from all
         Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>

Файлы с содержанием данного сайта должны находится в дирекктории /var/www/service/

~# mkdir /var/www/service/

Подразумевается, что настноен BIND для этого добавляем запись типа А в соответствующую зону:

~# nano /etc/bind/master/office.at.zone

...
service     A      10.0.0.1
или прописываем в /etc/hosts, этот вариант хуже т.к. сервер сначала патается разрезолвить имя через /etc/resolv.conf, а потом /etc/hosts - возможны тормоза.

Далее не забываем активировать сайт

~# a2ensite service

~# /etc/init.d/apache2 reload


Также для удобства работы с mysql можно устанавливаем phpmyadmin

~# apt-get install phpmyadmin


Samba как файловый сервер с публичным каталогом доступным на запись:

~# apt-get install samba

~# cd /etc/samba/

~# mv smb.conf smb.conf.old


Окно аутентификации возникает в случае совпадения имени пользователя Windows с пользователем зарегистрированным в /etc/passwd

~# nano /etc/samba/smb.conf

[global]
     # Типы кодировок
     unix charset = UTF-8
     dos charset = cp866

     # Рабочая группа
     workgroup = OFFICE.AT

     # Тип авторизации
     security = user

     # Разрешаем только из конкретной сети
     hosts allow = 10.0.0.

     # Мапим на..
     map to guest = Bad User

[share]
     # Путь к каталогу шары
     path = /var/samba

     # Разрешаем общий доступ
     guest ok = yes

     # Разрешаем запись
     read only = no

     # Мапим на..
     force user = nobody

Samba как контроллер домена:

~# apt-get install samba

~# cd /etc/samba/

~# mv smb.conf smb.conf.old

~# nano /etc/samba/smb.conf

[global]
     # Название домена
     workgroup = OFFICE.AT

     # Имя сервера
     netbios name = GATE

     # Описание
     server string = Primary Domain Controller (Samba %v)

     # Разрешить обработку входов в домен
     domain logons = Yes

     # Уровень ОС. Чем выше номер, тем выше вероятность стать главным браузером сети
     os level = 255

     # При запуске устраивает перевыборы с наибольшим шансом для себя
     preferred master = Yes

     # Мой сервер является обозревателем домена
     domain master = Yes

     # Samba сразу берет на себя роль мастер-браузера
     local master = yes

# Параметр определяет диапазон пользовательских идентификаторов, выделяющихся для сопоставления SIDов UNIX
# пользователей SIDам NT пользователей. Этот диапазон идентификаторов не должен пересекаться
# с локальными или NIS пользователями, иначе возможны конфликты.
     #idmap uid = 20000-40000
     #idmap gid = 20000-40000

     # Доменная аутентификация
     security = user

# Перемещаемые профили (если не указать эти пункты пустыми -
# профили у пользователей будут перемещаемые)
     logon path = \\%L\profiles\%U

#---логгинг
     log file = /var/log/samba/%m.log
     # max 50KB per log file, then rotate
     max log size = 1024

#---кодировки
     unix charset = utf8
     dos charset = cp1251
     display charset = cp1251

### Начало файловых шар ###

# в этом каталоге будут размещаться стартовые скрипты logon.bat (если есть)
[netlogon]
     comment = Network Logon Service
     path = /home/samba
     browseable = no
     read only = no

#---перемещаемые профили
[profiles]
     comment = Roaming Profile Share
     path = /home
     browseable = no
     read only = no

#---Фирма
[!!!_ОБЪЕКТЫ]
     #комментарий к ресурсу
     comment = ОБЪЕКТЫ

     #путь к месторасположению ресурсу
     path = /mnt/win_share/!!!_ОБЪЕКТЫ

     # запрещаем пользователям сохранять на сетевом диске файлы с такими расширениями
     #veto files = /*.avi/*.mp3/*.mkv/*.wav/*.wma/*.fly/*.mpg/*.mpeg/*.vob/*.3gp/*.exe/*.reg/
     # говорим удалять эти файлы
     #delete veto files = yes

     # обеспечивает отображение в сети Windows
     browseable = yes

     # разрешаем запись
     writable = yes

     # если этот параметр задан в yes на общем ресурсе, то для подключения к ресурсу не требуется пароль.
     guest ok = yes

     #спрашивать пароль
     #valid users = "@OFFICE.AT\domain users"

     # ниже перечислены параметры отвечающие за создание каталогов и файлов пользователями с правами "777"
     create mask = 0777
     force create mode = 0777
     security mask = 0777
     directory mask = 0777
     force directory mode = 0777
     directory security mask = 0777

[!!!_ПРАЙСЫ]
     #комментарий к ресурсу
     comment = ПРАЙСЫ

     путь к месторасположению ресурсу
     path = /mnt/win_share/!!!_ПРАЙСЫ

     # запрещаем пользователям сохранять на сетевом диске файлы с такими расширениями
     #veto files = /*.avi/*.mp3/*.mkv/*.wav/*.wma/*.fly/*.mpg/*.mpeg/*.vob/*.3gp/*.exe/*.reg/
     # говорим удалять эти файлы
     #delete veto files = yes

     # обеспечивает отображение в сети Windows
     browseable = yes

     # разрешаем запись
     writable = yes

     # если этот параметр задан в yes на общем ресурсе, то для подключения к ресурсу не требуется пароль.
     guest ok = yes

     #спрашивать пароль
     #valid users = "@OFFICE.AT\domain users"

     # ниже перечислены параметры отвечающие за создание каталогов и файлов пользователями с правами "777"
     create mask = 0777
     force create mode = 0777
     security mask = 0777
     directory mask = 0777
     force directory mode = 0777
     directory security mask = 0777

[!!!_СЕРВИС]
     #комментарий к ресурсу
     comment = СЕРВИС

     #путь к месторасположению ресурсу
     path = /mnt/win_share/!!!_СЕРВИС

     # запрещаем пользователям сохранять на сетевом диске файлы с такими расширениями
     #veto files = /*.avi/*.mp3/*.mkv/*.wav/*.wma/*.fly/*.mpg/*.mpeg/*.vob/*.3gp/*.exe/*.reg/
     # говорим удалять эти файлы
     #delete veto files = yes

     # обеспечивает отображение в сети Windows
     browseable = yes

     # разрешаем запись
     writable = yes

     # если этот параметр задан в yes на общем ресурсе, то для подключения к ресурсу не требуется пароль.
     guest ok = yes

     #спрашивать пароль
     #valid users = "@OFFICE.AT\domain users"

     # ниже перечислены параметры отвечающие за создание каталогов и файлов пользователями с правами "755"
     create mask = 0755
     force create mode = 0755
     security mask = 0755
     directory mask = 0755
     force directory mode = 0755
     directory security mask = 0755

#---Шары Boris
[WORK_Boris]
     comment = WORK_Boris
     path = /mnt/win_share/WORK_Boris
     guest ok = yes
     write list = OFFICE.AT\boris
     read list = OFFICE.AT\boris

[WORK_Boris_Office]
     comment = WORK_Boris_Office
     path = /mnt/win_share/WORK_Boris_Office
     guest ok = yes
     write list = OFFICE.AT\boris
     read list = OFFICE.AT\boris

#---мои шары
[INSTALL]
     comment = Софт
     path = /mnt/win_share/INSTALL
     browseable = yes
     guest ok = yes
     create mask = 0755
     force create mode = 0755
     write list = "@OFFICE.AT\domain root"
     force user = nobody
[SOUND]
     comment = Музыка
     path = /mnt/win_share/SOUND
     browseable = yes
     guest ok = yes
     create mask = 0755
     force create mode = 0755
     write list = "@OFFICE.AT\domain root"
     force user = nobody
[vcd]
     comment = Виртуалки
     path = /mnt/win_share/vcd
     browseable = yes
     guest ok = yes
     create mask = 0755
     force create mode = 0755
     write list = "@OFFICE.AT\domain root"
     force user = nobody
[video]
     comment = Видео
     path = /mnt/win_share/video
     browseable = yes
     guest ok = yes
     create mask = 0755
     force create mode = 0755
     write list = "@OFFICE.AT\domain root"
     force user = nobody

[Фото]
     comment = Фото
  &nnbsp;  path = /mnt/win_share/Фото
     browseable = yes
     guest ok = yes
     create mask = 0755
     force create mode = 0755
     write list = "@OFFICE.AT\domain root"
     force user = nobody

#---
[WebServers_копия_15_07_11]
     comment = WebServers_копия_15_07_11
     path = /mnt/win_share/WebServers_копия_15_07_11
     guest ok = yes
     write list = "@OFFICE.AT\domain root"
     read list = "@OFFICE.AT\domain root"

[WebServers_копия_22_07_11]
     comment = WebServers_копия_22_07_11
     path = /mnt/win_share/WebServers_копия_22_07_11
     guest ok = yes
     write list = "@OFFICE.AT\domain root"
     read list = "@OFFICE.AT\domain root"

#---
# Cписок пользователей имеющих доступ к сервису на чтение/запись.
# Если соединяющийся пользователь находится в этом списке тогда,
# он получит доступ на запись независимо от точо установлен параметр read only (только чтение).
# Список может содержать названия группы, используется синтаксис @group.
# Заметьте, что если пользователи одновременно находятся
# в списке только для чтения и в списке на чтение/запись, они получат доступ и на запись.
     write list = "@OFFICE.AT\domain root", OFFICE.AT\boris

# Это список пользователей, которым открыт доступ “только для чтения”.
# Если такой пользователь присоединится к ресурсу — он не получит доступ на запись,
# независимо от того выставлено ли на самом ресурсе “только для чтения”.
     read list = "@OFFICE.AT\domain users", "@OFFICE.AT\domain user"

# Это – список пользователей, которым будут предоставлять административные привилегии на общем ресурсе.
# Это означает, что они работают с файлами как суперпользователь (root).
     admin users = OFFICE.AT\boris

# Если параметр установлен в yes(только для чтения), то пользователь не сможет создавать или изменять файлы в этой директории.
     read only = yes

[upload]
     comment = Обменник для всех, автоматическое удаление
     path = /mnt/win_share/upload
     browseable = yes
     writable = yes
     guest ok = yes
     create mask = 0777
     force create mode = 0777
     write list = "@OFFICE.AT\domain root", "@OFFICE.AT\domain users"
     read list = "@OFFICE.AT\domain root", "@OFFICE.AT\domain users"

Проверяем правильность параметров и создает каталог /home/samba:

~# testparm

~# mkdir /home/samba

Добавляем группы для синхронизации виндовых групп с линуксовыми:

~# net groupmap add ntgroup="Domain Admins" unixgroup=root rid=512 type=d

~# net groupmap add ntgroup="Domain Users" unixgroup=users rid=513 type=d

~# net groupmap add ntgroup="Domain Guests" unixgroup=nogroup rid=514 type=d

Смотрим список грепп:

~# net groupmap list

Рестартуем сервисы самбы:

~# restart smbd

~# restart nmbd

Добавляем пользователя root:

~# smbpasswd -a root

     New SMB password: test
     Retype new SMB password: test

Активизируем пользователя root:

~# smbpasswd -e root

Добавляем пользователя root в группы users,root (не обезательно):

~# usermod -G users,root root

Дабавление виндовых машин:

~# adduser --force-badname --home /tmp --shell /bin/false win2k3$

~# adduser --force-badname --home /tmp --shell /bin/false winxp$

~# adduser --force-badname --home /tmp --shell /bin/false ubuntu$

Добавляем пльзователя user (user должен быть в системе Unix):

~# smbpasswd -a user

~# smbpasswd -e user

~# usermod -G users user


Вводим Unix машины в домен:

     на машине где сервер

~# adduser --force-badname --home /tmp --shell /bin/false ubuntu$

(ubuntu$ - имя машины + $)

~# smbpasswd -a ubuntu$

     New SMB password: ubuntu
     Retype new SMB password: ubuntu

~# smbpasswd -e ubuntu$


     на клиенте

Если было установлено samba winbind, то делаем, если не установлено пропускаем:

~# stop smbd

~# stop nmbd

~# winbind stop


~# apt-get purge samba winbind

~# apt-get autoremove


~# rm -vf /var/cache/samba /var/lib/samba


Устанавливаем и настраиваем samba winbind:

~# apt-get install winbind

~# cd /etc/samba

~# mv smb.conf smb.conf.old

~# nano /etc/samba/smb.conf

[global]      workgroup = OFFICE.AT
     security = DOMAIN
     winbind use default domain = yes
     winbind enum users = yes
     winbind enum groups = yes
     winbind cache time = 36
     idmap uid = 20000-40000
     idmap gid = 20000-40000
     template homedir = /home/%U
     template shell = /bin/bash

~# /etc/init.d/winbind restart

~# nano /etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd: files winbind
group: files winbind
shadow: files winbind

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis

~# net rpc join -U root

     Enter root's password: test
     Joined domain OFFICE.AT

~# /etc/init.d/winbind restart

~# ntlm_auth --username=user

     password: test
     NT_STATUS_OK: Success (0x0)

Информация по пользователям и группам:

~# wbinfo -u

~# wbinfo -g


Настройка Windows 7 для подключения к домену управляемому Samba в качестве PDC:

Заметка посвящена настройке Windows 7 для подключения к Samba 3 в качестве контроллера домена (PDC).

Для нормальной работы необходимо сделать несколько исправлений в реестре:

     [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]
     DomainCompatibilityMode=dword:00000001
     DNSNameResolutionRequired=dword:00000000

     [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters]
     RequireSignOrSeal=dword:00000001
     RequireStrongKey=dword:00000001

     [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces]
     Domain=example.ru
     NV Domain=example.ru

Перезагружаемся и производим регистрацию в домене.

© Все права защищены 2011-2018