Тему создал далеко не для спецов. А скорее как дневник. Идея проста. Есть домашний терминал на винде с Аутпостом дырявым. Хочется что-нить посильнее. Хваленые никсовые фаеры это классно, но не буду же я из-за этого пересаживатся на никсы. Поэтому решил поставить на второй комп (все равно не юзаю) фрю и сконфигить ее как шлюз с фаером. Сам факт локальной сети до главного терминала уже отбивает 50% "любителей", которые будут пытаться проникнуть. Ну и плюс, если получится грамотно настроить фаер, отобью и остальные 48% =) Начал с того, что сдул с локалки дистриб 6.0 и купил книгу "FreeBSD Mega Edition" (такая большая книга). Поставил фрю на SATA диск 100 гиговый, встала как родная. Сама все отформатила итп. миднайт командер запускаться не стал, иксы тоже ругались на видеокарту. Решил делать все из консоли =) Началось все с конфига сетевых карт. ибо комп нужен был именно для этого. На моей матери было 2 сетевых карты. Одна 3com гигабитная, вторая VIA 10мегабитная. Опознались обе но вот блин, 3com работала на ура, коннектился и ко второму компу (локалка) и к корбине через DHPC - все замечательно. VIA - ни в какую! status: no carrier и все, хоть умри =) не смотря на статус - лампочки на сетевухе мигали =) Плюнул. Пошел покупать сетевуху еще одну. Взял D-link DGE-530T. Сразу она не определилась, но был диск с дровами и заветной дирой "FreeBSD 5.3 driver". Устанавливал 50 раз - вместо того чтобы увидеть новую сетевуху после ребута, фря не видела ни одной =))))) полез на офф форум д-линка. Оказалось что дрова их подходят ТОЛЬКО к 5.3 и не работают уже даже на 5.4... В данный момент ставлю 5.3 вмесно 6.0. Подумываю все же перейти на беспроводную ланку. Продолжение следует
Ну раз продолжение следует... А так как то бессмысленно. Ну посмотрим что получится у тебя А бачиму именно freeBSD ? ЗЫ. Осталось только дописать снизу - "Я закончил писать этот текст" (с)... ЗЫ2 Трин, если решишь одуматься, и выберешь openBSD, то тебе сюда
Ну дык, фря все-таки... Хотя для файрвола она — самое то(мнение общественности, откуда появилось — хз, сам не проверял). А в остальном она проигрывает линуху(сравнений куча, с диаграммами и т.д.). Одна файловая система чего стоит ) И даже винде, если сравнивать БД(хотя спорно, надо проверить)
Для начала кури хэндбук все же кури, несмотря на репутацию. Особенно посмотри про загрузку модулей. И еще просто ради интереса. Зачем шлюзу 100гиговый сата???
Вообще-то, в FreeBSD mc надо ставить самому из портов, он не входит в конфиг по умолчанию. Вообще-то, в FreeBSD иксы надо конфигурить, они не ставятся и не настраиваются по умолчанию.. Это не из-за того, что FreeBSD такая совсем плохая и нехорошая, это самая дружественная BSD из BSD, кроме MacOS X..=) просто ось-то серверная, вот и... ы.
2nerezus ты не прав!!! хотелось бы посмотреть на эти диаграраммы. Что касается ФС - это ты уже сильно загнул! 2Trinux вот ети книги лучше просмотри помимо хендбуки: http://c-books.info/books/load.php?ty=bsd&lng=RU *Андрей Робачевский. Операционная система UNIX *Маршалл Маккузик, Джордж Невил-Нил. FreeBSD. Архитектура и реализация
n4n0bit http://www.trinity.su/news/280.htm Ну и там на глаз заметно: гуй медленнее. Время форка больше.
День второй. После нескольких часов неудачных попыток заставить работать вторую сетевуху я все же собрался, поднял свою 78-ми килограмовую задницу (на самом деле это мышцы =))) а не жир =)) и попер в магаз за сетевой. Взял Dlink гигабитовую. Пришел, воткнул - не видно из фри. Достал диск, скопировал все из диры FreeBSD 5.3 driver. Проинсталили дрова, ребут. Мало того что не нашел длинк - потерял и старую сетевуху =) сделал то, что делать "крутым компьютерщикам" категорически запрещено. Прочел мануал. Оказалось что дрова только для 5.3 и не граммом больше =))))) поставил 5.3. Заинсталил дрова - увиделась карточка. Настроил домашнюю локалку - все путем. Пингуются оба компа. Настроил локалку с корбиной - все путем, IP мне выдали. Но этим дело не кончилось =) чтобы провести инет нужно приконнектится на VPN корбины =))) после долгих мучений mpd и pptpclient + курения http://homenet.corbina.net/index.php?showforum=72 ничего не вышло. Пока... всмысле на данный момент. ни mpd ни pptpclient оннектится не хочет. описал глюк тут http://homenet.corbina.net/index.php?showtopic=3416&st=30 и ушел в панике спать =))))
Молодец. Ваапще такие экраны ставят в конторах, которые думают о своей безопасности. Кстати хочу посоветовать замутить Snort (Система обнаружения атак) Это настолько гибкая и мощная вещь, что ты ваапще станешь гуру Тётки на отсос будут в очередь выстраиваться )
Поставь на эту машину виндовский isa server. Он именно для двух сетевух. Судя из первого поста это то что надо. А иначе колбасься дальше. Нахера тебе никс не пойму.
Автор, установка FreeBSD в качестве gate+firewall занимает 4-6 минут. В установке дополнительного софте не нуждается, т.к. все есть в базе. Ну и самое интересное ака next step настройка PS: Собсно хотелось видеть реальные примеры и конфиги, плиз.
1. Желозо: Для "сетнки" не нужно покупать хорошую машинку. Достаточно будет 300 селерона, 64, но можно и меньше мозгов. В качестве HDD и флешка сойдет, но настройка роутера на флешке - отдельная тема, поэтому самый простой винтик на 1Гб с головой. Сеть. Покупаем самый обычный риалтек за 3$. 2. Установка: Ставим все по минимуму. Если решили поставить 6.1, то нужно обязательно выбрать kernel, иначе после установки система скажет, что нет ядра. (Замутили спецом, для установки на разные архитектуры) 3. Настройка: Настройка роутера находиться в одном файле /etc/rc.conf - в дальн. просто rc.conf 1) Первая сторка - будет имя роутера. hostname="myrouter.domain.net" 2) Следующая строчка - сеть ifconfig - эта команда покажет все сетевые интерфейсы, которые есть в системе. Т.к. поставили два риалтека, то и интерфейсы будут rl0 и rl1. Теперь на эти интерфейсы нужно "натянуть" IP адреса. Пусть rl0 - будет интерфейс, который подключен к провайдеру, его IP будет 192.168.0.2, маска 255.255.255.0(/24) и 192.168.0.1 - это шлюз провайдера. А rl1 - к домашней машине, IP которой пусть будет 10.0.0.1 и маска 255.255.255.252(/30) - это маска на 2 машины. ifconfig_rl0="inet 192.168.0.2 netmask 255.255.255.0" или #ISP ifconfig_rl0="inet 192.168.0.2/24" эти записи равны, поэтому буду юзать последнюю, т.к. она короче. #Home net ifconfig_rl1="inet 10.0.0.1/30" #Default gate defaultrouter="192.168.0.1" gateway_enable="YES" - говорит о том, что машинка будет роутером. С настройками сети все. Далее нам нужен ssh, т.к. подключать монитор и клаву будет тогда, когда роутер не работает, а если замутим все верно, то вообще подключать не будем sshd_enable="YES" Сохраняем настройки и выходим. rc.conf ******************************** hostname="myrouter.domain.net" ifconfig_rl0="inet 192.168.0.2/24" ifconfig_rl1="inet 10.0.0.1/30" defaultrouter="192.168.0.1" gateway_enable="YES" sshd_enable="YES" ******************************** По умолчанию в FreeBSD идет базовый редактор vi. Все прописали, а теперь займемся сеткой "динамически" Пишем в консольке: ifconfig rl0 192.168.0.2/24 и сразу проверим сеть. ping 192.168.0.1 Если gate ISP ответит, то все ок. Если нет, то проблема может быть с сетью, железом или настройками. Для проверки набьем ifconfig rl0 и enter должно быть что-то типа этого rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=8<VLAN_MTU> inet6 fe80::2c1:28ff:fe01:5124%rl0 prefixlen 64 scopeid 0x2 inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255 ether 00:c1:28:01:51:24 media: Ethernet autoselect (10baseT/UTP) status: active После того, как добились связи с гейтом прова создаем вайлик /etc/resolv.conf и внем пропишим одну строчку nameserver xxx.xxx.xxx.xxx, где xxx.xxx.xxx.xxx - IP адрес DNS сервера. Save & Exit. ping mail.ru ping mail.ru PING mail.ru (194.67.57.26): 56 data bytes 64 bytes from 194.67.57.26: icmp_seq=0 ttl=116 time=107.987 ms Ура, работает. Таким же образом подымаем внутр. сеть ifconfig rl1 10.0.0.1/30 Этот интерфейс подключен к интерфейсу домашней машинке, но которой прописан IP 10.0.0.2, mask 255.255.255.252 и шлюз 10.0.0.1, а DNS можно оставить xxx.xxx.xxx.xxx, который выдал Вам ISP и который прописан на роутере. С роутера пингуем 10.0.0.2. Запинговался? Отлично Все, на этом с сетью окончили. ReAdmin aka ssh Идем в vi /etc/ssh/sshd_config и дописываем строчку ListenAddress 10.0.0.1 Этой строчкой мы говорим демону, а под виндой это звучит сервером, ssh работать тока на внутр. интерфейсе(rl1), т.к. на наружном он не нужен. И запускаем sshd следующей командой: /etc/rc.d/sshd start При первом запуске нужно будет сгенерировать ключи, утилиты для генерации запустяться сами, а Вам нужно будет тока понажимать на разные кнопки в течении 60 секунд, вроде. Как проверить, стартонул ли ssh? sockstat -4 USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS root sendmail 535 4 tcp4 127.0.0.1:25 *:* root sshd 529 4 tcp4 10.0.0.1:22 *:* root syslogd 371 7 udp4 *:514 *:* Стартонул Теперь нам нужно завести учетку, чтобы подключаться к серверу. Можно конечно у рутовую использовать, но я не советую. adduser Username: support Full name: Uid (Leave empty for default): Login group [support]: wheel Login group is wheel. Invite support into other groups? []: Login class [default]: Shell (sh csh tcsh nologin) [sh]: tcsh Home directory [/home/support]: Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: Enter password again: Lock out the account after creation? [no]: Username : support Password : ***** Full Name : Uid : 1001 Class : Groups : wheel Home : /home/support Shell : /bin/tcsh Locked : no Длжно получиться что-то типа этого. После создания новой учетки идем на другую консоль(alt+Fx, где x - это цифры от 1 и до 12 F1,F2, etc..) и логинимся. Если все прошло отлично, значит можно перезагрузить роутер. Это будет наша первая перезагрузка, после установки. Вообще можно и дальше настраивать, но обычно на этом деалю финиш "физике". Дальнейшая настройка будет удаленной shutdown -r now После загрузки роутера подключаемся к ниму виндой/other OS и проверяем, все ли работает. Т.е. есть ли связь между роутером и ISP, если да - то переходим к нату и защите, иначе проверяем настройки в rc.conf'е 4. NAT & Firewall aka PF В качестве ната и фаервола будет юзать пакет фильтр pf, который был портирован с OpenBSD. Настройки этого "зверька" храняться в /etc/pf.conf ***************************************** #Макросы ext_if = "rl0" int_if = "rl1" Me = "10.0.0.2" #NAT nat pass on $ext_if inet from $Me -> ($ext_if) # Все, что не разрешино - блочим block return log block in from no-route #quick - говорит о том, что это если это правило выполняется, то дальше не идем. Т.к. lo0 - это я )), то меня везде пропускаем pass quick on lo0 #ICMP этот протокол нужен для диагностики сети (ping) pass in inet proto icmp to {$ext_if $int_if } icmp-type echoreq keep state #SSH pass in on $int_if inet proto tcp from $Me to $int_if port ssh keep state # Разрешим нашему роутеру ходить куда угодно, но тока от рута pass out inet from {$ext_if $int_if } user 0 keep state ***************************************** Эти правила делаю следующее: 1. Ваша машина (10.0.0.2) будет выходить в локалку/интернет с IP адреса 192.168.0.2 2. На вход с интерфейса ISP будет доступен тока пинг и тока к роутеру и все. 3. Тока на внутренем интерфейсе и тока с IP адреса 10.0.0.2 будет доступ к роутеру по ssh 4. Тока пользователь рут можешь "выходить" с роутера в любом направлении, обычно использую это для диагностики, а потом оставляю тока icmp vi /etc/rc.conf и дописываем еще пару строчек в конец это для того, чтобы pf стартовал при старте роутера *********************** pf_enable="YES" # Set to YES to enable packet filter (pf) pflog_enable="YES" # Set to YES to enable packet filter logging *********************** Save & Exit Ну и стартуем нашего "зверька" pfctl -e && pfctl -f /etc/pf.conf На домашней машинке должен появиться инет PS: Ой, уже Sat Sep 16 00:15:22 EEST 2006. Сорри, если есть ошибки/опечатки, с работы да и день 5-й )) Если что - поправим
Такс, забыл еще дописать пару строчек, одна из которых обязательна отмечу красным. ************************* /etc/pf.conf #Макросы ext_if = "rl0" int_if = "rl1" Me = "10.0.0.2" table <router> {ext_if int_if } nat pass on $ext_if inet from $Me -> ($ext_if) antispoof quick for rl0 inet antispoof quick for rl1 inet block return log block in from no-route pass quick on lo0 pass in on $int_if inet from $Me to !<router> keep state pass in inet proto icmp to <router> icmp-type echoreq keep state pass in on $int_if inet proto tcp from $Me to $int_if port ssh keep state pass out inet from {$ext_if $int_if } user 0 keep state ************************* Добавил таблицу <router>, корорая содержит IP адреса нашего роутера (192.168.0.2 и 10.0.0.1). Для того, чтобы правила конкретней выгляд. Добавил antispoof Ну и самое главно, пропускать на вход весь трафик с IP 10.0.0.2 на внутренем интерфейсе через роутер. Есть? Теперь перезагрузим pf следующей командой: pfctl -Fr && pfctl -f /etc/pf.conf pfctl -Fr - Flush the filter rules (Очищаем правила фаера) pfctl -f /etc/pf.conf - Load the rules contained in file (Загружаем правила с файла) PS: Перед перезагрузкой фаера рекомендую запускать pfctl -nf /etc/pf.conf - Do not actually load rules, just parse them (Не загружатет правила, а только проверяет на наличие ошибок) Ну и pfctl -sr Show the currently loaded filter rules (Показывает текущие правила фильтра) pfctl -sn Show the currently loaded NAT rules (Показывает текущие правила ната) И для диагностики: ping, tcpdump tcpdump -n -e -ttt -i pflog0 - на интерфейс pflog0 сбрасываются логи правил, которые были отмечены log. У нас это одно правило block return log, т.е. все, что запрещено будет сыпаться в лог (/var/log/pflog). Для просмотра лога тоже нужо юзать tcpdump с ключиком "-r" tcpdmp -r /var/log/pflog -------------------------------------------------- Этот пример можно назвать "настройка роутера за 10-15 минут"
2 lo0 спасибо большое, пригодится. но есть несколько НО. НО первое: У меня не реалтек карты =))) НО второе: Инет не из локалки корбины, а с VPN. Как раз локалку то я уже настроил и затык был только в сетевой карте, как только поставил новую - все встало как надо. Сейчас затык именно в VPN.
Part II, VPN pkg_add -r mpd4-4.0b4 - скачает сам с инета и утсановит. Или pkg_add /cdrom/../../packages/All/mpd4-xxx-x-x.tbz - установка с CD-ROM'a. Таким же макаром можно и с винта установить. Кста, mpd4-4.0b4 Depends on: Dependency: expat-2.0.0_1 Dependency: libpdel-0.5.3_1 Установили Настройка mpd: Скипт для запуска mpd лежит там, где и все скрипты /usr/local/etc/rc.d/ с неймом mpd4.sh.simple Переименуем его в mpd4.sh (cd /usr/local/etc/rc.d/ && mv mpd4.sh.simple mpd4.sh). Скрипт для запуска готов Конфиги. Все конфиги лежат здесь /usr/local/etc/, а конфиг mpd - в /usr/local/etc/mpd4/ соответственно, идем туда и переименовываем все, а их 3, файла формата mpd.xxxx.simple в mpd.xxxx. Если файлы уже в таком формате, то тогда делаем копию cp mpd.xxxx mpd.xxxx-default (Всегда так делаю, т.к. в этих файлах храняться дефаултные настройки и примеры), а Вам не обязательно. О себе: uname -a FreeBSD freebsd.datasvit.net 6.1-STABLE FreeBSD 6.1-STABLE #14: Tue Jun 27 21:37:59 EEST 2006 [email protected]:/usr/obj/usr/src/sys/HOME i386 pkg_info | grep mpd mpd4-4.0b4 Multi-link PPP daemon based on netgraph(4) [development ver Т.к. мой пров не раздает инет по VPN, поднял сервак на линуксе. (Пробовал подключиться, в качестве клиента юзал Linux и FreeBSD, оба клиента заработали на ура ) Сразу хочу огорчить, но 99%, что у Вас не получ. установить соединение, т.к. много параметров не известны. Мой mpd4.conf: ************************************* #VPN default: load pptp0 pptp0: new -i ng0 pptp0 pptp0 set iface disable on-demand set iface idle 0 set iface route default set bundle disable multilink set auth authname "mak" set auth password "********" set link yes acfcomp protocomp set link disable chap set link accept chap set link enable no-orig-auth set link keep-alive 10 75 set ipcp yes vjcomp set ipcp ranges 0.0.0.0/0 0.0.0.0/0 open ************************************* Внимание! default: и pptp0: нужно писать сразу, без пробелов, остальные опции "через" Tab. Иначе не будет работать, типа синтаксис левый У mpd.links синтаксис такой же pptp0: - без пробела, а остальное "через" Tab ************************************* pptp0: set link type pptp set pptp self MY_IP_ADDR set pptp peer ISP_IP_VPN_SERVER_ADDR set pptp enable originate incoming outcall ************************************* MY_IP_ADDR - здесь будет наш IP 192.168.0.2, который выдал нам ISP, ISP_IP_VPN_SERVER_ADDR - будет IP VPN-сервера нашего ISP mpd.secret - у меня пустой. Если есть возможность - позвоните в support и уточните метод авторизации на VPN сервере, т.е. нужно получить как можно больше инфы. Если support или админ отморозились, как обычно, то будем спрашивать у сервера. Правим vi /etc/syslog.conf Дописываем в конец строчку: !mpd *.* <Tab> ... <Tab> /var/log/mpd.log Save & Exit touch /var/log/mpd.log - создаем пустой файлик mpd.log и заставим перечитать настройки syslog'a /etc/rc.d/syslogd reload Если в pf'е нет строчки pass out inet from {$ext_if $int_if } user 0 keep state т.е. запрет на исход, то можно, временно, отключить pf командой pfctl -d Готово, можно пробовать tail -f /var/log/mpd.log - для просмотра логов в on-line Открываем вторую консоль/новую ssh сессию и стартуем mpd /usr/local/etc/rc.d/mpd4.sh start И сново идем к tail'у, у него для нас очень много инфы PS: У мя кернел HOME, но в нем включена опция для тоннеля (VPN). По умаолчанию в GENERIC она тоже включена. Если не удалось установить соединение - лог можно сюда бросать, если да, то нужно поправить pf.conf под VPN Какая карта, чип?
да карты то я настроил без проблем. Одна 3ком гигабитная, вторая длинк гигобитная. 3ком опозналась сразу, длинк опозналась после установки дров. Их сконфигурил, все путем. с впн проблемы и пока нет времени разобраться. пару дней на другие дела, потом продолжу =)