Ventrilo语音通信服务器在Chrooted环境在Ubuntu Feisty AMD64

Ventrilo语音通信服务器在一个Chrooted环境中的Ubuntu Feisty AMD64

本教程将介绍如何在chroot环境中设置Ventrilo ,一种流行的语音通信服务器,并以非特权用户身份运行。 它的一部分改编自http://pelme.se/~andreas/code/ventrilo-chroot/

这样做的主要原因是安全。 Ventrilo仅以二进制格式分发,有些人不信任。 chrooted环境意味着程序只能访问其主目录,而不是整个系统。 像这样运行就意味着如果Ventrilo中存在漏洞或漏洞,那么系统的其余部分就不可能妥协。

该教程在Ubuntu Feisty AMD64上进行了测试,并配有免费版本的Ventrilo。 最后包括有关32bit系统需要修改的说明。

Ventrilo的网站下载最新版本的linux服务器。

安装32bit兼容包:

apt-get install ia32-libs linux32

制作chroot服务的目录:

mkdir /opt/chrooted

为ventrilo创建用户:

useradd -r /bin/false -m /opt/chrooted/ventrilo ventrilo

为ventrilo创造新的环境:

mkdir /opt/chrooted
tar zxvf ~/ventrilo_srv-2.3.1-Linux-i386.tar.gz /opt/chrooted/ventrilo
cd /opt/chrooted/ventrilo
mkdir dev
mkdir lib
mkdir lib32
mkdir lib64
mknod dev/null c 1 3
chmod 666 dev/null
chown -R ventrilo /opt/chrooted/ventrilo/*

将所需的库复制到Ventrilo的新环境中,因为它不能访问文件系统的其余部分:

cp /lib32/libdl.so.2 lib32
cp /lib32/libc.so.6 lib32
cp /lib/ld-linux.so.2 lib
cp /lib/libc.so.6 lib
cp /lib64/ld-linux-x86-64.so.2

将以下内容复制到start.c

/*
-------------------------------------------------------------
This version has been modified by Grant Emsley <grant @emsley.ca>
Modified on Sept 17, 2007
A program to start ventrilo in a chroot with dropped privileges
Copyright (C) 2005 Andreas Pelme  <andreas @pelme.se>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
--- Installation -------------------------------------------------------------
* Change the UID/GID to the UID/GID your ventrilo server is intended to run as.
* Compile this file with this command:
gcc -O2 -o start start.c
-----------------------------------------------------------------------------
*/
#include <stdio.h>
#include <unistd.h>
// CHANGE THIS TO WHATEVER UID/GID YOU WANT TO RUN VENTRILO AS
#define UID 10007
#define GID 10007
// CHANGE THIS TO WHATEVER UID/GID YOU WANT TO RUN VENTRILO AS
int main(int argc, char **argv)
{
int gid = GID;
if (setgroups(1, &gid) == -1)
{
fprintf(stderr, "%s: setgroups() failed!\n", argv[0]);
return 1;
}
if (setgid(GID) == -1)
{
fprintf(stderr, "%s: setgid() failed!\n", argv[0]);
return 1;
}
if (setuid(UID) == -1)
{
fprintf(stderr, "%s: setuid() failed!\n", argv[0]);
return 1;
}
execl("/ventrilo_srv", "ventrilo_srv", "-d -fventrilo_srv", 0);
}

编辑UID和GID行以匹配Ventrilo用户。 您可以通过运行以下方式找到该号码

cat /etc/passwd | grep ventrilo

编译启动程序:

gcc -O2 -o start start.c

如果该命令给出错误,如“error:stdio.h:没有这样的文件或目录”,请先运行:

apt-get install build-essential

我们现在需要的是启动脚本。 复制到/etc/init.d/ventrilo

#!/bin/sh
CHROOT="/opt/chrooted/ventrilo/"
function start {
echo -n "Starting Ventrilo server..."
PIDFILE="$CHROOT/ventrilo_srv.pid"
if [ ! -e $PIDFILE ]
then
chroot $CHROOT /start $1
echo "done."
else
echo "already running!"
exit
fi
}
stop() {
echo -n "Stopping Ventrilo server..."
PIDFILE="${config}/ventrilo_srv.pid"
if [ -e $PIDFILE ]
then
kill -9 `cat $PIDFILE` > /dev/null
rm -f $PIDFILE
echo "done."
else
echo "not running!"
exit
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
stop
sleep 1
start
;;
*)
echo "Usage: $0 start|stop|restart|reload|force-reload"
exit 1
;;
esac

使用您需要的任何设置编辑ventrilo_srv.ini 。 检查他们的网站上的文件。

将脚本设置为在服务器启动时运行:

update-rc.d ventrilo defaults

而已。 要启动服务器,请运行:

/etc/init.d/ventrilo start

32位Linux

如果您使用的是32位linux,则需要更改以下步骤:

  • 不要安装32位兼容包。
  • 不要使lib32或lib64目录。
  • 在安装结束之前不要复制任何库。
  • 而不是安装上面的库,运行:
ldd ventrilo_srv

在箭头右侧有任何东西的任何文件都必须复制到/ opt / chrooted / ventrilo / lib中的同一个目录中

对start命令执行相同的操作,然后再将文件复制到lib目录中:

ldd start
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏