分享
 
 
 

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

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

[code:1:88ab746125]

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

作者信息:

三轮车夫(★可乐∮,EasyPP,Easy2go)

MSN:easy2go@msn.com QQ:223480 Mail:postmaster@easy2go.org

版权声明:

本文档版权归三轮车夫(★可乐∮,EasyPP,Easy2go)所有!如需转载,请保留该声明,谢谢!

前言:

以前写过一份《使用jail构建安全的Vsftpd》的文章(见www.cnfug.org)!对jail的使用有了一个初步的了解!这篇文章应该是上一篇文章的姐妹篇吧!闲话少说!步入正题!

上一篇文章只是通过jail来chroot一个服务(vsftpd)以实现服务的安全管理!这篇文章着重点在jail一个独立的系统!构建的网络大体的拓扑结构如下!

具体实现方法:通过Jail做一个独立的系统,在该系统上面提供一些网络服务,然后在该FreeBSD系统上通过ipfilter构建一个防火墙,同时通过ipnat对jail的系统做相应的端口映射!

系统配置参数:

OS:FreeBSD 4.8 Stable

IP: fxp0 10.0.1.1 192.168.1.201

Dns:10.0.0.251

Defaultrouter:10.0.1.1

ifconfig显示的信息:

/**

fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

inet 10.0.1.1 netmask 0xff000000 broadcast 10.255.255.255

inet 192.168.1.201 netmask 0xffffff00 broadcast 192.168.1.255

ether 00:00:e2:2d:8b:a5

media: Ethernet autoselect (100baseTX <full-duplex>)

status: active

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384

inet 127.0.0.1 netmask 0xff000000

**/

实现步骤:

一:建立jail环境:(安装系统的全部源代码)

mkdir –p /jail/Jail-A/

建立一个shell脚本jail.sh,内容如下:

D=/jail/Jail-A

cd /usr/src

mkdir -p $D

make world DESTDIR=$D

cd etc

make distribution DESTDIR=$D -DNO_MAKEDEV_RUN

cd $D/dev

sh MAKEDEV jail

cd $D

ln -sf dev/null kernel

编辑/etc/make.conf将一些不需要的东西去掉!(可以根据你具体情况进行设定)

CPUTYPE=i686

COPTFLAGS= -O –pipe

INSTALL=install –C

NO_CVS= true # do not build CVS

NO_BIND= true # do not build BIND

NO_FORTRAN= true # do not build g77 and related libraries

NO_I4B= true # do not build isdn4bsd package

NO_LPR= true # do not build lpr and related programs

NO_MAILWRAPPER=true # do not build the mailwrapper(8) MTA selector

NO_SENDMAIL= true # do not build sendmail and related programs

NO_SHAREDOCS= true # do not build the 4.4BSD legacy docs

NO_X= true # do not compile in XWindows support (e.g. doscmd)

NOGAMES= true # do not build games (games/ subdir)

NOINFO= true # do not make or install info files

NOLIBC_R= true # do not build libc_r (re-entrant version of libc)

NOMAN= true # do not build manual pages

NOUUCP= true # do not build uucp related programs

执行jail.sh,开始建立jail的基本环境

#sh jail.sh

执行完毕以后进行如下操作:

#ifconfig fxp0 alias 192.168.1.201 netmask 255.255.255.0

或者在/etc/rc.conf中加入:

ifconfig_fxp0_alias0="inet 192.168.1.201 netmask 255.255.255.0"

#mkdir –p /jail/Jail-A/stand

#cp /stand/sysinstall /jail/Jail-A/stand/

#touch /jail/Jail-A/etc/fstab

#vi /jail/Jail-A/etc/rc.conf 加入如下内容:

sendmail_enable=”NONE”

sshd_enable=”YES” //这个一定需要!可以远程进行管理

inetd_enable=”YES” //如果打开一定要添加下面一行

inetd_flags=”-wW –a 192.168.1.201” //这个修改成你jail的系统的地址!

syslogd_enable=”YES”

syslogd_flags=”-ss”

开始配置jail的系统:

#jail /jail/Jail-A/ powerbsd.org 192.168.1.201 /bin/csh

如果没有任何错误,执行:

#passwd root 修改root密码

#/stand/sysinstall ->Configure->

选择: Time Zone 设置时区

选择: Networking 配置网络的一些信息

选择User Management 建立一个wheel组的帐号

选择: Startup 配置需要的一些服务

退出,编辑/jail/Jail-A/etc/rc.conf去掉一些无用的信息!

可以参照如上的一些信息!

测试启动jail的系统:

#jail /jail/Jail-A/ powerbsd.org 192.168.1.201 /bin/sh /etc/rc

如下是我机器上面启动jail的信息!

/**

#jail /jail/Jail-A/ powerbsd.org 192.168.1.201 /bin/sh /etc/rc

Skipping disk checks ...

adjkerntz[662]: sysctl(set_disrtcset): Operation not permitted

Doing initial network setup:.

ifconfig: ioctl (SIOCDIFADDR): permission denied

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384

Additional routing options: TCP keepalive=YESsysctl: net.inet.tcp.always_keepalive: Operation not permitted

.Routing daemons:.

Additional daemons: syslogd.

Doing additional network setup:.

Starting final network daemons:.

ELF ldconfig path: /usr/lib /usr/lib/compat

a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout

Starting standard daemons: inetd cron sshd.

Initial rc.i386 initialization:.

Additional ABI support:.

Local package initialization:.

Additional TCP options:.

2003年 7月14日 星期一 16时26分43秒 ICT

**/

现在你可以通过ssh登陆到jail的系统了!为了测试方便,我通过inetd.conf提供了ftp和telnet的服务!

下面是我通过ssh登陆到jail系统上面的一些信息:

/**

powerbsd# id

uid=0(root) gid=0(wheel) groups=0(wheel), 2(kmem), 3(sys), 4(tty), 5(operator), 20(staff), 31(guest)

powerbsd# uname -a

FreeBSD 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

powerbsd# ifconfig

fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

inet 192.168.1.201 netmask 0xffffff00 broadcast 192.168.1.255

ether 00:00:e2:2d:8b:a5

media: Ethernet autoselect (100baseTX <full-duplex>)

status: active

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384

powerbsd# ps auxww

USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND

root 748 0.0 0.1 400 252 p1 R+J 4:30PM 0:00.00 ps auxww

root 709 0.0 0.3 1092 788 ?? IsJ 4:26PM 0:00.00 /usr/sbin/inetd -wW -a 192.168.1.201

root 711 0.0 0.3 1032 764 ?? SsJ 4:26PM 0:00.00 /usr/sbin/cron

root 713 0.0 0.8 2632 2080 ?? IsJ 4:26PM 0:00.12 /usr/sbin/sshd

root 727 0.0 0.9 5332 2296 ?? IJ 4:27PM 0:00.03 sshd: PowerBSD [priv] (sshd)

PowerBSD 729 0.0 0.9 5332 2352 ?? SJ 4:27PM 0:00.03 sshd: PowerBSD@ttyp1 (sshd)

PowerBSD 730 0.0 0.4 1364 972 p1 IsJ 4:27PM 0:00.01 -csh (csh)

root 732 0.0 0.4 1368 972 p1 SJ 4:27PM 0:00.02 -su (csh)

root 702 0.0 0.3 992 664 ?? SsJ 4:26PM 0:00.00 /usr/sbin/syslogd -ss

powerbsd#

**/

到现在为止,jail的基本系统已经配置完毕!

现在开始配置ipfilter,来实现端口的映射!

二.配置FreeBSD的ipfiter和ipnat

#cd /sys/i386/conf

#cp GENERIC PowerBSD

在PowerBSD这个核心配置文件中加入:

options IPFILTER #ipfilter support

options IPFILTER_LOG #ipfilter logging

#config PowerBSD

#cd ../../compile/PowerBSD/

#make depend;make;make install

vi /etc/rc.conf 在改文件中添加如下参数:

ipfilter_enable="YES" //ipfilter

ipfilter_program="/sbin/ipf"

ipfilter_rules="/etc/ipf.rules"

ipnat_enable="YES" //ipnat

ipnat_program="/sbin/ipnat -CF"

ipnat_rules="/etc/ipnat.rules"

ipmon_enable="YES" //ipfilter log

ipmon_program="/sbin/ipmon"

ipmon_flags="-Ds"

建立ipfilter需要的文件:

touch /etc/ipf.rules

//因本篇文章重点不在ipfiter防火墙的建立,具体的信息可以参照/usr/share/example/ipfilter/中的文档

touch /etc/ipnat.rules

touch /var/log/ipflog

vi /etc/ipf.rules(如下规则是我测试的规则,不是很完善!具体请参照ipfilter的文档)

pass out on fxp0 all

pass in on fxp0 all

pass out quick on lo0 all

pass in quick on lo0 all

block in proto icmp from any to 10.0.1.1

pass in quick on fxp0 proto tcp from any to any port = 22 flags S/SA keep state

pass in quick on fxp0 proto tcp from any to any port = 80 flags S/SA keep state

pass in quick on fxp0 proto tcp from any to any port = 23 flags S/SA keep state

pass in quick on fxp0 proto tcp from any to any port = ftp flags S/SA keep state

pass in quick on fxp0 proto tcp from any to any port = ftp-data flags S/SA keep state

pass out quick on fxp0 proto udp from any to any port = 53

block in log quick on fxp0 proto tcp form any to any port = 3306

block in quick all

vi /etc/ipnat.rules 添加nat的规则

rdr fxp0 10.0.1.1/32 port 21 -> 192.168.1.201 port 21

rdr fxp0 10.0.1.1/32 port 23 -> 192.168.1.201 port 23

rdr fxp0 10.0.1.1/32 port 80 -> 192.168.1.201 port 80

vi /etc/rc.local 在该文件中添加启动jail的代码

jail /jail/Jail-A/ powerbsd.org 192.168.1.201 /bin/sh /etc/rc

注意不要忘记在/etc/rc.conf中添加:

ifconfig_fxp0_alias0="inet 192.168.1.201 netmask 255.255.255.0"

三.最后重新启动你的系统,进行测试:

telnet 10.0.1.1

ftp –A 10.0.1.1

如果成功,一切OK!

总结:

以上通过ipfilter的nat功能,结合jail强大的功能,可以构建非常安全的服务器系统!但是具体服务在jail下面执行的效率怎么样?我没有具体进行测试!希望测试过的朋友多多指点!如上只是记录我的一个测试过程!在整理的过程中难免会有一些错误!请发现的朋友告诉我,我进行修改!谢谢!

如果你们在按照该文档配置过程中遇到什么问题,可以发邮件给我,邮件地址在这篇文档的刚开始已经说明!

[myimg]upload/jail00.png[/myimg]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有