Блог об openSUSE » Linux http://sapfeer.ru Блог по созданию и настройке openSUSE безопасного хамелеона Sat, 22 Sep 2012 12:43:48 +0000 ru-RU hourly 1 http://wordpress.org/?v=3.4.2 Выход Backtrack 4 pre final http://sapfeer.ru/2009/07/25/140 http://sapfeer.ru/2009/07/25/140#comments Fri, 24 Jul 2009 21:03:35 +0000 Сергей http://sapfeer.ru/vyxod-backtrack-4-pre-final/ В этот раз я решил немного отойти от основной темы блога, сообщить о радостном событии, для тех кто не знает или просто забыл - выход Backtrack 4. Наконец то увидит свет 4ый релиз системы, которая стала отличным инструментом для многих аудиторов безопасности. Я все-таки нашел время для того, что бы ее опробовать. Но к сожалению сразу хочу сказать, что завести ее на USB у меня не получилось, на сайте www.remote-exploit.org описаны 3 способа установки. Ни один из способов не позволил получить работоспособную систему на флешке, поэтому оставалось довольствоваться только DVD-образом в VirtualBox'e. Напомню, что 4ый backtrack потяжелел и выходит теперь только на DVD. В данный момент, я скачал pre final размером 1.39 Gb, а в роликах фигурирует размер 1.32Gb. Видимо произошли какие то изменения за это время. Что ж пожелаю разработчикам исправить ошибки связанные с USB. Если у кого-то получилось завести систему, просьба помочь, все мои контакты здесь. А пока я вспомнил про Backtrack3 и изучаю районные беспроводные сети. Если вдруг у меня получится что-нибудь открыть в них новое - я обязательно об этом тут напишу.

]]>
http://sapfeer.ru/2009/07/25/140/feed 1
Подключение файловой системы через ssh (sshfs) http://sapfeer.ru/2009/07/20/139 http://sapfeer.ru/2009/07/20/139#comments Sun, 19 Jul 2009 19:26:57 +0000 Сергей http://sapfeer.ru/podklyuchenie-fajlovoj-sistemy-cherez-ssh-sshfs/ Привет читатели. Я иногда подрабатываю программистом в онлайне, что приносит мне дополнительный доход. Хочу поделится своей удачной находке, которую я часто использую при работе. Если я беру несложный проект, который можно выполнить за несколько часов, то я предпочитаю делать его сразу на сервере. Или допустим проект готов, надо его настроить для работы на сервере заказчика, что-то поменять или исправить. Если доступно фтп, то никаких проблем нет, kde4 спокойно открывает файлы на фтп, kwrite позволяет их редактировать и сохранять. ( за что огромное спасибо разработчикам Кедов) Но иногда попадаются заказчики, которые не знают как открыть или не хотят открывать такой доступ и дают сразу ssh. Для таких случаев существует файловая система sshfs. Это способ монитровать удаленную фс по ssh. Здесь все очень просто ( я пишу этот пост лишь для ознакомления и не претендую ни на что большее) покажу пример на 2х коммандах:

_empty@linux-wrym:~> sshfs user@somesite.ru /home/user/tmp/

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

_empty@linux-wrym:~> sshfs user@somesite.ru:/home/somesite.ru /home/user/tmp/

После этого все должно нормально заработать. ssfs содержит еще множество опций, которые можно узнать набрав команду sshfs --help
Так же можно вписать sshfs прямо в /etc/fstab и монтировать удаленную файловую систему еще при загрузке(мне как программисту, который подключает за неделю 1-2 sshfs это нафиг не нужно)
Если у кого-то есть примеры как или для чего еще можно использовать sshfs отписывайтесь в комментариях, буду рад услышать!

]]>
http://sapfeer.ru/2009/07/20/139/feed 2
Тонкая настройка SuSEfirewall2 http://sapfeer.ru/2009/07/15/66 http://sapfeer.ru/2009/07/15/66#comments Wed, 15 Jul 2009 23:00:27 +0000 Сергей http://sapfeer.ru/?p=66 Technorati Tags: , , ,

Сколько раз мне попадались люди, которые неравнодушно относятся к вашему компьютеру/серверу/сайтам - dos'ят, пытаются взломать, спамят и т.д. Таких людей надо несомненно банить. Банить в файрволле, что бы ни один пакет не дошел от зловредного пользователя. Вот тут то и встает вопрос, о том, как это делать. В этом посте речь пойдет только об 11ом семействе SuSE (более ранние версии просто не проверял). Все знают, насколько удобная штука SuSEfirewall, хочется сказать спасибо разработчикам дистрибутива за этот прекрасный компонент системы. Файрволл в SuSE может управляться как с помощью yast, так и правкой конфига в /etc/sysconfig/SuSEfirewall2
В интернете полно статей по настройке с помощью SuSEfirewall NAT'а, разделения внешней, внутренней и демилитаризованной зон, пробоса портов. Единственное чего нет - так это возможности указать список ip адресов, которым необходимо запретить доступ к серверу. У меня сервер подключен к 3 сетям, сети интернет, локальной сети провайдера, и собственной домашней сети. Так вот, раньше приходилось добавлять в ручную ip адрес в таблицу INPUT и ставить по действие DROP. Но проблема просто этим не решалась, SuSEfirewall обновляет свои правила, и через несколько дней забаненные адреса просто пропадают, поэтому раньше я прописывал их где нибудь в конце /sbin/SuSEfirewall2 , дабы они всегда добавлялись при перезагрузке основных правил. Это было жутко не красиво и не удобно, все время ругались rkhunter и ossec на измененную checksumm для этого файла. Я перерыл весь гугл в поисках информации по данному вопросу (прим. авт. Либо я реально не умею искать, либо в гугле реально нет нормальной инфы по SuSEfirewall). Да хочется сказать, по поводу suse-community, обращаться туда я даже не пытался, после того как я попросил объяснить мне более детально настройку wi-fi. На официальном канале #opensuse мне просто кинули пару-тройку ссылок. Естественно я их уже не раз смотрел и мне ни чего не дало. На дальнешие мои просьбы о помощи мне сказали, что-то обидное(прим. авт. давно это было - непомню :-] ) и сказали, что бы я не задерживал их время. После этого случая я больше не разу туда не обращался, да и незачем было :) Потому что я считаю, что лучшая помощь только в googl'е. Вобще, я считаю, что настоящий профессионал или тот кто хочет стать им, должен сначала излазить все поисковики в поисках ответа, а потом беспокоить более опытных товарищей, потому что у них и проблемы покруче и время подороже нашего с вами.
Это было небольшое лирическое отступление, но что-то мы далеко отвлеклись от темы этого поста. Так вот внимательно просматривая /etc/sysconfig/SuSEfirewall2 я обнаружил параметр под номером 25 FW_CUSTOMRULES. Здесь можно прописать путь к файлу дополнительных правил. В /etc/sysconfig/scripts/SuSEfirewall2-custom
лежит пример такого файла, вобщем он содержит функции вызываевымые перед различными событиями(hook'и) самого SuSEfirewall. Вот их список с пояснениями(прим. авт. специально перевел описания):

  • fw_custom_before_antispoofing() - все что описано в этой функции будет загружено до того, как будут применены любые правила антиспуфинга. Желательно прописывать здесь правила для DROP'а ненужных broadcast пакетов и пропуска некоторых пакетов через механизм антиспуфинга.
  • fw_custom_after_antispoofing() - загрузка ваших правил, после применения правил для антиспуфинга и обработки icmp-пакетов, но перед правилами для обработки IP пакетов. Здесь желательно прописывать правила для запрета доступа определенных ip-адресов или tcp/udp портов.
  • fw_custom_before_port_handling() - загрузка ваших правил, после применения правил для антиспуфинга и обработки icmp-пакетов, а также после того, как весь траффик переопределен в специальные цепочки SuSEfirewall: input_XXX,forward_XXX и т.д. ,но перед правилами для обработки IP пакетов. Здесь желательно прописывать правила для запрета доступа определенных ip-адресов или tcp/udp портов.
  • fw_custom_before_masq()(может также именоваться как "after_port_handling()" ) - правила, описанные здесь будут загружаться после обработки IP пакетов и TCP/UDP портов, но перед пробросом портов или маскардинга. Используйте этот хук, если вам он действительно нужен и необходим!
  • fw_custom_before_denyall()(может также именоваться как "after_forwardmasq()" ) - правила, описанные здесь будут загружены после проброса портов и/или маскардинга. Используйте этот хук, для отключения логов ненужных пакетов.

  • Так вот, я фильтрую и рекомендую фильтровать все ненужные айпи адреса в hook'e fw_custom_before_antispoofing() что бы исключить возможность попадания любых пакетов в систему с ненужных айпи адресов.
    Пример:
    fw_custom_before_antispoofing() {
    iptables -A INPUT -j DROP -s 10.49.56.211/32
    iptables -A INPUT -j DROP -s 10.49.56.211/32
    iptables -A INPUT -j DROP -s 10.49.48.196/32
    iptables -A INPUT -j DROP -s 10.49.166.252/32
    iptables -A INPUT -j DROP -s 10.49.42.2/32
    }

    Фильтрация идет по локальной сети корбины телеком от начинающих dos'еров. Надеюсь вы теперь стали еще более уверены, насколько гибкий и удобный инструмент подарили нам разработчики openSUSE, за что Спасибо Им Огромное! :)

    ]]>
    http://sapfeer.ru/2009/07/15/66/feed 2
    Настройка безопасного WI-FI http://sapfeer.ru/2009/05/30/65 http://sapfeer.ru/2009/05/30/65#comments Sat, 30 May 2009 06:28:34 +0000 Сергей http://sapfeer0k.wordpress.com/2009/05/30/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d0%b3%d0%be-wi-fi/ Technorati Tags: , , , ,

    Привет, читатели. На днях случилось событие которое я ждал без малого пол года. Наконец то мне удалось дома поднять Wi-FI сеть между своим сервером и ноутбуком. Когда я купил в ноябре свой адаптер Asus wl-167g в ноябре, я даже не предполагал сколько с ним может быть проблем :( Я никак не мог найти нормальный драйвер, и создание сети все время откладывалось. Но вчера я запустил карточку через Ndiswrapper и она заработала! ;-) То же самое я сделал с карточкой на ноутбуке, удалив драйверы из системы. Вобщем это долгая история, и я хочу описать здесь процесс защиты уже существующей сети. Так вот, начну с того, что 2 wi-fi карты без точки доступа работать могут только в режиме ad-hoc(компьютер-компьютер). В этом режиме скорость работы составляет всего 11 мб/с. А для безопасности сети возможно использование лишь WEP. А wep - это одна большая дырка, если вы используете WEP - то можете ждать незванных гостей в своей сети. Я планировал пустить через wi-fi интернет, но раздавать его на соседние квартиры как то не хотелось. Поэтому я и решил себя обезопасить. И так, в голове уже созрел адский план как усложнить нериально хакерам жизнь.

    Начальные параметры
    И так, для начала проверьте, защищено у вас соединение, или нет(у меня адаптер на сервере носит имя wlan0, поэтому я буду приводить листинг для него). И так, добавим WEP защиту по ключевой фразе:

    linuxserver:~ # mcedit /etc/sysconfig/network/ifcfg-wlan0

    Заполняем такие параметры:

    WIRELESS_AUTH_MODE='sharedkey'
    WIRELESS_DEFAULT_KEY='0'
    WIRELESS_KEY_0='h:ВАШАКОНТРОЛЬНАЯФРАЗА'

    То же самое проделываем на всех машинах, после этого запускайте wi-fi и теперь он защищен WEP по ключу. Но этого было явно недостаточно, и я решил поднять openVPN сервер, для соединения 2х компьютеров. Весь плюс этого метода заключается в том, что, допустим WEP рано или поздно хакер сможет взломать, попадет в мою сеть. Наша задача не позволить ему обнаружить компьютеры в сети, или хотя бы затруднить это сделать :)

    openVPN сервер

    Теперь необходимо поднять openVPN сервер. IP адрес моего сервера в wi-fi сети был 192.168.0.1, ноутбука - 192.168.0.3. Нужно настроить NAT для ноутбка, чтобы на нем был интернет.
    Устанавливаем openVPN:

    linuxserver:~ # zypper install openvpn

    То же самое я сделал и на ноутбуке. В сети к сожалению я не нашел толкового, подробного манула по настройке и изрядно намучился.
    Поэтому я приведу здесь полную последовательность команд:

    linuxserver:/tmp/build # cp -rfd /usr/share/openvpn/easy-rsa . #необходимо для настройки сервера и создания сертификатов
    linuxserver:/tmp/build # cd easy-rsa/2.0/

    Теперь выполяем нужные нам действия:

    linuxserver:/tmp/build/easy-rsa/2.0 # ./vars
    NOTE: If you run ./clean-all, I will be doing a rm -rf on /tmp/build/easy-rsa/2.0/keys
    linuxserver:/tmp/build/easy-rsa/2.0 # source vars
    NOTE: If you run ./clean-all, I will be doing a rm -rf on /tmp/build/easy-rsa/2.0/keys
    linuxserver:/tmp/build/easy-rsa /2.0 # ./clean-all
    #генерация сертификата для сервера(X.509)
    linuxserver:/tmp/build/easy-rsa /2.0 # ./build-key-server server
    #настройка параметров Diffie-Helman'а.
    linuxserver:/tmp/build/easy-rsa /2.0 # ./build-dh
    # генерация сертификата для клиента( в моем случае я назвал его laptop)
    linuxserver:/tmp/build/easy-rsa /2.0 # ./build-key laptop
    # генерируем общий ключ:
    linuxserver:/tmp/build/easy-rsa /2.0 # openvpn --genkey --secret ta.key

    Теперь необходимо скормить клиенту нужные ему файлы с ключами, т.е. вот эти файлы: ca.crt, laptop.crt, laptop.key и ta.key.
    Конфиг openvpn здесь нет смысла я думаю приводить, есть куча примеров в интернете.
    Хочу заметить, что я запускал на ноутбуке openvpn c правами nobody, поэтому я не мог выставлять defaultroute автоматически, vpn сервером. Поэтому я добавил в скрипт автозагрузки openvpn пару строчек:

    #сразу после этой строчки в start
    rc_status -v
    #добавил задержку, пока установиться vpn соединение и установку default роутинга.
    sleep 4;
    /sbin/route add default dev tun0

    И так, в SuSEfirewall2 нет возможности запретить пинг для конкретного интерфейса, поиск по гуглу какие конфиги можно редактировать кроме /etc/sysconfig/SuSEfirewall2 ничего не дал. На официальном канале меня в мирке меня отправили куда подальше. Кстати, я ни разу не получил на их канале внятного ответа, конечно, проще сказать новичку, почему не устанавливается пакет или что-то подобное, чем ответить на действительно сложный вопрос. Так вот, поэтому я не стал особо напрягаться по этому поводу и просто написал простой скрипт в три строчки:

    linuxserver:~ # mcedit /usr/sbin/iptables.sh

    Со следующим содержимым:

    #!/bin/bash
    # порт для будующего VPN:
    iptables -I INPUT 1 -d 192.168.0.1 -p UDP --destination-port 1194 -j ACCEPT
    # здесь у меня крутится ssh(я решил его оставить на всякий случай, если вдруг упадет openVPN):
    iptables -I INPUT 1 -d 192.168.0.1 -p TCP --destination-port 8765 -j ACCEPT
    #выбрасываем все остальные пакеты приходящие на интерфейс
    iptables -I INPUT 3 -s 192.168.0.0/24 -j DROP

    Я добавил его в автозагрузку в файл /etc/init.d/SuSEfirewall2_setup, что бы не мучиться(частичный листинг):

    case "$1" in
    start)
    echo -n "Starting Firewall Initialization "
    echo -n '(phase 2 of 2) '
    $SUSEFWALL -q --bootunlock start
    /usr/sbin/iptables.sh
    rc_status -v
    ;;

    По аналогии, я сделал тоже самое с ноутбуком:

    iptables -I INPUT 1 -d 192.168.0.3 -s 192.168.0.1 -p UDP --source-port 1194 -j ACCEPT
    iptables -I INPUT 1 -d 192.168.0.3 -s 192.168.0.1 -p TCP --source-port 8765 -j ACCEPT
    iptables -I INPUT 3 -s 192.168.0.0/24 -j DROP

    После этого оба компьютера не пингуются, и во всей сети есть только 2 открытых порта - 1194(vpn) и 8765(ssh). Как показало исследование nmap'ом сервер в сети не обнаружить можно если сканировать так:

    Starting Nmap 4.75 ( http://nmap.org ) at 2009-05-04 10:40 MSD
    Stats: 0:00:05 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan
    Connect Scan Timing: About 2.00% done; ETC: 10:44 (0:04:05 remaining)

    Как видно, 4 часа сидеть и ждать ради скана одного компьютера, ну что же, посмотрел бы я на этого терпеливого хакера :)

    ]]>
    http://sapfeer.ru/2009/05/30/65/feed 2
    Делаем backup на on-line сервисы http://sapfeer.ru/2009/05/01/48 http://sapfeer.ru/2009/05/01/48#comments Sat, 02 May 2009 01:19:14 +0000 Сергей http://sapfeer0k.wordpress.com/2009/05/01/%d0%b4%d0%b5%d0%bb%d0%b0%d0%b5%d0%bc-backup-%d0%bd%d0%b0-on-line-%d1%81%d0%b5%d1%80%d0%b2%d0%b8%d1%81%d1%8b/ Technorati Tags: , , , ,

    Привет всем. Все наверное слышали о программе gmail drive, которая позволяет использовать почтовый ящик на гугле как виртуальный винчестер. У нее есть аналог под *nix системы, написанный на питоне - gmailfs. Так вот, для начала я и хотел использовать google для хранения своих backup'ов.
    Но протокол imap не очень быстрая штука, да еще с моей скоростью интернета, поэтому после нескольких пробных запусков я решил искать какую нибудь другую, более быструю альтернативу.
    В сети существует множество on-line сервисов для хранения на них данных, но не все они подходят для задуманной цели :) Мне нужен был сервис удовлетворяющий следующим параметрам:
    - Возможность работы с сервисом напрямую, без веб-интерфейса(ftp,ssh,rsync)
    - Фриварность
    - Поддержка русского языка
    - Шифрование хранимых на сервере данных
    - Отсутствие ограничения на объем загружаемого файла

    Кто ищет - тот всегда найдет
    Первоначально я попал на один из крупнейших ресурсов, предоставляющих данные услуги - www.box.net. Но к сожалению, у них на бесплатном аккаунте стоит ограничение - максимальный размер загружаемого файла - 25 мб. Это совершенно меня не устраивало и я продолжил поиски. Отбросив по тем или иным причинам, еще штук 10 сервисов я все таки смог найти то, что хотел. mydisk.se - шведский ресурс, предоставляющий 2 GB свободного места в бесплатном аккаунте.
    На сервисе имелся доступ по webdav, что не могло не радовать, но, к сожалению, ничего не было сказано о том, в каком виде данные хранятся на сервере, т.е. шифруются или лежат в открытом виде :(

    Зарегистрировавшись, я узнал, что сервис предоставляет так же доменное имя вида - www.Имя пользов..mydisk.se и фото страницу, это меня конечно совсем не интересовало. Зато захотелось подключить эти 2 GB как отдельный диск в мою систему. Погуглив, я нашел проект некоего немецкого/их разработчика/ов - wdfs. wdfs - это файловая система webdav, которая может быть примонтирована с помощью fuse. И я решил попробовать:

    linux-wrym:/mnt # zypper install wdfs

    У wdfs множество параметров, но я остановлюсь только на основных, которые нам понадобятся:
    accept_sslcert - принимать ssl сертификат, когда идет работа с webdav через ssl
    username - имя пользователя
    password - пароль пользователя
    allow_other - рзрешать другим пользователям доступ к смонтированной папке

    Итак, монтируем webdav как локальную папку(все действия делаем под рутом):

    linux-wrym:/ # wdfs https://mydisk.se/USERNAME/backup/ /mnt/backup -o username=USERNAME -o password=PASS -o accept_sslcert -o allow_other

    Я изначально монтировал не просто диск сервиса, расположенный по адресу https://mydisk.se/USERNAME/ , а сразу папку backup, потому что к ней закрыт доступ через WEB другим людям. Не стоит хранить ваши бэкапы там, где их могут скачать другие :)
    И как человек ленивый - сразу добавил запись в fstab, чтобы не набирать больше полностью команду:

    wdfs#https://mydisk.se/USERNAME/ /mnt/backup fuse noauto,users,accept_sslcert,allow_other0 0

    Я специально не стал вписывать username и password, потому что это потенциальная угроза безопасности, пароль спросят при монтировании, это гораздо безопаснее, чем держать их в fstab в открытом виде. Итак, подключаем диск:

    linux-wrym:/mnt # mount /home/_empty/mount/backup

    Все, диск для backup'а у вас в системе есть. Можете полазить в нем, попробовать что-нибудь туда скопировать, или создать папку :)

    duplicity
    Итак, диск есть, данные есть, так давайте сделаем backup. Но прежде определимся, чем и как мы будем это делать. Я конечно знаю насколько мощный инструмент rsync, к нему создано много gui'ев, но здесь я его использовать не рекомендую. Все дело в том, как я писал выше, что неизвестно используется на сервере шифрование или нет. Поэтому, чтобы быть уверенным в сохранности своих данных, я решил воспользоваться другой утилитой - duplicity. Если вы рьяный сторонник gnu, то можете поискать другой способ, но есть ли смысл? :)
    Вы можете загрузить rpm пакет или тарбол , конечно для пользователей SuSE в нашем любимом build-service уже есть готовые пакеты - duplicity У программы очень много возможностей, но я в кратце расскажу как ее пользуюсь ей.

    Backup'им
    Для начала предлагаю в .bashrc добавить фразу-пароль, необходимую для генерации ключа шифрования(Вы можете вводить ее каждый раз при синхронизации данных, но это не совсем удобно).

    export PASSPHRASE="your_pass_phrase"

    Пожалуйста не поленитесь почитать хотя бы help к duplicity, там очень много полезной информации. Итак, запускаем программу:

    duplicity -v 5 /home/_empty/Documents/ file:///mnt/backup

    После этого duplicity создаст gpg файлы на сервере, в которых будут храниться все файлы и произведенные в них изменения. При последующих запусках duplicity будет загружать не сами файлы, а различия(diff-файлы), все зашифровано, так что можете не беспокоится о конфиденциальности ваших данных.
    Вы всегда можете посмотреть все изменения созданные с начала backup'а:

    _empty@linux-wrym:~> duplicity collection-status file:///mnt/backup/

    Если никаких ошибок не было, то у вас будет примерно вот такой вывод(часть листинга опущена):

    Archive dir: None

    Found 0 backup chains without signatures.

    Found a complete backup chain with matching signature chain:
    -------------------------
    Chain start time: Thu Apr 30 13:58:59 2009
    Chain end time: Fri May 1 11:53:54 2009
    Number of contained backup sets: 11
    Total number of contained volumes: 34
    Type of backup set: Time: Num volumes:
    Full Thu Apr 30 13:58:59 2009 23
    Incremental Thu Apr 30 15:17:34 2009 1
    Incremental Thu Apr 30 15:42:54 2009 2
    Incremental Thu Apr 30 15:49:54 2009 1
    Incremental Thu Apr 30 16:01:23 2009 1
    Incremental Thu Apr 30 16:04:08 2009 1
    Incremental Thu Apr 30 16:35:52 2009 1
    Incremental Thu Apr 30 18:12:36 2009 1
    Incremental Fri May 1 01:40:37 2009 1
    Incremental Fri May 1 11:49:46 2009 1
    Incremental Fri May 1 11:53:54 2009 1
    -------------------------
    No orphaned or incomplete backup sets found.

    Вот так можно просмотреть текущий список файлов, которые находятся в бэкапе:

    _empty@linux-wrym:~> duplicity list-current-files file:///mnt/backup/

    Программа duplicity - мощный инструмент, и если вы научитесь им пользоваться - это сильно упростит вам жизнь. duplicity поддерживает кучу протоколов, среди которых тот же самый IMAP(см. выше). Я думаю, вы оцените преимущество хранения данных на удаленном сервере. Рекомендую делать плановый автоматический backup через cron. Главное помните - не храните все яйца в одной корзине, и сможете забыть о проблемах с данными и их backup'ом.

    ]]>
    http://sapfeer.ru/2009/05/01/48/feed 6