Собственный домен с помощью технологии ADSL

  Автор: © Ray Chan
Перевод: © Иван Песин.


 

Заметка: Имена доменов и IP адреса в этой статье изменены. Я не имею никакого отношения к myfakedomain.com и myhome.net -- будьте добры, не шлите к ним вопросы и замечания.

Официальное заявление

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

Подоплека

В славном 2000 году, когда все говорили или использовали широкополосные сети, я продолжал использовать мой 28.8kbps модем для нет-серфинга. Причина проста - не один из провайдеров широкополосного доступа не предоставлял услугу фиксированных I.P. адресов. У меня же было несколько зарегистрированных доменных имен, расположенных у разных провайдеров. Услуга хостинга сводится к предоставлению таких сервисов, как html, perl cgi, pop server и, возможно, mod_rewrite. И никогда не предоставляются сервисы SMTP(автор ошибается, или не знает - самый известный провайдер этой услуги в России и странах СНГ, это, конечно же, mail.ru - Прим.пер), MySQL, PHP4, и вообще все полезное, разве только за соответствующую плату. Вот почему я искал провайдера, который бы предоставил мне услугу фиксированных I.P. адресов - я бы смог создать свой веб-сайт и все, что захочу.

Наконец, в январе 2001, один из провайдеров, работающих в моей области объявил, что он будет за дополнительную плату предоставлять услугу фиксированных I.P. адресов. Это было действительно дорого, но, ребята, это то, что мне нужно!!! Я буду платить за тот сервис, который удовлетворяет моим запросам. Кроме того, я смогу сэкономить много денег, перестав платить за хостинг. Почему же все-таки не динамический I.P.? Да, динамический I.P. адрес может покрыть те же требования, при использовании некоторых ухищрений динамического DNS, например no-ip или DynDNS, но это все слишком проблематично, и не очень хорошо, если вы планируете запускать собственный сервер электронной почты.

Планирование сети

Итак, наконец, я получил услугу широкополосного канала. Две недели ушло на то, что бы прибыл парень и установил мне сплиттер и ADSL модем. Вообще-то я сам мог бы все это сделать, но компания была не согласна. В любом случае, это хорошее время для того, чтобы построить сеть и приготовить ее к высокоскоростному подключению. Перед тем как строить сеть, неплохо бы подумать о ее топологии. Я воспользовался моими запчастями и потратил немного денег для того, чтобы сделать две
линукс-машины. Одна из них будет межсетевым экраном с запущенными серверами FTP, WWW, SMTP и MySQL. Эта машина будет работать как внешний маршрутизатор между internet и intranet. Другая машина будет выполнять внутренние приложения, и работать в качестве внутреннего маршрутизатора. Кто-то может спросить: "Почему два компьютера?". Конечно же, по причине безопасности. Обратитесь к вашим техническим книгам о межсетевом экранировании для объяснений. Рис 1 демонстрирует диаграмму моей домашней сети.

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

Построение сети

Я выкачал и установил RedHat 7.0 (вообще оригинальный подход устанавливать .0 версии, когда автор так печется о безопасности [см. выше]. Я бы рекомендовал устанавливать версии .2, или, хотя бы .1 со всеми заплатками - Прим.пер) на обе машины. Выберите нужные пакеты. Можно использовать и другие дистрибутивы. Естественно, вам следует выбрать при установке необходимые пакеты. Помните, что есть необходимые для установки интернет сервера компоненты. Обратитесь к секции HOW-TO на linuxdocs.org. Я настоятельно рекомендую вам ознакомиться со следующими документами:

  • ISP-Setup-ReadHat
  • DSL HOWTO for Linux

    И следующими мини-HOWTO:

  • Setting Up Your New Domain Mini-HOWTO
  • Home-Network-mini-HOWTO
  • IP-Subnetworking

    Если вы не представляете того, что может выполнять линукс, вам необходимо прочесть 'The Linux Networking Overview HOWTO'.

    Защита бастионного хоста при помощи пакетной фильтрации

    Так, у меня есть установленный RedHat на двух машинах, однако они еще не защищены. Мне необходимо установить межсетевой экран и настроить таблицы маршрутизации, чтобы защитить мои машины от Интернет, и что бы ликвидировать возможность выхода пакетов моей локальной сети вовне. Это очень сложная работа для домашнего пользователя, меня в том числе. Я потратил уйму времени на поиски в freshmeat.net, google и sourceforge. Попробовал множество скриптов создания фаервольных правил, и ни один из них не обеспечивает должной надежности и простоты в изменении настроек. Да, я слишком ленивый для написания собственных правил фильтрации и маршрутизации. Вам повезло, я нашел действительно хороший скрипт @ ICEBERG. Результат его работы легко изменять и настраивать. На обеих моих машинах работают скрипты, сгенерированные ICEBERG. Вот список полезной информации касательно фильтрации и маршрутизации:

  • Firewall-HOWTO
  • IP-Masquerade-HOWTO
  • IPCHAINS-HOWTO

    Если вы хотите использовать Napster за фаерволом, вам нужно прочесть IPMasquerading+Napster mini-HOWTO

     

    Настройка внешнего DNS сервера на бастионном хосте

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

/etc/named.boot
/etc/named.conf
/var/named/named.ca
/var/named/named.local
/var/named/named.myfakedomain.com
/var/named/named.myhome.net
/var/named/named.rev.3
/var/named/named.rev.2

Соединение с ADSL модемом

Соединение с ADSL модемом под линуксом весьма просто - загрузите RPM программы RP-PPPOE от Roaring Penguin Software Inc, установите его и запустите adsl-setup, вот и все. Просто как веник.

Связывание имени домена с бастионным хостом

К этому моменту web сервер еще работать не должен. Исправляется эта ситуация добавлением в файл /etc/httpd/conf/httpd.conf следующих строк:

ServerName www.myfakedomain.com (для бастионного хоста)
ServerName www.myhome.net (для внутреннего сервера)

Итак, web сервера запущены на обоих серверах. Что теперь? Я запустил мой любимый браузер Netscape и задал запрос на Google относительно свободного сервиса DNS. Наконец я нашел HAMMER NODE. Мне посчастливилось, что я нашел hn.org. Они предлагают сервис, как для динамических, так и для статических I.P. адресов. У них хороший и простой интерфейс пользователя. Я создал следующую конфигурацию:

 

  • Rec FQDN Rec Type Rec Value DynDNS MX Pref Commands
    myfakedomain.com NS ns1.hn.org 0 0
    myfakedomain.com NS aux1.hn.org 0 0
    www.myfakedomain.com CNAME myfakedomain.com 0 0
    myfakedomain.com A 202.xxx.xxx.xxx 0 0
    mail.myfakedomain.com MX 202.xxx.xxx.xxx 0 0
    ns.myfakedomain.com NS myfakedomain.com 0 0
    mail.myfakedomain.com CNAME myfakedomain.com 0 0
    ns.myfakedomain.com CNAME myfakedomain.com 0 0

    После настройки учетной записи в DNS на узле hn.org, я поменял настройку DNS на обоих моих серверах на сервер предоставленный hn.org. Может понадобиться некоторое время, пока обновиться система DNS.

    Великолепно! Теперь все запросы к www.myfakedomain.com будут пересылаться моему бастионному хосту. Просто, да? Все это благодаря отменной работе hn.org. Для более детальной информации о настройке DNS, обращайтесь к DNS-HOWTO.

    Машина, подключенная с помощью ADSL модема, обеспечивает общий доступ к ресурсам. Это означает что, кто угодно, откуда угодно может до него доступиться. Соответственно, я должен принять какие-то меры безопасности. Я указал следующие правила в файлах /etc/hosts.allow и /etc/hosts.deny:

    /etc/hosts.allow

    ALL: 127.0.0.1
    in.telnetd: 192.168.2.2
    in.ftpd: 192.168.2.2
    sshd: 192.168.2.2 203.xxx.xxx.xxx

    /etc/hosts.deny

    ALL: ALL : spawn (echo Попытка доступа с %h %a to %d at `date` | tee -a /xxx/xxx/tcp.deny.log | mail [email protected] )

    Как видно из вышеприведенных конфигурационных файлов, все машины из внутренней сети могут соединяться по протоколам telnet, ftp, ssh и sftp с бастионным хостом. Адрес 203.xxx.xxx.xxx - это I.P. адрес моей офисной машины, которой разрешено подключаться по ssh и обмениваться файлами при помощи sftp. Доступ по протоколам telnet и ftp к бастионному хосту из вне всегда запрещен. Это связано с тем, что имя пользователя и пароль передаются в незашифрованном виде. Как следствие эта пара может быть легко перехвачена хакерами. HTTPD не включен в конфигурацию, потому что он не контролируется демоном INETD.

    Безопасное соединение с бастионным хостом при помощи SSH

    Из внутренней сети к бастионному хосту можно подсоединятся по протоколам Telnet и FTP. Для соединения из внешней сети вы должны использовать SSH и SFTP. Обратитесь к статье 'Применение ssh' из Linux Gazette для информации о настройке и использовании SSH. Для работы SSH вы должны установить и запустить SSHD. SFTP можно загрузить с узла http://enigma.xbill.org/sftp/. SFTP очень просто устанавливается и настраивается - прочтите файл readme, размещенный на веб сервере.

    Настройка внутреннего сервера

    Для того, чтобы защитить внутреннюю сеть я запретил любой доступ из внешней сети к машинам моей внутренней сети:

    /etc/hosts.allow

    ALL: LOCAL 192.168.1.2 192.168.1.7

    /etc/hosts.deny

    ALL: ALL : spawn (echo Попытка доступа с машиныh %a к %d `date` | tee -a /xxx/xxx/tcp.deny.log | mail [email protected] )

    В случае какой-либо попытки доступиться к моим внутренним машинам, мне будет отправлена электронная почта.

    Как показано на рис. 1, все внутренние машины имеют свое имя. Вы можете использовать любое имя хоста и домена для внутренней сети, даже если это имя уже зарегистрировано в NIC. Однако, необходимо проявить некоторую осторожность при установке внутреннего DNS сервера.

    Настройка внутреннего DNS сервера - named

    Опять таки, для настройки DNS сервера обратитесь к соответствующим HOWTO и техническим руководствам. Ниже представлены мои конфигурационные файлы для внутреннего сервера:

    /etc/named.boot
    /etc/named.conf
    /var/named/named.ca
    /var/named/named.local
    /var/named/named.myhome.net
    /var/named/named.rev.1
    /var/named/named.rev.2

     

    Еще о безопасности

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

 

  • Security for the Home Network LG #46
  • Linux Firewall and Security Site
  • Mason - the automated firewall builder for Linux
  • Astaro AG (Great firewall linux distribution with web interface)
  • The Ethereal Network Analyzer
  • Nessus - The Security Scanner
  • Stunnel - Universal SSL Wrapper

    Как на счет POP3 и SMTP серверов?

    POP3, так же как и TELNET с FTP, передает имя и пароль в открытом виде. SPOP может быть настроен для шифрования данных POP. Однако, я не желаю сохранять мою почту нигде за пределами моей внутренней сети. Потому я не собираюсь настраивать на бастионном хосте сервер POP3. Причина запрета SMTP проста - открытая доставка опасна, ее могут использовать спаммеры для рассылки своего ненавистного спама. С другой стороны, установка SMTP сервера без отрытой доставки бессмысленно, так как я не смогу отправлять почту ниоткуда, кроме как из своей сети. Я могу просто зарегистрироваться на моем бастионном хосте при помощи ssh и запустить pine для проверки почты.

    Поддомен для вебсервера

    Ух! Похоже, все заработало. Теперь я могу разместить мой веб, емейл и ftp сервер на моем домашнем линуксе. Теперь мне нужен поддомен resume.myfakedomain.com для размещения моего онлайнового резюме. Просто добавьте следующие строки в файл /etc/httpd/conf/httpd.conf:

    RewriteEngine on
    ## Игнорировать www.myfakedomain.com
    RewriteCond %{HTTP_HOST} !^www\.myfakedomain\.com [NC]
    ## Каталог с именем "поддомен" должен существовать
    RewriteCond %{DOCUMENT_ROOT}/%1 -d
    ## Добавить затребованный "поддомен" в URL
    ## [C] означает, что следующее правило Rewrite будет использовать это
    RewriteRule ^(.+) %{HTTP_HOST}/$1 [C]
    ## Перевести abc.myfakedomain.com/foo в myfakedomain.com/abc/foo
    RewriteRule ^([a-z-]+)\.myfakedomain\.com/?(.*)$ http://www.myfakedomain.com/$1/$2 [L]

     

    Другие конфигурационные файлы

/etc/hosts (бастионный хост)

 

127.0.0.1	localhost.localdomain 	localhost
192.168.2.1	router.myhome.net	router
192.168.2.2	gateway.myhome.net	gateway
202.xxx.xxx.xxx	www.myfakedomain.com	www

/etc/hosts (внутренний шлюз)

 

127.0.0.1	localhost.localdomain 	localhost
192.168.1.1	server.myhome.net	server
192.168.1.2	devel.myhome.net 	devel
192.168.1.3	php.myhome.net	php
192.168.1.4	asp.myhome.net	asp
192.168.1.7	be.myhome.net	be
192.168.2.1	router.myhome.net	router
192.168.2.2	gateway.myhome.net	gateway

/etc/resolv.conf (бастионный хост)

 

search myfakedomain.com
nameserver	127.0.0.1

/etc/resolv.conf (внутренний шлюз)

 

search	myhome.net
nameserver	127.0.0.1

Установки сетевых карт

Установки порта Ethernet:

Остальные конфигурационные файлы:

/etc/sysconfig/network (бастионный хост)
/etc/sysconfig/network-scripts/ifcfg-eth0 (бастионный хост)
/etc/sysconfig/network-scripts/ifcfg-eth1 (бастионный хост)

/etc/sysconfig/network (внутренний шлюз)
/etc/sysconfig/network-scripts/ifcfg-eth0 (внутренний шлюз)
/etc/sysconfig/network-scripts/ifcfg-eth1 (внутренний шлюз)

/etc/rc.d/rc.local (бастионный хост и внутренний шлюз)

Настройки TCP/IP

 

  • Бастионный хост
    Основной шлюз: ppp0
    Сервер имен: 127.0.0.1
     
    Сетевой интерфейс: eth0
    I.P. адрес: 192.168.3.1
    Маска подсети: 255.255.255.0
     
    Сетевой интерфейс: eth1
    I.P. адрес: 192.168.2.1
    Маска подсети: 255.255.255.0

    Внутренний сервер
    Основной шлюз: 192.168.2.1
    Сервер имен: 127.0.0.1
     
    Сетевой интерфейс: eth0
    I.P. адрес: 192.168.1.1
    Маска подсети: 255.255.255.0
     
    Сетевой интерфейс: eth1
    I.P. адрес: 192.168.2.2
    Маска подсети: 255.255.255.0

    Рабочие станции внутренней сети
    Основной шлюз: 192.168.1.1
    Сервер имен: 192.168.1.1
     
    Сетевой интерфейс: eth0
    I.P. адрес: 192.168.1.X
    Маска подсети: 255.255.255.0

    Долнейшая установка

    Что, если вы хотите доступиться до вашей внутренней машины под управлением windowsz извне, при том, что между вами находиться межсетевой экран? Ответ - используйте технологию Виртуальной Частной Сети (Virtual Private Network VPN). Линукс текущей версии поддерживает технологию VPN. Просмотрите также VPN HOWTO. Если вы хотите разместить на одном бастионном хосте несколько разных доменов, вам потребуются специальные настройки для веб и емейл серверов. Следующая моя статья будет рассматривать технологию VPN и настойку виртуальных доменов.

    Если у вас имеются пожелания или комментарии относительно этого документа, обращайтесь ко мне по адресу [email protected].

     


Copyright © 2001, Ray Chan.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 65 of Linux Gazette, April 2001

Вернуться на главную страницу