<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Юникс и другие &#187; Network</title>
	<atom:link href="http://boombick.org/blog/posts/category/nix/network/feed" rel="self" type="application/rss+xml" />
	<link>http://boombick.org/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Wed, 26 May 2010 14:33:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Установка nginx, php5 CGI и MySQL</title>
		<link>http://boombick.org/blog/posts/79</link>
		<comments>http://boombick.org/blog/posts/79#comments</comments>
		<pubDate>Tue, 18 Aug 2009 13:40:19 +0000</pubDate>
		<dc:creator>boombick</dc:creator>
				<category><![CDATA[*NIX]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[web-servers]]></category>
		<category><![CDATA[Для начинающих]]></category>

		<guid isPermaLink="false">http://boombick.org/blog/posts/79</guid>
		<description><![CDATA[Nginx (произносится как &#8220;энджин икс&#8221;) &#8211; это легкий высокопроизводительный веб-сервер с открытым исходным кодом. Он известен своей стабильностью, большим набором функций, сравнительной простотой конфигурации, а также весьма низкой требовательностью к ресурсам. В этой статье я опишу процесс установки nginx, PHP5 в CGI-режиме и MySQL на Debian Lenny. В нашем примере установка будет производится на сервер [...]]]></description>
			<content:encoded><![CDATA[<p>Nginx (произносится как &#8220;энджин икс&#8221;) &#8211; это легкий высокопроизводительный веб-сервер с открытым исходным кодом. Он известен своей стабильностью, большим набором функций, сравнительной простотой конфигурации, а также весьма низкой требовательностью к ресурсам. В этой статье я опишу процесс установки nginx, PHP5 в CGI-режиме и MySQL на Debian Lenny.<br />
<span id="more-79"></span><br />
В нашем примере установка будет производится на сервер с доменным именем <code>server1.example.com</code> и IP-адресом <code>192.168.1.100</code></p>
<p><strong>Установка MySQL 5.0</strong></p>
<blockquote><p>aptitude install mysql-server mysql-client</p></blockquote>
<p>В процессе установки вас попросят ввести пароль для пользователя root. Этот пользователь не имеет ничего общего с системным пользователем root. Этот пароль будет использован для пользователя, обладающего суперпривелегиями для самой MySQL:</p>
<blockquote>
<pre>
New password for the MySQL "root" user: &lt;-- yourrootsqlpassword
Repeat password for the MySQL "root" user: &lt;-- yourrootsqlpassword</pre>
</blockquote>
<p><strong>Установка Nginx</strong><br />
Nginx есть в репозитории Debian, что существенно упрощает нашу задачу :)<br />
Установим и запустим его:</p>
<blockquote><p>aptitude install nginx<br />
/etc/init.d/nginx start</p></blockquote>
<p>Наберите в браузере IP-адрес или хостнейм сервера (например <code>http://192.168.0.100</code>) и вы увидите стартовую страницу nginx<br />
<a href="http://boombick.org/blog/wp-content/uploads/2009/08/1.png" title="1.png"><img src="http://boombick.org/blog/wp-content/uploads/2009/08/1.thumbnail.png" alt="1.png" /></a></p>
<p><strong>Установка PHP5</strong><br />
Для &#8220;общения&#8221; между nginx и PHP мы будем использовать FastCGI. К счастью, в репозиториях Debian есть пакет, обеспечиващий поддержку FCGI в PHP. Установим PHP</p>
<blockquote><p>aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl</p></blockquote>
<p>Отредактируйте файл <code>/etc/php5/cgi/php.ini</code> добавив в его конец следующую строку:</p>
<blockquote>
<pre>
cgi.fix_pathinfo = 1</pre>
</blockquote>
<p>В Debian нет самостоятельного приложения для FastCGI, поэтому мы воспользуемся <code>spawn-fcgi</code>, которая входит в состав lighttpd:</p>
<blockquote><p>aptitude install lighttpd</p></blockquote>
<p>И после установки получим сразу же получим ошибку:</p>
<blockquote>
<pre>Starting web server: lighttpd2009-03-19 15:58:09: (network.c.300) can't bind to port: 80 Address already in use
 failed!</pre>
</blockquote>
<p>Логично, 80-й порт у нас занят nginx-ом. Поэтому сделаем так, чтобы Лайти не запускался при загрузке системы:</p>
<blockquote><p>update-rc.d -f lighttpd remove</p></blockquote>
<p>Мы установили Лайти только для того, чтобы воспользовать крайне полезной для наших целей программой, идущей с ним в комплекте: <code>/usr/bin/spawn-fcgi</code>, именно ее мы будем использовать для запуска процессов FastCGI. Для краткого ознакомления с ее возможностями выполните команду</p>
<blockquote><p>spawn-fcgi &#8211;help</p></blockquote>
<p>Для запуска PHP FastCGI-демона на 9000 порту на сервере <code>localhost</code> от пользователя <code>www-data</code> выполните</p>
<blockquote>
<pre>
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
</pre>
</blockquote>
<p>И чтобы каждый раз не приходилось вводить это вручную, команду можно прописать в <code>/etc/rc.local</code></p>
<p><strong>Настройка Nginx</strong><br />
Конфигурационный файл nginx расположен здесь: <code>/etc/nginx/nginx.conf</code>. Для начала (необязательно) увеличим количество рабочих процессов и поменяем параметр <code>keepalive_timeout</code>:</p>
<blockquote>
<pre>[...]
worker_processes  5;
[...]
    keepalive_timeout   2;
[...]</pre>
</blockquote>
<p>Настройки виртуальных хостов расположены в секции <code>server {}</code>, хост по умолчанию описан в <code>/etc/nginx/sites-available/default</code>, модифицируйте его следующим образом:</p>
<blockquote>
<pre>
[...]
server {
        listen   80;
        server_name  _;

        access_log  /var/log/nginx/localhost.access.log;

        location / {
                root   /var/www/nginx-default;
                index  index.php index.html index.htm;
        }

        location /doc {
                root   /usr/share;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        location /images {
                root   /usr/share;
                autoindex on;
        }

        #error_page  404  /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /var/www/nginx-default;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
                #proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
                include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny  all;
        }
}
[...]</pre>
</blockquote>
<p><code>server_name _;</code> &#8211; имя хоста &#8220;по умолчанию&#8221; (конечно же, никто не мешает явно указать имя хоста, например <code>example.com</code>)<br />
В выражении <code>location /</code> мы указываем индексный файл (<code>index.php</code>) и document root (<code>/var/www/nginx-default</code>)<br />
Важная часть для PHP &#8211; это <code>location ~ \.php$ {}</code>, раскомментируйте ее. Не забудьте проверить, что вы изменили строку <code>fastcgi_param</code> на <code>fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name</code> (замените <code>/var/www/nginx-default</code> на ваш реальный путь к document root), иначе интерпретатор PHP может не найти запрашиваемый вами через браузер скрипт.<br />
Удостоверьтесь, что между <code>include</code> и <code>fastcgi_params</code> есть пробел, в оригинальном файле они записаны как одно слово &#8211; это ошибка.<br />
Перезапустите <code>nginx</code></p>
<blockquote><p>/etc/init.d/nginx restart</p></blockquote>
<p>Создайте тестовый файл PHP со следующим содержанием</p>
<blockquote>
<pre>
&lt;?php
phpinfo();
?&gt;</pre>
</blockquote>
<p>Сохраните в вашей document root и откройте его в браузере (<code>http://192.168.0.100/info.php</code>)<br />
<a href="http://boombick.org/blog/wp-content/uploads/2009/08/2.png" title="2.png"><img src="http://boombick.org/blog/wp-content/uploads/2009/08/2.thumbnail.png" alt="2.png" /></a><br />
Обратите внимание на строку ServerAPI</p>
]]></content:encoded>
			<wfw:commentRss>http://boombick.org/blog/posts/79/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Настройка NFS-сервера и клиентов на Debian Lenny</title>
		<link>http://boombick.org/blog/posts/68</link>
		<comments>http://boombick.org/blog/posts/68#comments</comments>
		<pubDate>Mon, 18 May 2009 16:00:55 +0000</pubDate>
		<dc:creator>boombick</dc:creator>
				<category><![CDATA[*NIX]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://boombick.org/blog/posts/68</guid>
		<description><![CDATA[В этой статье описан процесс настройки NFS-сервера и его клиентов. NFS расшифровывается как Network File System (Сетевая Файловая Система). Клиенты, подключившие себе ресурсы с NFS-сервера, могут работать с файлами на удаленном сервере также, как если бы они располагались на локальном жестком диске. В статье мы будем придерживаться следующих соглашений: NFS-сервер: server.example.com с IP-адресом 192.168.0.100 NFS-клиент: [...]]]></description>
			<content:encoded><![CDATA[<p>В этой статье описан процесс настройки NFS-сервера и его клиентов. NFS расшифровывается как Network File System (Сетевая Файловая Система). Клиенты, подключившие себе ресурсы с NFS-сервера, могут работать с файлами на удаленном сервере также, как если бы они располагались на локальном жестком диске.<br />
<span id="more-68"></span><br />
В статье мы будем придерживаться следующих соглашений:</p>
<ul>
<li>NFS-сервер: server.example.com с IP-адресом 192.168.0.100</li>
<li>NFS-клиент: client.example.com с IP-адресом 192.168.0.101</li>
</ul>
<p><b>Установка NFS</b><br />
<i>Сервер</i></p>
<blockquote><p>apt-get install nfs-kernel-server nfs-common portmap</p></blockquote>
<p><i>Клиент</i></p>
<blockquote><p>apt-get install nfs-common portmap</p></blockquote>
<p><b>Экспорт директорий с сервера</b><br />
Сделаем директории <code>/home</code> и <code>/var/nfs</code> доступными для клиентов. Для этого мы должны &#8220;экспортировать&#8221; их с сервера. </p>
<p>Обычно клиент монтирует NFS-ресурс с правами <code>nobody</code>. Но директория <code>/home</code>, как правило, не принадлежит пользователю <code>nobody</code> (и категорически не рекомендуется менять ее владельца). Помимо чтения, мы хотим предоставить возможность <i>записи</i> в нее, так что укажем NFS, что мы хотим предоставлять доступ к <code>/home</code> от пользователя <code>root</code>. (Если выдается доступ только для чтения, то это не нужно). Ну и наконец необходимо создать директорию <code>/var/nfs</code> и изменить ее владельца на <code>nobody:nogroup</code></p>
<blockquote><p>
mkdir /var/nfs<br />
chown nobody:nogroup /var/nfs</p></blockquote>
<p>Теперь отредактируем файл <code>/etc/exports</code> в соответствии с описанными выше параметрами доступа к NFS-ресурсам.</p>
<blockquote><pre>
# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/home           192.168.0.101(rw,sync,no_root_squash,no_subtree_check)
/var/nfs        192.168.0.101(rw,sync,no_subtree_check)</pre>
</blockquote>
<p>(Опция <code>no_root_squash</code> необходима для доступа к директории <code>/home</code> от имени <code>root</code>)<br />
Для получения более подробной информации по опциям и параметрам файла <code>exports</code> обратитесь к документации</p>
<blockquote><p>man 5 exports</p></blockquote>
<p>Чтобы сделанные изменения вступили в силу, выполните</p>
<blockquote><p>exportfs -a</p></blockquote>
<p><b>Монтирование NFS-ресурсов</b><br />
<i>Клиент</i><br />
Создадим точки монтирования для NFS-ресурсов:</p>
<blockquote><p>mkdir -p /mnt/nfs/home<br />
mkdir -p /mnt/nfs/var/nfs</p></blockquote>
<p>И попробуем их смонтировать:</p>
<blockquote><p>mount 192.168.0.100:/home /mnt/nfs/home<br />
mount 192.168.0.100:/var/nfs /mnt/nfs/var/nfs</p></blockquote>
<p>Проверим, смонтировались ли &#8220;шары&#8221;?</p>
<blockquote><pre>
client:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg0-root   19G  676M   17G   4% /
tmpfs                 253M     0  253M   0% /lib/init/rw
udev                   10M   80K   10M   1% /dev
tmpfs                 253M     0  253M   0% /dev/shm
/dev/sda1             471M   20M  427M   5% /boot
192.168.0.100:/home    29G  684M   27G   3% /mnt/nfs/home
192.168.0.100:/var/nfs
                       29G  684M   27G   3% /mnt/nfs/var/nfs
client:~#

client:~# mount
/dev/mapper/vg0-root on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
192.168.0.100:/home on /mnt/nfs/home type nfs (rw,addr=192.168.0.100)
192.168.0.100:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,addr=192.168.0.100)
client:~#
</pre>
</blockquote>
<p><b>Проверяем работу с файлами</b><br />
Создадим тестовые файлы в смонтированных директориях<br />
<i>Клиент</i></p>
<blockquote><p>touch /mnt/nfs/home/test.txt<br />
touch /mnt/nfs/var/nfs/test.txt</p></blockquote>
<p>Теперь можно зайти на сервер и убедиться, что физически файлы созданы там</p>
<blockquote><pre>
server:~# ls -l /home/
total 4
drwxr-xr-x 2 administrator administrator 4096 2009-02-16 13:18 administrator
-rw-r--r-- 1 root          root             0 2009-03-12 17:08 test.txt
server:~#

server:~# ls -l /var/nfs
total 0
-rw-r--r-- 1 nobody nogroup 0 2009-03-12 17:08 test.txt
server:~#</pre>
</blockquote>
<p>Обратите внимание: в директории <code>/home</code> владельцем созданного файла является <code>root</code>, так как мы указали серверу, что мы работаем с этим ресурсои от имени <code>root</code>. В <code>/var/nfs</code> все &#8220;по умолчанию&#8221; &#8211; владелец <code>nobody</code></p>
<p><b>Монтирование NFS-ресурсов во время загрузки</b><br />
Для того, чтобы NFS-ресурсы монтировались автоматически во время загрузки клиента, добавьте следующие параметры в файл <code>/etc/fstab</code> на клиентской машине:</p>
<blockquote><pre>
[...]
192.168.0.100:/home  /mnt/nfs/home   nfs      rw,sync,hard,intr  0     0
192.168.0.100:/var/nfs  /mnt/nfs/var/nfs   nfs      rw,sync,hard,intr  0     0</pre>
</blockquote>
<p>Вместо <em>rw,sync,hard,intr</em> вы можете использовать другие опции монтирования. Для более полной информации прочтите</p>
<blockquote><p>man nfs</p></blockquote>
<p>Перезагрузите клиента. После загрузки ресурсы должны быть уже смонтированы.</p>
<p><noindex><b>Оригинал:</a> <a href="http://howtoforge.org/setting-up-an-nfs-server-and-client-on-debian-lenny">http://howtoforge.org/setting-up-an-nfs-server-and-client-on-debian-lenny</a></noindex></p>
]]></content:encoded>
			<wfw:commentRss>http://boombick.org/blog/posts/68/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Chroot-окружение SSH/SFTP в Debian Lenny</title>
		<link>http://boombick.org/blog/posts/56</link>
		<comments>http://boombick.org/blog/posts/56#comments</comments>
		<pubDate>Fri, 20 Mar 2009 11:07:20 +0000</pubDate>
		<dc:creator>boombick</dc:creator>
				<category><![CDATA[*NIX]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://boombick.org/blog/posts/56</guid>
		<description><![CDATA[С версии 4.8 OpenSSH нативно поддерживает установку chroot-окружения и для этого больше не нужны патчи. Эта статья описывает настройку chroot-окружения для ваших пользователей при использовании SSH/SFTP. Пользователь будет &#8220;заперт&#8221; в своем каталоге без возможности доступа к основной системе Предисловие Описывается настройка chroot-окружения для OpenSSH версии 4.8 для Debian Lenny Для примера я буду использовать пользователя [...]]]></description>
			<content:encoded><![CDATA[<p>С версии 4.8 OpenSSH нативно поддерживает установку chroot-окружения и для этого больше не нужны патчи. Эта статья описывает настройку chroot-окружения для ваших пользователей при использовании SSH/SFTP. Пользователь будет &#8220;заперт&#8221; в своем каталоге без возможности доступа к основной системе<br />
<span id="more-56"></span><br />
<strong>Предисловие</strong><br />
Описывается настройка chroot-окружения для OpenSSH версии 4.8 для Debian Lenny<br />
Для примера я буду использовать пользователя <code>boombick</code> с домашней директорией <code>/home/boombick</code>. Пользователь <code>boombick</code> входит в группу <code>users</code>. Chroot-окружение будет ограничено директорией <code>/home</code></p>
<p><strong>Установка OpenSSH</strong><br />
Если OpenSSH-сервер еще не установлен в вашей системе, то установите его командой</p>
<blockquote>
<pre>
# aptitude install ssh openssh-server</pre>
</blockquote>
<p><strong>Включаем SFTP</strong><br />
Включить SFTP-доступ очень просто. Отредактируйте файл <code>/etc/ssh/sshd_config</code> следующим образом:</p>
<blockquote>
<pre>
# vim /etc/ssh/sshd_config</pre>
</blockquote>
<blockquote>
<pre>
[...]
Subsystem sftp /usr/lib/openssh/sftp-server
[...]</pre>
</blockquote>
<p>и добавьте в конец файла следующие строки (для каждого пользователя, которого вы хотите поместить в chroot):</p>
<blockquote>
<pre>
[...]
Match User boombick
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/lib/openssh/sftp-server</pre>
</blockquote>
<p>&#8230; либо для группы пользователей:</p>
<blockquote>
<pre>
[...]
Match Group users
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/lib/openssh/sftp-server</pre>
</blockquote>
<p>Последний вариант поместит всех пользователей, входящих в группу <code>users</code>, в chroot</p>
<p>Перезапустите ssh-сервер</p>
<blockquote><p> # /etc/init.d/ssh restart</p></blockquote>
<p>Если вы настраиваете chroot для нескольких пользователей в одну директорию (<code>/home</code> в нашем примере) и не хотите, чтобы они просматривали личные директории друг друга, то не забудьте присвоить верные права для директорий:</p>
<blockquote><p> chmod 700 /home/boombick</p></blockquote>
<p>Теперь вы можете зайти на сервер при помощи SFTP-клиента и работать в chroot-окружении.</p>
<p><strong>SSH в chroot-окружении</strong><br />
Настройка chroot для SSH более трудоемка из-за того, что необходимо настроить еще и программное окружение, то есть поместить в chroot такие программы как <code>/bin/bash</code>, <code>/bin/cp</code> и т. д. Это значит, что мы должны будем скопировать эти программы и <em>библиотеки, которые они используют</em>, в наше chroot-окружение. Вы можете сделать это вручную, с помощью команды <code>cp</code>, а узнать список библиотек вам поможет команда ldd:</p>
<blockquote>
<pre>
# ldd /bin/bash
	linux-gate.so.1 =&gt;  (0xb7fbd000)
	libncurses.so.5 =&gt; /lib/libncurses.so.5 (0xb7f75000)
	libdl.so.2 =&gt; /lib/i686/cmov/libdl.so.2 (0xb7f71000)
	libc.so.6 =&gt; /lib/i686/cmov/libc.so.6 (0xb7e0f000)
	/lib/ld-linux.so.2 (0xb7fbe000)</pre>
</blockquote>
<p>Также надо создать системные устройства <code>/dev/null</code>, <code>/dev/zero</code>, <code>/dev/tty</code> и <code>/dev/urandom</code>. Это можно сделать командой <code>mknod</code><br />
Но делать это вручную весьма утомительно :) Хорошо, что есть люди, которые помогли облегчить нам эту процедуру. Wolfgang Fuschlberger написал <a href="http://boombick.org/make_chroot_jail.sh">bash-скрипт</a>, который позволяет автоматизировать процесс создания chroot-окружения.</p>
<p>Для начала установим некоторые необходимые пакеты:</p>
<blockquote><p> aptitutde install sudo debianutils coreutils</p></blockquote>
<p>Затем скачаем скрипт, пометим его в <code>/usr/local/sbin</code> сделаем его исполняемым</p>
<blockquote><p> chmod 700 /usr/local/sbin/make_chroot_jail.sh</p></blockquote>
<p>Но перед стартом добавим некоторые приложения, которые мы хотим сделать доступными для использования в chroot, например, <code>vim</code></p>
<blockquote><p> vim /usr/local/sbin/make_chroot_jail.sh</p></blockquote>
<blockquote>
<pre>
[...]
elif [ "$DISTRO" = DEBIAN ]; then
  APPS="/bin/bash /bin/cp /usr/bin/dircolors /bin/ls /bin/mkdir /bin/mv /bin/rm /bin/rmdir /bin/sh /bin/su /usr/bin/groups /usr/bin/id /usr/bin/rsync /usr/bin/ssh /usr/bin/scp /sbin/unix_chkpwd /usr/bin/vim"
else
[...]</pre>
</blockquote>
<p>Затем создадим симлинк в <code>/home</code>, указывающий на сам <code>/home</code></p>
<blockquote>
<pre>
cd /home
ln -s . home</pre>
</blockquote>
<p>Теперь можно запускать скрипт. Его запускают со следующими параметрами</p>
<blockquote><p>make_chroot_jail.sh username [/path/to/chroot-shell [/path/to/chroot]]</p></blockquote>
<p><code>chroot-shell</code> &#8211; это специальная оболочка для пользователей в chroot, которую создает скрипт. Но OpenSSH поддерживает chroot нативно, поэтому мы будем использовать обычный <code>/bin/bash</code> или <code>/bin/sh</code><br />
Не имеет значения, существует ли пользователь в системе или нет. Если пользователя нет, то он будет создан. Если есть &#8211; его данные будут обновлены.</p>
<blockquote><p># make_chroot_jail.sh boombick /bin/bash /home</p></blockquote>
<p>Эта команда создаст/обновит данные пользователя boombick для его работы в chroot<br />
Для обновления всех файлов/библиотек в chroot выполните</p>
<blockquote><p>make_chroot_jail.sh update /bin/bash /home</p></blockquote>
<p>Теперь немного подредактируем конфиг (примерно так же, как мы делали для SFTP)</p>
<blockquote><p> vim /etc/ssh/sshd_config</p></blockquote>
<p>И добавим следующие строки для каждого пользователя в chroot</p>
<blockquote>
<pre>
[...]
Match User boombick
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no</pre>
</blockquote>
<p>Или для группы пользователей</p>
<blockquote>
<pre>
[...]
Match Group users
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no</pre>
</blockquote>
<p>Разница в том, что мы не добавляем строку <code>ForceCommand /usr/lib/openssh/sftp-server</code> в выражение <code>Match</code><br />
Таким образом пользователи могут использовать не только chroot-SFTP (убедитесь, что в <code>/etc/ssh/sshd_config</code> есть строка <code>Subsystem sftp /usr/lib/openssh/sftp-server</code>)<br />
Не забудьте перезапустить ssh-сервер</p>
<blockquote><p># /etc/init.d/ssh restart</p></blockquote>
<p><noindex><b>Оригинал: </b><a href="http://howtoforge.org/chrooted-ssh-sftp-tutorial-debian-lenny">http://howtoforge.org/chrooted-ssh-sftp-tutorial-debian-lenny</a></noindex></p>
]]></content:encoded>
			<wfw:commentRss>http://boombick.org/blog/posts/56/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Трансляция музыки через сеть с помощью gnump3d</title>
		<link>http://boombick.org/blog/posts/43</link>
		<comments>http://boombick.org/blog/posts/43#comments</comments>
		<pubDate>Fri, 23 Jan 2009 07:52:35 +0000</pubDate>
		<dc:creator>boombick</dc:creator>
				<category><![CDATA[*NIX]]></category>
		<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://boombick.org/blog/posts/43</guid>
		<description><![CDATA[У вас есть большая коллекция музыки в mp3/ogg и вы хотите поделиться ею с коллегами по работе? Или с соседями? Вообщем, просто хотите предоставить свою коллекцию в общий доступ. В Windows вы могли бы просто &#8220;расшарить&#8221; папку. Под UNIX-системами вы можете открыть доступ, используя NFS. Можно запустить FTP- или HTTP-сервер. Но помните, что тогда пользователям [...]]]></description>
			<content:encoded><![CDATA[<p>У вас есть большая коллекция музыки в mp3/ogg и вы хотите поделиться ею с коллегами по работе? Или с соседями? Вообщем, просто хотите предоставить свою коллекцию в общий доступ. В Windows вы могли бы просто &#8220;расшарить&#8221; папку. Под UNIX-системами вы можете открыть доступ, используя NFS. Можно запустить FTP- или HTTP-сервер. Но помните, что тогда пользователям придется загрузить файлы к себе на компьютер перед тем, как прослушать их. gnump3d поможет вам. gnump3d &#8211; это сервер потокового вещания. Несмотря на то, что в названии присутствует только mp3, gnump3d может также передавать аудиопоток в формате ogg. И вам не надо беспкокиться о перекодировании mp3 в ogg, gnump3d справится с этим самостоятельно.<br />
<span id="more-43"></span><br />
<strong>Получение gnump3d</strong><br />
Вы можете скачать последнюю версию с <noindex><a href="http://www.gnu.org/software/gnump3d/download.html#Download">официальной страницы gnump3d</a></noindex></p>
<p><strong>Установка</strong><br />
Распакуйте загруженный архив:</p>
<blockquote>
<pre>
# tar xzvf gnump3d-2.9.8.tar.gz</pre>
</blockquote>
<p>и перейдите в директорию с программой</p>
<blockquote>
<pre>
# cd gnump3d-2.9.8</pre>
</blockquote>
<p>Теперь самое время установить программу. Вы можете подумать, что этот процесс сложен и тяжел, но это не так. Просто дайте команду</p>
<blockquote>
<pre>
# make install</pre>
</blockquote>
<p>И все :)</p>
<p><strong>Конфигурация</strong><br />
# Перед запуском сервера его надо сконфигурировать. Конфигурационный файл /etc/gnump3d/gnump3d.conf. В нем требуется задать только два параметра: номер порта, который будет прослушиваться сервером. Значение по умолчанию &#8211; 8888, вы можете задать свое значение.<br />
# root &#8211; параметр, сообщающий gnump3d имя каталога, в котором находятся разделяемые файлы.</p>
<p><strong>Запуск сервера</strong></p>
<p>Для запуска gnump3d просто наберите в командной строке:</p>
<blockquote>
<pre>
gnump3d &amp;</pre>
</blockquote>
<p>Символ &amp; после команды запустит сервер в фоновом режиме. Для автоматического старта сервера при запуске системы добавьте эту команду в файл /etc/rc.local</p>
<p>Перед запуском Gnump3d вначале проиндексирует вашу коллекцию.</p>
<p><strong>Статистика</strong></p>
<p>Если вы хотите узнать статистику сервера, просто наберите команду</p>
<blockquote>
<pre>
# gnump3d-index --stats</pre>
</blockquote>
<p>На моей машине этот вывод такой:</p>
<blockquote>
<pre>
Total number of songs: 7246
Total size of archive: 26.2Gb (28194094349 bytes)
Total playlength     : 24 days, 15 hours, 3 mins 3 seconds</pre>
</blockquote>
<p><strong>Понижение битрейта</strong></p>
<p>Обычно эта служба используется в локальной сети, где каналы имеют хорошую пропускную способность. Но если вы хотите раздавать музыку в Интернет, то имеет смысл позаботиться о более эффективном использовании канала. Gnump3d может понижать битрейт отдаваемых файлов &#8220;на лету&#8221;. Для активации этой опции раскоментируйте следующую строку в конфигурационном файле:</p>
<blockquote>
<pre>
# downsample_enabled = 1</pre>
</blockquote>
<p>Если эта строка закомментирована, остальные опции, относящиеся к понижению битрейта, будут проигнорированы.<br />
Gnump3d использует суффиксы для более точного контроля за битрейтом, если вам, например, необходимо использовать различные настройки для ogg и mp3-файлов. Стандартный формат этой опции такой</p>
<blockquote>
<pre>
downsample_"level"_"suffix"</pre>
</blockquote>
<p>например,</p>
<blockquote>
<pre>
downsample_high_mp3   = /usr/bin/lame  --mp3input -b 128 $FILENAME -
downsample_medium_mp3 = /usr/bin/lame  --mp3input -b 64 $FILENAME -
downsample_low_mp3    = /usr/bin/lame  --mp3input -b 32 $FILENAME -</pre>
</blockquote>
<p>После того, как указали, как понижать битрейт, надо указать, кому его надо понижать. Для этого используются две опции и вы должны задать значения для обеих:</p>
<blockquote>
<pre>
downsample_clients    = XXX
no_downsample_clients = YYY</pre>
</blockquote>
<p>Например, если вы хотите изменять битрейт всем, кроме клиентов из вашей локальной сети, то это выглядит так:</p>
<blockquote>
<pre>
downsample_clients    = all
no_downsample_clients = 192.168.0.0/255.255.255.0</pre>
</blockquote>
<p><strong>Защита вашей коллекции</strong></p>
<p>Может быть вы захотите закрыть доступ к вашей коллекции неавторизованным пользователям. Вы можете сделать это, используя опции allowed_clients и denied_clients или защитив ее паролем. Если вы воспользуетесь опцией allowed_clients и denied_clients, вы должны указать IP-адреса или адреса подсетей, для которых вы хотитеЮ соответствено, открыть или запретить доступ.</p>
<p>Если вы хотите использовать доступ по паролю, то раскомментируйте в файле /etc/gnump3d/gnump3d.conf строку enable_password_protection = 0 и поменяйте в ней 0 на 1. После этого создайте файл .password (будьте внимательны, не забудьте точку в начале имени, чтобы файл был скрытым) в корне вашей коллекции, указанной в параметре root ( у меня это /home/mp3). Этот файл должен содержать пары &#8220;логин/пароль&#8221; в следующем формате:</p>
<blockquote>
<pre>
username:password
username1:password1</pre>
</blockquote>
<p>Например</p>
<blockquote>
<pre>
sumodirjo:secretpassword</pre>
</blockquote>
<p>Не забудьте сделать этот файл доступным для чтения пользователю, под которым запускается gnump3d.</p>
<p>Это все, наслаждайтесь воспроизведением музыки из вашей коллекции!</p>
<p><noindex><br />
<strong>Оригинал:</strong> <a href="http://howtoforge.org/share_your_music_with_gnump3d">http://howtoforge.org/share_your_music_with_gnump3d</a><br />
<strong>Мой перевод на сайте rus-linux.net:</strong> <a href="http://rus-linux.net/lib.php?name=MyLDP/mm/gnump3d.html">http://rus-linux.net/lib.php?name=MyLDP/mm/gnump3d.html</a><br />
</strong></noindex></p>
]]></content:encoded>
			<wfw:commentRss>http://boombick.org/blog/posts/43/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Фильтрация пакетов по географическому признаку с помощью iptables и geoip</title>
		<link>http://boombick.org/blog/posts/30</link>
		<comments>http://boombick.org/blog/posts/30#comments</comments>
		<pubDate>Tue, 05 Feb 2008 15:16:50 +0000</pubDate>
		<dc:creator>boombick</dc:creator>
				<category><![CDATA[*NIX]]></category>
		<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://boombick.org/blog/posts/30</guid>
		<description><![CDATA[Брутфорс-атаки не должны представлять реальной угрозы для хорошо настроенного сервера, но, тем не менее, они отвлекают и засоряют лог-файлы. Существуют различные решения для предотвращения подобных атак. В этой заметке я расскажу вам о еще одном из них: GeoIP GeoIP &#8211; это модуль для netfilter/iptables, который позволяет фильтровать приходящие пакеты по их географическому местоположению. Этот модуль [...]]]></description>
			<content:encoded><![CDATA[<p>Брутфорс-атаки не должны представлять реальной угрозы для хорошо настроенного сервера, но, тем не менее, они отвлекают и засоряют лог-файлы. Существуют различные решения для предотвращения подобных атак. В этой заметке я расскажу вам о еще одном из них: <noindex><a href="http://people.netfilter.org/peejix/geoip/">GeoIP</a></noindex><br />
GeoIP &#8211; это модуль для netfilter/iptables, который позволяет фильтровать приходящие пакеты по их географическому местоположению.<br />
Этот модуль может быть использован не только для предотвращения брутфорса. Например, его можно использовать для так называемой &#8220;расистской маршрутизации&#8221;, т.е. для ограничения доступа к серверу пользователям из определенных стран. Оставим цели использования на совести системных администраторов, а в этой заметке я просто опишу установку и настройку модуля<br />
<span id="more-30"></span><br />
Все проверялось на Debian 4.0, но ничего debian-специфичного в процессе нет, так что все должно работать и на других дистрибутивах GNU/Linux. Для установки нам понадобятся новый модуля для ядра, библиотеки для iptables и база соответствия IP-адресов странам. Пересобирать ядро не нужно.<br />
Итак:</p>
<p><strong>Подготовка</strong><br />
Первым делом нам понадобятся исходные тексты ядра, которое используется в системе. Для Debian Etch это 2.6.18</p>
<blockquote><p># apt-get install linux-source-2.6.18</p></blockquote>
<p>Скачанные исходники будут лежать в /usr/src. Распакуем их:</p>
<blockquote><p># tar xjf /usr/src/linux-source-&lt;version&gt;.tar.bz2 -C /usr/src/</p></blockquote>
<p>Замените &lt;version&gt; на версию вашего ядра. Для распакованного архива понадобится около 300 Мб свободного места.</p>
<p>Теперь нам нужны исходные тексты iptables. Нет необходимости пересобирать сам iptables, но исходники понадобятся для сборки модуля. Для работы с ними удобно использовать временную директорию</p>
<blockquote><p># mkdir ~/geoip<br />
# cd ~/geoip/<br />
# apt-get source iptables</p></blockquote>
<p>Внимание, для использования apt-get source  в вашей системе должен быть установлен пакет dpkg-dev</p>
<p>Теперь не хватает только самого geoip</p>
<blockquote><p># wget http://people.netfilter.org/peejix/patchlets/geoip.tar.gz</p></blockquote>
<p>Для дальнейшей работы нам понадобится patch-o-matic-ng, его можно найти на <noindex><a href="http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/"></a></noindex> Если у вас старое ядро, то, возможно, вам придется выбрать более старую версию, но для нашей заметки актуален последний снапшот:</p>
<blockquote><p># wget http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20070414.tar.bz2</p></blockquote>
<p>Распакуем полученный архив:</p>
<blockquote><p># tar xjf patch-o-matic-ng-20070414.tar.bz2</p></blockquote>
<p>И распакуем исходники geoip в поддиректорию patchlets/ пакета patch-o-matic-ng</p>
<blockquote><p> # tar xzf geoip.tar.gz -C patch-o-matic-ng-20070414/patchlets/</p></blockquote>
<p><strong>Наложение патчей</strong><br />
Применим необходимые патчи к ядру и iptables</p>
<blockquote><p> # cd patch-o-matic-ng-20070407/<br />
# KERNEL_DIR=/usr/src/linux-source-&lt;version&gt;/ IPTABLES_DIR=~/geoip/iptables-&lt;version&gt;/iptables/ ./runme geoip</p></blockquote>
<p>Не забудьте заменить &lt;version&gt; на используемые в вашей системе версии ядра и iptables.<br />
Если все прошло успешно, то patch-o-matic-ng предоставит информацию о полученном патче и предложит применить его. Ответьте <em>y</em>.</p>
<p><strong>Сборка и установка модуля для ядра</strong><br />
Для сборки нам понадобится пакет build-essential. Если вы работаете не с Debian, то установите средства для разработки: gcc, make и т.д.</p>
<blockquote><p># apt-get install build-essential</p></blockquote>
<p>Так как нам потребуется немного переконфигурировать ядро, мы возьмем за основу уже имеющуюся конфигурацию:</p>
<blockquote><p># cd /usr/src/linux-source-&lt;version&gt;/<br />
# make oldconfig</p></blockquote>
<p>На вопрос:</p>
<blockquote><p>geoip match support (IP_NF_MATCH_GEOIP) [N/m/?] (NEW)</p></blockquote>
<p>Ответьте <em>m</em>, чтобы собрать geoip как модуль.</p>
<p>Выполните подготовку для сборки модулей:</p>
<blockquote><p># make modules_prepare</p></blockquote>
<p>Затем соберите модули.. К сожалению, я не знаю как собрать только один необходимый модуль, так что собираем все модули netfilter, пока кто-нибудь не предложит лучший способ :)</p>
<blockquote><p># make -C $(pwd) M=net/ipv4/netfilter/ modules</p></blockquote>
<p>Если все нормально, то файл ipt_geoip.ko должен появиться в net/ipv4/netfilter/. Скопируем его к остальным модулям системы</p>
<blockquote><p># cp net/ipv4/netfilter/ipt_geoip.ko /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/</p></blockquote>
<p>И активируем его:</p>
<blockquote><p> # depmod<br />
# modprobe ipt_geoip<br />
# echo &#8220;ipt_geoip&#8221; &gt;&gt; /etc/modules</p></blockquote>
<p><strong>Сборка и установка библиотек iptables</strong><br />
Соберем библиотеку:</p>
<blockquote><p> # cd ~/geoip/iptables-&lt;version&gt;/iptables/<br />
make KERNEL_DIR=/usr/src/linux-source-&lt;version&gt;/  extensions/libipt_geoip.so</p></blockquote>
<p>Не забывайте заменять &lt;version&gt;!!!</p>
<p>Скопируем полученный файл к другим библиотекам iptables</p>
<blockquote><p>cp extensions/libipt_geoip.so /lib/iptables/</p></blockquote>
<p><strong>Создание файла привязок IP-адресов к странам</strong><br />
Мы будем использовать свободно распространяемую базу с <noindex><a href="http://www.maxmind.com/">MaxMind</a></noindex> Она имеет заявленную точность в 98% и обновляется раз в месяц. Если для вас этого недостаточно, можно купить более точную платную версию там же. Скачайте и распакуйте базу:</p>
<blockquote><p># cd ~/geoip/<br />
# wget http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip<br />
# unzip GeoIPCountryCSV.zip</p></blockquote>
<p>Вы можете открыть полученный файл в любом редакторе и увидите, что это просто список, со значениями, разделенными запятыми. Поиск в таком файле будет занимать много времени, поэтому мы преобразуем его в бинарный формат, используя утилиту csv2bin, также предоставленную автором geoip.</p>
<blockquote><p># wget http://people.netfilter.org/peejix/geoip/tools/csv2bin-20041103.tar.gz<br />
# tar xzf csv2bin-20041103.tar.gz<br />
# cd csv2bin/<br />
# make<br />
# ./csv2bin ../GeoIPCountryWhois.csv</p></blockquote>
<p>Она создаст два файла geoipdb.bin и geoipdb.idx, которые необходимо положить в /var/geoip</p>
<blockquote><p># mkdir /var/geoip<br />
# mv geoipdb.* /var/geoip/</p></blockquote>
<p>Теперь вы можете выполнять фильтрацию по географическому признаку :)</p>
<blockquote><p># # Блокировка доступа к SSH всем, кроме Афганистана<br />
# iptables -A INPUT -p tcp &#8211;dport 22 -m geoip ! &#8211;src-cc AF -j REJECT<br />
# # Запрет на пинг хостов, расположенных во Франции, Италии и Испании<br />
# iptables -A OUTPUT -p icmp -m geoip &#8211;dst-cc FR,IT,ES -j REJECT<br />
# # Помощь<br />
# iptables -m geoip &#8211;help</p></blockquote>
<p>Оригинал: <noindex><a href="http://www.debian-administration.org/articles/518">http://www.debian-administration.org/articles/518</a></noindex></p>
]]></content:encoded>
			<wfw:commentRss>http://boombick.org/blog/posts/30/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
