| Jail [сообщение #55] | 
			Втр, 05 Июль 2005 00:54   | 
		 
		
			
				
				
				
					
						  
						rodion
						 Сообщений: 60 Зарегистрирован: Март 2005 
						
					 | 
					Member Administrator  | 
					 | 
		 
		 
	 | 
 
	| 
		 Привет всем!   
На сайте  http://itrm.ru появилась новая статья о настройке jail от exist (автора статьи о DNSSEC). Предлагаю обсуждить её на нашем форуме.  
 
Настройка Jail 
exist      
 
Каких только небылиц я не слышал про jail перед тем как его ставить. И о включении его поддержки в ядре, и о версиях free. Все, на самом деле, проще и по-другому. Проще только в том смысле, что запустить его достаточно просто в самом примитивном варианте. 
 
 
Итак, имеем свежую: 
uname -a 
5.4-RELEASE FreeBSD 
 
Во-первых, о плохом. Каждому jail нужен отдельный IP. Где-то читал, что есть возможность как-то обойти это условие. Рад буду практическому примеру. А пока.. достаем свободный IP и под рутом прописаваем алиасом: 
 
ifconfig fxp0 inet 1.1.1.1 netmask 255.255.255.255 alias  
Затем: 
sh  
(Зачем? Вся фишка в переменных окружения. Если не в лом, то добавьте их в bash, либо csh, тогда проблем не будет.) 
D=/home/jail1 
cd /usr/src 
mkdir -p $D 
make world DESTDIR=$D 
cd etc 
make distribution DESTDIR=$D  
 
Здесь нужно сделать примечание. Когда я собирал jail во freebsd 5.3 были ошибки. Это лечится: 
env DESTDIR=$D make world 
cd etc 
env DESTDIR=$D make distribution 
 
 
После долгого процеса сборки: 
mount_devfs devfs $D/dev 
сd $D 
ln -sf dev/null kernel 
mount -t procfs proc $D/proc 
mkdir stand 
cp /stand/sysinstall stand/ 
 
 
Запускаем, собственно, тюрягу: 
jail /home/jail1 jail1.hostname.ru 1.1.1.1 /bin/sh 
vi /etc/rc.conf 
 
Прописываем здесь все что нужно, например: 
cat /etc/rc.conf 
 
font8x14="cp866-8x14" 
font8x16="cp866b-8x16" 
font8x8="cp866-8x8" 
keymap="ru.koi8-r" 
scrnmap="koi8-r2cp866" 
 
defaultrouter="1.1.1.2" 
hostname="jail1.hostname.ru" 
ifconfig_fxp0="inet 1.1.1.1 netmask 255.255.255.255" 
 
sshd_enable="YES" 
 
enable_quotas="YES" 
check_quotas="YES" 
 
syslogd_flags="-ss" 
kern_securelevel_enable="YES" 
 
И далее: 
/bin/sh /etc/rc 
 
Loading configuration files. 
Setting hostname: renatka.itrm.ru. 
Generating nsswitch.conf. 
Generating host.conf. 
Starting syslogd. 
ELF ldconfig path: /lib /usr/lib /usr/lib/compat 
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout 
Starting local daemons:. 
Updating motd. 
/etc/rc: WARNING: Setting entropy source to blocking mode. 
========================================================= 
Type a full screenful of random junk to unblock 
it and remember to finish with . This will 
timeout in 300 seconds, but waiting for 
the timeout without typing junk may make the 
entropy source deliver predictable output. 
 
Just hit for fast+insecure startup. 
========================================================= 
kern.random.sys.seeded: 1 
  
Generating public/private rsa1 key pair. 
Your identification has been saved in /etc/ssh/ssh_host_key. 
Your public key has been saved in /etc/ssh/ssh_host_key.pub. 
The key fingerprint is: 
13:a0:43:91:7f:19:aa:1b:87:47:f3:7d:75:dc:47:78 root@*.ru 
Generating public/private dsa key pair. 
Your identification has been saved in /etc/ssh/ssh_host_dsa_key. 
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub. 
The key fingerprint is: 
d3:9f:80:22:11:74:1f:20:ff:d3:2b:b1:aa:81:e7:33 root@*.ru 
Generating public/private rsa key pair. 
Your identification has been saved in /etc/ssh/ssh_host_rsa_key. 
Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub. 
The key fingerprint is: 
10:8d:3f:8c:ea:d8:2c:d0:dd:77:26:b6:75:af:bc:a9 root@*.ru 
Starting sshd. 
Starting cron. 
Local package initialization:. 
 
Sun Jun 26 01:01:39 UTC 2005 
 
 
Все, jail готов к использованию. Дальше тюнинг и настройка сервисов. 
Удачи! 
PS 
I found two interesting tools for starting and stopping the jails: sysutils/jailer and sysutils/jailutils/. sysutils/jailer is installed in the jail environment. sysutils/jailutils should be installed in the host environment. 
Using those two tools, I created this start/stop script: 
 
#!/bin/sh 
 
case "$1" in 
start) 
jail /usr/jail/192.168.0.155 osw.example.org 192.168.0.155 /usr/local/sbin/jailer > /dev/null && echo -n ' jail 66.154.97.254' 
;; 
stop) 
/usr/local/sbin/jails | /usr/bin/xargs /usr/local/sbin/killjail > /dev/null && echo -n ' jail' 
;; 
*) 
echo "Usage: `basename $0` {start|stop}" >&2 
y;; 
esac 
 
exit 0  
 
 
Все вопросы и обсуждение статьи на форуме: http://forum.itrm.ru 
Вверх  Другие статьи  
 
Перепечатка материалов статьи, копирование и т.д. с разрешения автора exist@itrm.ru 
Ссылка на сайт www.itrm.ru обязательна! 
 
		
		
		[Обновления: Сбт, 04 Апрель 2009 16:57] от Модератора Известить модератора  
 |  
	| 
		
	 | 
 
 
 | 
	| 
		
 | 
	| 
		
 | 
	
		
		
			| Re: Jail [сообщение #164 является ответом на сообщение #55] | 
			Чтв, 10 Август 2006 18:42    | 
		 
		
			| 
				
	 | 
 
	
		статья написано грамотно! все работает...  
там упоминалось о выделяемого IP для него.. вот какбы сделать, чтоб  айпишник не выделать.. а  однин для 2-х 3-х .   
		
		
		
 |  
	| 
		
	 | 
 
 
 | 
	| 
		
 | 
	| 
		
 | 
	
		
		
			| Re: Jail [сообщение #176 является ответом на сообщение #55] | 
			Пнд, 21 Август 2006 12:11    | 
		 
		
			| 
				
	 | 
 
	
		Парни, нашел трабл...! 
 
env DESTDIR=$D make world 
cd etc # - bad! 
env DESTDIR=$D make distribution 
 
cd etc - тут явно лишнее! ибо мне все переписало всю диру /etc 
правда не тронуло rc.conf 
		
		
		
 |  
	| 
		
	 | 
 
 
 | 
	| 
		
 | 
	
		
		
			| Re: Jail [сообщение #856 является ответом на сообщение #55] | 
			Пнд, 06 Апрель 2009 23:53   | 
		 
		
			
				
				
				
					
						  
						rodion
						 Сообщений: 60 Зарегистрирован: Март 2005 
						
					 | 
					Member Administrator  | 
					 | 
		 
		 
	 | 
 
	
		Для того, чтобы не скачивать коллекцию портов в каждый VDS отдельно, можно просто использовать коллекцию портов с дефолтного хоста. Для этого можно использовать nullfs freebsd. 
mount_nullfs -- mount a loopback file system sub-tree; demonstrate the use of a null file system layer 
 
Монтируется это командой: 
mount_nullfs /usr/ports $D/usr/ports
		
		
		
 |  
	| 
		
	 | 
 
 
 |