Все о Linux. LinuxRSP.Ru
Альт Линукс СПТ 6.0 Сертификат ФСТЭК

Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

В GIMP наконец-то появилась обработка с точностью 16 и 32 разряда на канал

В одном окне: GIMP 2.8

Релиз OpenBSD 5.1

HTML-редактор: BlueGriffon 1.5

Релиз Xfce 4.10

Команда Chromium представила кластер для автоматизации выявления уязвимостей

В Microsoft Office 15 будет обеспечена поддержка формата ODF 1.2

Анонсирован новый свободный анимационный фильм Tube

Обновление ядра: Linux 3.0.29, 3.2.16, 3.3.3

Представлен OpenSSH 6.0

Релиз графического редактора Pinta 1.2, претендующего на роль аналога Paint.NET

Вышел Firefox 12

Google прекращает поддержку Linux-версии приложения Picasa

Эмулятор приставок: Mednafen 0.9.21-wip

Линус Торвальдс получил премию Millennium Technology Prize 2012

Canonical не заинтересована в участии в разработке ядра Linux

Распределенные вычисления: BOINC 7.0

Google

 Новые статьи :

Передача снапшота ZFS по сети

Правила хорошего тона: SSH

Некоторые рассуждения о защите от ddos на примере защиты от SSL denial of service attack

Быстрый проброс портов на шлюзе во внутреннюю сеть или на другой хост. Быстро NAT'им порты. rinetd.

NAT'им отдельные порты или "а что делать, если мой веб-сервер внезапно переехал на другую машину". Проброс портов в локалке на шлюзе наружу.

Как справляться с запланированной недоступностью веб-сайта

Архитектура Google 2011

Мониторинг Nginx с помощью MRTG

Решение проблем при использовании "1c предприятие" 8.2 в Linux

25 правил .htaccess, которые должен знать каждый web-разработчик

Централизованное резервное копирование данных Windows и *nix серверов средствами Bacula

Краткое руководство по GNOME Shell в Ubuntu 11.10

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки

   Дистрибутивы и атрибутика



DeveloperWorks Россия





Rambler's Top100


 
 

Linux-сервер для Интернет-кафе

Эта статья описывает мой собственный опыт построения Linux-сервера для Интернет-кафе. Статья ориентирована как на новичков в мире Linux, так и на знакомых с Linux людей, но не имеющих опыта использования его в сети, которым в сжатые сроки понадобилось установить Linux-сервер. Я постарался описать лишь основные моменты установки, большей частью что относительно стандартной конфигурации было изменено. Все примеры файлов конфигураций, приведенные здесь, не претендуют на "идеологическую верность". Они получены опытным путем, путем чтения документаций и FAQ. Они могут быть даже неверны, тем не менее они работают :)

В мою задачу входило установить Linux-сервер для Интернет-кафе. Интернет-кафе - это место, куда люди, не имеющие компьютера (или интернета) приходят полазить по страничкам, почитать почту, потрепаться в аське.

В качестве дистрибутива мной был выбран Mandrake 6.0, который постепенно перерос в Mandrake 7.0.

Имеется один реальный интернет-адрес (будем использовать 123.123.123.123) и две внутренние подсети - 192.168.1.0 и 192.168.2.0. В сервере имеется три сетевые карты - две 10-мегабитные и одна 100-мегабитная.

После прописывания их в linuxconf появилось три интерфейса - eth0, идущий к провайдеру, и eth1, eth2 - внутренние.
 
 

squid

Я использовал прокси-сервер squid для предоставления www и ftp пользователям. Нужно ограничить доступ к прокси только локальной сетью. У нашего провайдера есть тестовый dial-up вход, с которого доступен наш сервер. Если открыть squid наружу, то, соединившись по тестовому входу и указав в настройках прокси наш
адрес, можно было бы иметь бесплатныe сервисы, работающие через squid. Фрагменты файла конфигурации squid (squid.conf):

прописываем хосты, откуда можно получать доступ:
acl allowed_hosts src 192.168.0.0/255.255.0.0
acl localhost src 127.0.0.1/255.255.255.255

разрешенные SSL порты:
acl SSL_ports port 443 563 5190 15100 15101

порт 5190 используется новыми ICQ для соединения по HTTPS, т.е. можно и ICQ пустить через squid, а 15100 и 15101 - я использовал для одной банковской программы.

запретим метод CONNECT для всех портов, кроме указанных в acl SSL_ports:
http_access deny CONNECT !SSL_ports

и запретим доступ всем, кроме тех, кому можно:
http_access allow localhost
http_access allow allowed_hosts
http_access allow SSL_ports
http_access deny all

можно сделать авторизацию по имени и паролю:
authenticate_program /usr/local/squid/bin/ncsa_auth /usr/local/squid/bin/passwd

в бинарный rpm squid от Mandrake программа ncsa_auth не входит (по крайней мере, не входила), так что, возможно, ее придется собрать из исходников.

И пропишем пользователей, которым разрешено пользоваться squid:
acl allowed_users proxy_auth username

Если у вас мало свободного места в разделе, где находится каталог /var/spool, то вы можете разместить кэш на другом разделе:
cache_dir /mnt/disk1/var/spool/squid 1000 16 256
 

Анализ работы squid можно сделать при помощи программы sqmgrlog. Она показывает достаточно много интересной информации, в том числе и трафик, проходящий через squid для каждого пользователя.
URL: http://www.ineparnet.com.br/orso/index.html
 
 

sendmail

Установленный sendmail был почти готов к работе. Нужно было настроить сервер так, чтобы из интернета принимались только письма, адресованные нам (ourdomain.ru). Пропишем в access:
192.168 RELAY
127.0.0.1 RELAY

Учтите, что sendmail читает информацию не из файла access, а из бинарного файла access.db. Используйте makemap для создания файла access.db.

На других машинах я использую postfix (он проще в настройке).

Доступ пользователей к почте осуществляется через web-интерфейс w3mail.
URL: http://www.tbcc.cc.or.us/~spencer/w3mail/
 
 

apache

Установленный бинарный rpm apache от Mandrake был готов к работе и почти не нуждался в дополнительных настройках.

Виртуальные хосты прописываются в файле Vhosts.conf:

<VirtualHost 123.123.123.123>
ServerAdmin webmaster@ourdomain.ru
DocumentRoot /home/clients/client/public_html
ServerPath /~client
ServerName client.ourdomain.ru
ErrorLog logs/error_log
TransferLog logs/access_log
</VirtualHost>

Обратите внимание, что адрес client.outdomain.ru должен быть прописан в DNS (см. ниже).

Директория с нашим веб-интерфейсом должна быть доступна только из локальной сети, прописываем в httpd.conf:

<Directory /home/httpd/mail>
order deny,allow
deny from all
allow from localhost
allow from 192.168
allow from 123.123.123.123
Options ExecCGI
</Directory>

А в секции Vhosts.conf, где прописан виртуальный хост - почтовый веб-интерфейс, прописываем:

<VirtualHost 123.123.123.123>
ServerAdmin webmaster@ourdomain.ru
DocumentRoot /home/httpd/mail
ServerPath /mail
ServerName mail.ourdomain.ru
ErrorLog logs/error_log
TransferLog logs/access_log
ErrorDocument 403 http://www.ourdomain.ru/messages/insideonly.html
</VirtualHost>

insideonly.html - сообщение о том, что веб-интерфейс доступен только из локальной сети.
 

Некоторые пользователи используют Netscape Roaming Access. Эта функция позволяет хранить на сервере настройки, историю, сертификаты и т.п. браузера Netscape. Пользователь набирает свой логин и пароль и браузер загружает необходимые файлы, а после завершения сессии обновляет их на сервере. Это удобно, когда пользователь, пришедший поработать в интернете, пользуется постоянно разными компьютерами. Для создания roaming access я использовал модуль mod_roaming в apache.
URL: http://www.klomp.org/mod_roaming/

Если вы будете использовать mod_roaming, обратите внимание на то, что доступ к roaming access серверу должен быть прямым, не через прокси, иначе могут возникнуть проблемы с закачкой файлов на сервер.

Красиво анализировать работу apache можно с помошью программы webalizer.
URL: http://www.mrunix.net/webalizer/
Не забудьте указать Incremental yes в webalizer.conf, для того, чтобы правильно обрабатывались логи apache.
 
 

named

bind использует файл начальной загрузки /etc/named.conf, в котором прописываем:

options {
        directory "/var/named";
};
zone "." {
        type hint;
        file "named.ca";
};
zone "ourdomain.ru"{
        type master;
        file "ourdomain";
        notify yes;
};
zone "0.0.127.IN-ADDR.ARPA"{
        type master;
        file "named.local";
};
zone "123.123.123.IN-ADDR.ARPA"{
        type master;
        file "123.123.123";
        notify yes;
};

dns сервер является авторитетным для нашей зоны (ourdomain.ru) и кэширует остальное.

В файле /var/named/named.ca содержится список корневых серверов, этот файл можно создать командой dig.
Фрагменты файла /var/named/ourdomain - файла зоны ourdomain.ru:

начало зоны:
@               IN      SOA     ourdomain.ru.       admin.ourdomain.ru

Обратите внимание, что e-mail администратора должен содержать точку, а не @.

сервера имен - первичный - у нас, вторичный - у провайдера:
@               IN      NS      ns
@               IN      NS      ns.ourprovider.ru.

Запись для виртуального хоста apache - client.ourdomain.ru:
client            IN      A       123.123.123.123
 

Файлы named.local и 123.123.123 содержат зоны обратного преобразования - преобразования ip - адресов в имена.
Фрагмент файла 123.123.123, прописаны вначале сервера имен, потом указатель, обозначающий, что машина с адресом 123.123.123.123 имеет имя ns.ourdomain.ru:

@               IN      NS      ns.ourdomain.ru.
@               IN      NS      ns.ourprovider.ru.
123             IN      PTR     ns.ourdomain.ru.
 
 

socks

Если вы не используете ip-masquerading, то вам понадобится socks-сервер для работы некоторых клиентов ICQ, IRC и т.п. Я использовал dante-socks.

Фрагменты sockd.conf:

internal: 192.168.1.1 port = 1080
 

наш настоящий адрес:
external: 123.123.123.123
 

кто может пользоваться прокси:
client pass {
        from: 192.168.0.0/16 to: 0.0.0.0/0
        }
 

и кто может отвечать клиентам:
pass {
        from: 0.0.0.0/0 to: 192.168.0.0/16
        command: bindreply udpreply
        log: connect error
}
 
 

ftp

BeroFTPD не потребовал никакой дополнительной настройки. Могу разве что порекомендовать установить версию посвежее. Старые версии были, если не ошибаюсь, с какой-то серьезной security hole.
 
 

samba

Samba используется для файлового общения между win-машинами и unix.

Привожу мой файл конфигурации samba почти полностью:

[global]
        workgroup = workgroup
        netbios name = ourdomain
        server string = Samba Server
        security = SHARE
        encrypt passwords = Yes
        log file = /var/log/samba/log.%m
        max log size = 50
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        dns proxy = no
        wins support = yes
        domain master = yes
        interfaces = 192.168.1.1/24 192.168.2.1/24
        client code page = 866
        character set = koi8-r

[samba]
        comment = Public
        path = /mnt/disk1/samba
        read only = No
        guest ok = Yes

[admin]
        comment = admin's dir
        path = /home/admin
        valid users = admin root
        read only = no

Обратите внимание на опцию encrypt passwords, если ее не указать, то машины с win98 (возможно, и не только они) не смогут подключиться. wins support - поддержка wins. При помощи wins машины "быстрее находятся" в сетевом окружении, т.к. клиенту не придется делать широковещательный запрос всем, а нужно будет только спросить у wins. Использование wins обязательно, если имеется больше одной подсети, иначе машины в разных подсетях не увидят друг друга. Укажите интерфейсы, на которые будет работать samba. И для предотвращения проблем с русских - client code page и character set. Далее идут описания расшареных ресурсов.
 
 

firewall

Несколько слов о применениях ipchains.

Маршрутизация между подсетями 192.168.1.0 и 192.168.2.0:
ipchains -P forward DENY
ipchains -A forward -s 192.168.1.0/24 -d 192.168.2.0/24 -j ACCEPT
ipchains -A forward -s 192.168.2.0/24 -d 192.168.1.0/24 -j ACCEPT

Создадим цепочку, через которую пойдет весь трафик от провайдера:
ipchains -N prov
ipchains -A input -i eth0 -j prov

Можно запретить ip-spoofing:
ipchains -A prov -s 192.168.1.1/16 -l -j DENY
ipchains -A prov -s 127.0.0.1/8 -l -j DENY
(не знаю, нужна ли вторая строчка)

Опция -l позволяет вести лог ip-spoofed пакетов, соответствующие сообщения появляются в /var/log/messages. (И появляются они чаще, чем можно было предположить :)

На всякий случай запретим телнет снаружи:
ipchains -A prov -p tcp --destination-port 23 -j REJECT

Если хотите, чтобы samba не светилась наружу, запретите порты 137-139
ipchains -A prov -p tcp --destination-port 137 -j REJECT
ipchains -A prov -p udp --destination-port 137 -j REJECT
то же с портами 138, 129

Подсчет трафика я веду с помощью bandmin.
URL: http://www.mrunix.net/webalizer/
Пришлось немного подкорректировать файл Acct.pm, чтобы он считал трафик по моим правилам.

Создаем цепочку для подсчета трафика:
ipchains -N trafin
ipchains -I input -i eth0 -s ! 123.123.123.0/24 -p all -j trafin
ipchains -A trafin -d 123.123.123.123

То есть считаем трафик на наш адрес отовсюду, кроме подсети 123.123.123.0, за трафик с которой мы не платим провайдеру.

И в файле Acct.pm (там, где раздел про ipchains) прописываем вместо acctboth цепочку trafin.
 

Ali Albakov, 6-Dec-2000
Вопросы, комментарии и критика приветствуются: guldur at transit.samara.ru
 


      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2012 LinuxRSP


Реклама:
выделенный сервер, есть скидки.