Ubuntu Server

Установка дистрибутива Ubuntu Server

Все процедуры по установке и настройке сервера я буду проводить на виртуальной машине VirtualBox. Установка на реальной машине ничем не отличается от описанной мной установки.
Для установки сервера я выбрал дистрибутив Ubuntu Server 11.10 (Oneiric Ocelot), ставить буду на виртуальную машину с такими параметрами:
ОЗУ: 256 Мб.
Процессор: одноядерный
Видео: 12 Мб.
Привод: SATA винчестре 15 Гб.
Сеть: 1. Сетевой мост на внешнюю сетевую карту (для интернет подключения)
       2. Сетевая карта смотрящая в локальную сеть
Как видите по характеристикам, была выбрана очень слабая машина, но для стабильной работы нашего сервера, этих характеристик вполне достаточно.

Установка Ubuntu Server

После загрузки компьютера с установочного диска Ubuntu Server, выбираем язык установки «Русский«, нажимаем «Установить Ubuntu Server«.
В окне выбора местоположения, выбираем страну. Так как я являюсь жителем Украины, выбираю именно её (Выбор страны никак не повлияет на работу сервера в дальнейшем, так что спокойно выбирайте ту страну, в которой вы живете).
На предложение настроить раскладку клавиатуры, отвечаем «Нет«, страна для раскладки — Русская, раскладка — Русская. Способ переключения клавиатуры оставляем по умолчанию, Alt+Shift.
В окне настроек сетевого интерфейса выбираем eth0, эта сетевая карта будет использована для подключения интернета. Далее нам нужно придумать и ввести имя нашего сервера, я его назвал «srv». 
В окне «Разметка дисков«, я выбрал «Авто — использовать весь диск«. В следующем окне выбираем используемый нами диск (в моем случае, это один диск на 15 гб.). После эти манипуляций вам нужно будет подтвердить свои действия, нажимаем «Да«.
Далее вам следует ввести имя пользователя и имя учётной записи. Я ввел оба имени «yos«, после чего вам следует придумать и ввести пароль. На предложение «Зашифровать каталог» я ответил «Нет«, если же вы будете настраивать сервер для реальной работы, можете зашифровать.
В окне менеджера пакетов вам будет предложено вписать прокси, если вы не используете прокси, просто нажмите клавишу Enter.
В окне настроек «Управления обновлением системы«, выбираем «Без автоматического обновления«. Мало ли как пройдет автоматическое обновление… Сомневаюсь что вы обрадуетесь после того как вся система упадет после обновления.
В окне «Выбор программного обеспечения«, я выбрал только «Open SSH server«. Все остальные пакеты мы будем устанавливать вручную.
На предложение установить загрузчик Grub в загрузочную область нажимаем «Да«. После установки загрузчика, программа установки нас обрадует сообщением про удачную установку!
Вот и все! Наш сервер установлен и готов к работе. Надеюсь ничего сложного?

Первоначальная настройка сервера Ubuntu Server

В первую очередь после того как мы войдем под указанными ранее логином и паролем, нам нужно активизировать пользователя root, для этого мы сначала присвоим ему пароль (по умолчанию у пользователяroot отсутствует пароль):
sudo passwd root
сначала вводим пароль текущего пользователя, затем два раза новый пароль рута.
Для того чтобы войти под пользователе root, вводим в командной строке:
su -
Далее нам нужно поменять настройки сети. Вводим в командной строке:
nano /etc/network/interfaces
и вносим настройки обеих сетевых карт, выглядеть оно должно так:
auto eth0
iface eth0 inet static
address 172.22.15.109
netmask 255.255.0.0
gateway 172.22.0.1
auto eth1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0
В данном случае сетевая карта eth0 будет смотреть наружу и получать интернет, а карта eth1, будет смотреть в локальную сеть. У вас данные скорее всего будут другими. Вам следует вводить свои данные.
После того как будут внесены настройки, сохраняем файл (Ctrl+O и Ctrl+X для выхода из файла) и пере запускаем сеть командой:
/etc/init.d/networking restart
После того как сеть будет пере запущена, проверяем настройки сети командой ifconfig, вы должны увидеть следующее:
eth0 Link encap:Ethernet HWaddr 08:00:27:38:48:53
inet addr:172.22.15.109 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::a00:27ff:fe38:4853/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:26706 errors:0 dropped:0 overruns:0 frame:0
TX packets:9626 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:23093590 (23.0 MB) TX bytes:856548 (856.5 KB)
eth1 Link encap:Ethernet HWaddr 08:00:27:a9:85:68
inet addr:192.168.10.1 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fea9:8568/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:2340 (2.3 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Отлично! Сеть настроена, теперь можно приступать к следующим этапам. А следующим этапом будет установка и настройка Putty для удаленного подключения к серверу, посредством ssh. Делается это для удобства ибо не всегда есть возможность подключится к серверу напрямую.

Настройка Putty для подключения к серверу

Для этого качаем PuTTY, устанавливаем и настраиваем на наш сервер. Настройки можно увидеть ниже на скриншотах:
Подключаемся, проверяем что подключение прошло успешно.

Установка DHCP на Ubuntu Server 11.10

Заходим на сервер с правами пользователя root
su -
Устанавливаем пакет DHCP сервера
aptitude install isc-dhcp-server
Если при установке вы увидите ошибку:
Generating /etc/default/isc-dhcp-server…
* Starting ISC DHCP server dhcpd * check syslog for diagnostics.
                                                                                                                                                                      [fail]
invoke-rc.d: initscript isc-dhcp-server, action «start» failed.
Обрабатываются триггеры для libc-bin …
ldconfig deferred processing now taking place
не пугайтесь, это из-за того что у нас пока что не введены корректные настройки.
В первую очередь я укажу на какой интерфейс должен работать DHCP сервер, открываем файл
nano /etc/default/isc-dhcp-server
и в строке INTERFACES=»" укажите свою сетевую карту которая работает в локальной сети. В моем случае это eth1
INTERFACES=»eth1″
Теперь самое время перейти к настройке конфигурационного файла DHCP сервера
nano /etc/dhcp/dhcpd.conf
В связи с тем что наш DHCP сервер будет единственным в сети, снимаем знак # перед authoritative;
authoritative;
Следующие строки следует закомментировать, так как эти настройки мы будем вносить в другом месте файла:
default-lease-time 600; 
max-lease-time 7200;
теперь нам следует ввести данные нашей подсети. Диапазон адресов у нас будет 192.168.10.10 — 192.168.10.254, маска подсети 255.255.255.0 (24bit), в качестве шлюза и DNS сервера выступает наш сервер 192.168.10.1, время аренды указано в секундах.
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.254;
option domain-name-servers 192.168.10.1;
option domain-name "example.org";
option routers 192.168.10.1;
option broadcast-address 192.168.10.255;
default-lease-time 604800; max-lease-time 604800; }
сохраняем изменения, закрываем и перезапускаем DHCP
/etc/init.d/isc-dhcp-server restart
Если все прошло успешно после перезапуска DHCP в командной строке увидим ответ [  ОК  ]

Проверка DHCP на компьютере в локальной сети

Для проверки работоспособности DHCP запускаем машину которая находится в одной подсети с нашим сервером,  указываем в настройках подключения к сети «Получать IP адрес автоматически» и проверяем присвоился ли IP адрес автоматически.
Видим что адрес присвоен, сеть работает!
Если адрес к клиентсокй машине не присвоился, нужно смотреть в логи:
nano /etc/dhcp/dhcpd.conf
Если вам нужно зарезервировать определенный адрес за клиентской машиной, вам не нужно бегать к машине и вручную его прописывать. Для этого можно воспользоваться файлом dhcpd.conf.
nano /etc/dhcp/dhcpd.conf
В файл вносим:
host localpc {
hardware ethernet 08:00:27:d9:3a:48;
fixed-address 192.168.10.15;
}
localpc — имя компьютера
hardware ethernet — мак адрес клиентской машины
fixed-address — адрес который нужно зарезервировать
и перезапускаем DHCP сервер
/etc/init.d/isc-dhcp-server restart
Для проверки, введем в командной строке клиентского компьютера команду (для ОС Windows)
ipconfig /renew
и убедимся что привяжется новый IP адрес
Получилось!
Для того чтобы посмотреть какие IP адреса были выданы, заходим в
/var/lib/dhcp/dhcpd.leases

Настраиваем Bind9

Открываем конфигурационный файл
nano /etc/bind/named.conf.options
добавляем в уже имеющийся код, следующее
forwarders {
8.8.8.8;
};
listen-on {
127.0.0.1;
192.168.10.1;
};
Что это значит:
forvarders - вышестоящий DNS сервер, используется для переадресации запроса в случае если URL не найден в вашей базе (8.8.8.8  DNS google)
listen-on - адреса которые будут обслуживаться нашим DNS сервером (локалхост и сетевая карта смотрящая в локальную сеть)
В общем файл named.conf.options должен выглядеть вот так:
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.
// forwarders {
// 0.0.0.0;
// };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
forwarders {
8.8.8.8;
};
listen-on {
127.0.0.1;
192.168.10.1;
};
};
Редактируем файл name.conf.local
nano /etc/bind/named.conf.local
Добавляем туда следующий код:
key DHCP_UPDATER {
 algorithm HMAC-MD5.SIG-ALG.REG.INT;
 secret "4GD8OIb8pZk4vAueACAfUQ=="; 
};
zone "example.net" IN {
     type master;
     file "/var/lib/bind/forward.db";
     allow-update { key DHCP_UPDATER; };
};
zone "10.168.192.in-addr.arpa" IN {
     type master;
     file "/var/lib/bind/reverse.db";
     allow-update { key DHCP_UPDATER; };
};
Что это значит:
key DHCP_UPDATER — информация о ключе, который мы с вами записывали (в кавычки вам нужно вписать свой ключ)
zone «example.net» — информация о зоне использования DNS, указан тип — master, путь к файлу хранения данных зоны, обновления файла разрешено с использованием ключа.
zone «10.168.192.in-addr.arpa» — создание зоны обратного просмотра
Теперь создадим сами файлы в которых будут храниться данные зоны example.net
Создадим файл настроек зоны прямого просмотра forward.db
nano /var/lib/bind/forward.db
добавим в него следующий код:
$TTL 86400      ;       1 day
example.net.    IN      SOA     srv.example.net. admin.example.net. (
20110103        ; Serial
10800           ; Refresh
3600            ; Retry
604800          ; Expire
86400           ; Minimum TTL
)
IN      NS      srv.example.net.
IN      A       192.168.10.1
localhost       IN      A       127.0.0.1
srv01           IN      A       192.168.10.1
Рассмотрим подробнее… Зона example.net, в которой есть DNS сервер SRV с IP адресом 192.168.10.1.
Остальные записи будут создаваться DHCP сервером в автоматическом режиме.
Теперь нам нужно создать файл зоны обратного просмотра reverse.db
nano /var/lib/bind/reverse.db
Пишем туда следующее:
$TTL 86400      ;       1 day
example.net.                       IN                SOA              srv01.example.net.            admin.example.net.    (
20110103                             ; Serial
10800                                    ; Refresh
3600                                       ; Retry
604800                                 ; Expire
86400                                    ; Minimum TTL
)
IN               NS            srv01.example.net.
IN               A              192.168.10.1
localhost                             IN               A              127.0.0.1
srv01                                    IN               A              192.168.10.1
Надеюсь все понятно…
Сохраняем, закрываем, перезапускаем Bind
/etc/init.d/bind9 restart
теперь нам нужно указать суфиксы локальной DNS в файле /etc/resolv.conf
nano /etc/resolv.conf
добавляем в начало файла:
domain example.net
search example.net
nameserver 127.0.0.1
Сохраняем, закрываем, перезапускаем сеть:
/etc/init.d/networking restart
Проверяем определился ли наш сервер
nslookup srv
в ответ увидим что то вроде этого
root@srv:~# nslookup srv
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: srv.example.net
Address: 192.168.10.1
отлично! Работает

Теперь займемся настройкой динамического обновления зон DHCP сервером

В первую очередь внесем изменения в конфигурационный фал DHCP
nano /etc/dhcp/dhcpd.conf
и поменяем option domain-name с example.org на example.net (подразумевается что настройка DHCP производилась по моей статье)
также в файл вносим следующее
ddns-update-style interim;
update-static-leases on;
key DHCP_UPDATER {
algorithm hmac-md5;
secret «4GD8OIb8pZk4vAueACAfUQ==»;
}
zone example.net. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
zone 10.168.192.in-addr.arpa. {
primary 127.0.0.1;
key DHCP_UPDATER;
}

в поле secret вам нужно внести свой ключ, полученный ранее.
в общем увас должно получиться такое
ddns-update-style interim;
update-static-leases on;
key DHCP_UPDATER {
algorithm hmac-md5;
secret «4GD8OIb8pZk4vAueACAfUQ==»;
}
zone example.net. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
zone 10.168.192.in-addr.arpa. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.254;
option domain-name-servers 192.168.10.1;
option domain-name «example.net»;
option routers 192.168.10.1;
option broadcast-address 192.168.10.255;
default-lease-time 604800;
max-lease-time 604800;
}
Больше нам ничего не нужно менять.
Перезапускаем DNS сервер
/etc/init.d/bind9 restart
Перезапускаем DHCP сервер
/etc/init.d/isc-dhcp-server restart

Проверяем что у нас получилось

Включаем клиентский ПК, в нашем случае это машина с winXP на борту, которая находится в локальной сети с сервером.
выполняем запрос
nslookup test1
(test1 — имя машины)
в ответ должны увидеть следующее
здесь мы видим что машина получила IP адрес от DHCP сервера и имя от DNS сервера. Значит все нормально работает.

Установка кэширующего прокси сервера SQUID

Логинимся на сервере с правами суперпользователя
su -
устанавливаем squid
apt-get install squid
после установки открываем файл /etc/squid/squid.conf и приступаем к настройке
nano /etc/squid/squid.conf
Так как мы будем настраивать прозрачный прокси (на клиентских машинах нам не нужно будет указывать в настройках прокси сервер), в строке http_port 3128, допишем transparent
http_port 3128 transparent
раскоментируем строку, указывающую путь к кэшу и настроим как показано ниже
cache_dir ufs /var/spool/squid 4096 32 256
указываем настройки сети в которой будет работать прокси, для этого раскоментируем строку в которой указана ваша подсеть
#acl localnet src 10.0.0.0/24 # RFC1918 possible internal network 
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network 
acl localnet src 192.168.10.0/24 # RFC1918 possible internal network
разрешаем доступ к прокси из внутренней сети
http_access allow localnet
указываем лимит использования памяти
memory_pools on
memory_pools_limit 50 MB
50 мб. вполне достаточно
в случае возникновения ошибок, чтобы видеть их на русском языке, указываете следующее
error_directory /usr/share/squid/errors/Russian-koi8-r
сохраняем файл, закрываем, перестраиваем кэш
/usr/sbin/squid -z
перезапускаем squid
/etc/init.d/squid restart
Готово! Чтобы проверить, нужно указать в настройках браузера клиентского компьютера, прокси 192.168.10.1и порт 3128. Если все работает нормально, движемся далее…
Так как мы настраиваем прозрачный прокси, чтобы не бегать к каждой машине и не указывать прокси вручную, нам следует завернуть весь трафик из сети на прокси сервер. Для этого открываем /etc/rc.local
nano /etc/rc.local
и вносим следующее
iptables -t nat -A PREROUTING -i eth1 ! -d 192.168.10.0/24 -p tcp -m multiport —dport 80,8080 -j DNAT —to 192.168.10.1:3128
таким образом весь трафик с 80 и 8080 портов будет автоматически направлен через прокси сервер. Для проверки, перезапускаем сеть
sudo /etc/init.d/networking restart
убираем на клиентской машине галочку с прокси сервера, обновляем страницу и убеждаемся что все работает.

Контент-фильтр Dansguardian для работы с SQUID

Продолжая тему настройки кэширующего, прозрачного прокси сервера SQUID, рассмотрим возможность фильтрации отображаемого контента. Для многих учреждений, остро стоит вопрос фильтрации контента от «клубнички» и экстремистских сайтов до блокировки социальных сетей. Ниже подробно опишем установку и минимальную настройку контент-фильтра dansguardian. За основу у нас взят сервер на базе Ubuntu Server 11.10, установленный по ранее описанным статьям. Dansguardian бесплатен для некоммерческого использования, но и стоимость его покупки не велика, подумайте, ведь лучшие Подарки для мужчин не только станки для бритья!
Логинимся на сервере под учётной записью root и устанавливаем саму программу
apt-get install dansguardian
открываем конфигурационный файл и приступаем к настройке
nano /etc/dansguardian/dansguardian.conf
во первых нужно закомментировать строку «UNCONFIGURED — « указав тем самым что настройки у нас будут не по умолчанию.
Значение reportinglevel = 3 можно изменять в соответствии с ниже приведенным списком значений
-1 — Скрытый режим (блокировка не проводится, но ведется логирование)
0 — Будет вылетать сообщение «Доступ заблокирован»
1 — Выводится страница без показа запрещенных фраз,
2 — Полный отчет
3 — Выводится HTML шаблон страницы запрета
По умолчанию стоит значение — 3. Нас оно вполне утраивает
Если вы оставите значение reportinglevel = 3, вам следует указать язык шаблона — Русский
language = ‘russian-koi8-r’
раскомментируем строку, указывающую путь к логу
loglocation = ‘/var/log/dansguardian/access.log’
Далее нам следует указать сетевой интерфейс и порт которые используются в качестве прокси
filterip = 192.168.10.1
filterport = 8081
если ваш прокси сервер использует порт 3128, тогда параметры прокси менять не нужно.
Запускаем dansguardian
/etc/init.d/dansguardian start
Для проверки работы контент-фильтра, следует указать на машине клиента IP адрес прокси и порт 8081
Открываем поиск гугла и вводим сомнительный запрос, например tits (знатоки английского языка поймут ;)).
Переходим по одной из первых предложенных ссылок (в моем случае, это группа в контакте посвященная одной из самых красивых мест женского тела), тут же страница была заблокировано и показано сообщение:
если перейдем по предложенной ссылке из википедии, контент-фильтр спокойно нас пропустит и даст прочитать нужную нам информацию. Отлчино! Dansguardian работает, но на этом наша настройка не закончена.
В связи с тем что мы указали адрес и порт прокси вручную, нам этот метод не подходит. Так как это в первую очередь не удобно (учитывая что в сети более 50 компьютеров), но и не безопасно (в любой момент пользователь может обойти контент-фильтр указав вместо порта 8081 порт 3128). Для нам нужно указать порт контент-фильтра в настройке «заворачивания» трафика. Откроем /etc/rc.local и поменяем порт 3128 на 8081, чтобы в итоге получилось так:
iptables -t nat -A PREROUTING -i eth1 ! -d 192.168.10.0/24 -p tcp -m multiport —dport 80,8080 -j DNAT —to 192.168.10.1:8081
Теперь нам нужно закоментировать строку в настройках прокси сервера, разрешающую подключение к прокси из внутренней сети, делаем это в файле /etc/squid/squid.conf
#http_access allow localnet
Перезагружаем сервер и проверяем что все работает, без каких либо настроек со стороны клиента
reboot
Вот мы и настроили контент-фильтр Dansguardian на Ubuntu Server. Для более продуктивного использования фильтра, вы можете его до настраивать вручную, указывая правил блокировки в файлах которые находятся в папке /etc/dansguardian/lists/. Про более подробную настройку этих файлов, можно почитать в документации на официальном сайте.




Комментарии

Популярные сообщения из этого блога

Права на папки и файлы (unix/chmod)

Автоматическое монтирование дисков и разделов в Linux или что такое fstab? Проблема Debian

Как подключить сетевой диск Windows в Linux