воскресенье, 29 июля 2012 г.

DNS (bind9) на Ubuntu 12.04 LTS


Задача: запустить DNS-сервер (bind9) на Ubuntu 12.04 LTS для
использования в локальной сети

Источники:

Выполнение:
I. Сначала поставим и настроим самый простой DNS-сервер.
1. Устанавливаем bind9:
sudo apt-get install bind9

2. Предположим, что наша зона DNS будет
называться jc.com , наш DNS-сервер имеет IP-адрес 192.168.5.1
Редактируем файл /etc/bind/named.conf.local :
sudo gedit /etc/bind/named.conf.local

Пишем:

zone "jс.com" {
type master;
file "/etc/bind/jс.com";};
zone "5.168.192.in-addr.arpa." {
type master;
file "/etc/bind/192.168.5.rev";};

Это две записи зоны (zone) для зоны прямого просмотра (jс.com) и обратного (5.168.192.in-addr.arpa.). Первая зона служит для разрешения IP-адреса по имени,
а вторая - наоборот. type master означает, что наш DNS сервер будет первичным для зоны jc.com. Запись file "/etc/bind/jс.com" указывает на расположение файла зоны.

3. Редактируем файл зоны прямого просмотра /etc/bind/jс.com:
sudo gedit /etc/bind/jс.com

Пишем:

$TTL 3h
@ IN SOA ubuntu.jc.com. root.jc.com 201207291 1d 12h 1w 3h
IN NS ubuntu.jc.com.
ubuntu IN A 192.168.5.1
www IN A 192.168.5.10

Во второй строке ubuntu.jc.com - имя корневого мастер-сервера зоны jc.com ,
root.jc.com - e-mail администратора зоны jc.com (e-mail пишется без @)
201207291 - серийный номер файла зоны
1d - период обновления
12h - повтор каждые 12 ч.
1w - период, в течение которого хранится информация
3h - время жизни (TTL) записи
IN NS ubuntu.jc.com. - задаем имя DNS-сервера, отвечающего за зону jc.com
ubuntu IN A 192.168.5.1 - задаем IP-адрес DNS-сервера, отвечающего за зону jc.com (это и есть наш сервер)
www IN A 192.168.5.10 - задаем IP-адрес хоста www.jc.com , который, к примеру, находится в локальной сети, и на нем запущен Apache.

4. Редактируем файл зоны обратного просмотра /etc/bind/192.168.5.rev:
sudo gedit /etc/bind/192.168.5.rev

Пишем:

$TTL 3h
@ IN SOA ubuntu.jc.com. root.jc.com 201207291 1d 12h 1w 3h
@ IN NS ubuntu.jc.com.
1 PTR ubuntu.jc.com.
10 PTR www.jc.com.

Запись 1 PTR ubuntu.jc.com. означает, что хост с именем ubuntu.jc.com имеет
IP-адрес 192.168.5.1 , а www.jc.com – 192.168.5.10

5. Перезапускаем bind9 :
sudo service bind9 restart

5.1 Скорее всего в /etc/resolv.conf сейчас прописан IP-адрес DNS-сервера вашего провайдера. Для того, чтобы проверить работу нашего DNS-сервера, закомментируем в данном файле все строки и добавим nameserver 127.0.0.1

6. Проверяем работу bind9, а именно зону прямого просмотра :
nslookup ubuntu.jc.com

Если все работает, результат должен быть таким:

Server: 127.0.0.1
Address: 127.0.0.1#53

Name: ubuntu.jc.com
Address: 192.168.5.1

7. Проверяем работу bind9, а именно зону обратного просмотра :
nslookup 192.168.5.10

Если все работает, результат должен быть таким:

Server: 127.0.0.1
Address: 127.0.0.1#53

10.5.168.192.in-addr.arpa name = www.jc.com

8. Если появляются ошибки, то смотрим /var/log/syslog:
 cat /var/log/syslog | grep jc.com | tail

II. Теперь можно сделать дополнительные настройки DNS-серверу.

9. Например, можно указать, на каких сетевых интерфейсах bind будет слушать свой 53 порт:
sudo gedit /etc/bind/named.conf.options

в разделе options дописываем строку

listen-on { 192.168.5.1; 127.0.0.1;};

и перезапустим bind9:
sudo service bind9 restart

Таким образом, bind будет принимать запросы от самого сервера и из локальной сети.

10. -

11. Настроим логирование. Пусть логи будут лежать в /var/log/named/
Создаем этот каталог:
sudo mkdir /var/log/named/
sudo chown bind:bind /var/log/named/

Теперь правим /etc/bind/named.conf.options , а именно дописываем в конец файла следующий текст:

logging {
 channel "xfer" {
 file "/var/log/named/xfer.log" versions 3 size 10m;
 print-time yes;
 print-severity yes;
 severity info;
 };
channel "lame" {
 file "/var/log/named/lamers.log" versions 2 size 10m;
 print-time yes;
 print-severity yes;
 severity info;
 };
channel "config" {
 file "/var/log/named/conf.log" versions 3 size 10m;
 print-time yes;
 print-severity yes;
 severity info;
 };
channel "security" {
 file "/var/log/named/security.log" versions 3 size 10m;
 print-time yes;
 print-severity yes;
 severity info;
 };
channel "queries" {
 file "/var/log/named/queries.log" versions 3 size 10m;
 print-time yes;
 print-severity yes;
 severity info;
 };

//События связанные с получением зон
category "xfer-in" { "xfer"; };
//События связанные с передачей зон
category "xfer-out" { "xfer"; };
//События связанные с изменениями в зонах
category "notify" { "xfer"; };
//События связанные с некорректным делегированием
category "lame-servers" { "lame"; };
//События связанные с обработкой файла конфигурации
category "config" { "config"; };
//События связанные с запрещением/разрешением запросов
category "security" { "security"; };
//Запросы к серверу
category "queries" { "queries"; }; 
//Если для события канал не определен
category "default" { "default_syslog"; "default_debug";};
};

создаем означенные выше файлы логов и сразу меняем их владельца на bind:
cd /var/log/named
sudo touch xfer.log lamers.log conf.log security.log
sudo chown bind:bind xfer.log lamers.log conf.log security.log

Теперь перезапускаем bind:
sudo service bind restart

12. Сделаем еще несколько настроек. Снова правим /etc/bind/named.conf.options , а именно раздел options. В него добавляем:

version "DNS Server";
//если не планируется использование IPv6, погда строку listen-on-v6 { any; }; заменяем на
listen-on-v6 { none; };
//максимальное число параллельно обслуживаемых клиентов
recursive-clients 100
//указание DNS-серверов, к которым будет обращаться ваш DNS за разрешением имен
forwarders {первый dns-сервер провайдера; второй dns-сервер провайдера;};
forward only;

Конец. Если есть предложения по улучшению инструкции, пишите.

воскресенье, 22 июля 2012 г.

Samba на Ubuntu 12.04 LTS

Задача: поставить Samba на Ubuntu 12.04 LTS
Использованные источники:
1. http://www.xima4.com/?p=250
2. http://jedi-linux.blogspot.com/2007/12/swat-kubuntu.html
3. http://www.samba.org.ua/articles/?section=2&articleid=108
Выполнение:
1. Устанавливаем samba : sudo apt-get install samba
После установки она уже будет работать, и принтеры будут видны в сети.
2. Правим конфигурационный файл: sudo gedit /etc/samba/smb.conf
В простейшем случае содержимое может выглядеть так:

[global]
server string = %h server (Samba, Ubuntu)
# 192.168.5.1/24 - локальная сеть
interfaces = 192.168.5.1/24
map to guest = Bad User
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
panic action = /usr/share/samba/panic-action %d
idmap config * : backend = tdb
comment = Ubuntu 12.04 LTS

[public]
comment = Public Directory
path = /home/JC/dir1
guest ok = yes
read only = No

[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
print ok = Yes
browseable = No

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers

При этом создается общая папка public, к которой имеют доступ на чтение и запись все (guest ok = yes).
3. Создадим указанную выше папку и позволим другим пользователям читать и писать в нее: 
mkdir /home/JC/dir1
chmod o+rwx /home/JC/dir1
4. Перезапустим samba : sudo service samba restart
5. Теперь можно попробовать с Windows-машины обратиться к общей папке.
6. Если доступ планируется предоставлять определенному пользователю, к примеру user, то в файле /etc/samba/smb.conf изменяем раздел [public]:
[public]
comment = Public Directory
path = /home/JC/dir1
#guest ok = yes
valid users = user
read only = No
6. Далее создаем в samba пользователя user : sudo smbpasswd -a user
7. Перезапустаем samba : sudo service samba restart
Теперь при доступе к папке public на экране клиента отобразится окно с запросом на ввод имени и пароля.
8. Есть возможность конфигурировать samba через браузер, если установить SWAT : sudo apt-get install swat
9. Для того, чтобы можно было осуществлять конфигурацию samba через SWAT, нужно пользователю root задать пароль, т.к. в SWAT нужно логинится только под ним.
sudo passwd root
10. В адресной строке браузера пишем: localhost:901

Если данная инструкция оказалась полезной для вас, напишите, пожалуйста, об этом в комментарии.

суббота, 21 июля 2012 г.

IDS snort на Ubuntu 12.04 LTS

Задача: установить IDS snort на Ubuntu 12.04 LTS
Использованные источники:

1. http://www.opennet.ru/base/sec/snort_ids.txt.html
2. http://snortgroup.ru/node/26?page=1
3. http://snortgroup.ru/articles
4. https://www.snort.org/snort-rules/?
5. http://rus-linux.net/vitls.php?name=/vitls/x7/xak(07)-ids.html


Выполнение:
1. Устанавливаем snort: sudo apt-get install snort
2. Запускаем (обязательно с правами root): sudo service snort start
3. Для обновления правил snort идем на https://www.snort.org/snort-rules/? и качаем последнюю версию правил из раздела Registered user release, предварительно зарегистрировавшись на этом сайте (https://www.snort.org/signup).
4. Разархивируем скачанный архив и копируем каталоги rules, so_rules и preproc_rules в /etc/snort :

sudo cp -R ./rules/ /etc/snort/
sudo cp -R ./so_rules/ /etc/snort/
sudo cp -R ./preproc_rules/ /etc/snort/

5. Перезапускаем snort: sudo service snort restart
6. Читаем man по настройке (http://www.opennet.ru/base/sec/snort_ids.txt.html)

вторник, 17 июля 2012 г.

Socks (Dante) на Ubuntu 12.04 LTS

Задача: поднять socks (Dante) на Ubuntu 12.04 LTS
Использованные источники:
1. http://www.tux.in.ua/articles/1631
2. https://bugs.launchpad.net/ubuntu/+source/dante/+bug/816153

Выполнение:
1. Устанавливаем Dante: sudo apt-get install dante-server
2. Редактируем конфигурационный файл dante : sudo gedit /etc/danted.conf
logoutput: syslog /var/log/danted.log

internal: eth1 port = 1080
external: eth1
method: none
client pass {
from: 192.168.5.0/24 port 1-65535 to: 0.0.0.0/0
log: connect disconnect iooperation
}

pass {
from: 192.168.5.0/24 to: 0.0.0.0/0
command: connect udpassociate
log: connect disconnect iooperation
}

eth1 - интерфейс, который смотрит в локальную сеть.
3. Пробуем запустить: sudo /usr/sbin/danted -D
Если ругается на файл /usr/lib/i386-linux-gnu/libc.so ,то делаем так: sudo ln -s /lib/i386-linux-gnu/libc.so.6 /lib/i386-linux-gnu/libc.so
Снова пробуем: sudo /usr/sbin/danted -D
ошибок быть не должно
3.1 Проверяем, слушается ли порт:  netstat -nlpA inet | grep danted
Результат должен быть таким:
tcp        0      0 <ваш ip адрес>:1080        0.0.0.0:*               LISTEN      /danted
4. При необходимости нужно настроить iptables. Сейчас для удобства разрешим все всем:
sudo iptables -f
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
5. Пробуем с какого-нибудь компьютера локальной сети использовать socks, смотрим логи: gedit /var/log/danted.log

суббота, 14 июля 2012 г.

Сервер NFS на Ubuntu 12.04 LTS

Задача: установить и настроить сервер NFS (network file system)
Реализация взята с http://www.xima4.com/?p=184
Выполнение:
1. Устанавливаем сервер NFS: sudo apt-get install nfs-kernel-server nfs-common
2. Настраиваем сервер NFS: sudo gedit /etc/exports
Приведу самый простой пример настройки

/home/user/Documents (rw)
/home/user/Desktop (ro)

Т.о. каталог /home/user/Documents будет доступен всем для чтения и записи, а /home/user/Desktop - только для чтения.
3. Перезапускаем NFS сервер: sudo  /etc/init.d/nfs-kernel-server restart
4. Проверим как работает. Попробуем примонтировать /home/user/Documents в, к примеру, /home/user/dir1 : sudo mount -t nfs -o timeo=30 localhost:/home/user/Documents /home/user/dir1
5. Размонтируем: sudo umount /home/user/dir1

О том, как сделать гибкую настройку NFS читать в вышеприведенной статье.

DHCP сервер на базе Ubuntu 12.04 LTS

Задача: запустить DHCP сервер в локальной сети
Использованные источники: http://www.sergeysl.ru/freebsd-isc-dhcp-server/
Выполнение:
1. Сносим network-manager: sudo apt-get purge network-manager
2. Конфигурируем сеть: sudo gedit /etc/network/interfaces
содержимое конфигурационного файла должно выглядеть примерно так:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.5.1
netmask 255.255.255.0
gateway 192.168.5.2
broadcast 192.168.5.255

При этом eth0 смотрит в Интернет, eth1 - в локальную сеть.
3. Перезапускаем сеть: sudo /etc/init.d/networking restart

4. Ставим isc-dhcp-server: sudo apt-get install isc-dhcp-server
5. Задаем сетефой интерфейс, на котором будет работать isc-dhcp-server: sudo gedit /etc/default/isc-dhcp-server
содержимое конфигурационного файла должно выглядеть так:
INTERFACES="eth1"
6. Настраиваем isc-dhcp-server: 
sudo gedit /etc/dhcp/dhcpd.conf
содержимое конфигурационного файла должно выглядеть примерно так:
ddns-update-style none;
authoritative;
log-facility local7;

subnet 192.168.5.0 netmask 255.255.255.0 {
range 192.168.5.10 192.168.5.20;
option routers 192.168.5.1;
option broadcast-address 192.168.5.255;
option domain-name "domain.org";
option domain-name-servers 192.168.5.1;
default-lease-time 21600;
max-lease-time 28800; }
7. Для удобства сделаем так, чтобы логи isc-dhcp-server писались не в /var/log/syslog , а в /var/log/dhcpd.log : 
sudo touch /var/log/dhcpd.log
sudo gedit /etc/rsyslog.d/50-default.conf
в конфигурационный файл дописываем: local7.* /var/log/dhcpd.log
8. Перезапускаем rsyslog: sudo /etc/init.d/rsyslog restart
9. Запускаем isc-dhcp-server :
sudo dhcpd stop
sudo dhcpd start
10. По команде sudo dhcpd должно выводится следующее:

Internet Systems Consortium DHCP Server 4.1-ESV-R4
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Wrote 1 leases to leases file.

No subnet declaration for eth0 (192.168.80.129).
** Ignoring requests on eth0.  If this is not what
   you want, please write a subnet declaration
   in your dhcpd.conf file for the network segment
   to which interface eth0 is attached. **

Listening on LPF/eth1/00:0c:29:aa:a3:86/192.168.5.0/24
Sending on   LPF/eth1/00:0c:29:aa:a3:86/192.168.5.0/24
Sending on   Socket/fallback/fallback-net