关键词:
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
、百度搜霸、易趣工具条、划词搜索、搜狗等这样的流氓软件,因为它们不但会监视客户输入,还会自动打开一些端口方便病毒进入。