неділю, 13 липня 2008 р.

DDOS атаки, методы распостранения ботов и защита Linux сервера от ddos атак.

В данном материале мы хотим рассмотреть типичные методы распространения DDOS, обсудить причины и сделать заключение о том, как можно предотвратить распространение DDOS ботов и выйти на их владельцев

Классическое распространение DDOS ботов происходит постоянно, в автоматизированном или даже можно сказать, автоматическом режиме, без непосредственного вмешательства владельца. Инструментом служит тот-же самый ботнет.

Все начинается с того, что обычный пользователь заходит на инфицированный сайт. Причиной может стать спам рассылка по email или icq, но чаще всего это сайт adult направленности, который привлекает любителей «клубнички», а в это время заражает компьютеры посетителей.

Почему сайт стал инфицированным? Этому может быть несколько причин, наиболее обыденные из которых – воровство ftp доступа к сайту и последующее его заражение, использование уязвимости в правах файловой системы виртуального хостинга для заражения «соседей», и вебмастера, клюнувшие на предложение разместить у себя на сайте «безвредный iframe».

Почему компьютер пользователя заразился? Как правило зараженные компьютеры работают под взломанной MS Windows, на которую, по причине взлома, обновления не устанавливаются, а антивирусные программы, если и есть, то не могут распознать специально написанные программы «загрузчики», которые не несут в себе никакой угрозы, срабатывают не всегда, тем самым обманывая эвристический анализ, и служат для загрузки остальных частей DDOS бота.

Программа начинает закачивать части, которые могут выполнять следующие действия, которыми конечно, весь список возможностей не ограничивается:
ожидание команды от координатора DDOS
воровство emqil адресов, паролей от ftp доступов, сохраненных на компьютере пользователя
рассылка спама по icq листу контактов и списку email, якобы от имени пользователя
инфицирование сайтов при загрузке файлов на ftp (на компьютере пользователя все выглядит чисто, а на хостинге уже лежат инфицированные страницы)

Таким образом, зараженный компьютер уже выступает не только как пассивная зомби-машина, ожидающая команды, но еще может выполнять автономные действия, которые ведут к дальнейшему распространению ботнета.

Получив в свое распоряжение несколько тысяч, а то и десятков тысяч зараженных зомби-машин, владелец может управлять ими через координатор DDOS атак. Координатор представляет собой несложный PHP скрипт, который связан с базой данных IP адресов и открывает для владельца форму, где можно указать сайт и тип атаки.

Скрипт начинает посылать запросы ботнету и «пробуждает» его для атаки на сайт. При этом владелец больше себя никак не проявляет. В некоторых случаях, ботнеты сами могут периодически запрашивать у координаторов какие действия им нужно предпринять. Например BlackEnergy именно так и поступает, посылая POST запросы файлу stat.php

Компьютеры пользователей, выступающие в роли DDOS ботов начинают постоянно обращаться к атакуемому сайту. Если при обычной посещаемости на сайт идет 5-10 запросов в секунду, то ботнет поднимает эту частоту в несколько порядков и сервер не может их всех обработать. Заказчик атаки получил желаемое – сделал сайт недоступным.
Ситуация с атакой еще усугубляется тем, что DDOS бот может сделать так называемый time_wait запрос, который представляет собой соеденение с окном нулевого размера, который только держит соединение открытым, но информации не передает. Это позволяет атакующим забивать сервера, защищенные файрволом.
Что же делать для предотвращения распространения ботнета?

Пользователям – следить за обновлениями для свой ОС и антивируса, использовать менее уязвимый браузер -FireFox, Opera. Конечно, это легче написать, чем сделать, но тем не менее, может быть после прочтения этой заметки вы смените браузер.

Хостинг провайдерам – более внимательно отслеживать логи запросов к сайтам, выявляя IP зомби-машин и владельца ботнета. Зараженные IP отсылать к ISP провайдерам, а IP владельцев – в соответствующие организации. При этом все должно быть максимально унифицировано, автоматизированно и безбумажно.

ISP провайдерам и организациям по борьбе с к интернет-терроризмом – размещать на сайте формы, куда можно внести жалобы на IP адреса, замешанные в DDOS атаках

Сейчас перейдем к более практическим занятиям и посмотрим, каким образом можно защитить сервер от DDOS.
В качестве сервера будет взят обычный компьютер с x86 архитектурой и ОС Linux и веб-сервером apache.
Почему не FreeBSD? На FreeBSD, насколько мне известно, аналога модуля iptables string нет.
Почему не nginx или lighttpd? Эти веб-сервера будут рассмотрены в следующих заметках. В этой заметке nginx выступает как фронтенд, а не как основной.
Важно знать! Для работы модуля iptables string, iptables должен быть не ниже версии 1.3.5, а ядро – не ниже 2.6.18, собранным с опцией CONFIG_NETFILTER_XT_MATCH_STRING=m

Рекомендую! Эти эти примеры помогут сохранить веб-сервер атак:
Лимит на 20 запросов в секунду для интерфейса eth0
iptables --new-chain car
iptables --insert OUTPUT 1 -p tcp --destination-port 80 -o eth0 --jump car
iptables --append car -m limit --limit 20/sec --jump RETURN
iptables --append car --jump DROP
Максимум 10 одновременных соединений с одного IP
iptables -A INPUT-p tcp --dport 80 -m iplimit --iplimit-above 10 -j REJECT
Блокировка более 10 SYN
iptables -I INPUT -p tcp --syn --dport 80 -j DROP -m iplimit --iplimit-above 10
20 соединений на сеть класса С
iptables -p tcp --dport 80 -m iplimit --iplimit-above 20 --iplimit-mask 24 -j REJECT
Если на сервере предоставлен хостинг для множества сайтов

Наша задача - спасти все остальные сайты, потому что то все сайты, которые размещены на общем IP адресе с жертвой, будут недоступны.
Почему? На этот вопрос даст ответ алгоритм атаки ботнета:
бот получает от координатора домен-жертву
бот производит преобразование домена в IP
бот отсылает по данному IP запрос "GET / HTTP/1.0" на веб-сервер жертвы

Как только замечены симптомы DDOS атаки, проверьте access_log веб-сервера apache. Если он забит записями вида "GET / HTTP/1.0", то это значит, что атака идет на IP адрес.
Что делать? Прежде всего временно отключите атакуемый IP адрес, лучше всего через iptables, командой iptables -A FORWARD -p tcp -s <атакуемый IP> --dport 80 -j REJECT. Это даст хоть какой-то шанс, что ботнет не успеет забить весь канал к серверу, после чего связь с ним будет потеряна. После отключения атакуемого домена доступ можно будет открыть обратно.
Для поиска атакуемого домена необходимо, чтоб его NS сервера находились на вашем сервере!
Почему? Так как атака идет по IP адресу, то единственным способом нахождения домена-жертвы может быть только анализ запросов к dns.
Как? С помощью утилиты ngrep. Эта утилита позволяет применить регулярные выражения к трафику. В нашем случае команда будет ngrep port 53. На 53 порт идут запросы на преобразование домена в IP. В течении нескольких десятков секунд визуально можно будет определить домен-жертву.
Другой вариант – настроить bind на запись всех запросов в лог и проверить, какой домен чаще всех запрашивается.
Следующее действие – это отключение домена. Наиболее простым и действенным методом будет блокировка запросов с именем домена. Это запретит преобразование домена, и боты не смогут получить IP домена-жертвы. Снова iptables поможет сделать это:
iptables -I INPUT 1 -p tcp --dport 53 -m string --string "domain.com" --algo kmp -j DROP
iptables -I INPUT 2 -p udp --dport 53 -m string --string "domain.com" --algo kmp -j DROP
Обратите внимание – блокируются TCP и UDP порты.
Другой вариант – вписать для домена-жертвы IP 127.0.0.1 и подождать пока запись разойдется, это зависит от настроек TTL, обычно 15 минут.
После отключения атакуемого домена все остальные сайты будут работать нормально.
Если на сервере предоставлен хостинг только для одного сайта (dedicated или vps хостинг)

Задача меняется – цель уже известна, а вот методы нужны иные. Цель защиты от DDOS на сайт – сохранить его работоспособность.
Проявите сразу заботу о защите своего сайта. Сделайте главную страницу сайта вида http://hostinghelp.biz/node с редиректом на нее при запросе вида http://hostinghelp.biz/
Почему? Это поможет защитить главную страницу сайта, отфильтровав все запросы от ботнета, так как боты не выполняют заход при редиректе и будут продолжать упорно долбить "GET / HTTP/1.0"
Как? Лучше всего поставить перед веб-сервером apache быстрый и легкий nginx и отдавать им статичные файлы. Создать статичный файл index.html в котором написать о том, что будет сделан переход на другую страницу и установите редирект с помощью метатега html.
Когда начнется DDOS атака, то nginx сможет выдержать намного больше запросов к статичному файлу по сравнению с apache.
Если nginx не помогает, и сервер не выдерживает столько запросов - забивается канал, то на помощь нам снова приходит iptables.
Так как главная страница сайта известна посетителям и поисковым системам, то можно просто заблокировать страницу-редирект, и тем самым сделав недоступным сайт для запросов вида "GET / HTTP/1.0", оставить его работоспособным по всем остальным.
Как? iptables -I INPUT 1 -p tcp --dport 80 -m string --string "GET / HTTP/1.0" --algo kmp -j DROP
Таким образом сайт защищен от DDOS атаки и сохраняет работоспособность, пусть и ценой временного отключения страницы редиректа.

Джерело: http://www.antiddos.org/index.php/2008-04-22-11-38-15/34-2008-04-22-13-12-41/83-ddos-------linux---ddos-

Способы защиты от флуда и DDoS атак:

В данной статье расматриваются основные моменты тюнинка стека протоколов TCP\IP для защиты от DDOS атак типа SYN flood. Статья будет интересна системным администраторам который занимаются вопросами защиты от ddos атак и администрированием серверов с большой нагрузкой.

Черные дыры.

net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1

Это превращает машину в черную дыру при попытке подключиться к портам, которые не слушают. Nmap по настоящему не любит это.

Защита очереди сокета от SYN атак.

Основной из самых популярных атак остается SYN флуд, при которой очередь сокета атакуемого хоста переполняется некорректными попытками соединений. Для защиты от таких атак некоторые из UNIX поддерживают отдельные очереди для входящих запросов на соединение. Одна очередь для полуоткрытых сокетов (SYN получен, SYN|ACK послан), другая очередь для полностью открытых сокетов, ждущих вызова accept() от программы. Эти две очереди должны быть увеличены, чтобы атаки малой и средней интенсивности почти не влияли на стабильность и доступность сервера.

kern.ipc.somaxconn=1024

Редиректы (Перенаправления)

Атакующий может использовать IP redirect для изменения таблицы марщрутизации на удаленном хосте. В хорошо разработанной сети редиректы на конечные станции не должны требоваться. Оба - отправка и принятие редиректов должны быть отключены.

net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0

Настройка стека IP в системах UNIX на оптимальную производительность:

На размер буфера приема и передачи TCP напрямую влияет параметр размера TCP окна. Увеличенный размер окна позволит более эффективно передавать данные, особенно при интенсивной передаче, такой как FTP и HTTP. Значение по умолчанию не является оптимальным и должно быть увеличено до 32768 байт. Это значение не должно быть более 64Кб, если вы не знаете об ограничениях RFC1323 и RFC2018, и если нет поддержки с обеих сторон.
FreeBSD:
sysctl -w net.inet.tcp.sendspace=32768
sysctl -w net.inet.tcp.recvspace=32768

Очистка ARP:

Существует возможность, что атакующий создаст нехватку ресурсов или уменьшение производительности заполнив кэш маршрутизации IP с помощью неправильных записей в ARP таблице. Этот параметр рекомендуется выставить в 20 минут по умолчанию.

FreeBSD:
sysctl -w net.link.ether.inet.max_age=1200

Маршрутизация отправителя:

С помощью маршрутизации отправителя атакующий может попытаться достигнуть внутренние IP адреса, включая адреса RFC1918. Важно отключить принятие пакетов маршрутизации отправителя для предотвращения незаметных проб вашей внутренней сети.

FreeBSD:
sysctl -w net.inet.ip.sourceroute=0
sysctl -w net.inet.ip.accept_sourceroute=0

Установка TIME_WAIT

На загруженном web сервере многие сокеты могут задерживаться в состоянии TIME_WAIT. Это вызвано неправильно написанными клиентскими программами, которые неправильно закрывают сокеты. Это так же может быть использовано для DDoS атак.

Нет рекомендаций по настройке.

Ответ на широковещательный ECHO.

Эти атаки работают с помощью отправки сообщения ICMP 8 0 (запрос ECHO) на широковещательный адрес с фальшивого адреса. Некоторые стеки IP ответят по умолчанию на такие сообщения. Это должно быть отключено. Более того, если хост является фаерволом или раутером, то он не должен пропускать проямые широковещательные запрсы.

FreeBSD:
sysctl -w net.inet.icmp.bmcastecho=0

Другие пробы с помощью широковещания:

Существуют 2 вида проб. Запрос маски адреса может быть использован для определения размера блока сети и установки диапазона для дальнейших проб. Широковещательный запрос временного штампа (timestamp) - еще одно средство выявления хостов и определения их операционных систем (fingerprinting)

FreeBSD:
sysctl -w net.inet.icmp.maskrepl=0

Добавление:
Так как от флуда сложно уберечься по-настоящему, можно только ограничить его влияние, то можно дать следующие рекомендации:
При настройке фаервола отключите все, что не нужно конкретно для работы. Скажем если у вас WEB сервер, отключите доступ ко всему кроме портов доступа по HTTP, будь то ICMP, UDP или еще что-нибудь. Если вы используете Apache, то настройте KeepAliveTimeout для уменьшения времени ожидания в режиме KeepAlive, подберите наиболее оптимальные значения для следующих директив:
MaxKeepAliveRequests
MaxClients
MaxRequestsPerChild
MaxSpareServers
MinSpareServers

Желаю удачи в настройке вашей сети на оптимальную производительность!

джерело:http://www.antiddos.org/index.php/2008-04-22-11-38-15/34-2008-04-22-13-12-41/74--ddos-

вівторок, 8 липня 2008 р.

Настройка проверки орфографии в vim 7.0

Более подробно мне бы хотелось остановиться на такой очень полезной фиче

Vim 7 как проверка орфографии. Так как у меня с этим проблемы, то ужа

довольно давно я нагородил кучу костылей, чтобы научить vim проверять

орфографию. Теперь же все эти костыли были с радостью удалены. Ведь vim

7 имеет встроенную поддержку орфографии!


Теперь я расскажу как ее включить/настроить. Все не просто, а очень

просто. Словари можно скачать с сайта ftp://ftp.vim.org/pub/vim/runtime/spell/

и положить в папочку ~/.vim/spell, если хотите использовать этот словарь только

для одного пользователя, либо в общую директорию (обычно /usr/share/vim/vim70/spell).


Для тех же, кто хочет создать свой словарь для начала нужно найти

исходный словарь словарь. Можно использовать два формата словарей, aff и

dic. Разработчики vim предлагают воспользоваться словарями OpenOffice

что я и сделал. Скачать их можно по адресу.


Так как для русского языка уже существует целый набор словарей, я не

стал искать разницу и скачал их все, и все добавил в словарь vim. Как

это сделать я покажу чуть ниже. Итак у нас есть словари и есть исходные

тексты vim 7. Копируем наши словари в директорию vim70/runtime/spell/ru.


Затем накладываете патчик


        patch < ru_RU.diff


, а после запускаете из vim


        :mkspell ru <путь_к_словарю_1> <путь_к_словарю_2> <и_так_сколько_хотите_словарей>


Таким образом вы генерируете словарь с именем ru. Конечно это не очень

хорошее имя. Лучше если вы выберете нечто типа ru_ваша_кодировка. Будте

внимательны, словарь генерируется для вашей локали. Для каждой локали

словарь надо генерировать заново.


Теперь полученные словари копируете в вышеуказанные директории и

наслаждаетесь жизнью ;)


Все, теперь наш vim умеет проверять правописание. Для большего удобства

я набросал маленькую функцию, которая позволяет быстро переключать язык,

или вообще выключать проверку орфографии. Вот он.


if version >= 700
" По умолчанию проверка орфографии выключена.
setlocal spell spelllang=
setlocal nospell
function ChangeSpellLang()
if &spelllang =~ "en_us"
setlocal spell spelllang=ru
echo "spelllang: ru"
elseif &spelllang =~ "ru"
setlocal spell spelllang=
setlocal nospell
echo "spelllang: off"
else
setlocal spell spelllang=en_us
echo "spelllang: en"
endif
endfunc

" map spell on/off for English/Russian
map :call ChangeSpellLang()
endif


Эту небольшую функцию можно вставить в свой .vimrc и все. По нажатию

F11 будут попеременно включаться Русский, Английски, или вообще

выключаться проверка орфографии. Все неправильно написанные слова будут

подсвечены. Теперь при наведении на это слово курсора и нажатии z=

выпадет менюшка, с возможными правильными вариантами. Как и везде слово

можно добавить к словарю (zG), перейти к следующей (]z), предыдущей ([z)

ошибке, пометить слово как ошибочное - zW. Надеюсь теперь грамотность в

Рунете существенно возрастет ;-)


Успехов в освоении vim :-)


Джерело http://howtoforge.org.ua/?q=node/353




Виртуальные серверы на базе VSFTPD (ftp virtual)

Содержание


1. Введение

2. Установка сервера

3. Теория реализации виртуальных FTP серверов

4. Установка xinetd

5. Создание общей структуры каталогов

6. Настройка анонимного сервера

7. Настройка сервера с доступом только по учетным записям


Введение


В статье рассматривается один из способов создания виртуальных FTP

серверов на базе "самого быстрого и безопасного" FTP демона -

VSFTPD. В примере рассматривается создание

двух виртуальных серверов. Первый - полностью анонимный, с двумя

директориями pub и incoming (наверное самый распространенный вариант). В

каталоге incoming пользователи смогут создавать директории, загружать и

скачивать файлы. Удалять закачанное - нельзя. В будущем содержимое этой

директории должно анализироваться администратором ftp сервера.

Администратор должен удалять мусор а все нужное и полезное перемещать в

директорию pub. К директории pub пользователи имеет доступ только для

чтения. Второй - с доступом только по учетным записям. Аккаунт anonymous

отсутствует. "Изюминка" его реализации - индивидуальная конфигурация для

каждого пользователя. Итак, начнем...


Установка сервера


# installpkg vsftpd-2.0.5-i486-1.tgz


Создаем загрузочный скрипт /etc/rc.d/rc.vsftpd


#!/bin/sh

ftp_start()
{
echo "Starting VSFTPD: "

if ! ps axc | grep -q " vsftpd" ; then
vsftpd &
else
echo "VSFTPD already running!"
fi
}

ftp_stop()
{
if ps axc | grep -q " vsftpd" ; then
killall vsftpd
else
echo "VSFTPD not running!"
fi
}

ftp_restart()
{
ftp_stop
sleep 1
ftp_start
}

case "$1" in
'start')
ftp_start
;;
'stop')
ftp_stop
;;
'restart')
ftp_restart
;;
*)
echo "usage $0 start|stop|restart"
esac


Делаем его исполняемым


# chmod a+x /etc/rc.d/rc.vsftpd


По умолчанию, домашняя директория пользователя FTP - /home/ftp. Я предпочитаю

все что предоставляет компьютер как сервер - размещать в директории /srv.

Например /srv/ftp, /srv/samba, /srv/www. Имхо так как-то порядка в системе

больше :) Но это только мое ИМХО, а так - "на вкус и цвет все фломастеры

разные" ;) Открываем файл /etc/passwd, ищем пользователя ftp и меняем ему

домашнюю директорию на /srv/ftp. Если вы предпочитаете другое расположение

- замените все пути описанные ниже с /srv/ftp на ваши.


Теория реализации виртуальных FTP серверов


Виртуальные хосты на VSFTPD можно организовать двумя способами. Первый

способ: запустить нужное количество серверов в режиме демона и в

конфигурационном файле каждого сервера указать слушаемые IP адреса

listen_address=x.x.x.x. Т.е. если нужно 10 вируальных FTP серверов -

нужно запусть 10 копий vsftpd. Как видно это не самый лучший способ.

Врядли к этим 10 серверам постоянно будут подключены клиенты. Гораздо

экономнее запускать VSFTPD по требованию от суперсервера. Стандартный

inetd входящий в поставку дистрибутива Slackware нам не подойдет потому,

что в нем нельзя указать IP на котором будут слушаться соединения.

Заменим inetd на xinetd.


Установка xinetd


Останавливаем суперсервер


# /etc/rc.d/rc.inetd stop

Удаляем inetd


# removepkg inetd


Делам файл /etc/rc.d/rc.inetd неисполняемым


# chmod a-x /etc/rc.d/rc.inetd

Устанавливаем xinetd


# installpkg xinetd-2.3.14-i486-1bms.tgz


Переименовываем файл rc.xinetd.new в rc.xinetd


mv /etc/rc.d/rc.xinetd.new /etc/rc.d/rc.xinetd


Делам его исполняемым


chmod a+x /etc/rc.d/rc.xinetd


Из файла /etc/rc.d/rc.local.new копируем строки запуска сервера в наш

файл /etc/rc.d/rc.local. Руками переписывать - лень, перенаправим вывод

всего файла в конец нашего rc.local. Откроем файл /etc/rc.d/rc.local.new

и удалим из него все строки до # Start the xinetd server. Копируем текст

в наш rc.local


# cat /etc/rc.d/rc.local.new >> /etc/rc.d/rc.local


Теперь файл можно удалить.


# rm /etc/rc.d/rc.local.new


Запускаем xinetd


# /etc/rc.d/rc.xinetd start


Пробуем подключиться к FTP


# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.5)
Name (127.0.0.1:coder): 530 This FTP server is anonymous only.
ftp>


Запустился! Посмотреть кто когда и что хотел запустить можно через cat

/var/log/servicelog.


06/12/17@13:29:36: START: ftp pid=3195 from=127.0.0.1


Видим что 17-го декабря 2006, по запросу с адреса 127.0.0.1 был запущен
ftp сервер и ему был присвоем pid 3195. Здорово! Чтобы было еще
интереснее в файле /etc/xinetd.conf допишем строку


log_on_success = HOST


до


log_on_success = HOST USERID PID DURATION EXIT


Перезапустим сервер и теперь в логах будет оботбражаться даже

продолжительность вызванных соединений ;)


Создание общей структуры каталогов


Займемся виртуальными хостами. Т.к. виртуальных FTP может быть и больше

10, чтобы не мусорить в /etc желательно создать директорию /etc/vsftpd


# mkdir /etc/vsftpd


А в нем, так как у нас будет два вируальных FTP сервера - создать

директории для каждого из них Например у нас будут 2 ftp на адресах

192.168.226.3 (ftp1) и 192.168.226.4 (ftp2).


# mkdir /etc/vsftpd/192.168.226.3
# mkdir /etc/vsftpd/192.168.226.4


Скопируем в эти каталоги конфигурационный файл.


# cp /etc/vsftpd.conf /etc/vsftpd/192.168.226.3/vsftpd.conf
# cp /etc/vsftpd.conf /etc/vsftpd/192.168.226.4/vsftpd.conf


Тоже касается и логов. Создаем директорию /var/log/vsftpd. В ней будут

файлы с логами соответствующих виртуальных FTP серверов. Т.е. в

/etc/vsftpd/192.168.226.3/vsftpd.conf ищем строчку


xferlog_file=/var/log/vsftpd.log


и меняем ее на


xferlog_file=/var/log/vsftpd/192.168.226.3.log


Тоже самое для второго FTP.


Прописываем создание двух дополнительных IP адресов при запуске. В конец

файла /etc/rc.d/rc.inet1 добавляем


/sbin/ifconfig eth0:1 192.168.226.3 netmask 255.255.255.0 up
/sbin/ifconfig eth0:2 192.168.226.4 netmask 255.255.255.0 up


Сохраняемся, выходим.


И создаем их сейчас:


# ifconfig eth0:1 192.168.226.3 netmask 255.255.255.0 up
# ifconfig eth0:2 192.168.226.4 netmask 255.255.255.0 up


Добавим записи о FTP серверах в DNS (прямая зона)


ftp1 IN A 192.168.226.3
ftp2 IN A 192.168.226.4


Перезапустим DNS сервер


# /etc/rc.d/rc.bind restart


Открываем файл /etc/xinetd.conf и множим секцию ftp. В одну секцию

добавляем директиву


bind = 192.168.226.3


а строку server_args = vsftpd допоолняем до


server_args = vsftpd /etc/vsftpd/192.168.226.3/vsftpd.conf


в другую


bind = 192.168.226.4


и


server_args = vsftpd /etc/vsftpd/192.168.226.4/vsftpd.conf


Перезапустим xinetd


# /etc/rc.d/rc.xinetd restart


Теперь xinetd в зависимости на какой IP обратились, будет запускать

vsftpd с соответствующими конфигурационными файлами. Внимание:

интерфейсы и записи в DNS должны существовать до того как будет

перезапущен xinetd! Иначе ничего не получиться. Т.е. сначала создаем

интерфейсы (или дополнительные IP адреса), если будет использоваться DNS

- прописываем адреса в DNS и только потом запускаем/перезапускаем

xinetd.


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


Создадим струткуру каталогов для анонимного сервера. Директория incoming

предназначена для закачки файлов пользователями. pub - только для

скачивания.


Структура анонимного FTP сервера:


# mkdir /srv/ftp/192.168.226.3
# mkdir /srv/ftp/192.168.226.3/incoming
# mkdir /srv/ftp/192.168.226.3/pub


Для anonymous пользователя корневым будут каталог

/srv/ftp/192.168.226.3. Тем самым создается иллюзия что это разные

серверы. Хотя на самом деле - просто разные директории.


Пропишем это в конфигруационном файле:


anon_root=/srv/ftp/192.168.226.3


Чтобы сделать директорию incoming доступной для записи - нужно

установить ее в группу ftp и дать этой группе права на запись.


# chgrp -R ftp /srv/ftp/192.168.226.3/incoming/
# chmod -R g+w /srv/ftp/192.168.226.3/incoming/


Вот в принципе и все. На этом можно считать настройку анонимного ftp

сервера законченной. Вот листинг конфигурационного файла


anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
file_open_mode=0777
anon_root=/srv/ftp/192.168.226.3

local_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd/192.168.226.3.log
xferlog_std_format=YES
ls_recurse_enable=YES


Настройка сервера с доступом только по учетным записям


Создадим файл userlist, в который будем прописывать пользователей

которым разрешен доступ на FTP.


# touch /etc/vsftpd/192.168.226.4/userlist


Пропишем в него первым делом самого себя :) у меня это пользователь

coder Создадим директорию для хранения индивидульных настроек для

каждого пользователя


# mkdir /etc/vsftpd/192.168.226.4/users


Создадим в этом каталоге файл для настроек пользователя coder


# touch /etc/vsftpd/192.168.226.4/users/coder


Пропишем в него все права и корневую директорию. Добавим:


cmds_allowed=ABOR,MKD,CWD,DELE,LIST,MDTM,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RMD,RNFR,RNTO,SIZE,
STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST

local_root=/srv/ftp/192.168.226.4/


Сообщим vsftpd о том, что мы будем использовать индивидуальные настройки

для каждого пользователя. Добавим в

/etc/vsftpd/192.168.226.4/vsftpd.conf следующие строки:


anonymous_enable=NO
local_enable=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/192.168.226.3/userlist
user_config_dir=/etc/vsftpd/192.168.226.3/users


Все пользователи в Slackware по умолчанию принадлежат группе users.

Дадим всем пользователям группы users доступ на запись в

/srv/ftp/192.168.226.4.


# chgrp -R users /srv/ftp/192.168.226.4
# chmod -R g+w /srv/ftp/192.168.226.4


Для примера, также создадим пользователя webmaster, который в теории

должен через этот FTP заливать файлы на корпоративный сайт.


# adduser webmaster


Установим пароль


# passwd webmaster


В директории /srv/ftp/192.168.226.4/users/ создадим файл настроек

пользователя webmaster.


# touch /srv/ftp/192.168.226.4/users/webmaster


Пропишем в него директорию в которая будет корневой для пользователя (в

данном случае директория с сайтом)


local_root=/srv/www/www.mysite.lan/


Сменим группу и пользователя директории с сайтом на webmaster:users


# chown -R webmaster:users /srv/www/www.mysite.lan


Чтобы webmaster мог быстро перейти на сайт зайдя например по SSH или с

SAMBA, в его домашней директории создадим символьную ссылку на

директорию с web сайтом.


# ln -s /srv/www/www.mysite.lan /home/webmaster/www


Вот в принципе и все. Можно проверять.


Полное содержание vsftpd.conf


anonymous_enable=NO
file_open_mode=0777

local_enable=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/192.168.226.4/userlist
user_config_dir=/etc/vsftpd/192.168.226.4/users
chroot_local_user=YES
write_enable=YES
local_umask=022

ftpd_banner=Welcome to FTP server

dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd/192.168.226.4.log
xferlog_std_format=YES
ls_recurse_enable=YES
        Джерело http://howtoforge.org.ua/?q=node/483

Налаштування VPN з’єднання до мережі Інтернет

Нині досить багато інтернет провайдерів надають доступ до інтернету
через vpn-з’єднання (особливо ті, що мають власні локальні мережі). Ось
просте і працююче у більшості випадків ЯКЦЕ по тому, як дане з’єднання
налаштувати.



Встановлення необхідних пакунків


Першим ділом нам треба встановити кілька пакунків:


# sudo apt-get install ppp pptp-linux


Налаштування


У теці /etc/ppp/peers/ створюємо файлик (із будь яким іменем) наступного змісту:


pty "pptp впн-сервер --nolaunchpppd"
name ваш_логін
remotename PPTP
require-mppe-40
file /etc/ppp/options.pptp
ipparam ім'я

У наведеному прикладі варто звернути увагу на наступне:

– “впн-сервер” у першому рядку слід замінити на доменне ім’я або ІР-адресу вашого VPN-сервера;

– “ваш_логін” у другому рядку на ваш логін для під’єдання до інтернету;

– “require-mppe-40″ у четвертому рядку може не знадобитись, якщо ваш
провайдер не використовує шифроване з’єдання (поганий провайдер!!!);

– “ім’я” у п’ятому рядку слід замінити на ім’я файлу зі з’єднанням (ми його описуємо).


Тепер до файлу /etc/ppp/chap-secrets додаємо наступний рядок:


ваш_логін        *        ваш_пароль

Роутинг


Маршрутизація при піднятті ppp-тунеля “прописується” у файлі /etc/ppp/ip-up.d/0001defaultroute, котрий повинен бути виконуваним. Ось його мінімальний зміст:


#!/bin/bash

route add default dev ppp0

Додаткові маршрути прописуються залежно від ситуації (питатись у свого інтернет провайдера).


Автоматичне підняття разом із системою


Для того, щоб з’єднання автоматично відбувалося після старту системи, додайте до /etc/network/interfaces/ наступні рядки:


auto ppp0

iface ppp0 inet ppp
provider ukrwest

Для того, щоб вручну підняти інтерфейс:


# sudo pon internet


Де internet — назва з’єдання.


Оригінал статті http://www.debian-administration.org.ua/articles/vpn_internet/



Налаштування PPTP-сервера

PPTP (Point-to-Point Tunneling Protocol) — розширення стандарту
Point to Point Protocol (PPP) для традиційних dial-up мереж. PPTP є
чудовим рішенням для віддаленого доступу через VPN, однак підтримує і
LAN internetworking. PPTP працює на другому рівні моделі OSI.



Встановлення PPTP-сервера


Першим ділом, як завжди, встановимо необхідні пакунки:


# sudo apt-get install ppp pptpd


Налаштування


Налаштування простого PPTP-сервера є дуже простим процесом. Спершу відкриємо файл /etc/pptpd.conf, і додамо наступні рядки:


# IP--адреса сервера у локальній мережі
localip 192.168.0.1

# Діапазон адрес для клієнтів РРТР-сервера
remoteip 192.168.0.100-254

Тепер до файлу /etc/ppp/pptpd-optionsc дописуємо наступні рядки:


# вимагаємо у клієнтів авторизацію
auth

# використовуємо шифрування
require-mppe

І на сам кінець, відкриваємо файл /etc/ppp/chap-secrets, і заповнюємо базу користувачів:


# якщо бажаємо видавати клієнтам динамічні ІР-адреси
# з діапазону remoteip, що вказаний у файлі pptpd.conf:
user1 pptpd password1 "*"

# якщо ж хочемо прив'язати певну ІР-адресу до логіну:
user2 pptpd password2 "192.168.0.101"

Для того, щоб зміни вступили у дію нам лишилося перезавантажити сервер:


# sudo /etc/init.d/pptpd restart


IPTABLES


Дуже імовірно, що ви використовуєте iptables (і правильно робите!),
у такому разі нам потрібно створити відповідні правила для того, щоб
він пропускав потрібні нам з’яєдання:


# дозволяємо протокол GRE для усіх;
iptables -A INPUT -p gre -j ACCEPT

# дозволяємо з'єднання з PPTP-сервером для усіх;
iptables -A INPUT -m tcp -p tcp --dport 1723 -j ACCEPT

Оригінал статті http://www.debian-administration.org.ua/articles/setting_up_pptp_server/


Віртуальний веб-хостинг з Apache 2

Віртуальний хостинг дозволяє вер-серверам хостити більше, ніж один веб-сайт на одній машині. Саме так працюють веб-хостинги.


У даному ЯКЦЕ я спробую пояснити, як хостити на на одній машині
кілька сайтів, і отримувати до них доступ не лише за адресою типу
http://localhost/web-site, але й за будь яким, прив’язаним до низ
доменним ім’ям, наприклад, http://www.my-web-site.org.ua/.



Встановлення apache2


 sudo apt-get install apache2-common apache2-utils


Налаштування


Відкриємо основний конфіґураційний файл, /etc/apache2/apache2.conf. Пошук за словом virtual приведе нас до наступного рядка:


/etc/apache2/sites-enabled/

Він означає, що коли ми запустимо apache, він прочитає файли у теці /etc/apache2/sites-enabled/. Давайте переглянемо її вміст:


 cd /etc/apache2/sites-enabled/
   ls -l

total 0

lrwxrwxrwx 1 root root 36 2008-01-07 17:01 000-default -> /etc/apache2/sites-available/default


Щож, це лише посилання на на файл у теці /etc/apache2/sites-enabled/. Ви мали б замислитися над тим, що тут робить посилання. Власне, такий підхід дозволяє вам:

1. мати простий конфіґураційний файл;

2. змінювати або створювати нові хости редагуванням/створенням файлів у /etc/apache2/sites-available;

3. не потрібно перезапускати веб-сервер після блокування одного хосту,
оскільки, для цього достатньо просто видалити посилання у теці /etc/apache2/sites-enabled/ на файл у теці /etc/apache2/sites-available/.


Тепер припустимо, що ви бажаєте прив’язати доменне ім’я
my-web-site.org.ua до конкретного веб-сайту на вашій машині, який
розміщується у теці /var/www/my-web-site/.


Для цього, перше за все, необхідно створити новий в /etc/apache2/sites-available, наприклад, my-web-site.conf:


 sudo vim my-web-site.conf


І додати до нього наступні рядки:




ServerAdmin webmaster@localhost

ServerAlias www.my-web-site.org.ua

DocumentRoot /var/www/my-web-site/

#якщо бажаєте використовувати awstats

ScriptAlias /awstats/ /usr/lib/cgi-bin/

#вказуємо власний файл журналу для даного хосту

CustomLog /var/log/apache2/my-web-site.org.ua-access.log combined


Ну ось, ми створили новий віртуальний хост, але він й досі не є
активним/дозволеним. Для цього, як сказано вище, нам всього лиш
потрібно додати посилання на файл /etc/apache2/sites-available/my-web-site.conf. Для цього:


 cd /etc/apache2/sites-enabled/
 
sudo ln -s /etc/apache2/sites-available/my-web-site.conf my-web-site.conf


Тепер apache готовий до перезапуску, однак, спершу ми повинні
повідомити Linux про те, щоб вона шукала хости з адресами
my-web-site.org та www.my-web-site.org.ua не в тенетах, а на локальній
машині. Для цього потрібно відредагувати файл /etc/hosts наступним чином:


127.0.0.1 localhost.localdomain localhost dev.example.com www.dev.example.com

Тепер apache можна сміливо перезапустити:


 sudo /etc/init.d/apache2 reload


Для тесту відкрийте свій оглядач тенет (сподіваюся, це не Internet
Explorer ;)), і наберіть адресу http://www.my-web-site.org.ua.


Чому Debian рулить


Зрозуміло, що, якщо ви хостите на одній машині велику кількість
віртуальних веб-хостів, вам здасться морокною робота по їхньому
тимчасовому блокуванню та розблокуванню, тому в Дебіені для цього є дві
прості, але дуже зручні утилітки.


Для того, що заблокувати віртуальний хост:


 sudo a2ensite mysiteavailable-site


І для його розблокування:


 sudo a2dissite mysiteavailable-site


Де mymysiteavailable-site — ім’я віртуального хосту, яке відповідає імені файлу у теці /etc/apache2/sites-available/, наприклад, my-web-site.conf


Оригінал статті http://www.debian-administration.org.ua/articles/virtual_hosting_using_apache2/