Mount /usr/ports във Freebsd Jail
Имам 3 Jail-a искам да си инсталирам и в 3те нещо от /usr/ports :
mount_nullfs /usr/ports/ /usr/jails/ns/usr/ports
mount_nullfs /usr/ports/ /usr/jails/mail/usr/ports
mount_nullfs /usr/ports/ /usr/jails/www/usr/ports
shell find & replace recursive
Много мразя като ми се налага да променям едно и също нещо в много различни файлове !
Затова е следният ред :
find * -type f -exec sed -i ’s/ТОВА ТЪРСИМ/ПРОМЕНЯМЕ С ТОВА/’ {} \;
Казах ли колко обичам sed ?
virtualbox-ose и freebsd7.2 guest OS
Ако ви се наложи да инсталирате Freebsd7.x под VirtalBox-OSE този ред със сигурност ще ви спести доста нерви :
# vboxmanage modifyvm VM_NAME -nictype1 Am79C970A
Явно FreeBSD имат някакъв проблем с емулацията на networking-а във VirtualBOX , но както и да е – този ред решава проблема
Повече инфо има тук :
click
Как се добавят VLANs (802.1q) на FreeBSD
Доста елементарно се оказа но поради факта , че не ми се беше налагало – не го знаех
))
Искаме влан 100 да си го разтагнем на BSD машинката и да му вдигнем IP адрес – какво правим ?
Ето това :
Зареждаме модула в ядрото :
# kldload if_vlan
Създаваме VLAN-а :
# ifconfig vlan100 create
Вдигаме му IP адрес :
# ifconfig vlan100 10.17.0.71 netmask 255.255.255.252 vlan 100 vlandev nve0
И всичко спи
FreeBSD jails
Intro :
FreeBSD е операционна система с отворен код , поне според мен най-подходяща за изграждане на сървъри , но също и с много добре развити мрежови приложения – перфектна за PPPoE концентратори или друг вид рутери да речем , като цяло доста стабилна операционна система с много възможности за настройки и много инструменти в помощ на системния администратор.Не на последно място ще кажа че проекта FreeBSD има изключително добра подръжка и много ама найстина много документация .
Какво е jail ?
Основната идея на jail-а е да повиши сигурността на системата като отдели един или повече процеси от другите и ги постави в chroot(2) среда. Чрез chroot(8) можем да променим root директорията на поредица процеси като ги отделим в сигурна среда от другите. Да речем , че недобронамерен потребител направи успешен exploit върху уязвим процес пуснат в jail и успешно компроментира системата , това няма да повлияе на цялата система както сами се досещате, а атакуващия ще има достъп само до процесите пуснати в jail-a. Разбира се има начини да се избяга от chroot средата, но за по-прости задачи (като service jails) e доста мощен инструмент.
Като цяло командата jail(8) служи за контрол над създадените jails.
Разбира се всички тези неща са доста добре обяснени във онлайн документацията на http://www.freebsd.org/doc/en/books/handbook/ , но основната ми идея е да ви покажа накратко как да си направите няколко service jails.
Изграждане на jails :
Тук ще ви покажа един елементарен пример за шаблон , лично аз използвам най-вече service jails – накратко това означава, че не е нужно да се прави пълен installworld на всеки jail. В този пример искаме крайният резултат да бъде HTTP, DNS и SMTP сървайси в отделни jails.Ще ни трябва една машина която ще наричаме хост и на която ще пуснем тези сървайси.На машината за примера имаме чисто нова инсталация на FreeBSD 6.3 със инсталиран пакет source , можете да вземете нужния сорс чрез :
#sysinstall -> configure -> distributions -> src
И така , да започваме
Кратко обяснение :
- Всеки jail ще бъде монтиран в /home/services.
- /home/services/ro е темплейта и read-only partition за всеки jail
- Празна директория за всеки jail ще бъде създадена тук : /home/services
- Всеки jail ще има директория /rw , която ще бъде линкната към read-write частта от jaila
- Всеки jail ще има собствена read-write която се базира на /home/services/skel.
- Всеки jailspace (read-write частта от всеки jail) трябва да бъде създадена /home/jails.
Сздаване на read-only темплейта :
* може да се наложи да инсталирате sysutils/cpdup на хост системата.
# mkdir /home/services /home/services/ro
# cd /usr/src
# make installworld DESTDIR=/home/services/ro
# cd /home/services/ro
# mkdir usr/ports
# portsnap -p /home/services/ro/usr/ports fetch extract
# cpdup /usr/src /home/services/ro/usr/src
# mkdir /home/services/skel /home/services/skel/home /home/services/skel/usr-X11R6 /home/services/skel/distfiles
# mv etc /home/services/skel
# mv usr/local /home/services/skel/usr-local
# mv tmp /home/services/skel
# mv var /home/services/skel
# mv root /home/services/skel
# mergemaster -t /home/services/skel/var/tmp/temproot -D /home/services/skel -i
# cd /home/services/skel
# rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev
# cd /home/services/ro
# mkdir rw
# ln -s rw/etc etc
# ln -s rw/home home
# ln -s rw/root root
# ln -s ../rw/usr-local usr/local
# ln -s ../rw/usr-X11R6 usr/X11R6
# ln -s ../../rw/distfiles usr/ports/distfiles
# ln -s rw/tmp tmp
# ln -s rw/var var
# echo "WRKDIRPREFIX?= /rw/portbuild" > /home/services/skel/etc/make.conf
ако всички тези операции минат успешно е време да добавите в /etc/fstab следните неща :
/home/services/ro /home/services/ns nullfs ro 0 0
/home/services/ro /home/services/mail nullfs ro 0 0
/home/services/ro /home/services/www nullfs ro 0 0
/home/jails/ns /home/services/ns/rw nullfs rw 0 0
/home/jails/mail /home/services/mail/rw nullfs rw 0 0
/home/jails/www /home/services/www/rw nullfs rw 0 0
след това добавяме в /etc/rc.conf следните редове :
jail_enable="YES"
jail_set_hostname_allow="NO"
jail_list="ns mail www"
jail_ns_hostname="ns.example.org"
jail_ns_ip="192.168.3.17"
jail_ns_rootdir="/usr/home/services/ns"
jail_ns_devfs_enable="YES"
jail_mail_hostname="mail.example.org"
jail_mail_ip="192.168.3.18"
jail_mail_rootdir="/usr/home/services/mail"
jail_mail_devfs_enable="YES"
jail_www_hostname="www.example.org"
jail_www_ip="192.168.3.19"
jail_www_rootdir="/usr/home/services/www"
jail_www_devfs_enable="YES"
* За вески jail трябва да сме предвидили ip адрес – това е задължително (без значение частен или публичен)
* Сигурно ви прави впечатление че тука заместваме /home/services/ със /usr/home/services , това е така защото във FreeBSD директорията /home е линк към /usr/home
Да продължим нататък като създадем тези папки :
# mkdir /home/services/ns /home/services/mail /home/services/www
# mkdir /home/jails
# cpdup /home/services/skel /home/jails/ns
# cpdup /home/services/skel /home/jails/mail
# cpdup /home/services/skel /home/jails/www
И накрая :
# mount -a
# /etc/rc.d/jail start
Ако всичко е наред би трябвало да имате три стартирани jail-a (можете да проверите това с jls(8)):
# jls
JID IP Address Hostname Path
3 192.168.3.17 ns.example.org /home/services/ns
2 192.168.3.18 mail.example.org /home/services/mail
1 192.168.3.19 www.example.org /home/services/www
Всичко изглежда наред , сега можете да се логнете да речем в jail с ID 3 (ns) с командата :
# jexec 3 csh
Това е всичко