如何在Fedora 17上设置IPS(入侵防御系统)

如何在Fedora 17上设置IPS(入侵防御系统) Vuurmuur是一个 linux防火墙管理器。它需要一个人类可读的规则语法和...

如何设置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.howtoing.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.howtoing.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.howtoing.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还有很多,但这应该让你开始!

推荐阅读: