28 ноября 2008 г.

Дистанционный курс по Linux. Настройка Linux сервера, часть 2.

Наконец то появилось время и я ударными темпами начал писать третий дистанционный курс "Настройка Linux сервера, часть 2". Уже написал больше половины.

О чем будет рассказано на курсе.

Большая часть курса посвящена настройке почтового сервера. А это значит, что мы прикурутим антиспам, антивирус и прочие полезные плюшки. Будет рассказано о виртуальном хостинге нескольких почтовых серверов и много другого.

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

Кроме, собственно, почтового сервера, нам придется рассмотреть администрирование MySQL. Эта база данных будет использоваться для работы антиспам фильтра. Я решил не делать отдельного курса по MySQL и поэтому включил его во вторую часть.

Так же мы посмотрим на программу tinyca2, предназначенную для генерации SSL сертификатов. Все таки Николай Коршенин убедил меня, что эта графическая надстройка над openssl не есть зло :)

Если все пойдет по плану, то через неделю курс будет полностью готов.

И еще одна новость. Я почти договорился со своим коллегой о создании им дистанционного курса по Apache. Огромный плюс заключается в том, что человек, который будет делать этот курс - практик. У него есть свой развитый WEB хостинг и он много знает о реальных проблемах, возникающих при эксплуатации Apache. Кроме работы в народном хозяйстве, он заодно является хорошим преподавателем. Вообщем, продолжу переговоры, надеюсь, что все получится.

22 ноября 2008 г.

Задумчиво так.

Чего то вот пришло в голову сравнение.

Когда разговариваешь с людьми у которых большие сети, то обязательное условие - все делать стандартно. Не надо никаких улучшений и оптимизаций, никаких доработок, все из коробки. Все делается так, что бы любой админ мог это повторить. И служба поддержки вендора не начала крутить носом.
- Ни в коем случае не оптимизируйте, мы лучше еще два сервера купим.

В маленьких компаниях все наоборот.
- Покупать новый сервер? А можно оптимизировать так, что бы не покупать?

И приходится оптимизировать, прикручивать, допиливать.

И вот сидишь иногда и думаешь: Быть роботом или творцом?

Топ-менеджер Microsoft признался в обмане потребителей

На судебном процессе о потребительском мошенничестве против компании Microsoft представлено электронное письмо, из которого следует, что бывший сопрезидент софтверного гиганта знал об обмане потребителей и предупреждал о нем коллег.

«Ужасным» и «вводящим в заблуждение» называл разрешение Microsoft производителям ПК наклеивать лейбл “Vista Capable” на машины, не способные полностью поддерживать все функции Windows Vista бывший сопрезидент Microsoft Джим Олчин (Jim Allchin). Свое мнение он доводил коллегам письменно.

«Я считаю, что мы обманываем потребителей. Производители скажут, что система соответствует уровню Windows Vista и потребители поверят, что она может запускать все основные функции системы», — писал Олчин в письме, адресованном группе руководителей Microsoft. — «Большинство из этих машин никогда не смогут запускать Aero, и это вводит покупателей в заблуждение».

Это электронное письмо в числе других было представлено в качестве доказательства по групповому иску против Microsoft, обвиняемой в потребительском мошенничестве. Как утверждает обвинение, Microsoft специально занижала требования к “Vista Capable” ПК, из-за чего многие потребители приобрели компьютеры, способные разве что только запустить систему, сообщает АР. В частности, на них не работала интерфейсная тема Aero.

По словам истцов Дайаны Келли (Dianne Kelley) и Кеннета Хэнсена (Kenneth Hansen), которые в марте 2008 г. подали судебный иск против софтверного гиганта, они стали жертвами тактики Microsoft, направленной на увеличение продаж своей новой ОС обманным путем.

Целью кампании “Vista Capable” было заверить покупателей, что они смогут установить Windows Vista на ПК, купленные еще до ее выхода. Компьютеры с этим лейблом продавались в основном в рождественские праздники 2006 г., то есть до официального релиза системы в январе 2007 г.

Первоначально Microsoft заявляла, что логотип “Windows Vista Capable” призван пояснить покупателям, что они покупают ПК, который подходит для нормальной работы с Windows Vista. Однако после новостей об иске появилось пояснение, что компьютеры, на которых имеется логотип “Windows Vista Capable”, могут обеспечить работу Windows Vista только на минимальном уровне, а для работы некоторых функций требуется улучшение параметров ПК до уровня “Vista Premium Ready”.

В переписке с исполнительным директором Microsoft Стивом Балмером (Steve Ballmer), Олчин называл такую ситуацию «бардаком». «Наши партнеры расстроены, Microsoft уничтожила свою репутацию, моя репутация также пострадала», — писал он. В ответ Баллмер сообщил, что находится не в курсе ситуации: «Я не имею с этим ничего общего. Я даже не в курсе деталей».

Новость взята с сайта CNews.

21 ноября 2008 г.

Долгая загрузка Vista стала поводом для иска

Сотрудники ряда крупных компаний США, в том числе Cigna Health Insurance, корпорации AT&T и UnitedHealth Group подали иски против своих работодателей, потребовав с последних компенсации за долгую загрузку Windows Vista, передает The Register.

По расчетам юриста Марка Тьермана (Mark Thierman), сотрудники компаний теряют до двух часов рабочего времени в неделю из-за операционной системы. Эти два часа, по мнению истцов, следовало бы оплачивать как сверхурочные. За последние три года сумма, причитающаяся тысячам сотрудников, может составить несколько миллионов долларов.

Во всех этих компаниях установлены системы учета рабочего времени, которые запускаются вместе с компьютером. С момента включения компьютера до входа пользователя в систему может проходить до 15 минут. Все это время персонал официально считается не работающим. То же происходит при выключении компьютера.

О реакции самих компаний на иск пока ничего не известно.

новость брал lenta.ru

14 ноября 2008 г.

Vmware Server 2

Наконец то дошли руки до vmware server 2. Прикольная штука.
На выходных поменяю VM на своих машинах на 2-ю версию.

Из явных (для меня) плюсов, нет надобности ставить отдельный клиент на машинах слушателей.

Заодно скачал ESXi сервер. Он тоже стал бесплатным. На следующей недел заберу свой сервер, поставлю на него ESXi, поиграюсь. Если понравится - надо будет собирать серьезный сервер и ставить где нибудь на хостинге.

8 ноября 2008 г.

Open VPN и хитрый роутинг.

Это глава из учебника, предоставляемого к моим дистанционным курсам. (с) 2008, Артур Крюков www.kryukov.biz

После выпуска первой редакции этого учебника, у слушателей возникло много вопросов по применению VPN в реальных задачах. Эта глава была добавлена специально для того, что бы показать, как еще можно использовать Open VPN.

Рассмотрим задачу, возникшую у одного из слушателей.

Исходные данные.


Существует внутренняя сеть 192.168.1.0/24. Она выходит в Интернет через роутер с внутренним интерфейсом 192.168.1.1 и внешним интерфейсом 120.3.5.8. Этот и все другие IP адреса взяты совершенно случайно и никакого отношения к реальным серверам не имеют.

Где то «в замке у шефа» в буржуинском сегменте Интернет стоит сервер с IP 110.45.45.8, который тоже принадлежит нашей компании.

Задача 1.


Необходимо весь трафик, предназначенный на WEB сервера (80 порт) отправлять только через сервер 110.45.45.8. Трафик между нашей сетью и этим сервером должен быть зашифрован. Весь остальной трафик из нашей сети должен идти обычным образом.

Задача 2.


Необходимо весь исходящий трафик нашей сети, предназначенный для Интернет, оправлять через роутер 110.45.45.8. Трафик между нашей сетью и этим роутером должен быть зашифрован.

Что тут сказать, параноидальные задачи, но выполнимые. Итак, будем играть в Штирлица и шифроваться.

Настройка VPN.

Материал, описанный в этом разделе необходим для решения обеих задач.

Для шифрования трафика меду двумя серверами мы будем использовать Open VPN. Сервер, выводящий нашу компанию в Интернет, будет работать как VPN клиент. Сервер в Интернет всегда включен, поэтому он будет работать в качестве VPN сервера.

Open VPN настраивается так же как и в предыдущей главе, поэтому не буду повторять материалы этой главы. Просто покажу готовые конфигурационные файлы клиента и сервера.

Конфигурационный файл VPN сервера.

dev tap0

proto udp

mode server

comp-lzo

log-append /var/log/openvpn.log

daemon

ifconfig-pool 192.168.240.2 192.168.240.12

ifconfig 192.168.240.1 255.255.255.0

tls-server

dh /etc/openvpn/dh1024.pem

ca /etc/pki/CA/CA.crt

cert /etc/pki/tls/certs/server.pem

key /etc/pki/tls/private/server.key

port 5000

user nobody

group nobody

persist-tun

persist-key

verb 0

Необходимо подставить реальные файлы ключей и сертификатов.

Что изменилось в файле конфигурации сервера, по сравнению с предыдущей главой? Во-первых, используется 5000 порт, а не 1194. За время, прошедшее с момента написания первой главы, создатели программы стали рекомендовать использовать порт 5000. На самом деле номер порта может быть любой, но мы будем следовать рекомендациям отцов-основателей.

Конфигурационный файл Linux клиента.

remote 110.45.45.8 5000

dev tap

proto udp

ca /etc/openvpn/certs/CA.crt

cert /etc/openvpn/certs/client.pem

key /etc/openvpn/keys/client.key

client

tls-client

comp-lzo

user nobody

group nobody

ping 30

ping-restart 120

ping-timer-rem

persist-key

persist-tun

verb 0

В этом файле мы тоже заменили порт, куда будет подключаться клиент на 5000.

Посмотрим, что получится после настройки такого решения.

Таким образом, мы обеспечили шифрование при передаче данных между первым и вторым серверами. Но этого мало! Надо сделать так, что бы VPN сервер мог доставлять пакеты в сеть 192.168.1.0/24. Поэтому в конфигурации VPN клиента добавим команду push, которая внесет изменения в таблицу маршрутизации VPN сервера.

push "route 192.168.1.0 255.255.255.0 192.168.240.2"

В результате конфигурационный файл клиента будет выглядеть так:

remote 110.45.45.8 5000

dev tap

proto udp

ca /etc/openvpn/certs/CA.crt

cert /etc/openvpn/certs/client.pem

key /etc/openvpn/keys/client.key

client

tls-client

comp-lzo

user nobody

group nobody

push "route 192.168.1.0 255.255.255.0 192.168.240.2"

ping 30

ping-restart 120

ping-timer-rem

persist-key

persist-tun

verb 0

Теперь внимательно приглядимся к нашей схеме. У нас получилось два сегмента внутренних сетей:

  • 192.168.1.0/24
  • 192.168.240.0/24

И два! Целых два выхода в Интернет! Через роутер 192.168.1.1 и роутер 192.168.240.1.

Господа, как только у вас появляется больше чем один выход в Интернет, необходимо использовать дополнительные возможности, предоставляемые ядром Linux в области маршрутизации. Эти возможности очень хорошо описаны в документе Linux Advanced Routing & Traffic Control HOWTO:

Настоятельно рекомендую в дальнейшее подробно изучить данный HOWTO!

А теперь займёмся решением задач.

Решение Задачи 1.

Напомню, что требуется сделать.


Нам необходимо весь трафик на WEB сервера (порт 80) отправлять в Интернет через удаленный сервер, через интерфейс с IP адресом 110.45.45.8.

Весь остальной трафик из нашей сети должен выходит в Интернет через локальный сервер, через интерфейс с IP адресом 120.3.5.88.

На удаленном сервере нам надо сделать только NAT преобразование. Все пакеты, пришедшие из сети 192.168.1.0/24 или 192.168.240.0/24 (а вдруг у вас на клиентском сервере работает прокси сервер Squid?) пропускать через SNAT.

Поэтому в firewall удаленного сервера надо добавить следующие правила:

iptables –t nat –A POSTROUTING –o eth0 –s 192.168.1.0/24 \

-j SNAT --to-source 110.45.45.8

iptables –t nat –A POSTROUTING –o eth0 –s 192.168.240.0/24 \

-j SNAT --to-source 110.45.45.8

Не забудьте разрешить прохождение этих пакетов через firewall.

iptables –A FORWARD –p tcp --dport 80 –i tap0 –j ACCEPT

Не забудьте разрешить перенос пакетов с одного сетевого интерфейса на другой.

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

В файле /etc/sysctl.conf отредактируйте строку.

net.ipv4.ip_forward = 1

C удаленным сервером все. Займемся локальным сервером. Наша задача отправлять пакеты предназначенные на 80 порт в Интернет через машину 192.168.240.1.

Добавить маршрут в таблицу маршрутизации? Не поможет, в таблице маршрутизации нельзя указывать порты.

Сделать DNAT? Тоже не поможет, нам нельзя менять IP назначения.

SNAT? Тоже ничего не даст.


Во всех случаях, перечисленных выше, пакет с локального сервера будет уходить по маршруту по умолчанию через интерфейс eth0.

Пришло время включить дополнительные возможности ядра Linux. А вы знаете, что в Linux можно сделать 256 таблиц маршрутизации? И 512 можно! и даже больше :)


Для решения нашей проблемы мы добавим еще одну таблицу маршрутизации.

В этой таблице сделаем маршрут по умолчанию на машину 192.168.240.1 через интерфейс tap0.

Все пакеты, приходящие на наш сервер на 80 порт из внутренней сети, а также все пакеты, которые генерируют программы, работающие на нашем сервере на 80 порт, будем передавать в новую таблицу маршрутизации. А там уровень IP все сделает сам.

Создадим новую таблицу маршрутизации с именем www.

echo 430 www >> /etc/iproute2/rt_tables

Таким образом, мы создали таблицу номер 430 с именем www. Номер и имя можно использовать любые. Главное, что бы они уже не использовались в вашей системе. Вы можете сначала посмотреть содержимое файла rt_tables при помощи программы cat.

cat /etc/iproute2/rt_tables

Добавим в таблицу www маршрут по умолчанию.

ip route add default via 192.168.240.1 dev tap0 table www

Таблица создана. Как заставить необходимые нам пакеты попадать именно в неё? Тут следует сделать два действия:

  1. При помощи iptables и действия MARK пометить пакет. Присвоить ему номер от 1 до 64.
  2. При помощи программы ip, все помеченные нужным нам номером пакеты перенаправить в таблицу www.

iptables –t mangle –A PREROUTING –i eth1 –p tcp --dport 80 \

-j MARK --set-mark 1

iptables –t mangle –A OUTPUT –p tcp --dport 80 \

–d ! 192.168.1.0/24 -j MARK --set-mark 1

Обратите внимание на то, что метки мы ставим в таблице mangle в цепочках PREROUTING (для пакетов, пришедших из внутренней сети) и OUTPUT (для пакетов, которые генерирует программное обеспечение, работающее на нашей машине), до того, как пакеты попадут в таблицу маршрутизации.

ip rule add fwmark 1 table www

Можете посмотреть какие пакеты, каким таблицам будут передаваться.

ip rule show

После перезагрузки компьютера, привязка к таблице и маршруты пропадут. Поэтому мы должны сделать так, что бы при старте они появились снова. Тут все зависит от дистрибутива. Самый простой способ воспользоваться файлом /etc/rc.d/rc.local (или /etc/rc.d/rc.local.local, зависит от системы, которую вы используете). В этом файле надо дописать правила:

ip route add default via 192.168.240.1 dev tap0 table www

ip rule add fwmark 1 table www

Сама таблица www создается только один раз.

Теперь займемся firewall.

Разрешаем хождение пакетов на 80 порт, через интерфейс tap0.

iptables –A FORWARD –p tcp --dport 80 –o tap0 –j ACCEPT

Остальными правилами разрешаете то, что должно выходить через интерфейс eth0. Я не буду писать эти правила. Посмотрите, как это делалось в разделе, посвященном firewall. Единственное добавление — теперь надо явно указывать output интерфейс при помощи параметра –o.

Последнее замечание — NAT преобразования. Нам необходимо делать NAT только на интерфейсе eth0. На интерфейсе tap0 ничего делать не надо. Там пакеты идут без преобразования.

Решение задачи 2.

А тут я поступлю немного хитрее. Я хочу, что бы вы сами решили эту задачу. Если все заработает, значит, вы все поняли правильно. Если не заработает, присылайте мне ваше решение. У нас будет тема для обсуждения.

Единственная подсказка — трафик на 22 порт удаленного сервера не пускайте через VPN. Если вдруг не получится, вы хоть сможете подключиться к удаленному серверу. И вторая причина — в этом соединении уже итак все зашифровано J.

Понадеялся на Японцев, зря.

На неделе сел в машину и... сдох аккумулятор. Прослужил 3.5 года, японский, но сдох. Надо покупать новый.
Капот открывать лениво, смотрю в инструкцию к машине, запоминаю модель аккумулятора. У меня друг в автобизнесе работает, я ему заказал со склада аналогичную модель, но уже немецкую Варту.
Привозит он мне его сегодня. Открываю капот и... понимаю, что и японцы могут неправильно писать инструкции. Друг привез аккумулятор для японских японских машин, строго как в инструкции написано. Как оказалось у меня японская, адаптированная к Европе и аккум совсем другой :) И размером поболее и клеммы толстые.

Я себе представил картинку, иду это я с тележкой в магазин за аккумулятором. Идти далеко, километра 2. Привожу его домой и... иду обратно :) Хорошо иметь друзей во всех отраслях народного хозяйства и торговли :)