完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Red Hat Linux 253 实验部分 试验2 介绍 在整个试验中,您使用的机器名称和域名将基于您使用的机器的IP地址。如果下面的试验出现了X字样的名称,您应该把X字样的名称替换成您的工作站的号码(您的IP地址的最后一个部分)。例如,如果您的工作站的IP的地址是192.168.0.3,您应该将stationX.domainX.example.com转换成station3.domain3.example.com。 将数据包过滤设定为无效状态。在本次试验开始之前,请您确保您的主机上的所有包过滤已被关闭(显然,在实际使用中您可以利用Linux内核的防火墙机制,然而我们在这里关掉它是为了减少潜在的问题)。 初始化安装 A. 获得必要的文件 配置您的主机使得它能够被用来作为域名服务,而不是192.168.0.254。 注意:直到您的域名服务器被正确安装和配置,您的机器的DNS服务不会奏效。您也应该注意到当您的系统重新启动的时候或者重新设定您的网络的时候您的/etc/resolve.conf将会被改写(除非您对您的网络界面设定了在本讲座中提及的PEERDNS) 按照如下编辑您的解析器配置文件 /etc/resolv.conf (记住将X替换成您的工作站的号码) 第一行定义了如果出现简单的不符合完整域名的主机名称时默认添加的缺省域。第二行指定了将主机192.168.0.X (您的机器)来作为DNS查询的解析器。 为了简化情况,将除了localhost主机名称的定义从您的主机名称配置文件中删除。
该步骤并不是必需的,但是可以简化DNS的调式。有时候安装程序会将符合完整域名的主机名放在localhost的这一行,这样一来会使得您无法准确的确定您的域名服务器配置是否正确。 步骤1:配置一个仅有缓存的域名服务器 您已经安装完对于此项配置所有必须的文件。按照如下步骤来配置域名服务器: 1. 在由caching-nameserver提供的/etc/named.conf中的“option”区域添加下面的内容: forwarders {192.168.0.254; }; 这将导致您工作站上的仅有缓存的域名服务器转发其不能解析的DNS查询到在192.168.0.254的域名服务器,并且如果超时,不与根域名服务器直接联系。 步骤2:配置一个从域名服务器 一个从域名服务器将为一个区域提供授权的回答,但不是区域的授权开始。您现在将重新配置您的域名服务器作为example.com区域和0.168.192.in-addr.arpa区域的从域名服务器。 1. 在您的/etc/named.conf文件中添加如下行 2. 重新启动named: servcie named restart 3. 检查slave-example.com.zone和slave-192.168.0.zone文件。这些文件应该包含了从位于192.168.0.254的主域名服务器传过来的区域数据库的副本。 确保所有的正确工作。在您开始下一个部分之前,去除您刚才在第一步中在/etc/named.conf中加入的两个从区域。 步骤3:配置一个主域名服务器 现在您将配制您的域名服务器来负责对于区域“domainX.example.com”的解析工作。您将同样负责向对应的反查区域。将采用如下的步骤: A. 编辑配置文件(named.conf) 为了您能够准备您的配置文件和区域文件,我们提供了模板文件。您可以通过匿名ftp方式从以下地址获得: ftp://192.168.0.154/pub/namedfiles/ 在如下的步骤中,记得将范例文件中中每一出出现的X替换成您的工作站的号码。 1. “.”(根级别)区域 zone “.” { 2. “domainX.example.com”(正向查询)区域 添加如下的行,使得您的域名服务器成为区域的主服务器。 zone “domainX.exmaple.com” { 3. “X.0.168.192.-in-addr.arpa”(反向查询)区域 现在添加如下的行,使得您的域名服务器成为反查区域的主服务器。 zone “X.0.168.192.in-addr.arpa” {
F. 数据库文件 $TTL 86400 该数值是缺省的以秒计的生存期间,该数值对所有在该域中的记录有效 1. 区域“domainX.example.com” 开始授权记录 @ IN SOA stationX.domainX.example.com. root.stationX.domainX.example.com. ( 第四个标记使该域的主域名服务器,第五个是负责维护这个数据库的系统管理员的电子邮件的地址,注意第一个分隔符替换了第一个标记的@符号(你能解释为什么吗?)。接下来在记录中的条目指定了交互解析域名服务器的动态特性。 域名服务器记录 @ IN NS stationX.domainX.example.com. 域名服务器(NS)标识了主机作为特定域的授权的域名服务器。他们对于这个区域指定了主和从服务器和代表授权的子域的其他的服务器(例如,server1.example.com对于所有domainX.example.com的域名服务器有一个NS记录)。正如您对于“domainX.example.com”只能有一个单一的域名服务器,您也只能有一个单一的NS记录。 地址记录 domainX.example.com IN A 192.168.0.X stationX.domainX.example.com IN A 192.168.0.X 地址(A)记录将主机名称映射到IP地址(域名服务器的主要功能)。一个数据库文件通常包含A记录对应着许多IP地址。然而在我们的教室的环境里,在您的区域里面只有一台主机。注意第一个A记录设定了域的“缺省的IP地址”。接下来的A记录建立了多个主机名称对应一个IP地址。 主机名称可以是一个完全符合标准的名称(FQDN),也可以是一个缩写。所有的不以点号结尾的主机名称都将被视为缩写,并且区域名称被附加到主机名称的后面。例如,第三个A记录就是主机名称www.domainX.example.com. 规范名称(别名)记录 www1 IN CNAME stationX.domainX.example.com. 别名(CNAME)记录建立了主机名称的别名。注意到别名映射到主机名称而不是IP地址。 CNAME不应该出现在右边的数据区域作为真实的主机名称,对于多重别名的解析的速度会很慢。 邮件交换记录 @ IN MX 10 stationX.domainX.example.com. 邮件交换记录(MX)记录了一个主机它将会处理给定的域或者主机邮件的转发。当一个邮件传递代理(MTA)试图投递信件的时候,它将首先试图在DNS中查找目的主机的MX记录。如果该MX记录存在,那么将直接发送到MX记录指定的主机。反之,如果不存在MX记录,MTA对于目的主机进行标准的DNS查询,并且直接投递到该主机上去。MX记录用来建立邮件的网关,和作为缺省的对于域的邮件的目的地。 2. 区域“X.0.168.192.in-addr.arpa” 在/etc/named.conf中,我们指定了/var/named/192.168.0.X.zone作为区域X.0.168.192.in-addr.arpa的反查区域数据库文件。他应该包含SOA记录,NS记录,和对应的PTR记录。 开始授权记录 @ IN SOA stationX.domainX.example.com. root.stationX.domainX.example.com. ( 注意在NS记录开头的空白的地方是非常特别的,并且被解释为“和上一条记录相同”的缩写。在本例中,上一条记录为符号“@”,其本身就是在主配置文件中定义的域名的缩写。 指针记录 X.0.168.192.IN-ADDR.ARPA. IN PTR stationX.domainX.example.com. 指针(PTR)记录通过间接的机制将名称映射到IP地址。作为分离的技术来进行IP地址的反查询的替代,BIND采用了一种修改的对于特定主机名称的正向查询的方式。这种“反向域名查询”以反转的IP地址后面添加“in-addr.arpa”域的形式出现。这将允许域名服务器使用相同的机制进行正反两方面的查询。 3. 把他们放在一起 下面是位于192.168.0.2的station2的样例配置文件: /var/named/domain2.example.com.zone
C. 重新启动域名服务器 再一次,我们将重新启动域名服务器。然后通过运行pidof命令来确定其被运行: service named restart 查看一下服务器添加到/var/log/messages文件中的条目。确定您的域名在调入的时候没有发生错误。 如果您已经有一个域名服务器在运行并且不想重新启动它,您可以使用service named reload 来重新装入配置文件,这样子对于停止和启动服务器而言都比较快。 D. 测试域名服务器 进行如下DNS查询,您能够解释所有的结果么? host stationX 记住dig期望给与一个FQDN作为查询,然而host则通过查看位于文件/etc/resolv.conf的查询信息。试着在别的人的域名服务器和子域上进行附加的查询。如果设定正确,您将能够在其他教室系统上进行正向和反向查询。 挑战性的项目 在您的域中增加子域“support.somainX.example.com”。增加合适的资源记录使得它能够反向指向您的IP地址。 与另一台工作站合作,成为另一台工作站的从域名服务器,在您的区域中为您的工作站增加一个新的CNAME,确保这个改变能够传播到从服务器。 收尾工作 接下来的试验就较为简单了,一旦您重新启动您的工作站,所有的DNS查询将会重新设定到教室中的服务器上。为了确保收尾,确保您重新设定/etc/resolve.conf到其初始的状态。 /etc/resolv.conf /etc/hosts (如果您关闭后启动eth0接口,DHCP将会自动为您设定配置文件)
试验3 将数据包过滤设定为无效状态。在本次试验开始之前,请您确保您的主机上的所有包过滤已被关闭。缺省的安装将会有一个文件叫做“/etc/sysconfig/iptables”,该文件配置了iptable的功能。运行“chkconfig iptables off”。为了去除空间中所有的规则,运行“service iptables stop” 步骤1:Samba的用户连接的配置 任务 1. 安装samba,samba-common和samba-client RPM 软件包并且启动smb服务。一个缺省的配置将会被应用. 使用如下的命令确定Samba是在正确的工作: smbclient –L localhost –N 您可以从服务器获得回应,但是并不代表文件共享可用。(确保smbd在运行,否则该命令无法工作) 3.缺省的samaba是被配置用来接收加密的密码的,但是在文件/etc/samba/smbpasswd中没有设定任何密码。如果加密的密码在/etc/samba/smb.conf被设定,smbclient将发送加密的密码,所以为了在您的系统上测试samba服务,您应该首先建立smbpasswd文件,然后为每一个用户在该文件中添加密码。 4.注意到第一个在/etc/samba/smb.conf设定的共享[home]并没有指定路径。该共享被配置用来当用户连接并且认证通过以后共享用户的home目录。浏览一个或者两个用户的home目录。上传一个文件到joe的home目录。 可用的结果 一个工作的samba服务可以被多个用户通过smbclient访问。
场景/故事 为了使得我们的四个用户除了有他们自己的在服务器上的共享,我们这四位用户同时在同一个部门工作并且需要一个地方来存储部门的文件。我们将需要一个Linux用户组,建立一个目录给这些用户来存储它们的内容,并且配置samba服务器来共享目录。 任务 1. 建立一个对于拥有gid为30000的用户叫做legal的新组并且使用usermod命令将这些用户加到组里去。 2. 建立一个目录/home/depts/legal。对于这个目录设定拥有权限,使得在legal组中的用户可以在这个目录中添加/删除文件,然而其他的人不可以。并且设定SGID和粘滞位使得所有在这个目中建立的文件都拥有同legal组的权限并且组中其他的的人不能够删除该用户建立的文件。 3. 在/etc/samba/smb.conf中建立一个samba共享叫做[legal]。只有legal组中的用户才能够访问该共享。并且确保在[legal]中存放的文件的被建立的许可权限为0600。 4. 重新启动smb服务并且使用smbclient;来进行测试。 可用的结果 1. 只有lagal组能够访问和使用一个Linux目录。 步骤3:为打印机提供访问 场景/故事 在samba中除了可以共享文件以外,另外一个重要的功能就是提供共享打印队列,该打印队列已经在您的Linux机器上定义。实际上,缺省的,所有在Linux机器上配置的打印队列通过[printers]共享到网络上去。在该步骤中,您将建立一个打印队列,通过samba服务器进行共享。然后通过smbclient来查看共享的打印机。 任务 1. 使用redhat-config-printer建立一个新的打印队列。把打印队列命名为printerX(其中X为您的工作站的号码)。配置打印机到本地连接的打印机/dev/lp0。配置打印队列确保任何递交的打印作业将保留在队列中。不要忘记重新启动samba服务器。 2. 通过smbclient来连接samba服务器上共享的printerX。使用print命令来递交打印作业到队列中去。检查作业已排队否。
1. 一个定义的Linux打印队列printerX 挑战1:安全和备份Samba/SMB 现在所有的东西都可以运行了,我们应该考虑在Samba服务器上的网络安全和数据的可靠性了。 任务 1. 定义并且保护对于samba服务器而言合法的连接。在文件/etc/samba/smb.conf中使用hosts allow参数来确定所有教室里的子网和本地回环子网。 可用的结果 1.samba服务器能够识别来自允许的子网或者主机的连接 一种解决方案 l rpm –ivh ftp://server1.exmaple.com/pub/RedHat/RPMS/samba-c* l useradd –s /bin/false karl l smbpasswd –a karl 步骤2 l groupadd –g 30000 legal l mkdir –p /home/depts/legal l 在文件/etc/samba/smb.conf文件中,共享定义部分: l service smb restart 步骤3: l redhat-config-printer 复习问题 2. 命令nmblookup *的作用是什么 3. smbtar命令是干什么的? 4. testparm /etc/samba/smb.conf 33.44.55.66 是做什么用的? 5. 使用smbmount命令该使用什么语法? 指导教师:确保在Server1上的sednmail.mc文件中的DAEMON_OPTIONS被注释并且重新编译sendmail.cf文件使得能构接受来自其他主机的电子邮件。 在整个试验中,主机和域名取决于您的机器的IP地址。如果下面的试验出现了X字样的名称,您应该把X字样的名称替换成您的工作站的号码(您的IP地址的最后一个部分)。例如,如果您的工作站的IP的地址是192.168.0.2,您应该将stationX.domainX.example.com转换成station2.domain2.example.com。 将数据包过滤设定为无效状态。在本次试验开始之前,请您确保您的主机上的所有包过滤已被关闭(显然,在实际使用中您可以利用Linux内核的防火墙机制,然而我们在这里关掉它是为了减少潜在的问题)。 初始化安装-安装必要的软件包 步骤1:配置MTA来收取邮件 为了安全的原因,sendmail和postfix的缺省的配置允许发邮件但是不允许从网络上接收邮件(缺省的它们只接受从回环接口上的连接)。按照如下配置您选择的MTA使得它接受传入的连接:
2.将您的sendmail.cf文件做一个备份: 3.在同一个目录下,编译sendmail.cf m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 4.重新启动sendmail,通过 对于postfix:修改/etc/postfix/main.cf A.找到并注释如下行 inet_interfaces = localhost B.取消注释该行: C. 保存文件并且进行到步骤2 的结束的地方。找到和上面一样的对应于postfix的配置的地方。 步骤2: 启动和校验MTA操作 对于sendmail: 有几个步骤您应该采用,以确保sendmail被正确安装。 A.确信sendmail已经被在适当的运行级别上运行 检查您的sendmail被适当的配置且能够在重新启动以后其能够运行。使用chkconfig是比较方便的。 chkconfig -–list sendmail 如果sendmail在标准的用户运行级别时无效,使用chkconfig, ntsysv 或者serviceconf 之类的工具来激活服务。 B.确定sendmail没有在启动的时候出现错误 Red Hat Linux安装的时候使用提供的syslog工具来记录所有的信息到文件/var/log/maillog中去。检查此文件中的最后出现“starting”的地方以确保sendmail在启动的时候没有任何错误。 sendmail可执行文件位于/usr/***in/sendmail。为了确定sendmail是否正确标识您的主机名称,通过命令行开关开启其调试模式并且设定为0: sendmail –d0 < /dev/null ============ SYSTEM IDENTITY (after readcf) ============ Recipient names must be specified 如果sendmail返回您的主机名称为localhost,您可能错误配置了/etc/hosts文件。检查您的/etc/hosts文件,删除所有的但记住留下localhost的指向。如果/etc/hosts文件是正确的,那么检查一下在/etc/sysconfig/netwoek中的HOSTNAME的定义。 试图向root@server1发送简单的邮件。您可以看到一个合理的您的主机的转发服务器的SMTP交换。 echo “hello root” | mail –v –s hello root@server1 root@server1... Connecting to [127.0.0.1] via relay... 如果SMTP交换向上面一样正确,那么消息将被转发到您的工作站上的本地的转发服务器上,并且mailq –Ac将会报告一个空的对列。接下来检查mail(不使用参数)来检查一下消息是否从本地的转发到server1。这样对列也应该是空的。 您的消息是不是在/var/log/maillog中正确的记录呢?在下面的步骤中,监视文件/var/log/maillog。下面的命令将会十分的有用: xterm –e tail –f /var/log/maillog & 对于postfix: A.运行‘service sendmail stop’,接下来使用redhat-switch-mail使得postfix成为活跃的MTA。您也可以使用如下的命令行: alternatives –set mta /usr/***in/sendmail.postfix B.确保postfix在合适的运行级别有效: chkconfig -–list postfix C.确定hostname命令正确的返回您的主机名称。应该是您的FQDN。 如果sendmail返回您的主机名称为localhost,您可能错误配置了/etc/hosts文件。检查您的/etc/hosts文件,删除所有的但记住留下localhost的指向,然后再试一遍。如果/etc/hosts文件是正确的,那么检查一下在/etc/sysconfig/netwoek中的HOSTNAME的定义。当这些值都正确的时候,启动postfix服务。 D.确定postfix在启动的时候没有错误 和sendmail一样,Red Hat Linux的安装使用提供的syslog工具来记录所有的信息到文件/var/log/maillog中去。检查此文件中的最后查找任何错误信息。 试图向root@server1发送简单的邮件并且检查/var/log/maillog的记录文件 应该如下所示: 步骤3:添加新的别名 对于sendmail: 在sendmail决定消息的接受者的目的地的之前,其先试图在别名中查找。sendmail的主要的别名配置文件是/etc/aliases。为了优化查找,sendmail为其别名记录建立了一个哈希表数据库/etc/aliases.db.该文件通过newalias命令产生(该命令是sendmail –bi的同名) 下列命令将增加用户student(如果不存在的话) useradd student 在/etc/aliases 行加入如下的行: me: student 现在运行newalias 命令来更新数据库,尝试发送邮件给您定义的收件人: newalias 您是否得到了期望的结果?是否所有的位于wizards的收件人都受到了邮件?如果没有,su – 到不是root的用户再试一次。 在postfix决定消息的接受者的目的地的之前,其先试图在别名中查找。postfix的主要的别名配置文件是/etc/postfix/aliases。为了优化查找,postfix为其别名记录建立了一个哈希表别名数据库/etc/postfix/aliases.db(和sendmail类似).该文件通过newalias命令产生。 下列命令将增加用户student(如果不存在的话) useradd student 在/etc/postfix/aliases 行加入如下的行: me: student 现在运行newalias 命令来更新数据库,尝试发送邮件给您定义的收件人: newalias 您是否得到了期望的结果?是否所有的位于wizards的收件人都受到了邮件? 步骤4.控制转发 转发允许邮件通过使用中间的“转发”及其传递到其目的地。尽管这个功能曾经有用,但是转发已经成为Internet上垃圾邮件的源泉了。人们希望发送主动提供的的邮件的时候希望使用转发机制,从而使得邮件发源地很难被侦测出来。 下列步骤将使用下面的主机。替换X,Y和Z为适合的工作站的号码: stationX:源机器,邮件从这里发出 该步骤假设您是stationX,转发机器,与某人的stationY合作,该机器为邮件的源头。在该步骤中,注意/var/log/maillog的变化。下列命令将会显得十分的有用。
您具有控制允许谁在您的机器上转发的能力。通过控制您的机器的混杂转发,您可以使得任何人都能够将您的机器作为转发的主机。(我们对于这种的尝试表示反对,也希望通过该实验显示出其缺陷)。配置/etc/mail/sendmail.mc, 通过加入如下行使得m4前置处理器允许混杂转发: /etc/mail/sendmail.mc 使用m4前置处理机通过这个模板文件生成一个新的sendmail配置文件,然后将新生成的文件与通过sendmail RPM软件包提供的进行比较 m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.test-relay 使用混杂转发以后会有多大的不同呢?现在将新建立的sendmail.test放置在恰当的位置上,重新启动sendmail. mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.accept-mail 让您的伙伴扮演恶意的垃圾邮件的发送者,该人能够通过telnet到您的机器上的smtp(sendmail)的25号断口,进行垃圾邮件发送地址的欺骗,在stationY键入如下命令: 这个例子对于stationY(源机器)=station2,并且stationX(转发,在这里目的机器)=station1 [root@station1 root]# telnet station1 25 垃圾邮件现在送到您的机器上了。下一步,看看您的伙伴能不能从您的机器转发给第三台机器: 这个例子对于stationY(源机器)=station2,并且stationX(转发,在这里目的机器)=station1,并且stationZ(目的机器)=station3
由于您的机器已经被配置成为允许混杂转发,垃圾邮件可以通过您的机器进行邮件转发。 对于postfix: 您具有控制允许谁在您的机器上转发的能力。缺省的postfix允许在子网上的任何人通过您的机器进行转发。胆汁并不是在每一个环境中都安全的。例如,您的机器和其他机器在一起,如果您的本地子网里有一台机器被其他人控制,那么其他的机器都会有麻烦。 让您的伙伴扮演恶意的垃圾邮件的发送者,该人能够通过telnet到您的机器上的postfix的25号断口,进行垃圾邮件发送地址的欺骗,在stationY键入如下命令: [root@station1 root]# telnet station1 25 垃圾邮件现在送到您的机器上了。下一步,看看您的伙伴能不能从您的机器转发给第三台机器: 这个例子对于stationY(源机器)=station2,并且stationX(转发,在这里目的机器)=station1,并且stationZ(目的机器)=station3 [root@station1 root]# telnet station1 25 由于您的机器已经被配置成为允许混杂转发,垃圾邮件可以通过您的机器进行邮件转发。 步骤B:不允许转发 对于sendmail 通过替换新的sendmail.cf为接受传入的信件的配置文件来恢复缺省的sendmail的配置,并且重新启动sendmail: mv /etc/mail/sendmail.cf.accept-mail /etc/mail/sendmail.cf 让您的伙伴再从stationY转发垃圾邮件。您的sendmail还是一个转发器么?任何一个转发的都会产生如下的消息: 550 root@station3.example.com .. Relaying denied 对于postfix 编辑文件/etc/postfix/main.cf取消转发。 查找并且取消注释下面的行,并且重新启动postfix mynetworks_style = host 让您的伙伴再从stationY转发垃圾邮件。您的postfix还是一个转发器么?任何一个转发的都会产生如下的消息: 554 步骤C:选择性的转发 对于sendmail 对于特定的主机,域或者网络,编辑/etc/mail/access并且重新启动sendmail。为了允许所有在example.com域中的机器可以把您的机器作为邮件转发服务器,你在/etc/mail/acces中添加如example.com域。和您的伙伴使用场景A中的命令进行测试。 对于postfix 对于特定的主机,域或者网络,编辑/etc/postfix/main.cf并且重新启动postfix。对于特定的主机允许通过您的机器进行转发,找到并且取消注释该行: mynetworks_style = host 然后添加新行来允许转发的主机和网络,在这里允许station1和本地转发 mynetworks = 192.168.0.1, 127.0.0.0/8 和您的伙伴使用场景A中的命令进行测试。
在这个步骤中,你将配制您的机器stationX作为邮件的POP3服务器,使得您的在stationY的伙伴扮演POP客户端的角色。 步骤A:安装POP3服务器 配置一个POP3服务器比较简单,只需要两个步骤: l 安装相关的RPM软件包 安装相关的RPM软件包 三个守护进程被包括进来:imapd,ipop2d和ipop3d。POP3被用在很多Internet服务提供商,POP2提供是为了向后兼容。IMAP守护进程提供了根加复杂的能力,包括了在服务器端的文件夹的管理。
对于本实验,我们仅选定POP3服务。ipop3d通过xinetd在请求的时候被启动。为了激活,运行下面的命令: service xinetd start 查看一下/etc/xinetd.d/ipop3。显式的重新启动xinetd并不是必需的,由于chkconfig发送给xinetd 一个USR2信号告诉他重新调入其配置。 确认服务 运行下面的命令确认服务已经被正确的安装。下面的命令只是一个指导: echo “mail to be poped” | mail –s “Hello student” student [root@station1 root]# telnet localhost 110 mail to be poped 如果一切顺利的话,您现在有一个安装好的POP服务器了。 步骤B :使用POP客户端 所有的现在的邮件用户代理(MUA),例如netscape,elm,Outlook,pine和mutt都是使用POP的,可以被用作POP的客户端。每一个的配置都有所不同。同样有一个流行字符界面的的POP客户端叫做fetchmail。fetchmail是高度的可配置的,可以查询多个邮箱,可以作为守护进程运行,这样使得其每五分钟查询用户的邮箱。fetchmail在主机上递送邮件到邮件传送代理(MTA),例如sendmail。我们将勾画出以后如何安装fetchmail和使用其来查询我们装过的POP服务器。 从CD或者从ftp://server1/pub/RedHat/RPMS来安装fetchmail软件包 注意到有很多选项可以影响fetchmail的行为。建立一个~/.fetchmailrc文件如下所示: ~student/.fetchmailrc 由于密码存储在该文件中,因此fetchmail将会拒绝运行除非您把该文件的属性设定为对于仅仅文件的所有者只读。注意还可以使用chown改变由root创建的文件的所有者为studentXX。 chmod 600 ~student/.fetchmailrc 尝试使用studentXX登陆到POP3邮箱 echo “hello student” | mail –s “Hola” student fetchmail能不能接收到student的POP邮件?将递送student的邮件到哪里?比从本地获取POP邮件有意义么? 让您的伙伴在另外一台机器上建立相同的~/.fetchmailrc文件(或者配置其它诸如mozilla的MTA)试图从您的服务器上进行收信。
2. mailq命令用来作什么?您如何使用? 3. 当命令sendmail –q发出以后,sendmail将会试图仍在队列中等待的邮件。何时使用该命令是有用的? 4. 如果去除FEATURE(accept_unresolvable_domains)的注释将对垃圾邮件产生如何的影响? 5. m4有什么特征允许sendmail发送邮件作为整个域(例如,“example.com”)而不是完全的符合标准的主机名称(例如,“mail.example.com”)? 6. 在postfix中mynetworks_style如何影响转发? 7. 在文件/etc/postfix/access中需要如何的活跃的变化?
试验5 在整个试验中,主机和域名取决于您的机器的IP地址。如果下面的试验出现了X字样的名称,您应该把X字样的名称替换成您的工作站的号码(您的IP地址的最后一个部分)。例如,如果您的工作站的IP的地址是192.168.0.3,您应该将stationX.domainX.example.com转换成station3.domain3.example.com。 将数据包过滤设定为无效状态。在本次试验开始之前,请您确保您的主机上的所有包过滤已被关闭。缺省的安装将会有一个文件叫做“/etc/sysconfig/iptables”,该文件配置了iptable的功能。运行“chkconfig iptables off”。为了去除空间中所有的规则,运行“service iptables stop”
场景/故事 您的组织需在一个小时内要一个Web服务器,拥有充足的CGI的能力比国内且具有为不同的虚拟主机提供不同的内容服务。 任务: 1. 需要如下的软件包:httpd和httpd-manual。如果需要的话,从CD或者ftp://server1/pub/RedHat/RPMS安装并...。使用chkconfig 来启动服务。 如果您的浏览器在工作,您将看到缺省的服务器的索引页面。注意该文件并不是所存储的HTML文件,而是服务器在这些目录中没有缺省的index.html文件的时候自动生成的。 5.建立一个新的目录层次和一些新的内容 mkdir –p /var/www/virtual/wwwX.example.com/html (这建立一个只有一行的HTML文件) 6.在/etc/httpd/conf/httpd.conf尾部加入以下几行: NameVirtualHost 192.168.0.X 7.确保您的DNS系统哦功能能够解析您的虚拟主机的名称。 8. 重新启动httpd: service httpd reload 9.在您的Web浏览器并且设定URL到新的虚拟主机: 步骤2:使用CGI 任务 1. 在步骤1设定的
2. 建立目录,然后在里面建立文件叫做test.sh 包含以下内容: ”echo My username is:whoamiechoecho My id is:idechoecho My shell setting are:setechoecho My environment variable are:envechoecho Here is /etc/passwdcat /etc/passwdecho “” 3.通过把您的浏览器指向下面的地址尝试执行该CGI脚本 为什么这个脚本不执行?检查日志文件/avr/log/httpd/获得信息来帮助你找到答案。(您是否计的重新启动或者重新载入服务器?) 4. 使得该脚本对于用户,组和其他可读并且可执行: chmod 555 test.sh 现在脚本能够执行麽? 挑战1:为您的Web站点的文档提供安全访问 在wwwX.example.com的文档的根目录建立一个文件叫做.htaccess,并采用以下内容: htpasswd –mc /etc/httpd/conf/wwwX.htpasswd user_name 3.访问http://wwwx.example.com/页面,您是否...httpd获得线索。 4.添加下列行到服务器的配置文件httpd.conf,在wwwX.example.com虚拟主机的 AllowOverride AuthConfig 5.再次尝试访问http://wwwx.example.com/页面,您是否...室趁娴娜ㄏ廾矗?/a> 步骤3:Squid的基本配置 1. 在您的系统上安装squid rpm –Uvh ftp://server1.example.com/pub/RedHat/RPMS/squid* 2.开始服务(service squid start),然后配置您的浏览器使用您的localhost作为您的Proxy并且把端口设定为3128。 3.尝试访问一些主页。如果教师里面没有Internet可以访问,那么试图访问http://server1.example.com/,将会返回服务器的测试页面。 4. 现在使用您的邻居来吧您的主机当作Proxy。这样子应该不能工作。 squid返回的页面在/var/log/squid/access.log文件的底部有所解释。 5.使用您喜欢的文本编辑器打开/etc/squid/squid.conf文件。正如您所看到的,大部分是文档和注释。您也该注意到squid是非常易于调校的。对于本实验,我们仅作简单的配置,熟悉了以后您将会适应更加复杂的配置。 6.在文件中查找第二次出现Recommend minimum configuration的地方。您将会会看到缺省的存取控制列表(acl)。在CONNECT method CONNECT 行的下面添加一个对于本地网络的存取访问列表项目: acl example src 192.168.0.0/24 对于这个配置您可以把它作为参考以应用到其他的任何地方。src是该acl的源IP地址。 http_access allow example 重新启动squid。 您的邻居将能够访问您的Web缓存了。 8.一些URL最好能够避免。返回到acl的部分,在您新添加行的下面(使用example.com如果您在教师里面没有Internet访问权限的话) acl otherguys dstdomain .yahoo.com 这里有一些要提及的东西。首先,注意到acl的附加属性。第二注意到dstdomain的acl类型,指明了关心的目的域。第三、注意到在域名前的点表示符号,确保加上点。 9.增加一条拒绝访问规则应用到这些存在问题的域。返回到您刚在添加allow的地方,在其下面增加如下行: http_access deny otherguys 再次重新启动squid,再次检查这些相关的域,非常不幸,访问没有被拒绝。 10.再次打开配置文件,将您添加的拒绝规则放在example的允许规则之前。也就是说,在otherguys拒绝规则之前的example允许规则使得访问被允许,但是拒绝没有被生效。在移动规则以后,重新启动squid。这回它将禁止访问在任何上面禁止访问的域内的站点了。 复习的问题 1.根据/var/www/manual提及的服务器的手册。ServerAlias是起到什么作用? 2.根据/var/www/manual/suexec.html, suEXE对于CGI进程拥有什么特性? 3.下列命令起什么作用,何时使用它? httpd –t 4. 您是否对您的用户能够通过CGI脚本看到您的/etc/passwd而感到不安?是否有方法阻止显示系统的密码文件?
关掉包过滤:在着手试验之前需要确认包过滤没有被激活,默认情况下iptables会调用 /etc/sysconfig/iptables这个配置文件,删除或重命名这个文件,iptables就会在下次启动时失效。或者使用命令 chkconfig iptables off也行。如果想让iptables立刻失效可以用命令 service iptables stop. 步骤1:使用vsftpd允许匿名用户上传 2. Vsftpd包提供了/var/ftp作为匿名ftp用户的下载文件的目录。但是默认没有匿名上传的文件夹。要配置vsftpd来允许匿名上传,首先要准备一个上传目录: cd /var/ftp 现在检验一下新目录的权限: 3. 配置/etc/vsftpd/vsftpd.conf文件中如下各行: anon_upload_enable = YES 4. 刚才配置的结果是使匿名用户可以上传文件到 /var/ftp/incoming中,但是不能从这个文件夹中下载文件或者列出文件(使用ls命令),这样可以防止“warez”之类的组织用我们的上传目录作为“drop box”来放盗版软件或数据。如果希望匿名用户上传文件,应该让 /var/ftp/incoming 文件夹的所有者为 daemon 所有组为 ftp,并且权限为600(只允许deamon用户读写)。 步骤2:NFS 5. 需要如下的软件包:nfs-utils。如果需要安装的话,请从CD或者ftp://server1/pub/RedHat/RPMS安装并...及nfslock服务。 6. 创建一个用户并且配置NFS共享他的主目录,共享给example.com读写权限。 rpcinfo –p b) 创建一个测试用户 useradd nfstest c) 编辑 /etc/exports 来共享 /home/nfstest给example.com。如果你不知道这个文件的格式,请查看exports的man page。 d) 安装NFS的软件包,配置init运行级别3到5启用NFS服务,但是因为启动时如果/etc/exports 文件丢失或者它的大小为零, NFS服务不会启动。所以,你现在要来手动启动它,下一次启动时NFS就会自动启动了。 e) 观察RPC服务是否启动,看一看是否将/home/nfstest用nfs共享出来了: rpcinfo –p f) 与一个或两个搭档相互mount对方的共享,然后再读取里面的内容,尝试用root和nfstest向其中写文件(如果你机器上的nfstest用户的UID和GID与搭档机器上该用户的不同,则把它们改成一样的)。看一下会怎样?为什么会这样?
试验8 关掉包过滤:在着手试验之前需要确认包过滤没有被激活,默认情况下iptables会调用 /etc/sysconfig/iptables这个配置文件,删除或重命名这个文件,iptables就会在下次启动时失效。或者使用命令 chkconfig iptables off也行。如果想让iptables立刻失效可以用命令 service iptables stop. 步骤1:使用PAM限制登陆的位置 场景/故事 您的系统中有高安全的内容。为了保证数据不被泄漏,你需要限制用户的访问,除了本地控制台,禁止任何其他方式访问系统。 任务: - : finance : ALL EXCEPT tty2 3. 通过编辑 /etc/pam.d/system-auth来限制所有服务,把以下这行添加到以auth开头的所有行后: account required /lib/security/$ISA/pam_access.so 4. 如果你的限定起了作用,bill和root可以登陆到任何控制台,而biff只能在第二个虚拟控制台登陆 5. 清理:你如果运行authconfig工具,以上的操作将会被删除,你怎样确认你的设置有没有变化呢? 步骤2:使用NIS做身份验证 任务: a) 从ftp://server1/pub/RedHat/RPMS、光盘...抢锇沧耙部梢浴?/a> b) 编辑 /etc/sysconfig/network ,添加这样一行: NISDOMAIN = <你们的NIS域名> 下次启动时才会起作用,设置了NIS域名之后不要重新启动,运行命令: domainname <你们的NIS域名> c) 先将 /var/yp/Makefile 文件copy一份作为备份,编辑all部分只包含passwd和group: all: passwd group d) 打开portmap服务和ypserv服务 service portmap start e) 确保make包在你的系统中安装,(以下的命令是在 server1:/var/ftp/pub 已经被mount到/mnt/server1后才能使用) rpm –Uvh /mnt/server1/RedHat/RPMS/make* f) 使用ypinit产生NIS数据库(maps),注意可能出现的错误信息 /usr/lib/yp/ypinit -m (注意:你不用在列表中添加任何主机,只要按 < CTRL - D > ) g) 启动NIS password升级进程 service yppasswdd start h) 如果ypinit在第六步时没有错误,重新启动ypserv服务: service ypserv restart i) 使用ps auxf | grep yp确定ypserv服务运行,如果有错误的话查看日志 /var/log/messages 2. 配置NIS客户端 到现在,任务只完成一半,你和你的同伴需要再配置这个NIS服务器的客户端。 a) 在客户端,确认已经安装以下几个包:portmap,ypbind,yp-tools和authconfig b) 确认客户端可以看到服务器上的portmap服务 rpcinfo –p 你们的NIS服务器 c) 使用authconfig工具配置你的客户端使用NIS进行身份验证,选定“Use NIS”,在“Domain:”后指定你的NIS域,在“Server:”后指定你的NIS服务器。 d) 确认authconfig正确工作,当authconfig完成后,它会自动开启ypbind服务,是否有出错信息出现在控制台上或者 /var/log/messages中? e) 测试你的NIS客户端,使用root用户登陆你的客户端,root用户是客户端上的root还是NIS服务器上的?测试 客户端----服务器的连接,使用: ypcat passwd 这样会显示出NIS服务器上的password数据,(请记住,只有在服务器上/etc/passwd文件中UID大于等于500的用户才会被放进数据库中) f) 使用useradd在客户端创建一个新的用户,然后在服务器端创建一个不同的用户,然后使用passwd设置他们的密码。 (在客户端): useradd -u 1024 localguy (在服务器): useradd -u 1025 nisuser g) 确认使用localguy能在本地登陆,nisuser能在服务器上登陆。然后使用nisuser帐号在客户端上登陆,应该是不可以的。 h) 在服务器上的 /var/yp 目录,执行make命令,当命令完成,再使用nisuser从客户端上登陆,这回应该成功了,为什么? i) 使用passwd改变nisuser的密码,是否改变了服务器上的 /etc/passwd 和 /etc/shadow 文件?NIS服务器中的文件是否改变了呢?你可以使用如下命令测试: ypcat passwd | grep nisuser j) 使用localguy登陆到客户端,是不是即时ypbind在运行仍然可以登陆? k) 当你使用nisuser登陆到客户端时,你的主目录是什么?NIS仅仅提供验证信息,不提供客户端和服务器端的文件共享机制 完成:一个从NIS服务器上获得得验证信息的客户机 任务: 1. 这个测试需要添加一个NIS用户,使用useradd命令添加一个名叫baduser的用户。 useradd –u 1026 baduser 2. 一个解决方案是使用pam_listfile,只允许nisuser访问我们的系统。打开 /etc/pam.d/system-auth ,紧接着auth开头的之后添加以下一行: account required /lib/security/pam_listfile.so item=user sense=allow 3. 假如测试目前的设置,你将会发现连root也不能登陆,所以千万不要关掉root的shell!你要创建 /etc/nisusers 然后把所有允许访问的用户添加到文件中,一行一个用户名,我们只想允许nisuser用户,所以我们的文件会非常短。 4. 现在如果你想登录到文本控制台,只有nisuser可以进入,因为其他人不在文件中,把root添加到 /etc/nisusers 中。 5. 我们的任务还是允许所有本地用户登陆的,我们可以把 passwd文件中的用户都添加到我们的列表中,但这不是最好的方法,我们可以使用PAM库中的pam_localuser来达到目的。添加以下这行到pam_localuser.so之后。 account required /lib/security/pam_localuser.so 6. 测试这样的配置,你会发现仍然只有root可以登陆,为什么呢? 7. 是因为required字段的关系,把上面添加的两行的required都改成sufficient,现在好了吧?如果改成requisite会怎么样? 8. 清理:再次运行authconfig工具,删除所有设置,并且禁用NIS。 步骤1:定位易被攻击的文件或目录 场景/故事 查找文件系统中易被攻击的文件或目录 任务: find / -type f -perm +6000 2> /dev/null > /root/stickyfiles 7. 查找任何人都可以写入的文件,把它们的名字储存在 /root/worls.writalbe.files: find / -type f -perm -2 > /root/world.writalbe.files 8. 看一下 /root/stickyfiles 和 /root/world.writable.files 有哪些文件 步骤2:使用tripwire监视文件系统的完整性 场景/故事 你决定使用tripwire来确认数据的完整性 任务: 9. 使用root登陆并且安装tripwire 的RPM包(运行下面的这个命令之前需要把server1上的共享mount到 /mnt/server1目录上): rpm –Uvh /mnt/server1/RedHat/RPMS/tripwire* 10. 看一下tripwire包中提供哪些文件和文档: rpm –ql tripwire 11. 编辑 /etc/tripwire/twpol.txt 来定义你的主机策略文件。默认的策略文件是基于Red Hat linux的everything安装,这样它就会试图监视你没有安装的文件。结果是会产生一些出错消息,这些消息可以忽略。最好的方法是删除所有你没有安装的文件。 你应该定义自己的策略,仔细看一下策略文件,删除其中你机器上没有的文件。即使是只删除一两个你没有的文件就要花很长时间。现在来添加目前没有被监视的文件,添加 /etc/samba 目录到“Critical Configuration”部分。 12. 现在你定义完了你的策略,运行 /etc/tripwire/twinstall.sh ,这个脚本将建立加密的策略、配置和密钥文件。你需要输入一些密码,一旦这些步骤完成,在 /etc/tripwire中就会有一些新的文件产生。 13. 现在来用 tripwire –init 命令来初始化tripwire的数据库 tripwire会报告很多警告,这是因为它找不到在策略文件中包含的文件,你可以忽略它们。 14. 我们来测试tripwire,需要按照以下步骤完成 a) mv /***in/ifconfig /***in/ifconfig.bak 15. 使用twprint生成一份报告,命令是这样的: twprint -m r --twrfile 是否tripwire侦测到文件变化了?tripwire 会正确侦测到 /***in/ifconfig丢失了。 mv /***in/ifconfig.bak /***in/ifconfig 即使你把ifconfig还原了,但是修改的时间已经变化了,所以tripwire将会报告错误,升级tripwire的数据库 tripwire --update --twrfile 这将会启动默认的编辑器,这样你可以同意目前的变化。完成后退出编辑器,tripwire会升级你的数据库。 16. 你可能会注意到top程序没有被监视,这个文件经常被“root kits”所替换调,所以它应该被tripwire监视,编辑 /etc/tripwire/twpol.txt,在“System Administration Programs”项中添加 /usr/bin/top 这项规则。 升级你的策略: Tripwire --update-policy /etc/tripwire/twpol.txt 完成: 步骤3:使用tmpwatch来清理临时文件目录 场景/故事 任务: tmpwatch –v –test 168 /tmp 步骤4:文件的访问控制 场景/故事 任务: touch /home/supervisor/{payroll,old.employees} 3. 防止payroll文件被删除 chattr +i /home/supervisor/payroll 4. 只允许数据附加在old.employees文件上 chattr +a /home/supervisor/old.employees 5. 确认文件的属性被更改: lsattr /home/supervisor/* 6. 试着删除payroll文件: rm /home/supervisor/payroll 你收到什么错误的信息? 7. 试着编辑old.employees文件,在保存文件时有没有错误消息?为什么会/不会这样?出错的消息是什么意思?输入以下命令: echo “foobar” >> /home/supervisor/old.employees 为什么这个命令可以工作? 完成: 步骤5:将日志集中写入一个专门的日志主机中 场景/故事 你的老板认为将所有日志写到一个专用的日志主机中是个非常好的主意 任务: 1. 首先配置syslogd可以接收远程的消息,编辑 /etc/sysconfig/syslog : SYSLOGD_OPTIONS=”-r –m 0” 2. 重启syslogd: service syslog restart 现在你的主机可以接收其他机器的消息了 3. 配置syslogd发消息给别的机器,在/etc/syslog.conf添加下面这行: user.* @stationX 在这里stationX是旁边的机器 4. 重启syslogd: service syslog restart 现在你的机器就会把用户运行的程序发给旁边的机器了 5. 使用logger创建一个syslog的消息 logger –i –t yourname ”this is a test” 这则消息是否显示在你旁边机器的 /var/log/messages中了呢? 问题:
步骤1:创建一个简单的防火墙 场景/故事 你要建立一个防火墙保护你的主机不受可疑主机192.168.0.254的骚扰,可疑的主机不只这一个,你还要创建一个规则防止你的一个邻近的主机使用ping-flooding(洪水ping)攻击你的计算机。 任务: 10. 阻止所有从邻近的主机(192.168.0.Y)的进来的连接: iptables –A INPUT –s 192.168.0.Y –m state --state NEW –j DROP 这样还是允许你打开到他们系统的连接,但不是所有的 11. 限制从你的邻居(192.168.0.X)进来的ICMP echo request(回应请求)包 iptables -A INPUT -s 192.168.0.X -p icmp --icmp-type echo-request iptables -A INPUT -s 192.168.0.X -p icmp --icmp-type echo-request 12. 显示你的防火墙策略 iptables -nl 13. 测试你的防火墙配置 14. 保存你的防火墙设置: iptables-save > /etc/sysconfig/iptables 15. 配置你的系统重启后仍保留新的防火墙规则: chkconfig --level 2345 iptables on 现在确认一下 chkconfig --list iptables 16. 重新启动确认你的策略仍在。 完成: 清理: service iptables stop
步骤1:限制特定主机对服务的访问 场景/故事 某些特定主机和特定网段比较危险,为了保护你的主机,你决定阻止它们访问你的一些敏感的服务 任务: 17. ssh可以被本地子网访问,但是不能让其他网段的用户访问。 你可以找出不同的解决方案,下一页是其中一种解决方法。 一种解决方法: 1. 安装telnet-server: rpm –Uvh /mnt/server1/RedHat/RPMS/telnet-server* 安装openssh-server: rpm –Uvh /mnt/server1/RedHat/RPMS/openssh-server* 2. /etc/hosts.deny 3. /etc/xinetd.d/telnet: 如果想侦测出cracker.org的IP地址,你可以使用host命令: host –l cracker.org server1.example.com 以上的命令查询名称服务器server1.example.com中的cracker.org区域信息,从返回的IP来看所有的记录都是192.168.1.0这个子网的。呵呵世界上的事情不可能如此简单,通常名称服务器(DNS服务器)只允许它的从服务器进行区域传递,而不会允许其他计算机这样的。所以为了保护你的安全,想知道整个区域的信息非常不容易实现。 步骤2 你已经通过配置/etc/hosts.deny限制FTP和telnet访问,现在要审核你正在运行的服务了,你需要一个搭档扫描你主机的端口。 如果你在一个可以连通到Internet的教室中,不要用nmap扫描外面的example.com域或192.168.0/24之外其他的网段,谢谢您的配合! 任务: nmap –sSUR –P0 –vO 2. 在你的主机上使用root帐户登陆,运行以下命令查看你的哪些进程正在监听着哪些端口: netstat –tulpe 主机上列出的端口与用nmap扫描的端口是否一致?如果你使用GNOME桌面环境,几个GNOME的连接端口可能会打开,退出X-window,进入运行级别3,netstat会报告相同的端口吗? 3. 现在使用chkconfig来验证你的系统,输入: chkconfig --list |grep on 你的还配置了其他你不太了解的服务了吗,使用chkconfig和ntsysv命令来关闭你不用的服务,之后从新启动,重复第二步以上的步骤,netstat还会报告你关掉的服务的端口吗? 完成:系统审核显示只有需要的服务被运行。 步骤1:使用gpg来交换加密的电子邮件 用户alice和bob希望能够安全的交换信息,使用GNU的Privacy Guard(gpg)来提供加密服务。您将建立两个用户,为他们的每个建立公钥和私钥。下一步,alice将获得bob的公钥,并且使用该公钥来加密给他的信息,bob将解密信息。 1. 建立用户 [root@localhost]# useradd alice; useradd bob 2.为每个用户建立公钥和密钥。注意到gpg第一次运行的时候,会建立缺省的初始化用户文件:当提示“…your message”,按下CTRL-C。 [alice@localhost]# gpg 您将被提示多种的密钥参数。选择缺省的选项。当询问您的细节的时候,设定真实的名称为Alice。其他的信息您随便填写。您同时将被会问及您的密码。您可以使用任何密码(但是您必须自己记得住!);或者简单的敲两下<回车>不使用密码。 对于用户bob采用相同的步骤,设定其“真实的名称”为Bobby(gpg抱怨bob太短了) 3. 检查alice的公钥和密钥,该公钥和密钥存储在pubring.gpg和secring.gpg中。 [alice@localhost]$ ls ~/.gnupg [alice@localhost]$ gpg --list-keys [alice@localhost]$ gpg --list-secret-keys 4.让bob把他的公钥放在ASCII文件中以便方便的传递给alice。接下来,让alice导入bob的公钥到她的公钥环中去。 [bob@localhost]$ gpg --export --armor Bobby > /tmp/bob.key [alice@localhost]$ gpg --import /tmp/bob.key pub 1024D/67C0F0AD 2003-09-18 Bobby 5.现在alice获得了bob公钥的副本,并且把它加入到她的公钥环中去。她可以给bob发送加密的消息。使用下面的命令步骤来使得alice发送给bob一个加密的/var/log/dmesg的副本。 [alice@localhost]$ cp /var/log/dmesg message.txt [alice@ station1]$ head message.txt.asc hQEOAzUJ6BL90Fp6EAP+J1gPH9RHQ1C+CaJGWSzUD2A603nspW2Ab+fQy7rmJbSA [alice@localhost]$ mail -s "here it is" bob 6.现在让bob检查他的邮件,保存alice的邮件到文件。如果您不熟悉邮件客户端,您可以使用一个简单的基于命令行的mail工具 [bob@localhost]$ mail [bob@localhost]$ less message_from_alice 您将被提示作为纯文本文件的文件名。使用缺省的message.txt。注意gpg自动的执行期望的动作,即,使用恰当的私钥进行解密。缺省的行为可以通过命令行的参数进行改变。 附加的步骤1的练习 1.使用gpg,使得alice能够向bob发送使用对成密钥加密的消息。 2.使得alice签署和加密消息给bob,bob需要什么其他的附加信息来验证签名 3.使得alice为她的消息建立一个拆离的签名,发送给bob消息和签名。让bob来验证拆离的签名 4.让bob签署alice的公钥,由此使得别人相信alice就是公钥的主人。 步骤2:使用ssh来进行加密的传输 alice和bob可能是不同工作站上的用户,他们希望建立等同的帐号。也就是说,alice希望访问bob的帐号而不需要输入密码,反之亦然。您将使用ssh提供如此的等同性。 在此步骤中提到的stationa指的是用户alice,然而stationb指的是用户bob。在执行此试验的时候您只需调正西医的步骤以适应您的主机名称。如果您的伙伴一起做这个试验,那么stationa和stationb指的就是您的机器的名称和他的机器的名称。如果您使用单一的机器,那么所有的机器名称将设定为localhost。 1. 确保适当的RPM软件包被安装 2.使得root帐户来确定bob机器上的sshd守护进程在运行 3.如果alice知道bob的密码,那么她可以通过ssh来访问其帐户。注意所有的和bob帐户的交互过程都是加密的,包括密码的传递。作为alice,运行如下的命令,在合适的时候提供bob的密码。 [alice@stationa]$ ssh bob@stationb ls /tmp 4. 假设alice和bob希望采用更加安全的模式,让alice建立ssh的公钥和密钥对。注意到ssh-keygen应该被-t命令行开关启动,以至于密钥是通过DSA算法生成的。让alice检视其密钥(id_dsa)和公钥(id_dsa.pub)。 [alice@stationa]$ ssh-keygen –t dsa 选择缺省的密钥位置的选项。同时,在提示的时候,通过按下 5.让alice寄给bob她的公钥的副本。让bob把这个副本保存到文件~/.ssh/authorized_keys中去。 [alice@stationa]$ mail -s "my key" bob < ~/.ssh/id_dsa.pub [bob@stationb]$ mail [bob@stationb]$ mkdir ~/.ssh; chmod 700 ~/.ssh [alice@stationa] ssh bob@stationb id [alice@stationa] ssh bob@stationb cv*** - /home/bob/ > 如果没有正确的配置的话,那么ssh仍然将会采用密码认证,并且提示alice输入密码。有几个步骤帮助您调试这种情况。首先,检查在服务器上的/var/log/messages和/var/log/secure文件以帮助您获得有用的信息。第二步,在ssh的客户端上采用-v命令行开关。这将会产生有用的调试信息。 7.对于bob也采用相同的配置,以至于其能够进入alice的帐户。 场景B alice建立了公钥认证的Shell可以访问bob的帐户。她现在要求安全的访问(基于文本的)在bob机器上的Web服务。 1. 确保在bob机器上的Web服务运行正常。如果不是,那么通过root帐号登陆bob的机器,安装并且启动apache web服务。 [alice@stationa]$ lynx http://stationb/ 2.使用ssh,使得alice连接到bob的帐户,为了达到另外一种效果,在alice的端口12345(或者其他未使用的端口)到bob的机器的Web服务器(端口80)建立一个加密的管道。 [alice@stationa]$ ssh bob@stationb –L 12345:stationb:80 (并且在另外一个终端) [alice@stationa]$ lynx http://localhost:12345/ alice将能够在步骤1和步骤2看到相同的Web页面。然而在第一步骤中,数据从Web服务器到alice的Lynx客户端是通过明文的方式发送的,这样很容易被嗅探到。在第二步中,数据包从Web服务器通过bob的ssh守护进程,通过密文的形式越过网络到达alice的ssh的客户端,并且解密和传送到alice的lynx客户端。 |
|
相关推荐 |
|
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
394 浏览 0 评论
2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
1875 浏览 8 评论
1532 浏览 0 评论
IaaS+on+DPU(IoD)+下一代高性能算力底座技术白皮书
2729 浏览 0 评论
飞凌嵌入式-ELFBOARD 常用的USB接口及其不同版本介绍第1期
1153 浏览 0 评论
66767 浏览 21 评论
嵌入式热门DIY项目:智能机器人开源资料合集(原理图、代码、论文)
68231 浏览 22 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 07:10 , Processed in 0.523745 second(s), Total 31, Slave 25 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191