Linux mini-HOWTO

         

Документация


cipe.info: info-файл, входящий в дистрибутив

"HOWTO: Firewall", автор Mark Grennan, markg@netplus.net

"Мини-HOWTO: IP-маскарадинг", автор Ambrose Au, ambrose@writeme.com

"HOWTO: IPChains", автор Paul Russell, Paul.Russell@rustcorp.com.au



Дополнительная информация о скриптах и VPN


Приведенные здесь скрипты ip-up рассчитаны на сети класса C. Если хотите, чтобы машина B могла связаться с машиной C, вам придется исправить соответствующие скрипты ip-up и ip-down. В них надо исправить маски ptpaddr и myaddr. Ниже приводятся два скрипта ip-up - один для ipchains, второй для ipfwadm. Также и для скриптов ip-down. Измените с /24 на /16 соответствующие правила интерфейса cipe для входящего, исходящего или проходящего потоков. Если вы изменяете правило в ip-up (ipfwadm), не забудьте изменить его в скрипте ip-down, чтобы оно удалялось при отключении интерфейса. Что же касается варианта для ipchains, то изменения в ip-up не требуют изменений в ip-down, ip-down просто удаляет все правила пользователя.

Вам также придется раскомментировать в файлах rc.cipe машин B и C строку с указанием маршрута на сети друг друга.



/Etc/cipe/ip-down



Ядро 2.0, ipfwadm, cipe 1.0.x

#!/bin/bash # ip-down #3/29/1999 #Это пример скрипта ip-down для старых ядер версий 1.x 2.x, использующих ipfwadm, #удаляющий маршруты и правила firewall, заданные ранее для соединения вашей сети класса c #с удаленной сетью класса c. #Вопросы и предложения посылайте по адресу acj@home.com

#-------------------------------------------------------------------------- #Настраиваем некоторые переменные device=$1 # Интерфейс CIPE me=$2 # Наш UDP-адрес pid=$3 # ID процесса демона ipaddr=$4 # IP-адрес нашего CIPE-устройства ptpaddr=$5 # IP-адрес удаленного CIPE-устройства option=$6 # аргументы, переданные через опции скрипта

PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"

#рас(за)-комментируйте следующую строку для включение в системный журнал #всех попыток неавторизованного доступа. Эта строка должна соответствовать #строке в скрипте ip-up для правильного отключения правил. log="-o"

#-------------------------------------------------------------------------- umask 022

# пример записи в журнал #echo "DOWN $*" >> /var/adm/cipe.log

# во многих системах требуются такие pid-файлы #rm -f /var/run/$device.pid

#-------------------------------------------------------------------------- #Правила для входящего потока firewall для интерфейса cipe

#удаляем запрещение всех остальных входящих с интерфейса cipe пакетов ipfwadm -I -d deny -W $device -S 0/0 -D 0/0 $log



#удаляем разрешение всех пакетов, входящих с интерфейса cipe из удаленной сети для локальной ipfwadm -I -d accept -W $device -S $ptpaddr/24 -D $ipaddr/24

#удаляем разрешение всех пакетов, входящих с интерфейса cipe из локальной сети для удаленной ipfwadm -I -d accept -W $device -S $ipaddr/24 -D $ptpaddr/24

#удаляем запрещение всех пакетов, входящих с интерфейса cipe из локальной сети для локальной ipfwadm -I -d deny -W $device -S $ipaddr/24 -D $ipaddr/24 $log

#-------------------------------------------------------------------------- #Правила для исходящего потока firewall для интерфейса cipe


# удаляем запрещение всех остальных, исходящих из интерфейса cipe, пакетов ipfwadm -O -d deny -W $device -S 0/0 -D 0/0 $log

#удаляем разрешение всех пакетов, исходящих из интерфейса cipe, из удаленной сети для локальной ipfwadm -O -d accept -W $device -S $ptpaddr/24 -D $ipaddr/24

#удаляем разрешение всех пакетов, исходящих из интерфейса cipe, из локальной сети для удаленной ipfwadm -O -d accept -W $device -S $ipaddr/24 -D $ptpaddr/24

#удаляем запрещение всех пакетов, исходящих из интерфейса cipe, из локальной сети для локальной ipfwadm -O -d deny -W $device -S $ipaddr/24 -D $ipaddr/24 $log

#-------------------------------------------------------------------------- #Правила для проходящего потока firewall для интерфейса cipe

#удаляем запрещение всех остальных пакетов, проходящих через интерфейс cipe ipfwadm -F -d deny -W $device -S 0/0 -D 0/0 $log

#удаляем разрешение всех пакетов, проходящих через интерфейс cipe, из удаленной сети для локальной ipfwadm -F -d accept -W $device -S $ptpaddr/24 -D $ipaddr/24

#удаляем разрешение всех пакетов, проходящих через интерфейс cipe, из локальной сети для удаленной ipfwadm -F -d accept -W $device -S $ipaddr/24 -D $ptpaddr/24

#-------------------------------------------------------------------------- #Дополнение к системе безопасности - в случае, если стандартное правило для #проходящего потока установлено в DENY или REJECT.

#define machine interfaces #localif="eth0" #staticif="eth1" ;для пользователей кабельных модемов #staticif="ppp0" ;для пользователей обычных модемов

#По-настоящему грубо определяем удаленный ip-адрес, взяв его из файла options. #В идеале этот адрес надо передавать скрипту через аргументы #Надо раскомментировать обе строки #peerfile=`grep $device /etc/cipe/options.* | cut -f1 -d:` #peer=`grep peer $peerfile | cut -f1 -d: | awk '{print $2}'`

#Запоминаем удаленный ip-адрес для скрипта ip-down (???) #echo $peer > /var/run/$device.peerip

#удаляем разрешение пересылки пакетов из локальной сети в удаленную, через сетевую карту #ipfwadm -F -d accept -W $localif -S $ipaddr/24 -D $ptpaddr/24 #удаляем разрешение пересылки пакетов из удаленной сети в локальную, через сетевую карту #ipfwadm -F -d accept -W $localif -S $ptpaddr/24 -D $ipaddr/24 #удаляем разрешение пересылки пакетов через интерфейс staticif от этой системы к удаленной #myaddr=`echo $me | cut -f1 -d:` #ipfwadm -F -d accept -W $staticif -S $myaddr -D $peer #-------------------------------------------------------------------------- #Второе дополнение к системе безопасности - блокируем все запросы к udp-порту #cipe, кроме идущих от удаленной машины



#необходимо определить udp-порты интерфейса cipe #получаем наш udp-порт #if [ "$option" = "" ]; then # myport=`echo $me | cut -f2 -d:` #else # myport=$option #fi

#получаем удаленный udp-порт # переменная peerfile должна быть задана #peerport=`grep peer $peerfile | cut -f2 -d:`

#запоминаем удаленный udp-порт cipe для скрипта ip-down (???) #echo $peerport > /var/run/$device.peerport

#получаем наш ip-адрес #myaddr=`echo $me | cut -f1 -d:`

#удаляем запрещение всех запросов к udp-порту cipe #ipfwadm -I -d deny -P udp -W $staticif -S 0/0 -D $myaddr $myport $log #удаляем разрешение всех запросов к udp-порту cipe, идущих из интерфейса staticif, от удаленной машины #ipfwadm -I -d accept -P udp -W $staticif -S $peer $peerport \ #-D $myaddr $myport

exit 0



Ядро 2.1/2.2, ipchains, cipe 1.2.x



#!/bin/sh # ip-down #3/29/1999 #Это пример скрипта ip-down для новых ядер версий 2.1/2.2, использующих ipchains, #удаляющий маршруты и правила firewall, заданные ранее для соединения вашей сети класса c #с удаленной сетью класса c. #Вопросы и предложения посылайте по адресу acj@home.com.

#-------------------------------------------------------------------------- #Настраиваем некоторые переменные device=$1 # Интерфейс CIPE me=$2 # Наш UDP-адрес pid=$3 # ID процесса демона ipaddr=$4 # IP-адрес нашего CIPE-устройства ptpaddr=$5 # IP-адрес удаленного CIPE-устройства option=$6 # аргументы, переданные через опции скрипта PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"

#рас(за)-комментируйте следующую строку для включение в системный журнал #всех попыток неавторизованного доступа. Эта строка должна соответствовать #строке в скрипте ip-up для правильного отключения правил. log="-l"

#-------------------------------------------------------------------------- umask 022

# пример записи в журнал #echo "DOWN $*" >> /var/adm/cipe.log

# во многих системах требуются такие pid-файлы #rm -f /var/run/$device.pid

#-------------------------------------------------------------------------- #удаляем с главных потоков ссылки на пользовательские ipchains -D input -i $device -j $device"i" ipchains -D output -i $device -j $device"o" ipchains -D forward -i $device -j $device"f"



#-------------------------------------------------------------------------- # Удаляем все правила из пользовательского входящего потока ipchains -F $device"i" #Удаляем пользовательский входящий поток ipchains -X $device"i"

#-------------------------------------------------------------------------- #Удаляем все правила из пользовательского исходящего потока ipchains -F $device"o" #Удаляем пользовательский исходящий поток ipchains -X $device"o"

#-------------------------------------------------------------------------- #Удаляем все правила из пользовательского проходящего потока ipchains -F $device"f" #Удаляем пользовательский проходящий поток ipchains -X $device"f"

#-------------------------------------------------------------------------- #Удаляем дополнительные меры безопасности

#получаем ip-адрес удаленной машины #peer=`cat /var/run/$device.peerip`

#определяем интерфейсы машины #localif="eth0" #staticif="eth1" ;для пользователей кабельных модемов #staticif="ppp0" ;для пользователей обычных модемов

#получаем наш ip-адрес #myaddr=`echo $me |cut -f1 -d:`

#удаляем разрешение пересылки пакетов из локальной сети в удаленную, через сетевую карту #ipchains -D forward -j ACCEPT -i $localif -s $ipaddr/24 -d $ptpaddr/24

#удаляем разрешение пересылки пакетов из удаленной сети в локальную, через сетевую карту #ipchains -D forward -j ACCEPT -i $localif -s $ptpaddr/24 -d $ipaddr/24

#удаляем разрешение пересылки пакетов через интерфейс staticif от этой системы к удаленной #ipchains -D forward -j ACCEPT -i $staticif -s $myaddr -d $peer

#удаляем файл с запомненным удаленным ip-адресом #rm /var/run/$device.peerip

#-------------------------------------------------------------------------- #Удаляем дополнительные меры безопасности

#получаем удаленный udp-порт #peerport=`cat /var/run/$device.peerport`

#получаем наш udp-порт #if [ "$option" = "" ]; then # myport=`echo $me | cut -f2 -d:` #else # myport=$option #fi

#удаляем запрещение всех запросов к udp-порту cipe #ipchains -D input -j DENY -p udp -i $staticif -s 0/0 \ #-d $myaddr $myport $log #удаляем разрешение всех запросов к udp-порту cipe, идущих из интерфейса staticif, от удаленной машины #ipchains -D input -j ACCEPT -p udp -i $staticif -s $peer $peerport \ #-d $myaddr $myport

#удаляем файл с запомненным удаленным ip-адресом #rm /var/run/$device.peerport

#--------------------------------------------------------------------------

exit 0




Ядро 2.1/2.2, ipchains


#!/bin/sh #04/04/1999 #Пример скрипта rc.firewall для новых ядер версий 2.1/2.2, использующих ipchains, #определяющий пользовательские потоки для каждого интерфейса. Здесь есть также #правила, защищающие от spoofing-а, которые может быть и не очень нужны - #подобная защита уже встроена в ядро. #Вопросы и предложения посылайте по адресу acj@home.com.

#--------------------------------------------------------------------- #Переменные #---------------------------------------------------------------------

#локальный ethernet-интерфейс localip= localif=eth0

#статический ethernet-интерфейс staticip= staticif=eth1

#интерфейс обратной петли loopback=lo

PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"

#--------------------------------------------------------------------- #Удаляем все правила для входящего, исходящего и проходящего потоков #По умолчанию отбрасываем все пакеты #---------------------------------------------------------------------

#устанавливаем запрет всего для входящего потока ipchains -P input DENY

#удаляем все правила для входящего потока ipchains -F input

#---------------------------------------------------------------------

#устанавливаем запрет всего для исходящего потока ipchains -P output DENY

#удаляем все правила для исходящего потока ipchains -F output

#---------------------------------------------------------------------

#устанавливаем запрет всего для проходящего потока ipchains -P forward DENY

#удаляем все правила для проходящего потока ipchains -F forward

#--------------------------------------------------------------------- #удаляем все правила вообще (в том числе и пользовательские) #ipchains -F

#удаляем все пользовательские потоки - вам это может понадобиться #ipchains -X

#--------------------------------------------------------------------- #Политика Firewall для входящего потока #---------------------------------------------------------------------

#создаем пользовательский входящий поток для статического интерфейса ipchains -N $staticif"-i"


# в этом потоке удаляем все правила (на всякий случай) ipchains -F $staticif"-i"

#блокируем все входящие SYN-пакеты на всех портах на статическом интерфейсе #это может показаться грубым, но это правильно #ipchains -A $staticif"-i" -j DENY -p tcp -y -i $staticif -s 0/0 \ #-d $staticip : -l

#запрещаем все пакеты, идущие из статического интерфейса, "от локальных машин" (spoofing) #записываем это в журнал ipchains -A $staticif"-i" -j DENY -i $staticif -s $localip/16 -d 0/0 -l

#разрешаем все пакеты, идущие, откуда угодно, на статический интерфейс ipchains -A $staticif"-i" -j ACCEPT -i $staticif -s 0/0 -d $staticip/32

#запрещаем все остальные входящие пакеты - записываем это в журнал ipchains -A $staticif"-i" -j DENY -s 0/0 -d 0/0 -l

#---------------------------------------------------------------------

#создаем пользовательский входящий поток для интерфейса локальной сети ipchains -N $localif"-i"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $localif"-i"

#разрешено посылать пакеты, куда угодно, с локального интерфейса с локальных машин ipchains -A $localif"-i" -j ACCEPT -i $localif -s $localip/24 -d 0/0

#запрещаем все остальные входящие пакеты - записываем это в журнал ipchains -A $localif"-i" -j DENY -s 0/0 -d 0/0 -l

#---------------------------------------------------------------------

#создаем пользовательский входящий поток для интерфейса обратной петли ipchains -N $loopback"-i"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $loopback"-i"

#разрешено все, идущее на интерфейс обратной петли ipchains -A $loopback"-i" -j ACCEPT -i $loopback -s 0/0 -d 0/0

#запрещаем все остальные входящие пакеты - записываем это в журнал ipchains -A $loopback"-i" -j DENY -s 0/0 -d 0/0 -l

#-------------------------------------------------------------------------- #Политика Firewall для проходящего потока #--------------------------------------------------------------------------



# создаем пользовательский проходящий поток для статического интерфейса ipchains -N $staticif"-f"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $staticif"-f"

#маскарадинг для всего, что идет из локальной сети, куда угодно ipchains -A $staticif"-f" -j MASQ -i $staticif -s $localip/24 -d 0/0

#запрещаем все остальные проходящие пакеты - записываем это в журнал ipchains -A $staticif"-f" -j DENY -s 0/0 -d 0/0 -l

#---------------------------------------------------------------------

#создаем пользовательский проходящий поток для интерфейса локальной сети ipchains -N $localif"-f"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $localif"-f"

#запрещаем все остальные проходящие пакеты - записываем это в журнал ipchains -A $localif"-f" -j DENY -s 0/0 -d 0/0 -l

#---------------------------------------------------------------------

#создаем пользовательский проходящий поток для интерфейса обратной петли ipchains -N $loopback"-f"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $loopback"-f"

#запрещаем все остальные проходящие пакеты - записываем это в журнал ipchains -A $loopback"-f" -j DENY -s 0/0 -d 0/0 -l

#--------------------------------------------------------------------- #Политика Firewall для исходящего потока #---------------------------------------------------------------------

#создаем пользовательский исходящий поток для статического интерфейса ipchains -N $staticif"-o"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $staticif"-o"

#запрещены исходящие через статический интерфейс пакеты для локальной сети (ошибка маршрутизации) ipchains -A $staticif"-o" -j DENY -i $staticif -s 0/0 -d $localip/24 -l

#запрещены исходящие через статический интерфейс пакеты из локальной сети (ошибка маскарадинга) ipchains -A $staticif"-o" -j DENY -i $staticif -s $localip/24 -d 0/0 -l



# разрешено все остальное от статического интерфейса ipchains -A $staticif"-o" -j ACCEPT -i $staticif -s $staticip/32 -d 0/0

#запрещаем все остальные исходящие пакеты - записываем это в журнал ipchains -A $staticif"-o" -j DENY -s 0/0 -d 0/0 -l

#---------------------------------------------------------------------

#создаем пользовательский исходящий поток для интерфейса локальной сети ipchains -N $localif"-o"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $localif"-o"

#разрешены пакеты, откуда угодно, на локальном интерфейса для локальных машин ipchains -A $localif"-o" -j ACCEPT -i $localif -s 0/0 -d $localip/24

#запрещаем все остальные исходящие пакеты - записываем это в журнал ipchains -A $localif"-o" -j DENY -s 0/0 -d 0/0 -l

#---------------------------------------------------------------------

#создаем пользовательский исходящий поток для интерфейса обратной петли ipchains -N $loopback"-o"

#в этом потоке удаляем все правила (на всякий случай) ipchains -F $loopback"-o"

#разрешено все, идущее из интерфейса обратной петли ipchains -A $loopback"-o" -j ACCEPT -i $loopback -s 0/0 -d 0/0

#запрещаем все остальные исходящие пакеты - записываем это в журнал ipchains -A $loopback"-o" -j DENY -s 0/0 -d 0/0 -l

#-------------------------------------------------------------------------- #Для большей уверенности разрешаем ядру переадресацию пакетов #--------------------------------------------------------------------------

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

#-------------------------------------------------------------------------- #добавляем в стандартные потоки правила со ссылками на пользовательские потоки #--------------------------------------------------------------------------

#входящий поток на интерфейсе локальной сети ipchains -A input -i $localif -j $localif"-i"

#входящий поток на статическом интерфейсе ipchains -A input -i $staticif -j $staticif"-i"



# входящий поток на интерфейсе обратной петли ipchains -A input -i $loopback -j $loopback"-i"

#-------------------------------------------------------------------------

#исходящий поток на интерфейсе локальной сети ipchains -A output -i $localif -j $localif"-o"

#исходящий поток на статическом интерфейсе ipchains -A output -i $staticif -j $staticif"-o"

#исходящий поток на интерфейсе обратной петли ipchains -A output -i $loopback -j $loopback"-o"

#-------------------------------------------------------------------------

#проходящий поток на интерфейсе локальной сети ipchains -A forward -i $localif -j $localif"-f"

#проходящий поток на статическом интерфейсе ipchains -A forward -i $staticif -j $staticif"-f"

#проходящий поток на интерфейсе обратной петли ipchains -A forward -i $loopback -j $loopback"-f"

#--------------------------------------------------------------------- #Проверка Сверх-Параноика --- несмотря на отказ всем пакетам по умолчанию, #блокируем все пакеты на всех интерфейсах #---------------------------------------------------------------------

#запрещаем все остальные входящие пакеты - записываем это в журнал ipchains -A input -j DENY -s 0/0 -d 0/0 -l

#запрещаем все остальные исходящие пакеты - записываем это в журнал ipchains -A output -j DENY -s 0/0 -d 0/0 -l

#запрещаем все остальные проходящие пакеты - записываем это в журнал ipchains -A forward -j DENY -s 0/0 -d 0/0 -l

exit 0




Мини-HOWTO: Cipe+Маскарадинг в Linux


Anthony Ciaravalo
acj@home.com
Перевод: Станислав Рогин, ASPLinux

В этом документе дается описание настройки виртуальной частной сети (VPN), с использованием Linux-версии Cipe, работающей с использованием маскарадинга.



Настройка firewall


В этом документе я предполагаю, что ваше ядро уже поддерживает IP-маскарадинг. См. раздел "Ссылки", в котором приведены ссылки на информацию о включении в ядро поддержки IP-маскарадинга.



Шлюз


У всех машин сети 192.168.1.0 шлюз по умолчанию должен быть установлен в 192.168.1.1. Если этого не сделать - ничего не будет работать.


У всех машин сети 192.168.2.0 шлюз по умолчанию должен быть установлен в 192.168.2.1. Если этого не сделать - ничего не будет работать.




У всех машин сети 192.168.2.0 шлюз по умолчанию должен быть установлен в 192.168.2.1. Если этого не сделать - ничего не будет работать.



Собираем все вместе


Ниже приведен пример скрипта rc.local, запускающего все остальное при загрузке системы. Он включает в ядре защиту от spoofing-а, задает правила маскарадинга на firewall, и включает интерфейс(ы) cipe.

#!/bin/bash #4/4/99 #Пример скрипта rc.local #Вопросы и предложения посылайте по адресу acj@home.com.

echo

#Включаем в ядре защиту от spoofing-а

#Это справедливо только для ядер версий 2.1/2.2

#if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then # echo -n "Включаем защиту от IP-spoofing..." # for f in /proc/sys/net/ipv4/conf/*/rp_filter; do # echo 1 > $f # done # echo "done." #else # echo ВНИМАНИЕ! НЕ УДАЛОСЬ ВКЛЮЧИТЬ ЗАЩИТУ ОТ SPOOFING-а. # echo "Клавиши CONTROL-D прервут работу этой оболочки, и процесс загрузки системы продолжится." # echo # # Запускаем однопользовательскую оболочку на консоли # /sbin/sulogin $CONSOLE #fi

echo

#Настраиваем firewall if [ -x /etc/rc.d/rc.firewall ]; then echo Настройка правил фильтрования пакетов firewall. echo . /etc/rc.d/rc.firewall fi

#Включение интерфейса(ов) cipe if [ -x /etc/rc.d/rc.cipe ]; then echo Запуск интерфейсов VPN. . /etc/rc.d/rc.cipe fi

exit 0



Соединяемся с СЕТЬЮ (WAN)


К этому моменту ваш интерфейс cipe должен работать. Попробуйте дать команду ping, указав ей адрес машины в другой сети. Если это не удалось, то проверьте на firewall-машине следующее:

Включена ли переадресация пакетов в ядре?

Выдает ли команда ifconfig примерно следующее:

cipcb0 Link encap:IPIP Tunnel HWaddr inet addr:192.168.1.1 P-t-P:192.168.2.1 Mask:255.255.255.255 UP POINTOPOINT NOTRAILERS RUNNING NOARP MTU:1442 Metric:1 RX packets:28163 errors:6 dropped:0 overruns:0 frame:6 TX packets:29325 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100

Есть ли в таблице маршрутизации строка, относящаяся к удаленной cipe-машине:

192.168.2.1 * 255.255.255.255 UH 0 0 0 cipcb0

Есть ли в таблице маршрутизации строка, относящаяся к удаленной cipe-сети:

192.168.2.0 * 255.255.255.0 U 0 0 0 cipcb0

Проверьте журналы - нет ли в них сообщений об ошибках?

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

После того, как, между машинами в разных подсетях, у вас начнет работать ping, ftp, telnet, и т.п., то следующим вашим шагом будет настройка межсетевой работы SAMBA. Подсказка: вам потребуются lmhosts или wins-сервер, а также "trusted domains" для NT. У меня все работает, но это находится за пределами обсуждения данного документа (как минимум, на текущий момент).

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



Структура VPN


Машины связаны по технологии "звезда". Мы установим одно cipe-соединение между машинами A и B, и второе между A и C.



Веб-сайты


Домашняя страница Cipe

Домашняя страница Masq

Домашняя страница Samba

Linux HQ ---хороший сайт с информацией по linux