Chinaunix首页 | 论坛 | 博客
  • 博客访问: 537853
  • 博文数量: 120
  • 博客积分: 3991
  • 博客等级: 中校
  • 技术积分: 1113
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-31 15:57
文章分类

全部博文(120)

文章存档

2011年(3)

2010年(6)

2009年(111)

我的朋友

分类: 网络与安全

2009-10-12 11:29:13

    近来,笔者花费了大量的时间安装开源网络访问控制(NAC)系统PacketFence。PacketFence有一个特性比起其它所有方面都更加可行:注册。PacketFence的注册系统使得这个软件成为一个在多种情况下都可行的方案:公司、私人网络、机构、企业、无线网络等。

  在注册系统布置停当之后,网络中每一台启用网络支持功能的机器在能够访问外部之前必须要注册。如果不注册,计算机就会被阻止。

  PacketFence注册如何工作

  PacketFence注册系统与私有系统内(Bluesocket, NoCatAuth)的那些注册系统类似。用户的身份验证基于SSL之上的HTTP认证。这种认证是由HTTP(如LDAP、本地、RADIUS等)所接受的任何模块所处理的。在本文中,笔者将向你展示如何使用最简单的方法-本地方法,因为它需要很少的设置。

  本文将讨论如何在 Server 6.06安装环境中设置PacketFence的注册问题。如果你还没有安装PacketFence,可以参考笔者以前的这篇文章寻求帮助。作为一款优秀 的开源产品,使用这个软件的一个很好方面是它并不要求很高的硬件。事实上,笔者所用的系统是安装这样的环境中:一款较老的AMD 2075 MHz的处理器、512MB的内存。当然,这个配置也不是最差的,不过与今天的标准相比,它还是显得有点儿落后。这台计算机还是headless的,因此 笔者的环境要求拥有SSH接入。

  几点变化

  这里需要一些调整,这与最初的安装有点儿不同。让我们确信下面的模块正使用CPAN。首先,以root用户身份输入“cpan -e”命令,这样你就进入了CPAN命令行。现在运行如下的内容:

      install Date::Parse
  install IPTables::IPv4
  install Term::ReadKey
  install IO::Socket::SSL
  install Net::Telnet
  install Net::Nessus::Client
  install Net::Nessus::Message
  install Net::Nessus::ScanLite

  如果你已经安装了上述内容中的任何一个,就会得到一个消息,告诉你“XXX is already up to date”,这里的XXX即是模块名称。

  将上述行添加到/usr/local/pf/conf/pf.conf文件中以启用snort。现在运行命令“which snort”。这会告诉你的Snort可执行部分在哪里,它最有可能位于/usr/sbin/snort。有鉴于此,在[services]部分增加下面 的内容:snort = /usr/sbin/snort

  需要检查的最后一个方面的配置位于你的php.ini文件中。在我们的安装中,这个文件位于/etc/php5/apache2/目录中。你需要看一下大约第522行,确信你会看到:

  allow_url_fopen = On 这一行。

  如果你没有看到它,或者它被设置为off,就需要改过来。

  你还需要编辑时区,时区数据位于大约第574行,看起来是如下的样子:

  date.timezone =

  你需要增加你的时区。在本文的作者情况中,即是China/Beijing

  你最后需要增加的是安装Bind。为此,就需要运行命令(以root用户身份或使用sudo)apt-get install bind 。

  在这些调整好之后,你就需要开始注册了。

  设置认证

  我们使用的认证过程是本地的。这意味着我们将利用htpasswd来做这件苦差使。不过,在你设置这个过程之前,需要看一下/usr /local/pf/conf/templates目录。在此目录中,你会看到一个称为local.conf的文件。这个文件的内容大概是这个样子:


  AuthUserFile /usr/local/pf/conf/user.conf
  AuthGroupFile /dev/null
  AuthName "Local"
  AuthType Basic
  require valid-user

  在你用htpasswd创建一个口令文件时,就需要考虑AuthUserFile /usr/local/pf/conf/user.conf这一行。这一行极有可能没有设置。否则,用笔者上述的例子设置它。user.conf这个文件 就是我们用htpasswd创建的文件。

  既然我们理解了使用本地的认证要求为每一个用户创建用户/口令。如果用户的数目很大,这可能非常费时,因此如果你处于一个大型的环境中,就需要考虑使用另外一种认证类型。为了简化起见,我们使用本地认证。

我们将首先运行htpasswd命令,用-c标记来创建文件。因此首先运行:

htpasswd -c /usr/local/pf/conf/user.conf USERNAME

  在这里,USERNAME是第一个用户的名字。执行了这个命令,你会被提示两次,要求输入两次口令。在用户们被提示要求PacketFence 注册时,这也就是用户所使用的用户名/口令的组合。你必须为每一个用户创建全部的用户名/口令组合,在下次运行这个命令时,就不需要-c标记了,因为这个 文件已经创建。因此剩余的命令看起来是这个样子: 

htpasswd /usr/local/pf/conf/user.conf USERNAME

  你现在需要重新配置PacketFence使其启动。

  configurator.pl脚本

  在我们首次安装PacketFence时,我们通过在模式中运行configurator.pl脚本而完成这种操作。这次我们要在注册模式中运行configuator.pl脚本。为此,切换到/usr/local/pf目录并执行命令(以root用户身份)./configurator.pl。这个过程将是如下的样子:

      Checking existing configuration...
  Existing configuration found, upgrading
  Would you like to modify the existing configuration [y|n]
  y
  Would you like to use a template configuration or custom [t|c]
  t
  Which template would you like:
  1) Test mode
  2) Registration
  3) Detection
  4) Registration & Detection
  5) Registration, Detection & Scanning
  6) Session-based Authentication
  Answer: [1|2|3|4|5]: [1|2|3|4|5|6]
  5
  Setting option scan to template value enabled
  Setting option dhcpdetector to template value enabled
  Setting option mode to template value passive
  Setting option isolation to template value disabled
  Setting option testing to template value disabled
  Setting option detection to template value enabled
  Setting option registration to template value enabled
  Setting option auth to template value local
  Setting option skip_mode to template value window
  Setting option skip_window to template value 2w
  Setting option aup to template value disabled
  Setting option skip_reminder to template value 1d
  Setting option pass to template value packet
  Setting option ssl to template value enabled
  Setting option user to template value admin
  Setting option port to template value 1241
  Setting option registration to template value enabled
  Setting option host to template value 127.0.0.1

  请一定要检查conf/violations.conf,并禁用任何与你的环境相冲突的因素。注意:这种配置可能有点儿单调乏味。如果你厌倦了,可以直接编辑/usr/local/pf/conf/pf.conf。笔者的管理接口是什么呢?

     (default: eth0) [eth0|?]:
  eth0 - ok? [y|n]
  y

  其IP地址是

      (default: 192.168.1.29 [?]):
  192.168.1.29 - ok? [y|n]
  y

  其子网掩码

      (default: 255.255.255.0 [?]):
  255.255.255.0 - ok? [y|n] y

  网关

      (default: 192.168.1.1 [?]):
  192.168.1.1 - ok? [y|n] y

  监视程序接口

      (default: eth1) [eth0|?]: eth0
  eth0 - ok? [y|n] y

  此外,还有SMTP中继服务器等。此后,你将准备启动PacketFence.为此执行命令:

  /usr/local/pf/bin/start

  你应当看到下面的内容:

      Checking configuration sanity...
  service|command
  config files|start
  iptables|start
  httpd|start
  pfmon|start
  pfdetect|start
  named|start
  snort|start

  现在PacketFence已经启动,并等待注册。
注册一台机器

  你要做的第一件事是收集网络上任何设备的MAC地址(除计算机之外的支持网络的设备,如器、网络打印机、机等)。你可能需要手动注册这些设备。为此,你需要像下面这样使用/usr/local/pf/bin/pfcmd这个命令:

/usr/local/pf/bin/pfcmd node edit 00:e0:4d:0d:94:a2 status="reg",pid=NAME

  要确保对每一个设备使用一个独一无二的名字。如此一来这个设备就会被注册并且可以访问。

  现在任何一台试图访问外部网络的计算机会在注册屏幕上发现自己,如图1:

      1

  你可以通过PacketFence的Web管理工具来配置Acceptable Use Policy(可接受的使用策略)。

  用户们将必须从下拉列表中选择认证类型。在我们例子中,用户会将选择“本地(Local)”。在用户们这样做时(并且选择register(注册)),就会看到类似于下图的一个登录屏幕:

      2

  不过,请记住:管理员最好不要作为注册用户。

  一旦用户输入了一个非法的用户名/口令组合,用户将被要求允许系统扫描漏洞。在警告屏幕中,用户们必须按下“Scan(扫描)”按钮来允许系统扫描。一旦扫描成功,用户将会收到一个注册成功(Registration Successful)屏幕,类似于下图。

      3

  即使注册成功,用户还要按下“Complete Registration(完成注册)”按钮来启用网络访问。

  一旦用户按下了“Complete Registration(完成注册)”按钮,就会看到一个屏幕告诉用户网络访问已经启用。而看到这个屏幕,也就意味着用户是“良民”,可以进入网络。

  进一步的配置

  使用基于Web的管理工具来使PacketFence的配置更上一层是很聪明的选择。为了访问此功能,可以将你的浏览器指向 ,然后你将使用在安装期间创建的管理员口令。从这里,你可以精细地调整 PacketFence的安装。

  结束语

  最后,我们要说开源的PacketFence做到了许多需要花费大量金钱才能使用的应用程序功能。在这其中,许多商业化的解决方案并不如 PacketFence那样容易配置。虽然PacketFence在配置和安装方面也有一些不如人意的地方,但是笔者认为,如果你正在寻找网络安全的另外一层,那么它确实值得你一试。



阅读(2681) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~