gyn

Win32下的Perl,无用的select,停滞的Tk,结束吧....

采编系统客户端网络的改造

采编系统客户端网络的改造  


关键词:
postgresql
数据库, vlan acl ,三层交换,路由

   

       台内稿件的编写、审查、定稿等都依赖于采编系统,而由于未考虑到安全问题,采编系统客户端网络被建立在公共网段中。最近,系统内部几次 arp 病毒攻击使得整个采编系统多次瘫痪,严重影响到了工作的顺利开展。为了解决一系列的问题,我在现有网络的基础上,对其作了一些改造来达到安全工作的目的。  

 

 

信息数据库的架构

       建立用户信息数据库的目的是为了更易于管理,同时也可以快速定位病毒源。为此,采集了用户姓名、办公室编号、电脑 mac 地址、网线井道端口编号等基本信息,利用 postgresql8.1 数据库管理软件,将它们有机地结合起来。

 

1 :在 postgresql8.1 中建立基本信息表

 

ü         交换机分布表: net_top

ü         办公室与井道端口对应表: net_port

ü         电脑 mac 地址表: net_mac_addr

 

建立的代码如下:

create table net_top(switch_pos int, floor int);

create table net_port(room int primary key, port1 int default 0, port2 int default 0);

create table net_mac_addr(room int references net_port(room),

mac_addr varchar(30) unique check (mac_addr ~ '^(00)[0-9A-F]{10}$'),

ip_addr varchar(30) check (ip_addr ~ '[0-9]{3}(\.[0-9]{1,3}){3}$'),

owner varchar(20)

);

create view net_room_view as

select * from net_top t left outer join net_port p

on (p.room/100=t.floor or p.room=t.floor);

create view net_owner_view as

select n.room, n.mac_addr, n.ip_addr, n.owner, p.port1, p.port2

from net_mac_addr n left outer join net_port p

on (n.room=p.room);

 

将以上代码存在 'E:\dbase_related\net_mgr.sql' 中,然后在命令行中执行

psql -U postgres -f e:\dbase_related\net_mgr.sql

输入登陆密码之后就建立了 3 张基本信息表。为了方便查询,同时也建立了 2 张视图

ü         楼层井道分布图 net_room_view

ü         用户详细资料图 net_owner_view

 

通过 \dp 命令就能显示已建立的表和视图了。


 

2 :基本信息的采集

 

井道的分布信息可以在大楼布线资料中找到,但用户的基本信息却不得不挨个收集。

为了提高效率,利用 perl 编写了信息采集软件。该软件分为服务器端和客户端两部分,是利用端口为 2345 udp 协议通信的。

 

服务器端软件的代码:

$in_buffer=undef;

$PF_INET=2;

$port=2345;

$local_addr=pack('SnC4x8',$PF_INET,$port,192,168,138,228);

$SOCK_DGRAM=2;

 

socket(UDP_SERVER,$PF_INET,$SOCK_DGRAM,getprotobyname('udp')) or die("$!");

bind(UDP_SERVER,$local_addr) or die("$!");

listen(UDP_SERVER,100);

 

print("waiting for connection...\n");

$count=0;

 

while(1){

       print $count." connection..\n";

       $count++;

       if(recv(UDP_SERVER,$in_buffer,100,0)){

              open(FILE,'>>e:/mac_addr.txt');

              chomp($in_buffer);

              print FILE $in_buffer."\n";

              close FILE;   

       }

       else{next;}

}

 

close(UDP_SERVER);

 

客户端的软件代码:

@stack=();

$mac_addr=undef;

$ip_addr=undef;

 

print(' 请输入您的办公室门牌号码: ');

$room_num=<STDIN>;

chomp($room_num);

 

print(' 请输入您的姓名拼音: ');

$name=<STDIN>;

chomp($name);

 

open(FOO,'-|',"ipconfig -all");

 

while(<FOO>){

       chomp();

       if($_=~s/(.*)(00(\-[0-9A-Z]{2}){5})(.*)/$2/){

              $mac_addr=join('',split(/-/,$_));

       }

       if($_=~/IP Address/){

              $_=~s/(.*)([0-9]{3}(\.[0-9]{1,3}){3})(.*)/$2/;

              $ip_addr=$_;

       }

}

 

close FOO;

 

push(@stack, $room_num);

push(@stack, $mac_addr);

push(@stack, $ip_addr);

push(@stack, $name);

$out_buffer=join("\t",@stack);

print $out_buffer."\n";

 

$PF_INET=2;

$port=2345;

$remote_addr=pack('SnC4x8',$PF_INET,$port,192,168,138,228);

$SOCK_DGRAM=2;

socket(UDP_CLIENT,$PF_INET,$SOCK_DGRAM,getprotobyname('udp'));

send(UDP_CLIENT,$out_buffer,0,$remote_addr);

close(UDP_CLIENT);

 

exit;

 

将以上代码编译得到两个软件分别是: net_mgr_serv net_mgr_cli 。在服务器上运行 net_mgr_serv 用于收集来自客户端的基本信息;在客户端上运行 net_mgr_cli ,然后按照提示输入办公室编号和本人姓名拼音,该程序将自动收集客户端 mac ip 地址,并将它们与用户的输入信息捆绑发送到服务器上。

 

 

3 :信息的输入

       在这里使用了大量的 copy 命令,来实现快速输入。 Copy 命令是 postgresql 特有的快速输入技术,它的执行效率比普通的 insert into 命令高 30 %- 50 %,但缺点是每个字段必须要有确切内容,即便设置了缺省值, postgresql 也会在遇到 null 值时中断 copy 并回滚整个事务。

使用方法如下:

copy 数据表 from 系统文件;

如:

copy net_mac_addr from ‘e:/mac_addr.txt’;

这样就把从客户端收集来的数据加入到数据库中了。

 

 

三层交换机的配置

由于涉及到采编系统的电脑有将近 80 多台,所以为了减轻原有的三层交换机的压力,同时也是为了更加便于管理,新增加了一台华为 s3526e 三层交换机。

为实现采编系统客户端网络的安全、正常工作,将在新的华为 s3526e 交换机上实现如下功能:

ü         客户端 vlan (虚拟局域网)的建立

ü         建立自动分配客户端网络 ip 地址的 dhcp 服务器

ü         客户端网络与采编系统服务器区及代理服务器的互通、与公共网段的隔离

ü         在客户端网络阻止外来私人电脑的随意接入

ü         绑定特定电脑的 ip 地址

 

在此之前,先要配置管理员 telnet 连接的密码。

用配置线连接电脑的 com 口和 交换机的 aux 口,在电脑上启动超级终端,然后接上交换机电源,再过 2 分钟左右,就进入了配置界面,为交换机取了个 gyn_001 的名字,同时设置高级模式 3 的密码为 wahaha ,设置 telnet 接入密码为 wahaha

打入如下命令:

super
sys
super password simple wahaha
sysname gyn_001
user-interf vty 0 4
authentication-mode passw
set authentication passw simple wahaha

quit

 

1 :客户端网络 vlan (虚拟局域网)的建立

       vlan 的建立是,是网络安全的前提,它可以有效地阻止外来广播。

具体的配置:

vlan 100

quit

interf   v 100

ip addr 192.168.100.65 255.255.255.0

quit

这样就建立了一个三层地址为 192.168.100.65 vlan 100

 

2 :建立自动分配客户端网络 ip 地址的 dhcp 服务器

       当然也可以手工配置每台电脑的 ip 地址,不过这样会大大增加管理员的工作量,而且在网络规模较大的情况下效率十分低下,最重要的是极可能产生 ip 地址冲突。原来的华为 s3526e 交换机没有 dhcp server 的功能,也就是说,不得不再添加一台服务器来运行 dhcp 服务,但最新的同系列产品集成了此项功能,更有意思的是还增加了 am user-bind 绑定功能。考虑到它的价格,的确是一台性价比较好的三层交换机。

       dhcp server 的配置如下:

dhcp ena

interf  v 100

dhcp select interf

短短三行命令,就实现了 vlan100 内部 ip 地址的自动分配、

 

3 :客户端网络与采编系统服务器区及代理服务器的互通、与公共网段的隔离

       首先在两台交换机之间建立 trunk 连接,然后分别建立到采编系统服务器区和代理服务器的静态路由,这样就使网络互通,同时由于没有到公共网段的路由,交换机将丢弃发向该网段的包。

       具体配置如下:

gvrp

vlan 500

quit

interf v 500

ip addr 192.168.65.21 255.255.255.240

quit

interf e0/1

port link-type trunk

port trunk permit vlan all

gvrp

quit

ip route-static 192.168.6.0 255.255.255.0 192.168.65.25

ip route-static 192.168.0.200 255.255.255.255 192.168.65.25

 

4 :在客户端网络阻止外来私人电脑的随意接入

       采编系统客户端网络的一个重要的安全属性就是不允许私人电脑的随意接入。这可以通过创建 acl (访问控制列表)来实现。

acl name net-forb-e2 link

rule 0 deny ingress interf e0/2 egress any

quit

packet-filter link-group net-forb-e2

以上的命令将封锁交换机 e0/2 端口,接着将在此基础上开放工作电脑

acl name net-mgr-e2 link

rule 0 permit ingress 0011-5b99-ed36 0-0-0 egress any

rule 1 permit ingress 000d-4c4c-5b19 0-0-0 egress any

quit

packet-filter link-group net-mgr-e2

 

5 :绑定特定电脑的 ip 地址

       对特别重要的客户端电脑进行 ip 绑定使很有必要的,一来可以防止 ip 地址盗用情况的发生,二来可以在代理服务器上就其特殊的要求进行设置。

       绑定的方法有两种: am 绑定法、 acl 绑定法。前者的优点是配置简单,但缺点是资源利用率较大、绑定数量上限较低;后者则恰恰相反。

       am 绑定法:

am ena

am user-bind ip_addr 192.168.100.2 mac_addr 0011-5b99-ed36

       acl 绑定法

acl number 1

rule 0 permit source 192.168.100.2 0

quit

acl number 200

rule 0 deny ingress 0011-5b99-ed36 0-0-0 egress any

rule 1 permit ingress 0011-5b99-ed36 0-0-0 egress any

quit

packet-filter link-group 200 rule 0

packet-filter ip-group 0 rule 0 link-group 200 rule 1

       有必要将 acl 绑定法的关键解释一下:

ü         1 号基本 acl 中定义了一条允许源 ip 地址为 192.168.100.2 的包通过的规则

ü         200 号链路 acl 中定义了链条规则,分别为允许和阻止源 mac 地址为 0011-5b99-ed36 的包

ü         首先,下放 200 acl 的阻止规则,再同时下放 1 acl 200 acl 的允许规则

ü         交换机检查试图通过它的包,如果与那条后下放的规则匹配(也就是来自 ip 地址为 192.168.100.2 mac 地址为 0011-5b99-ed36 的包)就放行;不然交换机就拿早先下放的规则与该包比较,如发现匹配(也就是来自 ip 地址不是 192.168.100.2 mac 地址是 0011-5b99-ed36 的包)就阻止该包通过。

ü         用户端的表现就是:如果擅自改动 ip 地址就会无法连接网络。  

 
 

对客户端网络用户的要求

       再安全的网络如果没有用户的配合,一切都没有意义。比如因为上网行为不检点,滥用 qq 等不安全的即时通信工具, vlan 内部随意共享文件夹等。虽然可以通过各种手段,可以对不安全的行为进行一定的控制,但这也只是拆东墙补西墙的办法,而且管理过于苛刻会影响工作效率。下面针对以上情况提出几点安全上网的意见:

ü         不随意打开陌生的网站或链接,尤其是一些不健康的网站。

ü         不随意在 qq 中打开网友发过来的文件或邀请参观的网站。

ü         不随意打开陌生邮件中的附件,应直接删除。所有附件在打开前要用最新的杀毒软件扫描。

ü         如使用私人杀毒软件应定期更新。

ü         不随意开放共享文件夹,如一定要开放,则必须在应用完毕后立即关闭共享。

ü         删除一切类如网络猪、中搜、 3721 、百度搜霸、易趣工具条、划词搜索、搜狗等这样的流氓软件,因为它们不但会监视客户输入,还会自动打开一些端口方便病毒进入。

posted on 2006-06-02 16:23 gyn_tadao 阅读(371) 评论(0)  编辑 收藏 引用 所属分类: plsqlDatabase

只有注册用户登录后才能发表评论。
<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿(15)

随笔分类(126)

随笔档案(108)

相册

搜索

最新评论

阅读排行榜

评论排行榜