Может пригодится кому, практически полная установка jail'a
Я пишу скрипты в папке /root/sсripts/* так что у меня и настройки в скрипте ссылаются туда же.
Скрипт поместить в папку /root/scripts/jail/
конфиги в /root/scripts/jail/conf
Для создания и удаления нужно исправить в скрипте путь к создаваему/удаляемому jail'у и запустить с параметрами create или remove.
myjail.sh
Код: Выделить всё
#!/bin/sh
jail_dir="/usr/local/jails/newmail"
case "$1" in
create)
cd /usr/src
mkdir -p $jail_dir
make world DESTDIR=$jail_dir
cd etc
make distribution DESTDIR=$jail_dir
mount_devfs devfs $D/dev
cd $jail_dir/boot/kernel
ln -sf $jail_dir/dev/null kernel
;;
remove)
# Проверяем, существует ли директория?
if !(test -d $jail_dir)
then
echo
echo "Директории $jail_dir не существует."
echo
echo "Для удаления Jail'a нужно:"
echo "1. Изменить в файле `basename $0` директорию создания/удаления jail_dir."
echo
exit 64
fi
/bin/chflags -R noschg $jail_dir
rm -rf $jail_dir
exit 64
;;
*)
echo
echo "Для создания Jail'a нужно:"
echo "1. Изменить в файле `basename $0` директорию назначения jail_dir."
echo "2. Использовать { create | remove } для создания/удаления."
echo
exit 64
;;
esac
echo
############################################################
# Выполняем необходимые настройки jail'a, которые хранятся в файлах
. /root/scripts/jail/conf/trifles
. /root/scripts/jail/conf/sysctl.conf
. /root/scripts/jail/conf/rc.conf
. /root/scripts/jail/conf/periodic.conf
. /root/scripts/jail/conf/rm_create_files
. /root/scripts/jail/conf/syslog.conf
. /root/scripts/jail/conf/auth.conf
. /root/scripts/jail/conf/crontab.conf
############################################################
echo
# Выход
echo "#######################################################"
echo "# Выполните jail $jail_dir имя_хоста ip-адрес /bin/sh #"
echo "#######################################################"
echo
И сами конфиги:
auth.confКод: Выделить всё
echo "Создаём auth.conf"
# Создаём auth.conf
cat > $jail_dir/etc/auth.conf << "EOF"
crypt_default = blf
EOF
crontab.confКод: Выделить всё
echo "Создаём crontab"
# Создаём crontab
cat > $jail_dir/etc/crontab << "EOF"
# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#minute hour mday month wday who command
#
#*/5 * * * * root /usr/libexec/atrun
#
# Save some entropy so that /dev/random can re-seed on boot.
*/11 * * * * operator /usr/libexec/save-entropy
#
# Rotate log files every hour, if necessary.
0 * * * * root newsyslog
#
# Perform daily/weekly/monthly maintenance.
1 3 * * * root periodic daily
15 4 * * 6 root periodic weekly
30 5 1 * * root periodic monthly
#
# Adjust the time zone if the CMOS clock keeps local time, as opposed to
# UTC time. See adjkerntz(8) for details.
#1,31 0-5 * * * root adjkerntz -a
EOF
periodic.confКод: Выделить всё
echo "Создаём periodic.conf"
# Создаём periodic.conf
cat > $jail_dir/etc/periodic.conf << "EOF"
daily_status_disks_enable="NO"
daily_status_network_enable="NO"
daily_status_security_noamd="NO"
daily_status_security_chkmounts_enable="NO"
daily_status_security_ipfdenied_enable="NO"
daily_status_security_ipfwdenied_enable="NO"
daily_status_security_ipfwlimit_enable="NO"
daily_status_security_ip6fwdenied_enable="NO"
daily_status_security_ip6fwlimit_enable="NO"
EOF
rc.confКод: Выделить всё
echo "Создаём rc.conf"
# Создаём rc.conf
cat > $jail_dir/etc/rc.conf << "EOF"
network_interfaces=""
syslogd_flags="-ss"
rpcbind_enable="NO"
inetd_enable="NO"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_msp_queue_enable="NO"
update_motd="NO"
# SSH
#sshd_enable="YES"
# Apache
#apache_enable="YES"
# mysql
#mysql_enable="YES"
EOF
rm_create_filesКод: Выделить всё
echo "Создаём/Удаляем файлы с логами"
# Создаём/Удаляем файлы с логами
touch $jail_dir/var/log/sshd.log
rm -f $jail_dir/var/log/lpd-errs $jail_dir/var/log/ppp.log $jail_dir/var/log/xferlog $jail_dir/var/log/slip.log
sysctl.confКод: Выделить всё
echo "Создаём sysctl"
# Создаём sysctl
cat > $jail_dir/etc/sysctl.conf << "EOF"
security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
EOF
syslog.confКод: Выделить всё
echo "Создаём syslog.conf"
# Создаём syslog.conf
cat > $jail_dir/etc/syslog.conf << "EOF"
*.err;kern.warning;auth.notice;mail.crit /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.* /var/log/security
auth.info;authpriv.info /var/log/auth.log
mail.info /var/log/maillog
cron.* /var/log/cron
*.=debug /var/log/debug.log
*.emerg *
!sshd
*.* /var/log/sshd.log
EOF
triflesКод: Выделить всё
echo "Создаём resolv.conf,fstab и localtime"
# Создаём resolv.conf,fstab и localtime
touch $jail_dir/etc/fstab
echo "nameserver ИП_DNS_СЕРВЕРА" > $jail_dir/etc/resolv.conf
cp /usr/share/zoneinfo/Europe/Moscow $jail_dir/etc/localtime