阅读内容

Linux操作系统下实现对非法IP的封杀

[日期:2008-07-23] 来源:Linux公社  作者:Linux整理


  接下来通过DHCP服务器得到合法用户的IP与MAC地址匹配表(即合法用户表),假设是valid.arp文件。编写一个脚本一行一行地读取该表,每得到一个IP地址记录,就在前面生成的arp文件中查找同样的IP。如果找到的话,那么就用valid.arp中该IP的MAC地址替换arp文件中该IP的MAC地址。valid.arp文件可能像下面这样:   

  10.0.0.2 00e00a0f1d2c   ...

  10.0.1.25 00e0b2c3d5c1   ...

  查找替换脚本为replace,内容如下:   

  #!/bin/bash

  # 定义并初始化三个变量,分别是合法用户表、全局表和作交换用的表

  validArp=valid.arp

  globalArp=arp

  tmpArp=tmp.arp  

  count=1

  # 371是合法用户的总数,也就是valid.arp表的记录数,然后加1

  while (( count < 371 ))

  do

  #“ sed -n‘“$count”p’$validArp”命令将每次打印valid.arp文件中的第$count个记录

  # 例如,当$count=1的时候,该命令将打印: 10.0.0.2 00e00a0f1d2c2

  # eval $getValid将会执行$getValid变量所包含的语句,并将结果赋给变量$curRec

  getValid=“sed -n‘“$count”p’$validArp”

  curRec=‘eval $getValid’

  # echo $curRec   awk‘{print }’命令将打印$curRec内容的第一个字段,也就是IP地址

  # 然后我们将这个IP地址赋值给$curIP变量

  getIP=“echo $curRec awk‘{print $1}’”

  curIP=‘eval $getIP’

  # 这样我们就得到了合法用户的IP及IP和MAC地址对,接下来是最关键的一步

  # 下面两条语句在全局表中查找与得到的IP匹配的项目,找到后就在该记录后面添加合法用户的IP

  和MAC地址对,然后删除旧的非法IP和MAC地址对,并将结果存入一个新的文件tmp.arp

  replace=“sed -e‘/$curIP>/a $curRec’ -e‘/$curIP>/d’$globalArp >$tmpArp”

  eval $replace然后用新的文件覆盖全局表文件,并将计数器加1,供下次循环

  cp -f $tmpArp $globalArp

  let count+=1

  done   

  到此脚本结束。需要注意的地方有两个:第一,所有包含“eval”命令的语句,使用的都是反引号,也就是通常位于Tab键上面的那个引号,这样变量才能得到语句执行的结果,而非语句本身;第二,如果出现变量和其它字母在一起的情况,用双引号将变量包含,否则会出现错误的变量名,例如下面这条语句:   

  getValid=“sed -n‘“$count”p’$validArp”   

  如果不用双引号把变量$count包起来,Shell会认为用户的变量是$countp,而不是$count。   

  在执行完replace后,再查看arp文件,会发现其中所有在valid.arp文件中存在的IP和MAC地址对,其中的初始化MAC地址已被替换为正确的MAC地址。   

  最后,将得到的arp文件拷贝为/etc/ethers,在系统启动时运行“arp -f”,就可以实现IP和MAC地址匹配了。  

  总结  

  通过这件事不难发现,Linux继承了Unix的优秀传统,具备强大和完善的系统管理方法。只要用户掌握一些常用的命令与工具,就可以极大地提高系统管理效率,降低管理的工作强度。学习和掌握这些方法,是每个合格的Linux系统管理员都应该做到的。

上一页12  GO



相关资讯       Linux安全 
本文评论       全部评论
发表评论
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款


点评: 字数
姓名:

L
I
N
U
X


GOOGLE搜索
Google