我们通常为了得到某个系统的网络服务,比如电子邮件和Usenet新闻,可在系统中建立一个拨入服务,这就需要用到UUCP服务。UUCP(即UNIX互拷)的主要作用是拷贝文件从一台远程主机上到另一台机器上,执行某些命令在远程的主机上。下面我们利用它来建立一个拨入系统。
配置UUCP账户
首先,你必须允许登录你的串口,并且还要一些文件来配置UUCP账户系统。
在这之前,你先建立一个用户账户,可以让远程站点登录你的系统,并且建立一个UUCP连接。可以为每个连接你系统的系统分别配备登录名字。当你为系统Pablo建立一个个账户后,你可以给它起个用户名Unablo。对于使用串行口拨人的系统,你通常必须加一些账户为这个系统的密码文件/etc/passwd。它会非常好地保护并将所有UUCP登录用户放在一个特殊的文件里,例如uuguest。这个账户的主目录可能被调整到公共的Spool目录/var/spool/uucppublic下。它的登录shell必须是uucico(在这里。cico代表拷贝里面和拷贝外面)。
uucp stream tcp nowait root/usr/sbin/
tcpd/usr/lib/uucp/uucico -1
要通过TCP连接到你的站点来服务于UUCP系统,在UUCP端口就必须设置inetd标准的输入连接,可把下面这一行加到/etc/inetd.conf里面来实现。设置为-1,使uucico执行它自己的登录授权。它很快地提示一个登录名和一个密码就好像标准化的登录程序。但会依靠它的私有密码数据而不是/etc/passwd。这个私有的密码文件是/etc/uucp/passwd,而且包含一些登录名字和密码。
Upablo IslaNegra
Ulorca co'rdoba
这个文件必须隶属于UUCP,权限设置为600。
下面你需要做的就是用getty程序,它能告诉你uucico的调用UUCP用户。
你可以按照下面的方法查看:
/usr/lib/uucico -1 -u user
-u的设置是告诉它用这个指定的用户名。为了保证UUCP用户账户的安全,你应该为每一个系统登录建立一个called-login命令,这个应该建立在系统文件中。下面将对这方面进行描述。
小心冒名顶替者
还有一个关于UUCP主要问题是呼叫系统可能对其名字说谎。它在登录后声明它的名字给呼叫系统,但是没有任何方法检查它。然后一个入侵者可以注册他的或者她自己的UUCP账户,假装是其他人,并且可以得到那些人的站点邮件。假如你掉供一个通过匿名UUCP的注册,一个公共密码,很不理想。所以你必须防范这些欺骗者。这个漏洞需要每个系统在sys用一个指定一个呼叫注册来使用一个特殊的注册名才能解决。
看下面的例子系统这样登录的:
system
pablo
… usual options …
called-login Upablo
结果是当任何时候这个系统的日志里有而且还是假的Pablo,uucico检查是不是被记录做为Unable。假如不是呼叫系统关闭,并且连接自动终止。你应当把加这个called-login命令到你的每个系统中的sys中系统登录的工作作为一个好的习惯保持下来。不论它们是否曾经呼叫过你的系统,做这些都是非常重要的。对于那些曾经呼叫过你的,你最好设置called-login到一些完全伪造的用户名,例如neverlogsin
拨号程序的查对
另外一个抵御和检查冒名者的方式是使用callsequence checks(顺序呼叫检查)。这些可以帮助你对付那些经过控制想得到你的记录和UUCP系统的密码的入侵者。当用call sequence checks,两台机器继续已经建立的连接,在每个连接上增加。在注册完后,呼叫者发送它的呼叫次序数字。被呼叫者检查它自己的数字,假如它们不相符,这个连接企图是不受理的。假如这个最初的数字次序选择是随机的,入侵者将非常难猜测这个连接的所有次序号码。但是call sequence checks为你做了很多工作。甚至假如有一些非常聪明的人侦破你的拨入次序还有你的密码,你也能发现这个入侵者。当这个人侵者拨你的UUCP端口而且偷取你的邮件,这将会在端呼叫次序数字上加一,下次你呼叫你自己的终端并注岫的时候,这个远程uucico将拒绝你,因为数字已经和以前的不一样了。假如你已经启动了call sequence checks,你能从检测日志文件里的错误信息找到入侵者。如果你的系统拒绝呼叫系统提供的顺序号码,uucico将把"Out of sequence call rejected."这个信息写到日志文件里。如果你的系统因为次序数字不在sync之列而被它的终端拒绝,它将写人 "Handshake failed(RBADSEQ)."到日志文件。
为了使call sequence checks生效,可以进行如下操作:
#enable call sequence checks
sequence
true
另外,你需要创建一个文件包括这个次序号码。Taylor UUCP保存这个号码在一个拨号文件里,依次在这个远程站点的卷目录中。它的所有者必须是UUCP,并且属性设置为6000
最好先初始化这个文件,创建这个文件一个简单的方法如下:
# cd /var/spool/uucp/pablo
# echo 94316 .Sequence
# chmod 600 .Sequence
# chown uucp.uucp .Sequence
当然,这个远程站点使call sequence checks生效,并起用你使用的确切的顺序号码。
匿名UUCP
假如你想要提供匿名UUCP能够成功地连接到系统,应先建立一个特别的账户。一般的做法是给UUCP的匿名账户一个登录名和一个密码。
另外,你还要建立一些安全设置为未知系统。例如你可能想阻止他们执行的任何命令在你的系统。然而,你不能设置一些参数到一个sys文件登录,因为这个系统命令要求未知的系统名字。
Unknown命令可以在配置文件中指定任何可以经常出现在一个系统登录中的命令:
unknown
remote-receive ~/incoming
unkonwn
remote-send ~/pub
unkonwn
max-remote-debug none
unkonwn
command-parh /usr/lib/uucp/anon-bin
unknown
commands rmail
这将限制未知系统只能从pub路径下下载文件和上载文件到/var/spool/uucppubl记下面的进人路径。下一行使uucico忽略任何来自远程系统的打开本地Debug的请求。最后两行是允许末知系统从可执行的rmail。但是指定的命令路径使uucico只是在一个名为anon-bin的个人路径下查找rmail命令。例如这样允许你提供一些特定的rmail转发所有的邮件到超级用户进行检查。这使匿名用接触到系统的维护者,但是同时阻止它们侵入其他站点的任何邮件。使可能匿名UUCP,你必须在配置上指定至少一个末知叙述,否则uucico可能将会拒绝任何的未知系统。
至此,一个安全的拨入系统就这样配置完成了,希望对正在为如何在Linux下配置拨入系统而冥思苦想的朋友有所帮助。