网络推荐



本广告位招租!

推荐给好友 上一篇 | 下一篇

使用Jail和ipfilter结合构建高安全服务器

F Q/o E Df4^三轮车夫(★可乐∮,EasyPP,Easy2go) < powerbsd@cnfug.org >BSD爱好者乐园m)GzB0Y6`
BSD爱好者乐园6]D/X$v k3cM b ju S
版权声明:
BSD爱好者乐园`bit@ v `5i1@ U
本文档版权归三轮车夫(★可乐∮,EasyPP,Easy2go)所有!如需转载,请保留该声明,谢谢!BSD爱好者乐园OS+Au;_~N?1b b

(X u-v"V uz1z*C'Y前言:
,A.G6|9edxD'DN这篇文章着重点在jail一个独立的系统!构建的网络大体的拓扑结构如下:BSD爱好者乐园)CO q3U.B
BSD爱好者乐园 i)s7N'v.R'I3AH

q,S0ssNEn具体实现方法:通过Jail做一个独立的系统,在该系统上面提供一些网络服务,然后在该FreeBSD系统上通过ipfilter构建一个防火墙,同时通过ipnat对jail的系统做相应的端口映射!
+T.QAt`Rz }_4}S
a g3o6V6k| gW系统配置参数:
$Ccib4\E@OS:FreeBSD 4.8 StableBSD爱好者乐园7J{M~W
IP: fxp0 10.0.1.1 192.168.1.201
V {.sQ \)Z2x m}Dns:10.0.0.251
IfFb[Defaultrouter:10.0.1.1BSD爱好者乐园(X7l-\+j.n1}*_(c
ifconfig显示的信息:BSD爱好者乐园NS~|:b

?.H/Ttt2`g}
fxp0: flags=8843mtu 1500
3k/CpRV,i U%]X`inet 10.0.1.1 netmask 0xff000000 broadcast 10.255.255.255
lm Q8G}Sinet 192.168.1.201 netmask 0xffffff00 broadcast 192.168.1.255
:Q%Z [[RSM8e6p@ether 00:00:e2:2d:8b:a5
C,l^9LY-A(oFmedia: Ethernet autoselect (100baseTX)BSD爱好者乐园^T!rtSR C
status: active
k_3_*a`lo0: flags=8049mtu 16384BSD爱好者乐园.}ZJ_)T7PNJ U#p
inet 127.0.0.1 netmask 0xff000000
u5}$g#p|b Xxa

^|'r])B实现步骤:
'_V g2aA G0nX7Q9s
/x%H:faVc ^一:建立jail环境:(安装系统的全部源代码)BSD爱好者乐园'@0?:F Mn

T(nm1n'o&e|&B
mkdir -p /jail/Jail-A/
{ KjN[jG

.c`tS@#jX:n建立一个shell脚本jail.sh,内容如下:
"T r6`!jSX*Z8Et,CBSD爱好者乐园%n,O9a`?

D=/jail/Jail-ABSD爱好者乐园g#L gTm#F,hk-w)J p6mK
cd /usr/srcBSD爱好者乐园%p%btoE^F6K1n f*b
mkdir -p $DBSD爱好者乐园$v+z^V l2\ |(X+M
make world DESTDIR=$D
O6\`Y/U{;Ncd etcBSD爱好者乐园j$O M&p s
make distribution DESTDIR=$D -DNO_MAKEDEV_RUN
iA#]jGL R8SN Gcd $D/devBSD爱好者乐园9yju)L(b3?`3@
sh MAKEDEV jail
X0] g&Z l'p!M,TV Gtcd $D
)y HarDB9h._ln -sf dev/null kernelBSD爱好者乐园_X6v6V!t o

o/K'R'^+biV,n编辑/etc/make.conf将一些不需要的东西去掉!(可以根据你具体情况进行设定)
#}-O7V,M&J*LBSD爱好者乐园hn ~#jB:}\V

CPUTYPE=i686BSD爱好者乐园UE9H9L oN H"E4c
COPTFLAGS= -O -pipe
zg$U8S5E$KINSTALL=install -C
(S!H5p0@%k~-C ZNO_CVS= true # do not build CVS
8f P m/~Q%d;RNO_BIND= true # do not build BINDBSD爱好者乐园D2x1W&Z)r5?
NO_FORTRAN= true # do not build g77 and related libraries
;m2O8`r }%A9^#FNO_I4B= true # do not build isdn4bsd package
/HV6FG"Jc5_kNO_LPR= true # do not build lpr and related programsBSD爱好者乐园? X| {&p ]v
NO_MAILWRAPPER=true # do not build the mailwrapper(8) MTA selectorBSD爱好者乐园Oz+c8`ESqN
NO_SENDMAIL= true # do not build sendmail and related programs
#~'B$K d3W&r7zNO_SHAREDOCS= true # do not build the 4.4BSD legacy docs
3{t y:XR,Wp0TNO_X= true # do not compile in XWindows support (e.g. doscmd)
+_{9_kgA:qH4l,[NOGAMES= true # do not build games (games/ subdir)
#N,g&KLo|e$SNOINFO= true # do not make or install info files
,W,P!l.@P8w-|]NOLIBC_R= true # do not build libc_r (re-entrant version of libc)
Q6{}b~$rp7_NOMAN= true # do not build manual pagesBSD爱好者乐园K^#{$z)A(I.F
NOUUCP= true # do not build uucp related programsBSD爱好者乐园GIx,?#]s%V.t
BSD爱好者乐园!}d5o U5}#g

执行jail.sh,开始建立jail的基本环境
k D;lK5ABSD爱好者乐园:a1M{8E g,~HT{? z

#sh jail.sh
e r[mF8^q
BSD爱好者乐园EojmX:C F6{O

执行完毕以后进行如下操作:BSD爱好者乐园#]kM|+B k

g/o-xW"f
#ifconfig fxp0 alias 192.168.1.201 netmask 255.255.255.0
2Nq#j;`b Y s yR
BSD爱好者乐园6N.s ZIMX

或者在/etc/rc.conf中加入:BSD爱好者乐园 L%{xb8@6M:\J3o

:`6bf.ZF"] P2gL'Y8r
ifconfig_fxp0_alias0="inet 192.168.1.201 netmask 255.255.255.0"
SX0Q[%r'u;[#mkdir -p /jail/Jail-A/stand
G ^eb_r#cp /stand/sysinstall /jail/Jail-A/stand/BSD爱好者乐园u;U.mi2fU&O\@p0a
#touch /jail/Jail-A/etc/fstab
E#~(U4j m [G#vi /jail/Jail-A/etc/rc.conf 加入如下内容:
.G?4FSQ0Ssendmail_enable=”NONE”
.GMwOi6pJ/y0P9T}sshd_enable=”YES” //这个一定需要!可以远程进行管理
+A L"B\"gq^iinetd_enable=”YES” //如果打开一定要添加下面一行
+D[{$[/G,Pinetd_flags=”-wW -a 192.168.1.201” //这个修改成你jail的系统的地址!
zq4DG2mlv6^syslogd_enable=”YES”BSD爱好者乐园 x&X3R9EH!U
syslogd_flags=”-ss”BSD爱好者乐园"Z Fjc%x/?6N m
BSD爱好者乐园;P au*T @`N+w

开始配置jail的系统:BSD爱好者乐园^1J'Xf+F*z-Q#q

Lr5JhS@:dt
#jail /jail/Jail-A/ powerbsd.org 192.168.1.201 /bin/csh
I6\ y^+u6nYq
BSD爱好者乐园%i+@FhH*]x prv:y

如果没有任何错误,执行:
}q8P{4X7t5B._hBSD爱好者乐园r4w-e;w(G{ y

#passwd root 修改root密码
?9E1{K\+CB.F#/stand/sysinstall ->Configure->BSD爱好者乐园|,h jp+E(r2r

C:j/v;N:k选择: Time Zone 设置时区BSD爱好者乐园g3^/aTZ H} j%p
选择: Networking 配置网络的一些信息BSD爱好者乐园q7{q;g lq
选择User Management 建立一个wheel组的帐号BSD爱好者乐园@4Or:e3zF
选择: Startup 配置需要的一些服务
4YIi9w8\1H退出,编辑/jail/Jail-A/etc/rc.conf去掉一些无用的信息!
!zB)[J u'g1~-t,{可以参照如上的一些信息!
3F Tl{.@V测试启动jail的系统:BSD爱好者乐园 a EAgR
BSD爱好者乐园QKRG;]^c

#jail /jail/Jail-A/ powerbsd.org 192.168.1.201 /bin/sh /etc/rcBSD爱好者乐园 Y1hv`[
BSD爱好者乐园1Sj M w:s0["Y I

如下是我机器上面启动jail的信息!BSD爱好者乐园i/q:`ty h%x @

{o'aGLEo*h
#jail /jail/Jail-A/ powerbsd.org 192.168.1.201 /bin/sh /etc/rcBSD爱好者乐园 UOp+S"A2U
Skipping disk checks ...
oL9Pgs,~)Zadjkerntz[662]: sysctl(set_disrtcset): Operation not permitted
RgtZ\'U/zDoing initial network setup:.
.})p*Q&Z-b(x[ Uifconfig: ioctl (SIOCDIFADDR): permission denied
7wWFpYd C `alo0: flags=8049mtu 16384
1l:N{ P:s2S8UAdditional routing options: TCP keepalive=YESsysctl: net.inet.tcp.always_keepalive: Operation not permittedBSD爱好者乐园"]2|N,J)B'^h3f
.Routing daemons:.BSD爱好者乐园0R-D3w(\1E"we5bbN
Additional daemons: syslogd.BSD爱好者乐园&Oc:VAIO+r5vF
Doing additional network setup:.BSD爱好者乐园]:x'{Q ~#b A
Starting final network daemons:.BSD爱好者乐园4W-D5o:B!v7z
ELF ldconfig path: /usr/lib /usr/lib/compatBSD爱好者乐园1W-Z f?{m&tG
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout
A?}7i*z1DLStarting standard daemons: inetd cron sshd.
2ZoyS*c`"l*qRInitial rc.i386 initialization:.
#|*c` Ck:K3|-t RAdditional ABI support:.
1M3X3Wxg iTLocal package initialization:.
e5es A TG~Additional TCP options:.
o |qy/t4TK&F"j6^2003年 7月14日 星期一 16时26分43秒 ICTBSD爱好者乐园^j(Vz4h
BSD爱好者乐园t@ ` l ks@3V:|"J

现在你可以通过ssh登陆到jail的系统了!为了测试方便,我通过inetd.conf提供了ftp和telnet的服务!
A;B R q*xyapU*m下面是我通过ssh登陆到jail系统上面的一些信息:
FBA.r,j#`(JD$S4i

'z*jF-DYlyR
powerbsd# idBSD爱好者乐园6gQ"E"o:Mr)AY
uid=0(root) gid=0(wheel) groups=0(wheel), 2(kmem), 3(sys), 4(tty), 5(operator), 20(staff), 31(guest)BSD爱好者乐园H9jJ/@'\)fSR
powerbsd# uname -a
t ]\J7bO:mFreeBSD powerbsd.org 4.8-STABLE FreeBSD 4.8-STABLE #1: Mon Jul 14 14:27:53 CST 2003 root@powerbsd.org:/usr/src/sys/compile/PowerBSD i386
I4CU0T3LyXX;Hpowerbsd# ifconfig
UYB Hj&Dfxp0: flags=8843mtu 1500
7C-h[7B(V P$\KUinet 192.168.1.201 netmask 0xffffff00 broadcast 192.168.1.255BSD爱好者乐园Y'M$t7pL B&d
ether 00:00:e2:2d:8b:a5
1ySTe#uyp.`Iamedia: Ethernet autoselect (100baseTX)BSD爱好者乐园"?d;L}Z8\
status: active
4_/Vv*}1H h!XRlo0: flags=8049mtu 16384BSD爱好者乐园/V H1H XH8e v]L
powerbsd# ps auxww
-st*@LqUSER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMANDBSD爱好者乐园 JI U@R/nIHb
root 748 0.0 0.1 400 252 p1 R+J 4:30PM 0:00.00 ps auxwwBSD爱好者乐园*d4}4~0NSr R3H1w
root 709 0.0 0.3 1092 788 ?? IsJ 4:26PM 0:00.00 /usr/sbin/inetd -wW -a 192.168.1.201
(ND%P \x `Zroot 711 0.0 0.3 1032 764 ?? SsJ 4:26PM 0:00.00 /usr/sbin/cron
n`M7B4q&n#r&Froot 713 0.0 0.8 2632 2080 ?? IsJ 4:26PM 0:00.12 /usr/sbin/sshdBSD爱好者乐园$I'Kn6o,ZQC t
root 727 0.0 0.9 5332 2296 ?? IJ 4:27PM 0:00.03 sshd: PowerBSD [priv] (sshd)
!A1K)BO,fWDKxPowerBSD 729 0.0 0.9 5332 2352 ?? SJ 4:27PM 0:00.03 sshd: PowerBSD@ttyp1 (sshd)BSD爱好者乐园&MY+a*Q:e!i?"^y
PowerBSD 730 0.0 0.4 1364 972 p1 IsJ 4:27PM 0:00.01 -csh (csh)
E x(Y[N l `-k#P6^2Sroot 732 0.0 0.4 1368 972 p1 SJ 4:27PM 0:00.02 -su (csh)BSD爱好者乐园 k)SN{n9b!_D2D
root 702 0.0 0.3 992 664 ?? SsJ 4:26PM 0:00.00 /usr/sbin/syslogd -ssBSD爱好者乐园ilU/X)U_s&w%e
powerbsd#BSD爱好者乐园+_eG2\jMa}w1Q
BSD爱好者乐园7x` gr _n!S W4R

到现在为止,jail的基本系统已经配置完毕!
.~:C~vJP%G4@现在开始配置ipfilter,来实现端口的映射!BSD爱好者乐园3sG3J(LP8L
BSD爱好者乐园I#d7H"k]2ZAp9iW
二.配置FreeBSD的ipfiter和ipnat
Y,M2k\ _2I hlk

*\$vNxl5yJS
#cd /sys/i386/confBSD爱好者乐园!nJIl7]Olw
#cp GENERIC PowerBSD
vjE\V4yi6KY
BSD爱好者乐园&E a'@tE

在PowerBSD这个核心配置文件中加入:
Mi/o:~HkBSD爱好者乐园1I{@y_1{IA

options IPFILTER #ipfilter support
*}j_c;W-h$^options IPFILTER_LOG #ipfilter loggingBSD爱好者乐园&q'jBs#n$HG
#config PowerBSDBSD爱好者乐园9isyVo^,a @
#cd ../../compile/PowerBSD/
5U4Z3^rK`Y}u?a#make depend;make;make install
ekK)Yca+E
BSD爱好者乐园;]-HT p*P2h2Q d

vi /etc/rc.conf 在改文件中添加如下参数:BSD爱好者乐园%Q(s7x,i4v'y~s

8I w#G7Qj|T!a:e
ipfilter_enable="YES" //ipfilterBSD爱好者乐园x)LH@.mV0I[+S3{+kM
ipfilter_program="/sbin/ipf"
khF| ](e*dipfilter_rules="/etc/ipf.rules"
hG*d n(v&OhZb^2Xipnat_enable="YES" //ipnatBSD爱好者乐园O.T+oZLYN2c
ipnat_program="/sbin/ipnat -CF"BSD爱好者乐园?gx*?n(T3Jf
ipnat_rules="/etc/ipnat.rules"
d,Qzam3H,m#Wipmon_enable="YES" //ipfilter logBSD爱好者乐园Il5N @imjB&r u
ipmon_program="/sbin/ipmon"
cU.Kj7Vipmon_flags="-Ds"BSD爱好者乐园2cb*p'F0]6{
BSD爱好者乐园+H+L*TO+_qu

建立ipfilter需要的文件:BSD爱好者乐园8D$m'a)B2mZh@

'q(RnX2Cz!BY
touch /etc/ipf.rules
XR6ti.x//因本篇文章重点不在ipfiter防火墙的建立,具体的信息可以参照/usr/share/example/ipfilter/中的文档BSD爱好者乐园+g{,K V;d!r
touch /etc/ipnat.rules
6ex,b~/vd'Atouch /var/log/ipflogBSD爱好者乐园#H0kir+{)X,NK2F
vi /etc/ipf.rules(如下规则是我测试的规则,不是很完善!具体请参照ipfilter的文档)BSD爱好者乐园)u#S!s7M&B/iMK6F
pass out on fxp0 all
8B M M/B,qJEpass in on fxp0 all
U)L'CaF'm5F+r,ypass out quick on lo0 allBSD爱好者乐园h8FF#G2Zd^k/j'q
pass in quick on lo0 all
_ZU4NX7a/v5}block in proto icmp from any to 10.0.1.1
F@WWHw8_pass in quick on fxp0 proto tcp from any to any port = 22 flags S/SA keep state
2zv B1lor]pass in quick on fxp0 proto tcp from any to any port = 80 flags S/SA keep state
&J8o |2R(?:|pass in quick on fxp0 proto tcp from any to any port = 23 flags S/SA keep stateBSD爱好者乐园A ]w _ A
pass in quick on fxp0 proto tcp from any to any port = ftp flags S/SA keep stateBSD爱好者乐园 hd8Wvs4M/_q
pass in quick on fxp0 proto tcp from any to any port = ftp-data flags S/SA keep state
e.on` K sxpass out quick on fxp0 proto udp from any to any port = 53BSD爱好者乐园*l~A7hO&oa S
block in log quick on fxp0 proto tcp form any to any port = 3306BSD爱好者乐园'`(W0X9ez(l}5~
block in quick all
Xxy!Ee?vi /etc/ipnat.rules 添加nat的规则BSD爱好者乐园m+h{EZ(~
rdr fxp0 10.0.1.1/32 port 21 -> 192.168.1.201 port 21BSD爱好者乐园N/G)V.@ \^ L)F
rdr fxp0 10.0.1.1/32 port 23 -> 192.168.1.201 port 23
!Zr;L [$rprdr fxp0 10.0.1.1/32 port 80 -> 192.168.1.201 port 80BSD爱好者乐园F lP s6nb4@
vi /etc/rc.local 在该文件中添加启动jail的代码
*o6ZT$Q#X6_fQ(A8Pjail /jail/Jail-A/ powerbsd.org 192.168.1.201 /bin/sh /etc/rcBSD爱好者乐园f)oK+H y

$O,ciR9YVM)J注意不要忘记在/etc/rc.conf中添加:BSD爱好者乐园-dQUD`*` @s(T

QyD j] k }
ifconfig_fxp0_alias0="inet 192.168.1.201 netmask 255.255.255.0"BSD爱好者乐园G8e p/W` oe/t
BSD爱好者乐园E\;o0h L$l8q

BSD爱好者乐园2?p&I1Z-Vz'TD5Y,X/m
三.最后重新启动你的系统,进行测试:
/T^xG'}N(dBSD爱好者乐园Qqb*mA&p

telnet 10.0.1.1BSD爱好者乐园y%aU7ia-~U
ftp -A 10.0.1.1
]!a?js)Sq:[

egO o+~7F{J:xY^如果成功,一切OK!
'E2~ ~&D\t|tBSD爱好者乐园%M }6dS+D;\B-CW
总结:
2I |t4g5`D:ma以上通过ipfilter的nat功能,结合jail强大的功能,可以构建非常安全服务器系统!但是具体服务在jail下面执行的效率怎么样?我没有具体进行测试!希望测试过的朋友多多指点!如上只是记录我的一个测试过程!在整理的过程中难免会有一些错误!请发现的朋友告诉我,我进行修改!谢谢!BSD爱好者乐园+c_P2k6N%}4r;c
如果你们在按照该文档配置过程中遇到什么问题,可以发邮件给我,邮件地址在这篇文档的刚开始已经说明!

$S Fgf q V+E
[版权声明]BSD爱好者乐园站内文章,如来源不是互联网,则均系原创或翻译之作,可随意转载,或以此为基础进行演译,但务必以链接形式注明原始出处和作者信息,否则属于侵权行为。另对本站转载他处文章,俱有说明,如有侵权请联系本人,本人将会在第一时间删除侵权文章。
TAG: jail ipfilter
 

评分:0

我来说两句

seccode