免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 38820 | 回复: 91
打印 上一主题 下一主题

交流与分享——FreeBSD8的在企业中的部署应用 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2011-07-26 16:59 |只看该作者
FreeBSD8做为服务器安全方面可能会很好,但入门门坎比centos高一点。
关注freeBSD...

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2011-07-26 17:02 |只看该作者
本帖最后由 renxiao2003 于 2011-08-01 15:23 编辑

我们一直在使用centos,对于FreeBSD,我曾经尝试过,但没有安装成功(在VMWare下),对于Apache+PHP+Mysql的配置,在各中类Unix系统下的安装都基本一致,所以可以不用太在意和区分是FreeBSD还是Centos。
对于本次的讨论主题,个人觉得实在是强和FreeBSD扯上的关系。不过至于讨论中提到的3点我还是比较认同的。
特别是和日本人做过项目的朋友都知道,如果你的环境和日本人要求的环境有些许的差别,那么出现问题的时候他们都可能耐到你的环境上,所以统一的内网开发环境是十分重要的。
至于代码和文档的统一管理,形成制度,这点中国的企业真的要向日本企业学习一下。多于的话就不废话啊。大家都明白的。

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
3 [报告]
发表于 2011-07-26 17:20 |只看该作者
本帖最后由 yuhongchun 于 2011-07-26 17:22 编辑

Jail的优点
很多资料介绍的都比较多,我这里就不浪费篇幅。在我们实际的开发环境中,我们是用一台8核CPU、16G内存的DELL PowerEdge R710服务器充当宿主机,开了7台jail 机作内部开发服务器(主要用PHP+MySQL环境),效果还是比较让大家满意的。就是FreeBSD8自身一样,简单和稳定是其主要特点;特别是相对于 Vmware的ESXI而言,配置那个绝对是一个耗时的工作量了。

安装前的准备工作:
一、宿主机的性能尽量高些,内存是越大越好;
二、/usr目录越大越好,我分的/usr大约300-400G;
三、为了权限和安装的便利,我的操作均是以root进行;
四、虚拟机上jail的IP跟我的宿主IP分别为192.168.43.128和192.168.43.129,物理bridge直接连接,其它有兴趣的话大家可依此步骤继续添加;
五、建议大家工作的实验都以64bitFreeBSD8或FreeBSD8.1为实践。

Jail的安装:
①第一步就是为 jail 选择一个位置。
这个路径是在宿主系统中 jail 的物理位置。一种常用的选择是
/usr/jail/jailname,
此处jailname 是 jail 的主机名。对于“完整” 的 jail 而言, 它通常包含了 FreeBSD 默认安装的基本系统中每个文
件的副本。这里我创建了apache 目的是做一个apache 服务的jail
mkdir ‐p /usr/jail/apache
②编译源码
cd /usr/src
/usr/src可以选择用sysisntall --> configure --> src --> DVD/CD来安装,这样速度最快。
make buildworld
③新建world
make installworld DESTDIR=/usr/jail/apache
④安装配置文件
make distribution DESTDIR=/usr/jail/apache
distribution 这个 make target 将安装全部配置文件,或者换句话说,就是将
/usr/src/etc/复制到jail环境中的/etc
※安装jail的过程也是熟悉FreeBSD目录结构的过程。
⑤安装devfs
在 jail 中不是必须要挂接devfs(8) 文件系统。而另一方面, 几乎所有的应用程序都会需要访问至少一个设备,这主要取决于应用程序的性质和目的。控制 jail 中能够访问的设备非常重要,因为不正确的配置, 很可能允许攻击者在 jail 中进行一些恶意的操作。通过 devfs(8) 实施的控制,可以通过由联机手册devfs(8) 和
devfs.conf(5) 介绍的规则集配置来实现,但为了以后能方便的ssh到jail上,这里建议安装
我直接在宿主机的/etc/rc.conf里添加如下内容
jail_apache_devfs_enable="YES" # 在jail中挂接devfs
⑥配置宿主机的/etc/rc.conf,vim /etc/rc.conf,添加内容如下:
jail_enable="YES"
jail_list="apache"

jail_apache_rootdir="/usr/jail/apache"
jail_apache_hostname="www.cn7788.com"
jail_apache_ip="192.168.43.129"
jail_apache_exec="/bin/sh /etc/rc"
jail_apache_devfs_enable="YES"

/etc/rc.conf里原有内容如下:
ifconfig_le0="inet 192.168.43.128  netmask 255.255.255.0"
defaultrouter="192.168.43.2"
hostname="mail.ewiz.com"
ifconfig_le0_alias0="inet 192.168.43.129 netmask 255.255.255.0"
#此行的目的是为了替Apaceh的jail添加IP。

⑦使用sh /etc/rc来使jail生效,不需要重启,只需要 sh /etc/rc以后,也就是使他jail enable
就可以启用jail了,然后就可以使用jls看到jail的状态了;当然也可以用/etc/rc.d/jail脚本也可以用于手工启动或停止rc.conf中配置的
jail,如 /etc/rc.d/jail start apache。

jail的管理及其配置
管理jail选择工具jailexec,可先用jls找出运行apache的jid
例如jexec 1 passwd root可以改变jail的root密码
jexec 1 csh 可以使用root和/bin/csh进入jail系统

如何启动名为apache的jail的ssh
jexec 1 vi /etc/rc.conf
rpc_bind_enable="NO"
sshd_enable="YES"
hostname="www.ewiz.com"

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

ntpd_enable="YES"
ntpd_sync_on_start="YES"
named_enable="YES"
以上选项 sendmail 是为了关闭邮件干扰
Ntpd 是为了同步时间
Rpc 绑定 no 为了在rc.conf 里面去掉网卡地址的绑定
然后是重要操作 jexec 1 sh /etc/rc 重启虚拟机的服务,不然启动不了jail之apache的ssh的。
另外,在宿主机上建一个用于apache_jail的ssh用户
jexec 1 pw useradd admin && jexec 1 passwd admin
记得把yjwan 放入wheel 便于进去可以su root 账户
jexec 1 pw groupmod wheel -m admin

如何允许你的jail能够ping
没有配置前你会很郁闷的发现,无论你ping啥,就会出现ping: socket: Operation not permitted。
如果想永久保留配置,可以在宿主机上面修改/etc/sysctl.conf 文件
加上security.jail.allow_raw_sockets=1
重启jail虚拟机
/etc/rc.d/jail restart apache

jail的其它优化
应该从宿主机 将/etc/resolv.conf 文件 复制到jail系统中即可
cp /etc/resolv.conf /usr/jail/apache/etc/resolv.conf
将宿主机的make.conf也复制过去,这样ports安装速度很快
cp /etc/make.conf /usr/jail/apache/etc/make.conf
在宿主机上将/usr/ports挂接到jail上,此行可添加到/etc/rc.conf上。
mount_nullfs /usr/ports /usr/jail/cas/usr/ports

※这里值得一说的是,由于宿主机有二个IP:192.168.43.128和192.168.43.129,所以我们ssh jail的时候,很有可能还是在宿主机上;只有jail的ssh配置成功才可能ssh上去,ssh上去看,注意看下当前的hostname和 ifconfig,不然很容易上错船了哈~

评分

参与人数 1可用积分 +5 收起 理由
fender0107401 + 5 不错,不错,很不错。

查看全部评分

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
4 [报告]
发表于 2011-07-26 17:24 |只看该作者
本帖最后由 yuhongchun 于 2011-07-26 17:25 编辑

通过ezjail创建和管理jail
在公司的环境中,需要快速和大量的部署jail虚拟机,原先的make world的方式就显得非常力不从心。大家都知道,make world就算在双四核的机器上也是极慢的;通过查阅freebsd的官方文档,它向我们推荐管理及创建jail的工具--ezjail。

Jail(8)的手册概述了创建Jail的方法,然而,当你需要多个Jail时,完整的Jail目录树会迅速地占用很多宝贵的磁盘空间。 ezjail通过使用FreeBSD的nullfs特性来避免这个问题。基础系统的大部分(/bin、/boot、/sbin、/lib、 /libexec、/rescue、/usr/{bin、include、lib、libexec、ports、sbin、share、src})仅在宿 主机系统中存在一个副本,并通过nullfs以只读的方式挂载到所有的Jail里去。那些Jail就非常苗条了(每个约2mb),并且只包含一些指向 basejail挂载点的软链接,而没有像/etc、/usr/local这样的共享目录。

ezjail带来很多优势:

●节省磁盘空间、inode,甚至内存,因为系统只需要为所有Jail持有一个系统二进制的副本

●你可以通过更新一个基础目录来更新所有的Jail,它如此简单,你肯定能做到

●入侵者破坏Jail时无法安装标准的Rootkit(因为基础系统是只读挂载的)

●由于ezjail完全是用sh写成的,因此没有必要在宿主机系统中安装其它脚本语言

●因为基础系统是通过软链接系统的,被囚禁(enjailed)的用户可以选择不使用已挂载的world

一个常常被低估的事实:较少的复杂性意味着更多的安全。

我现在想通过ezjail为我的jail.cn7788.com,IP名为 192.168.1.103的机器(相当于母机)安装一台名为 apache.cn7788.com,IP为192.168.1.104及一台名为research.cn7788.com,IP为 192.168.1.105的jail机器。

具体步骤如下:(权限要求很大,这里为了方便,我暂时切换到root下操作)

(1)编辑网卡地址,为网卡创建二个子网地址

vim /etc/rc.conf,添加代码如下:

ifconfig_em0_alias0="inet 192.168.1.104 netmask 255.255.255.0"
ifconfig_em0_alias1="inet 192.168.1.105 netmask 255.255.255.0"

重启后,通过ifconfig 可以观察下网卡的IP

(2)编译内核

由于是最小化安装,所以没有/usr/src目录,我们可以通过sysinstll工具来安装此目录。

sudo sysinstall -> Configure -> Distributions -> src -> ALL -> Install from a FreeBSD CD/DVD

然后是编译内核

cd /usr/src
make buildworld

此过程比较漫长,建议在下班时间或空闲时间做,无论是四核或八核的机器,做二小时的预算。

(3)ports安装ezjail工具

cd /usr/ports/sysutils/ezjail
make install clean

(4)生成jail模板

ezjail-admin update -p -i

-p:提供给jail ports

-i:不再运行make world,因为第一步我们已经做了。

(5)生成名为apache.cn7788.com和reseach.cn7788.com的子jail机器

ezjail-admin create -r /usr/jails/apache apache.cn7788.com 192.168.1.104
ezjail-admin create -r /usr/jails/research research.cn7788.com 192.168.1.105

该命令可以分别在/usr/jails/apache和/usr/jails/research目录下建立名为了apache.cn7788.com和research.cn7788.com的jail机器。

(6)让192.168.1.103的机器开机即启动ezjail工具

操作如下:

在/etc/rc.conf最后添加代码如下:

ezjail_enable="YES"

(7)分别通过ezjail启动这二个jail机器

/usr/local/etc/rc.d/ezjail.sh start apache.cn7788.com
/usr/local/etc/rc.d/ezjail.sh start research.cn7788.com

这里补充说明下:ezjail由两个脚本组成:ezjail-admin和ezjail.sh,前者用于创建、更新和删除Jail,后者用于启动、停止和重启Jail。

(8)通过ezjail-admin list查看jail机器的情况

[andrewy@jail ~0m]$ ezjail-admin list
STA JID IP Hostname Root Directory
----------------------------------------------------------------------------
DR 2 192.168.1.105 research.cn7788.com /usr/jails/research
DR 1 192.168.1.104 apache.cn7788.com /usr/jails/apache

(9)启动jail机器的ssh

启动sshd的方法跟平常一样的,没有任何区别。

先通过jexec 1或2 sh登入该jail,然后echo ' sshd_enable="YES" ' >> /etc/rc.conf,然后通过ezjail.sh命令重新启动虚拟机

jail# /usr/local/etc/rc.d/ezjail.sh restart apache.cn7788.com
Stopping jails: apache.cn7788.com.
Configuring jails:.
Starting jails: apache.cn7788.com.
jail# /usr/local/etc/rc.d/ezjail.sh restart research.cn7788.com
Stopping jails: research.cn7788.com.
Configuring jails:.
Starting jails: research.cn7788.com.

(10)如果要添加新jail机器,重复以上步骤即可。

(11)jail机器的备份是非常容易的

对相应的目录进行备份即可;其实我建议只对重要资料进行备份,jail机器crash了的话,重建一个也是非常快速的事情。

(12)建议用ezjail的方式创建和管理

如果大家有大规划部署虚拟机的需求的话,建议用ezjail的方式创建和管理,它创建的速度非常之快,而且子jail极小,如果遇到崩溃的情况的话,它恢复起来也极快,现在我基本上在我每台jail机器上都部署了ezjail了。

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
5 [报告]
发表于 2011-07-26 17:34 |只看该作者
本帖最后由 yuhongchun 于 2011-07-26 19:51 编辑

FreeBSD8.1 x86_64下安装SVN服务
安装前的准备工作
系统是64位的FreeBSD 8.1,相关优化及配置我这里也不多费笔墨了(具体可以参考51CTO的FreeBSD配置与优化专题)。将ports配置好,由于SVN可以独立运行,也可以以Apache附加的形式运行;我这里为了权限控制的方便,采用的是apache方式,所以这里第一步是配置Apache,注意FreeBSd8.1第一次运行apache22还有点问题,这里下面再详细解释。

由于是内网环境,我这里直接以我的用户andrewy远程登陆,然后sudo su - 切换到root权限下操作;这个不是太推荐哈。
一、ports及vim优化是前提和基础,我这里不浪费时间解释。有兴趣的请搜索我以前的文章或googel,这里说下freebsd8.1下Apache22的安装
cd /usr/ports/www/apache22
make WITH_BERKELEYDB=db4 install clean
增加的选项就是为了subversion得用的一个库【有很多的默认配置信息,选择默认就可以了】
安装完毕后,echo 'apache22_enable="YES" ' > /etc/rc.conf
习惯了sed的流编辑,不想用vim打开编辑,偷懒操作,呵呵。
FreeBSD8.1下启动apache22有个小bug,如果想像FreeBSD8下安装apache22一样直接就可以启动是不可能的。
解决方法:
vim /usr/local/etc/apache22/httpd.conf  
用#号注释掉这一句
LoadModule unique_id_module libexec/apache22/mod_unique_id.so
记得修改ServerName 127.0.0.1:80,不然启动时apache22会提示
然后/usr/local/etc/rc.d/apache22 start没问题,可以用sockstat -4l验证

二、继续用ports安装SVN
安装subversion
#cd /usr/ports/devel/subversion/
#make WITH_MOD_DAV_SVN=yes install clean
我这里由于是以Apache22的方式启动SVN,所以apache的配置文件后需要增加如下代码
#vim /usr/local/etc/apache22/httpd.conf
<Location /svn>
    DAV svn
    SVNParentPath /data/svn
    AuthzSVNAccessFile /data/svn/svn-acl-conf
    AuthType Basic
    AuthName "Ewizweb SVN Server"
    AuthUserFile /data/svn/svn-auth-file
    Require valid-user
</Location>

mkdir -p /data/svn
chmod -R 755 /data/svn

三、配置SVN的用户acl及用户权限文件。
下面是控制用户的acl文件
vim /data/svn/svn-acl-conf
[groups]
bolan_dev = web,andrwy,cc
test=test

[produce:/]
@bolan_dev= rw
@test=r

[rest:/]
@bolan_dev = rw
@test=r

此文件可以控制你的内网不同的开发小组,只允许他们访问各自的project;有些特殊用户(比如Dirctor,可以让他看代码)上面的文件很简单,相信大家一看就明白了。

下面则是SVN的用户验证文件,它是用Apache的htpasswd加密,这个过程大家玩Apache就应该很熟悉了。
Apache和SVN安装完后记得rehash,不然很多命令都看不到。
#htpasswd -c /etc/svn-auth-file andrewy,第一次添加用户时需要C参数,以后就不需要了。
添加用户
#htpaawd /etc/svn-auth-file test

正常启动SVN后就可以在windows下用TortoiseSVN正常连接SVN服务器,checkout及commit了,安装完TortoiseSVN后它会自动跟你的IE集成,你在你的工作目录新建一个目录—例如My_project,然后点右键“SVN checkout”,输入正确的http地址即可,如下图:

总体感觉就是在FreeBSD下配置项目管理软件确实比Linux下方便多了,希望上面的文章对大家工作有所帮助,谢谢

论坛徽章:
0
6 [报告]
发表于 2011-07-26 21:07 |只看该作者
Jail的优点
很多资料介绍的都比较多,我这里就不浪费篇幅。在我们实际的开发环境中,我们是用一台8核CPU、 ...
yuhongchun 发表于 2011-07-26 17:20



    Jail  这个使用有很大的针对性

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
7 [报告]
发表于 2011-07-27 10:42 |只看该作者
Jail  这个使用有很大的针对性
kns1024wh 发表于 2011-07-26 21:07



恩,看大家如何用;这个对FreeBSD的熟练程度和环境还是有要求的!

论坛徽章:
0
8 [报告]
发表于 2011-07-27 12:12 |只看该作者
表示关注freeBSD...

论坛徽章:
0
9 [报告]
发表于 2011-07-27 14:49 |只看该作者
jail是操作系统层面的虚拟产品

论坛徽章:
0
10 [报告]
发表于 2011-07-27 14:50 |只看该作者
jail是操作系统层面的虚拟产品
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP