Обновляем репозитарии:
~# 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
Дополнительно:
- Браузер Links
~# apt-get install links
запуск
~# links
- Программа для просмотра содержимого каталогов в виде дерева tree
~# apt-get install tree
запуск
~# tree /директория/поддиректроия/
- Сетевая статистика vnstat
~# apt-get install vnstat
создаем базы данных для внешней и внутренней сетевой
~# vnstat -u -i eth0
~# vnstat -u -i eth1
просмотр в режиме реального времени
~# vnstat –l
- Доступ к шаре Windows из UBUNTU
~# apt-get install smbclient
смотрим шару на виндовой машине
~# smbclient -L netbios-name
теперь монтируем Windows ресурс на нашу файловую систему следующей командой:
~# mount -t cifs //winmachine/testshare /windows/winshare
- curl - он позволяет загружать данные по одному из 21 поддерживаемых протоколов,
можно использовать, например, для анализа ответов веб-серверов или HTTP заголовков.
~# apt-get install curl
запуск
~# curl -I ya.ru
- htop представляет собой довольно мощную альтернативу стандартной утилите top.
Отличается он в первую очередь более удобным интерфейсом и возможностью быстро
настроить отображение информации о системных ресурсах.
~# apt-get install htop
запуск
~# htop
Варианты скрипта для контроля внешнего 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
Перезагружаемся и производим регистрацию в домене.