服务器的安全包括以下几个方面:首先,物理方面的安全,包括供电稳定、服务器存放环境(温度、湿度、防火、防盗等);其次,服务器操作系统方面安全,包括选用操作系统的内核是否可靠,以及今后该操作系统的补丁升级服务等;第三,服务器配置的安全,包括配置文件本身是否合理,配置文件是否会被该服务器管理员以外的用户修改或删除等。
定期对操作系统打补丁
我们可以把服务器设置成“自动更新”的状态,这样CentOS系统就能进行自动更新,并默认安装yum-updatesd软包。CentOS系统在启动过程中就会运行yum-updatesd进程,该进程就会读取/etc/yum/yum-updatesd.conf文件。
yum-updatesd.conf文件的内容如下:
[main]
# 设置检查更新的时间间隔(单位为秒)
run_interval = 3600
#设置检查更新的最小时间间隔(单位为秒)
updaterefresh = 600
#设置如何发送更新通知(有效值: dbus, email, syslog)
emit_via = dbus
# should we listen via dbus to give out update information/check for
# new updates
dbus_listener = yes
# 设置是否自动安装更新
do_update = yes
#设置是否自动下载更新
do_download = no
#设置是否自动下载有依赖关系的更新
do_download_deps = no
除了以上的办法之外,我们还可以在相关网站上根据需要下载更新包进行补丁升级。
域名服务器的查询限制
我们一般仅允许定义的IP地址提供其他域名和本域名的查询,除此之外,对其他IP只提供本域名的查询。这样做的目的是为了最大限度地减少非本单位IP使用本域名服务器对其他域名的查询,以保证本单位用户解析的响应速度和该域名服务器的安全。
域名服务器的配置文件named.conf的具体代码如下:
options {
directory "/var/named";
allow-query {"IP地址/掩码位数";或者"文件中定义的变量名";}; //指定IP可以在此DNS上查询其他域
allow-transfer {"slaves";};
};
controls {
inet 127.0.0.1 allow {localhost;};
};
zone "."{
type hint;
file "db.cache";
};
zone "wdfx.edu.cn" {
type master;
allow-query {"any";}; //允许任何IP查询本域
allow-transfer {"slaves";};
};
……
禁止未授权的名字服务器更新本名字服务器
在实践中,网管人员可以通过两种办法来限制未经授权的名字服务器更新本名字服务器,具体如下:
1.设定可以传递区域数据授权服务器IP,named.conf具体代码如下:
//定义可以传输区数据服务器的地址
acl "slaves"{125.220.48.18/32;…};
options {
directory "/var/named";
allow-query {"IP地址/掩码位数"; 或者 "文件中定义的变量名";};
allow-transfer {"slaves";}; //引用定义传输区数据服务器
};
controls {
inet 127.0.0.1 allow {localhost;};
};
zone "."{
type hint;
file "db.cache";
};
zone "wdfx.edu.cn" {
type master;
allow-query {"any";}; //允许任何IP查询本域
allow-transfer {"slaves";};
};
……
include "/etc/named.conf.acl"//文件存放路径
2.TSIG(Transaction Signatures)主要针对区传输进行保护,用密码方式为传递的信息加密以保证DNS更新信息数据的安全,生成rndc.key办法/usr/sbin/rndc-confgen > /etc/rndc.conf。
在主域名服务器named.conf里加上rndc.key,并在该配置文件中用include命令来指定文件存放路径。
在配置前,我们必须把主域名服务器(master DNS)和辅域名服务器(slave DNS)进行时间同步,否则可能会造成区数据传输失败的情况发生。我们使用ntp工具进行服务器时间同步。
具体配置步骤如下:
步骤1:执行dnssec-keygen functon生成密钥,一个是公钥(Public Key)文件,另一个是私钥(Private Key)文件:
dnssec-keygen –a hmac-md5 –b 128 –n HOST zone-xfr-key
步骤2:在主域名服务器和辅域名服务器的named.conf中设定使用TSIG密钥:
controls {
inet 127.0.0.1 allow { localhost;} keys {"rndckey";};
};
Include "/etc/rndc.key";
TSIG可以确认DNS的信息是由特定DNS服务器提供的。因此,通过TSIG应用于域名服务器间的区数据传送,可以确保数据不被篡改。
第一种办法不能阻止攻击者利用IP欺骗其他备用的DNS服务器来进行非法区数据传输。而TSIG技术能有效防范这种情况发生,因此,我们更多的是采用第二种办法。
防火墙配置
在Linux下,我们利用ip-tables,允许指定的IP地址登录该名字服务器,并打开DNS服务的端口,DNS使用的是TCP/IP协议端口(DNS tcp、udp53端口),以便实现对防火墙的配置。
防火墙的配置文件是rc_firewall,网管人员可以在rc.local文件中指出存放rc_firewall的路径,用chmod命令给文件rc_firewall设定744的权限,同时也给rc.local文件设定755的权限。
具体配置如下:
#清除所有规则
iptables -F
#打开tcp、udp等于53端口
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
#允许下列IP登录该DNS 服务器操作
iptables -A INPUT -p tcp --syn -s 192.168.100.20/32 --dport 22 -j ACCEPT
#关闭所有除上面定义外的端口
iptables -A INPUT -p tcp --syn -j DROP
)
隐藏BIND版本
攻击者通过命令获取BIND版本号后,可以利用该版本的一些漏洞进行攻击。因此,隐藏版本号是一种防止攻击者直接获得该服务器漏洞的好方法。
我们只需要在named.conf中加入以下代码就可以屏蔽DNS服务器的BIND版本号。
options {
version “unsupported on this platform”;
};
当有人获取BIND版本信息时,显示的信息为“unsupported on this platform”。
除了以上介绍的方法之外,我们还可以通过监控软件如MRTG等监控DNS流量,并找出异常流量的来源。也可以按管理员的需要配置域名服务器日志,通过分析日志找到发生故障的原因。
(作者单位:1为武汉大学东湖分校网络中心,2为廊坊师范学院网络中心)
来源:《中国教育网络》2009年09月刊
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。