如何设置IPS(入侵防御系统)在Fedora 17上
Vuurmuur是一个linux防火墙经理。 它需要一个人类可读的规则语法,并将其转换为适当的iptables命令。 它支持日志浏览,流量整形,连接杀死等很多功能。 Suricata是一个相对较新的网络IDS / IPS。 它是多线程的性能,支持IDS和IPS模式,可以从HTTP流中提取文件,并具有很多其他功能 。
Fedora 17在其存储库中包括Vuurmuur和Suricata。 在本文中,我将介绍如何使用Fedora软件包获取功能性IPS。
安装Vuurmuur和Suricata
通过“yum”安装Vuurmuur和Suricata:
yum install suricata Vuurmuur-daemon Vuurmuur-tui
在IDS模式下运行Suricata
由于IPS会阻塞流量,因此配置错误,建议首先在被动IDS模式下进行测试。
我们正在获得针对Suricata优化的免费新兴威胁 IDS规则,并将其设置在/ etc / suricata / rules /
cd /etc/suricata/
curl -O https://rules.emergingthreatspro.com/open/suricata/emerging.rules.tar.gz
tar xzvf emerging.rules.tar.gz
ln -s /etc/suricata/rules/reference.config /etc/suricata/reference.config
ln -s /etc/suricata/rules/classification.config /etc/suricata/classification.config
cp /etc/suricata/rules/suricata-1.2-prior-open.yaml /etc/suricata/suricata.yaml
测试Suricata:
suricata -c /etc/suricata/suricata.yaml -i eth0
让它运行几分钟,并检查/var/log/suricata/stats.log
和/var/log/suricata/http.log
以确认事情的工作。 确保产生一些流量,例如打开浏览器并访问您最喜欢的站点。
在IPS模式下运行Suricata
为了确保Suricata可以检查流量,需要设置iptables以将流量传递给Suricata。 我们正在使用Vuurmuur来管理防火墙。
打开vuurmuur_conf
,转到“规则”并添加具有以下属性的新规则:
accept service any from any to any log
规则如下:
接下来,为了启动Vuurmuur服务,我们需要为其配置添加一个界面。
转到“Interfaces”并添加一个新的界面,然后将其命名为您喜欢的。 在设备中添加“eth0”:
完成后,退出vuurmuur_conf
。
为了使Vuurmuur的日志记录正常工作,我们需要调整rsyslog配置。 编辑/etc/rsyslog.conf
并添加:
*.debug /var/log/debug
关闭文件并重新启动rsyslog
以实现更改:
service rsyslog restart
我们现在可以开始Vuurmuur:
service vuurmuur start
确保Vuurmuur开始启动:
systemctl enable vuurmuur.service
打开vuurmuur_conf
,转到logviewer并检查流量是否流经:
如果这一切都很好,我们可以将交通交通Suricata进行深入检查。
首先,将vuurmuur中的规则更改为:
nfqueue service any from any to any
规则如下:
这将通过所有流量到Suricata。
然后在vuurmuur_conf中“应用更改”,这将自动更新防火墙。 日志视图现在将显示:
然后,开始suricata:
suricata -c /etc/suricata/suricata.yaml -q0
打开浏览器,检查流量是否流动。 打开/var/log/suricata/stats.log
和/var/log/suricata/http.log
,看看事情是否按预期工作。
stats.log:
------------------------------------------------------------------- Date: 10/8/2012 -- 17:20:08 (uptime: 0d, 01h 39m 02s) ------------------------------------------------------------------- Counter | TM Name | Value ------------------------------------------------------------------- decoder.pkts | Decode1 | 3147 decoder.bytes | Decode1 | 1453192 decoder.ipv4 | Decode1 | 3147 decoder.ipv6 | Decode1 | 0 decoder.ethernet | Decode1 | 0 decoder.raw | Decode1 | 0 decoder.sll | Decode1 | 0 decoder.tcp | Decode1 | 2426 decoder.udp | Decode1 | 589 decoder.sctp | Decode1 | 0 decoder.icmpv4 | Decode1 | 0 decoder.icmpv6 | Decode1 | 0 decoder.ppp | Decode1 | 0 decoder.pppoe | Decode1 | 0 decoder.gre | Decode1 | 0 decoder.vlan | Decode1 | 0 decoder.avg_pkt_size | Decode1 | 461.770575 decoder.max_pkt_size | Decode1 | 1492 defrag.ipv4.fragments | Decode1 | 0 defrag.ipv4.reassembled | Decode1 | 0 defrag.ipv4.timeouts | Decode1 | 0 defrag.ipv6.fragments | Decode1 | 0 defrag.ipv6.reassembled | Decode1 | 0 defrag.ipv6.timeouts | Decode1 | 0 tcp.sessions | Decode1 | 76 tcp.ssn_memcap_drop | Decode1 | 0 tcp.pseudo | Decode1 | 5 tcp.invalid_checksum | Decode1 | 0 tcp.no_flow | Decode1 | 0 tcp.reused_ssn | Decode1 | 0 tcp.memuse | Decode1 | 6029312.000000 tcp.syn | Decode1 | 76 tcp.synack | Decode1 | 101 tcp.rst | Decode1 | 19 tcp.segment_memcap_drop | Decode1 | 0 tcp.stream_depth_reached | Decode1 | 0 tcp.reassembly_memuse | Decode1 | 11292544.000000 tcp.reassembly_gap | Decode1 | 0 flow_mgr.closed_pruned | FlowManagerThread | 75 flow_mgr.new_pruned | FlowManagerThread | 5 flow_mgr.est_pruned | FlowManagerThread | 101 flow.memuse | FlowManagerThread | 3690424.000000 flow.emerg_mode_entered | FlowManagerThread | 0 flow.emerg_mode_over | FlowManagerThread | 0 detect.alert | Detect | 0
http.log:
10/08/2012-17:24:02.447292 www.youcl.com [**] / [**] Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 [**] 192.168.122.48:48396 -> 188.40.16.205:80 10/08/2012-17:24:02.544458 static.youcl.com [**] /misc/drupal.css [**] Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 [**] 192.168.122.48:52942 -> 178.63.27.110:80 10/08/2012-17:24:02.549184 static.youcl.com [**] /modules/copyright/copyright.css [**] Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 [**] 192.168.122.48:52944 -> 178.63.27.110:80
关闭运行的suricata(ctr-c在其控制台上)并打开/ etc / sysconfig / suricata
。 更改“选项”看起来像这样:
OPTIONS="-q 0 -D --pidfile /var/run/suricata.pid"
通过服务启动Suricata,并确保它在启动时开始:
service suricata start
systemctl enable suricata.service
掉交通
到目前为止,还没有什么被丢弃。 但是,我们是一个IPS,所以让我们开始放弃一些东西。 我们下载的所有规则都默认为“alert”,所以没有什么可以放弃。
在编辑器中打开/etc/suricata/suricata.yaml
,并向下滚动到“流”部分。 在那里,将“内联”设置为“是”。 这将迫使Suricata以IPS感知方式进行流重组。
stream: memcap: 32mb checksum_validation: yes # reject wrong csums inline: yes
将local.rules添加到要由Suricata加载的规则:
default-rule-path: /etc/suricata/rules/ rule-files: - local.rules - emerging-ftp.rules - emerging-policy.rules
在/ etc / suricata / rules /中
使用文本编辑器创建local.rules
。 添加一行:
drop tcp any any -> any any (msg:"facebook is blocked"; content:"facebook.com"; http_header; nocase; classtype:policy-violation; sid:1;)
重新启动Suricata:
service suricata restart
现在打开Firefox,并尝试去http://www.facebook.com/
,请求应该超时。
日志文件/var/log/suricata/fast.log
将具有:
10/06/2012-11:40:49.018377 [Drop] [**] [1:1:0] facebook is blocked [**] [Classification: Potential Corporate Privacy Violation] [Priority: 1] {TCP} 192.168.122.48:57113 -> 173.252.100.16:80 10/06/2012-11:40:49.020955 [Drop] [**] [1:1:0] facebook is blocked [**] [Classification: Potential Corporate Privacy Violation] [Priority: 1] {TCP} 192.168.122.48:57114 -> 173.252.100.16:80 10/06/2012-11:40:51.991876 [Drop] [**] [1:1:0] facebook is blocked [**] [Classification: Potential Corporate Privacy Violation] [Priority: 1] {TCP} 192.168.122.48:57115 -> 173.252.100.16:80
很明显,管理IPS还有很多,但这应该让你开始!
推荐阅读: