计算机系统应用  2019, Vol. 28 Issue (12): 212-218   PDF    
交换机ACL在WWW服务器安全防护中的应用
单庆元, 阎丕涛, 南峰     
大连工业大学 网络信息中心, 大连 116034
摘要:为了解决服务器系统及软件自身安全设置在服务器被入侵后可被重置, 以及用于面防护的安全设备(硬件防火墙等)安全防护粒度大的问题, 通过分析WWW服务器常用的网络应用如: WWW、DNS、FTP等, 总结出各个网络应用数据流的特征, 使用动态端口固定化原则和动态管理IP固定化原则, 并据此配置服务器接入交换机ACL (访问控制列表), 并将针对于每个服务器的ACL应用于服务器连接的交换机端口, 对服务器进行点防护. 在服务器防火墙规则禁用的情况下, 服务器接入交换机ACL能够对服务器的行为进行限制, 进而保护了服务器和内网网络设备. 使用基于INTEL DPDK (数据平面开发工具)的Pktgen发包工具进行测试, 服务器接入交换机ACL能很好的过滤掉服务器发出的高并发、大流量的异常数据包, 进而保护了网络和设备.
关键词: 访问控制列表    网络服务    TCP端口    服务器防护    
Application of Switch ACL in WWW Server Security Protection
SHAN Qing-Yuan, YAN Pi-Tao, NAN Feng     
Network Information Center, Dalian Polytechnic University, Dalian 116034, China
Abstract: This study is designated to solve the problem of that server system and software’s security configurations can be reset after the server is invaded, and the network security equipment (hardware firewall, etc.) has large granularity. We analyze common network applications of WWW server, such as WWW, DNS, and FTP, summarize of the characteristics of each network application protocol, and according to the principle of dynamic port fixation and dynamic managerment IP fixation, configure the server access switch ACL, then apply each server’s ACL to the server-connected switch port, protect the server specially. When the server firewall rules are disabled, the server access switch ACL can limit the behavior of the server, thus protecting the servers and the intranet network devices. Using the Pktgen tool based on INTEL DPDK (Data Plane Development Tool) to test, ACL in the server access switch can filter the high abnormal traffic from the server and protect the network and equipment.
Key words: ACL     network service     TCP port     server protection    

统计显示, 黑客入侵主机后, 在一段时间内能够在主机上潜伏而不被发现, 在这样的情况下, 限制一台服务器在被入侵之后的行为就变得很重要. 而服务器的安全措施通常有两类: ① 服务器系统及软件本身的安全设置[1]. ② 位于服务器之外的安全设备(例如: 防火墙、应用安全网关等)的防护[2]. 由于服务器本身的安全策略在系统被入侵后有被清除的风险, 而安全设备由于价格的原因, 通常用于对一定网络区域(例如: 全部服务器或内网)的防护, 所以被入侵服务器会对安全设备保护之下的内网设备造成影响. 被入侵设备通常被当成网络入侵中继点, 去扫描其它的设备, 而扫描而形成的巨大的并发连接及网络流量通常会占用很大的出口带宽、消耗过多出口安全设备的处理性能, 形成拒绝服务攻击, 使网络处于瘫痪状态. 针对上述两种服务器防护措施的不足, 通过对服务器应用数据包的分析, 可利用交换机ACL对每台服务器的网络访问进行限制. 由于接入交换机ACL具有高效(基于硬件的过滤机制, 可达线性的流量处理)、专用(ACL可针对每个服务器设置和应用, 防护粒度小)、廉价(接入交换机价格便宜)的特点, 而且服务器无法更改交换机配置. 因此, 通过增加接入交换机ACL对服务器进行防护, 可以有效地保护服务器和降低被入侵服务器对网络造成的影响.

1 WWW服务器常用服务分析

由于交换机ACL非防火墙应用规则, 不监控网络连接所处的状态, ACL只是根据每条ACL的内容检查网络数据包, 根据规则的设置执行指定的动作. 配置及应用交换机ACL的前提是对网络应用连接的透彻分析, 总结出每个应用的访问连接的特点, 并据此编写ACL的规则. 本次试验的WWW服务器特点如下: WWW服务器的IP地址为WWW_SERVER_IP, 操作系统是WINDOWS; 使用微软的IIS提供WWW服务; 使用Filezilla提供FTP服务; 为保证服务器日志时间的准确性, 使用了NTP客户端更新系统的时钟; 安装了杀毒软件; 对管理主机开放了WINDOWS远程桌面服务.

1.1 WWW服务

在服务器端由软件服务程序(例如: 微软的IIS服务器)监听WWW服务端口(通常为TCP 80端口, 但不限于该端口), 被动的接收来自WEB客户端(通常为互联网浏览器)的连接请求, 网络连接分析如表1所示.

表 1 WWW服务的连接分析

1.2 域名解析(DNS)服务

域名解析服务[3]是一种将便于用户记忆的网络域名转换成特定IP地址的服务(例如: 将域名WWW.DLPU.EDU.CN转换成IP地址210.30.48.9). 域名解析客户端软件通常向服务器的UDP 53端口发送解析请求, DNS服务器将最终的解析结果通过该端口返回客户机. 网络连接分析如表2所示.

表 2 域名解析的连接分析

1.3 文件传输服务(随机端口固定化原则)

FTP服务[4]是常用的服务器和客户端之间传送文件的服务, FTP服务器的操作命令的传输(命令通道)和数据的传输(数据通道)是通过不同的TCP端口来进行的. 命令通道通常在TCP 21端口接收客户的命令和返回结果. 数据通道有点特殊, 分为主动模式和被动模式. 主动模式是指服务器主动通过TCP 20端口连接客户机在命令通道中指定端口进行数据传输; 被动模式是指客户机主动连接服务器指定的端口进行数据传输, 通常这些端口是有服务器随机指定的, 这使得ACL无法配置. 为了解决此问题, FileZilla FTP服务器提供了配置接口, 管理员可以指定被动模式下使用的端口范围[5]. 这可称之为: 随机端口固定化原则. 为了便于ACL配置, 设置服务器将FTP被动模式使用的随机端口固定下来, 使用TCP 20001-20010, 网络连接分析如表3所示.

表 3 文件传输服务连接分析

1.4 服务器远程维护(动态管理IP固定化原则)

服务器的远程维护对于服务器管理员来说是必须的, 通常的远程管理软件有微软自带的远程终端(WINDOWS系统)、赛门铁克公司的PC ANYWHERE (WINDOWS系统), 这些软件默认所使用的端口都是固定的, 网络连接分析如表4所示.

表 4 远程维护连接分析

管理IP地址的不固定给ACL的配置带来了困难, 如果在ACL中不限制远程管理客户机的IP地址, 管理员维护方便, 带来的问题是网络上任何终端都可以尝试登录, 这不安全. 如果限制了管理客户机的IP地址, 管理员维护便利性就会下降, 而且如果管理员换管理主机, 就需要修改ACL, 这不方便. 在这里, 可以增加一台VPN设备来解决这个问题. 管理员首先通过账号登录VPN设备, VPN设备给管理员分配一个固定的IP地址, 在ACL里限制只有该固定IP地址可以远程管理服务器, 这样管理员在任何地方都可以通过先登录VPN, 然后管理服务器了. 这可称为: 动态管理IP固定化原则. 并且只有知道VPN用户名、密码、服务器远程IP地址以及服务器的用户名、密码才能登录服务器, 安全性和便利性都可兼顾.

1.5 防病毒类软件升级服务

在服务器中也经常遇到特征库的升级问题, 例如: 反病毒库、应用特征库、垃圾邮件库等等, 如果这些特征库不升级, 那么应用服务运行的效果会差很多. 为了保障应用运行的效果, 需要配置ACL, 使得特征库能正常升级. 网络连接分析如表5所示.

表 5 反病毒软件升级服务

这里仅列出了部分常见应用的网络连接, 对于其它的服务, 可以自己完成协议分析.

2 WWW服务器ACL配置及分析

经过上面对应用协议的分析, 掌握了应用正常运行所必须开放的端口, 可以据此配置交换机的ACL, 下面是WWW服务器的交换机ACL配置实例.

2.1 WWW服务器ACL配置

本次试验所使用的交换机型号为锐捷网络的S2928G-24P, 软件版本为: RGOS 10.4(2b12)p6 Release (196987), 首先需要根据第2小节的网络连接分析, 配置一个名称为for_http的ACL, 该ACL的内容如表6所示.

表 6 ACL的内容

表6中的ACL表项的按序号解释如下: ① 定义一个名为for_http的扩展的访问控制列表; ② 允许源地址为WWW_SERVER_IP, 源端口为TCP 80, 目标地址为任意的数据包转发. 作用: 开放服务器的WWW服务; ③ 允许源地址为WWW_SERVER_IP, 源端口为TCP 21, 目标地址为管理主机IP的数据包转发. 作用: 开放服务器FTP服务的命令通道; ④ 允许源地址为WWW_SERVER_IP, 源端口范围为TCP 20001-20010, 目标地址为管理主机IP的数据包转发. 作用: 开放服务器FTP服务的被动模式数据通道; ⑤ 允许源地址为WWW_SERVER_IP, 源端口为TCP 20, 目标地址为管理主机IP的数据包转发. 作用: 开放服务器FTP服务的主动模式数据通道; ⑥ 允许源地址为WWW_SERVER_IP, 源端口为TCP 3389, 目标地址为管理主机IP的数据包转发. 作用: 允许管理主机访问服务器的远程桌面服务; ⑦ 允许源地址为WWW_SERVER_IP, 目标地址为病毒库升级服务器IP, 目标端口为TCP 80的数据包转发. 作用: 允许服务器的病毒软件进行更新病毒库; ⑧ 允许源地址为WWW_SERVER_IP, 目标地址为DNS_SERVER_IP, 目标端口为UDP 53的数据包转发. 作用: 允许服务器进行域名解析; ⑨ 允许源地址为WWW_SERVER_IP, 目标地址为NTP_SERVER_IP, 目标端口为UDP 123的数据包转发. 作用: 允许服务器进行时间更新; ⑩ 拒绝任何IP数据包转发. 作用: 除了上述指定的数据包可以转发外, 其它的IP数据包全部丢包. 注: 在配置时, 表6中的“管理主机IP”、“病毒库升级服务器IP”、“DNS_SERVER_IP”、“NTP_SERVER_IP”需要用真实的IP来替换.

最后将该访问控制列表应用于WWW服务器连接的交换机的接口的IN方向, 对WWW服务器发送的, 进入交换机的数据包进行过滤.

3 WWW服务器ACL运行分析 3.1 交换机接口入向的ACL处理逻辑流程[6]

交换机接口入向的ACL处理逻辑流程如图1所示.

图 1 IN方向的ACL流程图

图1可以看出, 当交换机的某个接口收到一个数据包之后, 交换机首先检查该接口的IN方向是否应用了ACL, 如果没有应用ACL, 那么交换机查找转发表, 将数据包转发至相应接口. 如果该接口IN方向应用了ACL, 那么进入ACL表项的比对过程. ACL实行首次匹配策略, 从第一条规则开始, 进行比对, 当数据包匹配该条规则后, 如果规则的动作是permit, 数据包会被转发, 如果规则的动作是deny, 数据包会被丢弃, 不再检查后续的规则. 如果不匹配当前的规则, 那么继续比对下一条规则, 直至最后的默认规则. 每个IP数据包肯定会匹配一条规则, 因为每个ACL最后会有一条默认规则, 该规则匹配任何的IP数据包, 匹配后的动作是丢弃数据包.

3.2 交换机ACL对服务器及内网设备的保护分析

很多的情况下, 由于管理不善, 服务器管理员随意地使用服务器去浏览互联网的资源、安装与服务无关的应用, 导致服务器运行缓慢, 甚至崩溃. 使用表6的交换机ACL可以禁止服务器访问互联网的应用和资源. 原理如下: 当用户使用服务器访问某个网站时(这里以WWW.BAIDU.COM为例), 由于ACL第8条规则的作用, 服务器可以成功的把域名转换成IP地址(域名WWW.BAIDU.COM对应的IP地址为: 119.75.216.20), 然后服务器上应用(例如: 浏览器)发送一个TCP连接状态请求的数据包, 数据封包的源IP为WWW_SERVER_IP, 目标地址为119.75.216.20, 源端口随机生成, 现假设为TCP 1850, 目标端口为TCP 80, 同时TCP连接标志TCP Flags中的SYN位置为1, Sequence Number为x; 然后, 服务器进入SYN_SEND状态, 等待119.75.216.20的确认. 当交换机接收到该数据包时, 进入IN方向的ACL检查过程, 由于ACL的2-9项都不能匹配该数据包, 则匹配所有IP数据包的第10项匹配成功, 该数据包被丢弃. 所以IP为119.75.216.20的服务器不会收到WWW服务器的连接请求, 而WWW服务器更不会收到连接响应, 最终该连接因超时而失败. 由于服务器无法访问互联网资源, 无法使用与服务无关的联网应用, 因此服务器的安全性会有很大提升.

成功入侵服务器后潜伏下来黑客, 会利用被入侵的服务器作为中介, 去扫描内网的设备, 以获取内网设备信息, 或者操控服务器进行DDOS攻击. 在服务器上使用网络扫描软件对内网进行扫的数据包和服务器对外的DDOS攻击的数据包也会因为只能匹配ACL的第10项而被丢弃, 所以很好地保护了内网的设备安全.

另外, 访问控制列表一般由交换机芯片中的TCAM[79]来实现, 可实现过滤条件下线速转发, 交换机ACL能把从服务器发出的大流量、高并发的恶意扫描数据包过虑掉, 且不影响正常的数据转发.

4 基于INTEL DPDK和PKTGEN工具的测试

为了测试交换机ACL在大流量、高并发的数据流量下的处理情况, 使用基于INTEL DPDK[10,11]的PKTGEN的软件进行模拟的发包测试, DPDK使用用户态的网卡驱动、轮询(polling)模式、内存大页等多种技术[12,13]极大提升了系统的包处理速率. 本次测试使用的软件为: dpdk-stable-18.02.tar.gz, pktgen-dpdk-pktgen-3.5.0.tar.gz下载地址是: https://git.dpdk.org/, 本次测试使用的设备配置如表7所示.

表 7 测试设备配置信息

测试拓扑如图2所示.

图 2 测试拓扑

软件的安装请参考https://www.dpdk.org/, DPDK和pktgen安装完成后, 通过以下命令配置运行环境并启动发包测试:

echo 1024 >

/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages注: 设置内存大页

mkdir /mnt/huge/

mount -t hugetlbfs nodev /mnt/huge/

modprobe uio注: 加载用户空间IO模块

insmod /root/dpdk/lib/modules/3.10.0-862.el7.x86_64/extra/dpdk/igb_uio.ko注: 加载UIO网卡驱动

/root/dpdk/share/dpdk/usertools/dpdk-devbind.py –status注: 查看系统中网卡状态

/root/dpdk/share/dpdk/usertools/dpdk-devbind.py -b igb_uio 0000:02:00.0

cd /root/pktgen-dpdk-pktgen-3.5.0

注: 进入pktgen安装目录

/root/pktgen-dpdk-pktgen-3.5.0/app/x86_64-native-linuxapp-gcc/pktgen-c f --master-lcore 0 -n 4 -m 1024 --proc-type auto --file-prefix pg -- -m"1.0"

注: 运行软件

set 0 type ipv4

注: 设置0号网卡发送IPV4数据包

set 0 proto udp

注: 使用UDP协议 默认源端口: 1234 目的端口: 5678

set 0 count 0 注: 不间断发包

set 0 size 64 注: 包大小为64字节

set 0 pattern none注: 不指定包填充模式

set 0 dst mac d8:c4:97:93:5a:6a

注: 设置发包的目的为笔记本电脑mac地址

set 0 src ip 192.168.1.1/24

注: 设置发包的源IP地址

set 0 dst ip 192.168.1.250

注: 发包的目的为笔记本电脑IP地址

set 0 rate 100 注: 发包速率, 满负荷发包

start 0 注: 启动0号网卡发包

发包开始之后, 通过交换机的命令show cpu; show memory; show interface counters rate分别查看交换机CPU的使用率、内存的使用率、G0/14接口和G0/20接口的收发包的统计数据(5分钟均值). 从发包开始, 以上命令总共运行了313次, 第254次命令运行后(图中箭头所指处), 在G0/14接口的IN方向应用如下的访问控制列表:

ip access-list extended for_http

permit tcp host 192.168.1.1 eq 80 any

permit tcp host 192.168.1.1 eq 21 host 192.168.1.100

permit tcp host 192.168.1.1 range 20001 20010 host 192.168.1.100

permit tcp host 192.168.1.1 eq 20 host 192.168.1.100

permit tcp host 192.168.1.1 eq 3389 host 192.168.1.100

permit udp host 192.168.1.1 host 192.168.1.7 eq 53

permit udp host 192.168.1.1 host 192.168.1.24 eq 123

deny ip any any

交换机的上述3个show命令的输出数据如图3.

图 3 交换机接口流量及资源利用率

图3的左边(中间)分别是G0/14接口收包速率(收包流量)和G0/20接口的发包速率(流量)的统计, 单位为PPS (bps), 在PC机启动发包测试后, G0/14接口收包速率(收包流量)和G/20接口发包速率(发包流量)从0开始, 经过快速上升后, 在150万PPS (783M bps)和168万PPS (860M bps)之间波动, 且在箭头所指点之前, G0/14接口的收包速率(收包流量)和G0/20接口的发包速率(发包流量)是同步的, PC发送给笔记本的数据都被交换机正常转发了. 在箭头所指处, 由于在G0/14接口的IN方向应用了访问控制列表, G0/20接口的输出迅速降为零, 尽管此时PC机依旧不停地发包. 由于交换机的查看命令输出的是5分钟均值, 所以在图中可以看到一个下降过程, 实际上当应用访问控制列表后, 笔记本就不再收到PC机发送的数据包了. 图3的右边是交换机资源的利用率, 在访问控制列表应用前后, 交换机CPU和内存的使用无任何变化.

5 结论

服务器接入交换机在网络防护中有着重要的作用, 在接入服务器交换机上ACL可以单独针对特定服务器配置. 通过对应用及协议进行透彻的分析, 总结出规律, 使用动态端口固定化原则和动态管理主机IP固定化原则, 可以将一些服务中不固定的参数固定下来. 另外在管理主机IP地址固定化时需要VPN设备, 这需要一定的费用, 因为在特定的科技条件下, 安全性、便利性和经济性往往不可兼得, 只能根据需求在每个方面进行取舍. 另外本次实验中, 只是对服务器发出的数据包进行控制, 网络上其它主机发送给服务器的数据包还是能够正常转发至服务器, 如果恶意主机给服务器发送大量的或者是异常的数据包, 并且服务器主机防火墙设置不合理, 可能会造成服务器异常. 对于这种情况, 可以在交换机上同时对服务器IN和OUT方向的数据包进行过滤, 这样只有客户机正常的服务请求数据包才能发送至服务器, 不足之处就是消耗了较多的交换机ACL资源.

参考文献
[1]
陈彬. 互联网服务器攻防秘笈. 北京: 化学工业出版社, 2011.
[2]
张丹东. 多手段防护WEB安全. 中国教育网络, 2017, (6): 25–26.
[3]
Albitz P, Liu C. DNS and BIND. 5th ed. Sebastopol, CA: O'Reilly, 2001.
[4]
谢希仁. 计算机网络. 5版. 北京: 电子工业出版社, 2008.
[5]
Filezilla Project. Network configuration. https://wiki.filezilla-project.org/. [2017-05-01].
[6]
Ruijie Corporation. ACL与包过滤. http://www.ruijie.com.cn/. [2017-07-21].
[7]
刘中金, 李勇, 苏厉, 等. TCAM存储高效的OpenFlow多级流表映射机制. 清华大学学报(自然科学版), 2014, 54(4): 437-442.
[8]
费宁, 陈春玲, 毛燕琴. ASIC芯片OpenFlow交换机设计与实现. 北京邮电大学学报, 2016, 39(6): 93-98.
[9]
Huawei Corporation. Huawei CloudEngine系列交换机_ACL技术专题. http://support.huawei.com/onlinetoolweb/dataCommunication/zh/DC/technology.html. [2018-11-07].
[10]
朱可清, 梁存铭, 胡雪焜, 等. 深入浅出DPDK. 北京: 机械工业出版社, 2016.
[11]
Dpdk project charter. https://www.dpdk.org/. [2018-05-01].
[12]
任昊哲, 年梅. 基于DPDK的高速数据包捕获方法. 计算机系统应用, 2018, 27(6): 240-243. DOI:10.15888/j.cnki.csa.006388
[13]
李霞, 李虎, 甘琤, 等. 服务器中高性能网络数据包处理方法的对比研究. 计算机应用与软件, 2017, 34(11): 177-183. DOI:10.3969/j.issn.1000-386x.2017.11.033