Сетевые средства Linux

Настройка некоторых сетевых служб в Debian GNU/Linux

Показывать лекцию целиком

Содержание:

  • Сервер защищенных соединений (ssh)
  • HTTP-сервер Apache
  • Кэширующий прокси-сервер Squid
  • Сервер защищенных соединений (ssh)

    Протокол SSH (Secure SHell) позволяет получить удаленный доступ к компьютеру по безопасному соединению (работает на уровне потоков данных) , . Существуют две версии этого протокола: SSH-1 (считается ненадежной) и SSH-2 (рекомендована к использованию). SSH реализуется двумя приложениями: сервером и клиентом. При подключении клиент проходит процедуру аутентификации и между клиентом и сервером устанавливается защищенное соединение.

    В Linux для реализации . Для установки сервера в Debian можно использовать команду:

    # apt-get install openssh-server

    В процессе установки сервер автоматически прописывается в автозагрузку и запускается. По умолчанию сервер слушает на TCP-порту с номером 22 на всех интерфейсах:

    # ss -4nlp sport = :ssh
    Recv-Q Send-Q         Local Address:Port      Peer Address:Port 
    0      128               *:22             *:*          users:(("sshd",983,3))

    Для остановки/запуска/перезапуска сервера можно использовать скрипт ssh в каталоге /etc/init.d с параметром stop/start/restart соответственно, например для перезапуска:

    # /etc/init.d/ssh restart

    Конфигурационный файл сервера sshd_config расположен в каталоге /etc/ssh. В настройках по умолчанию указано использовать аутентификацию на основе публичных ключей ( PubkeyAuthentication yes ) или логина и пароля ( PasswordAuthentication yes ), разрешать удаленное подключение суперпользователя ( PermitRootLogin yes ), использовать SSH-2 ( Protocol 2 ), не разрешать пустые пароли ( PermitEmptyPasswords no ) и т. д. Для применения внесенных изменений в конфигурацию необходимо перезапустить сервер.

    Для того, чтобы сервер ssh слушал на адресе 192.168.56.102 необходимо в файле /etc/ssh/sshd_config раскомментировать и исправить опцию ListenAddress:

    ListenAddress 192.168.56.102

    Затем перезапустить openssh-server:

    # /etc/init.d/ssh restart

    Результат можно проверить командой ss:

    # ss -4nl sport = :ssh
    Recv-Q Send-Q      Local Address:Port         Peer Address:Port 
       0    128       192.168.56.102:22                      *:*

    Для получения удаленного доступа к командному интерпретатору на клиентской системе необходимо использовать утилиту ssh, которая обычно присутствует в базовой установке системы (ее также можно установить, используя команду apt-get install openssh-client ). В качестве параметра надо указать имя пользователя и IP-адрес (имя удаленной системы) используя символ @ в качестве разделителя (пример 8.2):

    $ ssh root@192.168.56.102
    The authenticity of host '192.168.56.102 (192.168.56.102)' can't be established.
    RSA key fingerprint is d7:33:4d:e3:0b:e2:ec:57:48:34:f1:77:88:ab:77:de.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.56.102' (RSA) to the list of known hosts.
    root@192.168.56.102's password: 
    Linux ssl1 2.6.32-5-686 #1 SMP Wed Jan 12 04:01:41 UTC 2011 i686
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    Last login: Wed Apr  6 13:19:19 2011 from 192.168.56.1
    root@ssl1:~#

    При первом подключение будет выдано предупреждение о неизвестном узле. При ответе yes, удаленный узел будет добавлен в список известных узлов (файл ~/.ssh/known_hosts ) и при последующих подключениях предупреждение не будет выдаваться. Затем нужно ввести пароль. После успешного ввода пароля будет предоставлен доступ к интерфейсу командной строки удаленной системы. Для завершения удаленного сеанса следует использовать команду exit.

    Для копирования файлов по протоколу ssh можно использовать утилиту scp, при этом на одной из систем должен быть установлен ssh-сервер (примеры 8.3 и 8.4).

    # scp root@192.168.56.102:/boot/initrd.img-2.6.32-5-686 .
    root@192.168.56.102's password: 
    initrd.img-2.6.32-5-686                100% 8318KB   8.1MB/s   00:01

    В данном примере файл копируется из указанного пути (/boot/initrd.img-2.6.32-5-686) удаленной системы (192.168.56.102) в текущий каталог локальной системы (.). Для этого используется учетная запись суперпользователя удаленной системы.

    $ scp known_hosts root@192.168.56.102:/root

    В данном примере файл ( known_hosts ) копируется из текущего каталога локальной системы в каталог суперпользователя (/root ) удаленной системы.

    Для копирования каталогов в команде scp нужно использовать ключ -r.

    Примечание: Для операционных систем семейства Windows также существуют программы клиенты ssh , .

    HTTP-сервер Apache

    HTTP-сервер Apache является программным обеспечением с открытым исходным кодом для операционных систем Linux, Unix, Windows, Mac и Netware. Главной целью проекта является обеспечение защищенных, эффективных и расширяемых HTTP-сервисов, поддерживающих современные стандарты .

    Для установки Apache в Debian можно использовать команду:

    # apt-get install apache2

    В процессе установки сервер прописывается в автозагрузку и запускается. По умолчанию сервер слушает на всех интерфейсах на TCP-порту с номером 80. Для остановки/запуска/перезапуска сервера можно использовать скрипт apache2 в каталоге /etc/init.d с параметром stop/start/restart соответственно:

    # /etc/init.d/apache2 restart

    Конфигурационные файлы Apache расположены в каталоге /etc/apache2. В частности настройки сайта по умолчанию расположены в файле /etc/apache2/sites-available/default:

    # cat /etc/apache2/sites-available/default
     <VirtualHost *:80>      
       ServerAdmin webmaster@localhost
            DocumentRoot /var/www
             <Directory /> 
                    Options FollowSymLinks
                    AllowOverride None
             </Directory> 
             <Directory /var/www/> 
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride None
                    Order allow,deny
                    allow from all
             </Directory> 
    
            ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
             <Directory "/usr/lib/cgi-bin"> 
                    AllowOverride None
                    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                    Order allow,deny
                    Allow from all
             </Directory> 
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            LogLevel warn
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    
        Alias /doc/  "/usr/share/doc/" 
         <Directory "/usr/share/doc/"> 
            Options Indexes MultiViews FollowSymLinks
            AllowOverride None
            Order deny,allow
            Deny from all
            Allow from 127.0.0.0/255.0.0.0 ::1/128
         </Directory> 
    
     </VirtualHost>

    В конфигурационных файлах Apache используется теговый подход. В данном случае в теге виртуального узла ( VirtualHost ) описаны его настройки. Присутствуют несколько "дочерних" тегов с описанием каталогов, доступных данному виртуальному узлу ( Directory ). Между тегами <Directory> для каталога можно указазать различные опции (директивы). Например. для каталога /var/www установлен приоритет разрешительных директив ( Order allow, deny ), описывающих правила доступа к данному каталогу; также разрешен доступ всем ( allow from all ) и т.д. Основным каталогом для документов является /var/www (директива DocumentRoot ). Директива Alias описывает виртуальный путь HTTP-сервера, т.е. все запросы вида http://<IP-адрес сервера> /doc/ будут перенаправляться в каталог /usr/share/doc.

    Для проверки работоспособности WEB-сервера можно используя Интернет-обозреватель, указав в строке адреса IP-адрес HTTP-сервера. Например (в данном случае используется текстовый браузер с указанием открываемой страницы в качестве параметра):

    # lynx http://192.168.56.102

    Протоколы работы сайта по умолчанию расположены в каталоге /var/log/apache2.

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

    Кэширующий прокси-сервеp

    представляет собой реализацию прокси прикладного уровня для WEB-трафика (протоколы HTTP, HTTPS, FTP и т.д.). Обычно squid устанавливается на компьютере, имеющем как минимум два сетевых интерфейса: один с доступом в сети Интернет, а другой — в локальную сеть. Интернет-обозреватель или программа, взаимодействующая с прокси, настраивается на адрес прокси в локальной сети и заданный порт и далее все WEB-запросы отправляет прокси-серверу. Прокси обслуживает запросы клиентов, используя Интернет-интерфейс. При этом часть WEB-трафика сохраняется на файловой системе прокси (кэшируется), а при повторных запросах клиентов данные извлекаются из кэша.

    Пример 8.5. Пример простой настройки Squid в Debian

    Используя VirtualBox, создадим простой стенд для отладки схемы доступа в Интернет на основе Squid. Стенд будет включать две виртуальные машины на основе Debian: прокси-сервер и клиент локальной сети.

    На прокси-сервере:

    1.В VirtualBox предварительно для виртуальной машины включим два сетевых интерфейса: один в сеть NAT — Интернет-интерфейс (полагаем, что основная система имеет доступ в Интернет), а второй — во внутреннюю сеть (локальный интерфейс)

    2.Включим виртуальную машину и настроим интерфейсы: eth0 — Интернет-интерфейс, eth1 — интерфейс локальной сети (фрагмент /etc/network/interfaces ):

    auto eth0
    iface eth0 inet dhcp
    
    auto eth1
    iface eth1 inet static
        address 192.168.1.1
        netmask 255.255.255.0

    Перезапустим сетевую подсистему:

    # /etc/init.d/networking restart

    В результате интерфейс eth0 получит настройки по протоколу DHCP (от NAT-сети VirtualBox ):

    # ip addr show eth0
    2: eth0:  <BROADCAST,MULTICAST,UP,LOWER_UP>  mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 08:00:27:0a:41:d4 brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
        inet6 fe80::a00:27ff:fe0a:41d4/64 scope link
           valid_lft forever preferred_lft forever

    Также будут автоматически прописаны настройки DNS-сервера (такие как в хостовой системе):

    # cat /etc/resolv.conf
    nameserver 10.10.10.10

    3.Установим squid:

    #apt-get install squid

    В процессе установки сервер прописывается в автозагрузку, создает структуру каталогов для дискового кэша (/var/spool/squid) и запускается.

    4.Конфигурационный файл Squid - /etc/squid/squid.conf. По умолчанию удаленный доступ к squid запрещен. Для разрешения доступа нужно в конфигурационный файл добавить разрешающее правило для сети 192.168.1.0/24. Для этого в секции ACCESS CONTROLS впишем список доступа ( access list ):

    acl mynet src 192.168.1.0/24

    а затем в секции http_access после правила http_access allow localhost добавим:

    http_access allow mynet

    Также исправим опцию http_port, что squid принимал клиентские запросы только на локальном интерфейсе:

    http_port 192.168.1.1:3128

    Перезапустим squid:

    # /etc/init.d/squid restart

    5.Запустим виртуальную машину клиента, предварительно установив в VirtualBox сетевой адаптер в режим внутренней сети. В системе установим IP-адрес из сети 192.168.1.0/24. Проверим работу прокси-сервера c помощью текстового браузера lynxlynx опцию прокси-сервера можно установить с помощью переменной окружения):

    # env http_proxy=''http://192.168.1.1:3128''  lynx http://intuit.ru
    Примечание: Протоколы работы squid хранятся в каталоге /var/log/squid. Файл access.log — протокол запросов, cache.log - общий лог, store.log — лог кэша.

    Программное обеспечение squid имеет широкие функциональные возможности и может работать в различных режимах. Более подробную информацию о настройке и использовании squid можно получить из официальной документации, книг и ресурсов сети Интернет.

    Упражнения

  • Воспроизвести с использованием VirtualBox , , , . В качестве клиента можно воспользоваться еще одной виртуальной машиной или хостовой системой (в случае Windows использовать средства ssh, доступные для данной ОС).
  • В VirtualBox воспроизвести пример 8.5.
  • Вернуться к учебному плану