近来,笔者花费了大量的时间安装开源网络访问控制(NAC)系统PacketFence。PacketFence有一个特性比起其它所有方面都更加可行:注册。PacketFence的注册系统使得这个软件成为一个在多种情况下都可行的方案:公司、私人网络、机构、企业、无线网络等。
在注册系统布置停当之后,网络中每一台启用网络支持功能的机器在能够访问外部之前必须要注册。如果不注册,计算机就会被阻止。
PacketFence注册如何工作
PacketFence注册系统与私有系统内(Bluesocket, NoCatAuth)的那些注册系统类似。用户的身份验证基于SSL之上的HTTP认证。这种认证是由HTTP服务器(如LDAP、本地服务器、RADIUS等)所接受的任何模块所处理的。在本文中,笔者将向你展示如何使用最简单的方法-本地方法,因为它需要很少的设置。
本文将讨论如何在Ubuntu 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的文件。这个文件的内容大概是这个样子:
<IfModule mod_auth.c> <Location "/cgi-bin/register-local.cgi"> AuthUserFile /usr/local/pf/conf/user.conf AuthGroupFile /dev/null AuthName "Local" AuthType Basic require valid-user </Location> </IfModule> |
在你用htpasswd创建一个口令文件时,就需要考虑AuthUserFile /usr/local/pf/conf/user.conf这一行。这一行极有可能没有设置。否则,用笔者上述的例子设置它。user.conf这个文件就是我们用htpasswd创建的文件。
既然我们理解了使用本地的认证要求为每一个用户创建用户/口令。如果用户的数目很大,这可能非常费时,因此如果你处于一个大型的环境中,就需要考虑使用另外一种认证类型。为了简化起见,我们使用本地认证。
| |