《构建基于Snort+Guardian+Iptables的IPS》

2020年的第三天,依旧如往常写文章,分享最近做的项目继《中小型企业级防火墙部署》之后的另一部分《构建基于Snort+Guardian+Iptables的IPS》,后面会将整个完整项目开源分享出来,欢迎大家一起交流分享

IPS

IPS简介

IPS是英文“Intrusion Prevention System”的缩写,中文意思是“入侵防御系统”,是一种网络安全设备或应用软件,除了具有IDS的监控检测功能之外,还具有深度感知检测数据流量,对恶意报文进行丢弃,实现实时告警和阻断的入侵防御系统。

IPS功能组成

数据采集:采集和捕获流量数据
入侵检测:分析流量和日志数据,发现安全异常行为并发出警报,常见的有Snort、Suricata、Bro
结果展示:用于分析IDS警报并进行友好展示,常见的IDS警报分析工具有Snorby、Sguil、Base
安全防御:主动响应安全事件,阻断攻击者入侵行为,常用iptables

IDS

IDS是英文“Intrusion Detection Systems”的缩写,中文意思是“入侵检测系统”,是一种网络安全设备或应用软件,可以依照一定的安全策略,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,并发出安全警报。

IDS通用系统模型

(1)数据收集器(又称探测器):主要负责收集数据。探测器的输入数据流包括任何可能包含入侵行为线索的系统数据,如各种网络协议数据包、系统日志文件和系统调用记录等。探测器将这些数据收集起来,然后再发送到检测器进行处理。

(2)检测器(又称分析器或检测引擎):负责分析和检测入侵的任务,并向控制器发出警报信号。

(3)知识库:为检测器和控制器提供必需的数据信息支持。这些信息包括:用户历史活动档案或检测规则集合等。

(4)控制器:根据从检测器发来的警报信号,人工或自动地对入侵行为做出响应。

IDS分类

IDS根据两种方法进行分类:按照数据来源、按照入侵检测策略。

按照数据来源分类

基于网络的入侵检测系统(NIDS)
基于主机的入侵监测系统(HIDS)
分布式入侵检测系统(DIDS)

按照入侵检测策略分类

滥用检测
异常检测
完整性分析

环境搭建

企业拓扑

## 环境准备
```
DMZ区:CentOS7 --- IP:192.168.9.100 Gateway:192.168.9.254
防火墙:kali --- ip1:211.67.93.254;ip2:192.168.9.254;ip3:192.168.33.254;
外网主机:win2003 --- IP:211.67.93.100 Gateway:211.67.93.254
内网主机:win2003 --- IP:192.168.33.100 Gateway:192.168.33.254
```
# IDS Snort
## Snort简介
在1998年,Martin Roesch用C语言开发了开放源代码(Open Source)的入侵检测系统Snort。直至今天,Snort已发展成为一个具有多平台(Multi-Platform)、实时(Real-Time)流量分析、网络IP数据包(Pocket)记录等特性的强大的网络入侵检测/防御系统(Network Intrusion Detection/Prevention System),即NIDS/NIPS。Snort符合通用公共许可(GPL——GNU General Pubic License),在网上可以通过免费下载获得Snort,并且只需要几分钟就可以安装并开始使用。
Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网络入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
## Snort安装
安装系统Kali
Snort安装方式一般分为源码编译安装与包管理器安装两种方式。使用源码下载会比较复杂,但是文档齐全,debug方便一些;而包管理器安装非常方便,一条命令解决所有问题
```
apt-get install snort
```
## Snort配置
### 设置规则路径
修改配置文件
```
/etc/snort/snort.conf
```

查看规则

PS:Linux默认安装之后Snort日志路径等都会默认配置好,无需麻烦配置
## Snort启动
```
snort -i eth1 -c /etc/snort/snort.conf -A fast -l /var/log/snort
```

## Snort测试
查看默认Snort ICMP规则

测试外网ping DMZ区域Web服务器

查看IDS日志记录

分析日志可知,Snort允许ICMP通过,并且记录了ICMP的相关数据。
# Guardian
Guardian实现Snort+Iptables联动效应
## Guardian下载
Guardian需要去官网下载
```
http://www.chaotic.org/guardian/
```
## Guardian安装
### 下载之后解压
```
tar -zxvf guardian-1.7.tar.gz
```

### 移动guardian到snort下 && 创建名单 && 日志
```
→ Qftm ← :~/桌面# mv guardian-1.7 /etc/snort/
→ Qftm ← :~/桌面# touch /etc/snort/guardian-1.7/guardian.ignore 创建白名单
→ Qftm ← :~/桌面# touch /etc/snort/guardian-1.7/guardian.target 创建黑名单
→ Qftm ← :~/桌面# touch /var/log/snort/guardian.log guardian的日志
```

### 复制block脚本
```
→ Qftm ← :/etc/snort/guardian-1.7# cp scripts/iptables_block.sh /usr/local/bin/guardian_block.sh
→ Qftm ← :/etc/snort/guardian-1.7# cp scripts/iptables_unblock.sh /usr/local/bin/guardian_unblock.sh
```

此操作是为了满足在guardian.pl中设置的$blockpath和$unblockpath路径

PS:
```
(1)Guardian的执行文件 guardian.pl
(2)Guardian封锁IP所要调用的外部程序 scripts/iptalbes_block.sh
(3)Guardian解除对某一IP封锁时,所需要调用的外部程序scripts/iptalbes_unblock.sh
```
## Guardian配置
### 配置guardian.conf
```
Interface eth1
HostGatewayByte 1
LogFile /var/log/snort/guardian.log
AlertFile /var/log/snort/alert
IgnoreFile /etc/snort/guardian-1.7/guardian.ignore
TargetFile /etc/snort/guardian-1.7/guardian.target
TimeLimit 86400
```

PS:
```
TimeLimit:在多少秒后解除对IP的封锁,86400秒也就是24小时之后解除对IP的封锁。
AlertFile:警报信息,前提是snort以alert_fast输出报警信息
```
### 配置guardian_block.sh和guardian_unblock.sh规则
编写策略文件,配置对外来入侵者进行拦截和解除的策略

## Guardian启动
```
→ Qftm ← :/etc/snort/guardian-1.7# perl guardian.pl -c guardian.conf
```

## Guardian启动失败解决
### 缺少getopts.pl
参考笔者文章
[《Solve Perl Can't locate getopts.pl](https://www.cnblogs.com/qftm/p/12123586.html》)
### 找不到IP
配置guardian.conf,添加HostIpAddr字段
HostIpAddr 211.67.93.254 #接口IP
# IPS测试
## 外网攻击者对Web服务器进行攻击

## IPS检测&拦截
### IPS检测

### IPS拦截

由上可知,外部攻击者被IPS记录拦截限制访问

中小型企业级 IPS 部署的更多相关文章

  1. NET中小型企业级项目开发架构系列(一)

    前端时间我们开发了基于Net的一套搭建sprint.NET+NHibernate+MVC+WCF+EasyUI等中小型企业级系统开发平台,现在把整个开发过程中的步步进展整理出来和大家分享,这个系列可能 ...

  2. 企业级memcached部署(session共享)

    服务端部署 第一个里程碑:安装依赖关系 Memcache用到了libevent这个库用于Socket的处理. [root@nfs01 ~]# yum install libevent libevent ...

  3. 企业级Tomcat部署实践及安全调优

    1.1 Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人 ...

  4. 企业级Tomcat部署配置

    1.1 Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人 ...

  5. HAProxy负载均衡原理及企业级实例部署haproxy集群

    一 HAProxy简介   HAProxy是一种高效.可靠.免费的高可用及负载均衡解决方案,非常适合于高负载站点的七层数据请求.客户端通过HAProxy代理服务器获得站点页面,而代理服务器收到客户请求 ...

  6. 企业级自动化部署方案——ansible实现tomcat自动安装和配置

    共耗时10多个小时 思路一 总体设计 ansible-playbook目录结构 [root@ansible ~]# tree /etc/ansible/roles/tomcat /etc/ansibl ...

  7. NET中小型企业项目开发框架系列(一个)

    当时的前端,我们开发了基于Net一组结构sprint.NET+NHibernate+MVC+WCF+EasyUI等中小型企业级系统开发平台,如今把整个开发过程中的步步进展整理出来和大家分享,这个系列可 ...

  8. 《Hadoop》对于高级编程Hadoop实现构建企业级安全解决方案

    本章小结 ●    理解企业级应用的安全顾虑 ●    理解Hadoop尚未为企业级应用提供的安全机制 ●    考察用于构建企业级安全解决方式的方法 第10章讨论了Hadoop安全性以及Hadoop ...

  9. 深入剖析ASP.NET Core2.1部署模型,你会大吃一惊

    ----------------------------   以下内容针对 ASP.NET Core2.1版本,2.2推出windows IIS进程内寄宿 暂不展开讨论---------------- ...

随机推荐

  1. 洞见数据库前沿 阿里云数据库最强阵容 DTCC 2019 八大亮点抢先看

    摘要: 作为DTCC的老朋友和全球领先的云计算厂商,阿里云数据库团队受邀参加本次技术盛会,不仅将派出重量级嘉宾阵容,还会为广大数据库业内人士和行业用户奉上8场精彩议题.下面小编就为大家提前梳理了8大亮 ...

  2. MySQL_分库分表

    分库分表 数据切分 通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果.数据的切分同时还能够提高系统的总体可用性,由于单台设备Crash ...

  3. @loj - 3022@ 「CQOI2017」老 C 的方块

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 老 C 是个程序员. 作为一个懒惰的程序员,老 C 经常在电脑上 ...

  4. top 9 Cloud Computing Failures

    top 9 Cloud Computing Failures Outages, hacks, bad weather, human error and other factors have led t ...

  5. OpenStack☞网关协议

    一 动态页面与静态页面区别 静态页面:每一个网页都有一个固定的URL,且网页的URL以.html..htm..shtml等常见的形式为后缀. 网页内容已经发布到网站服务器上,无论是否有用户访问,每个静 ...

  6. php 第三方登录总结OAuth协议

  7. C#面向对象--练习题

    public class Program { //用户自定义:我们自己定义这种数据类型 public struct jiegouti// 结构体前面加上public, 可供外界访问 { public ...

  8. Jieba分词包(一)——解析主函数cut

    1. 解析主函数cut Jieba分词包的主函数在jieba文件夹下的__init__.py中,在这个py文件中有个cut的函数,这个就是控制着整个jieba分词包的主函数.    cut函数的定义如 ...

  9. spring boot activiti 整合

    1.pom.xml <dependency> <groupId>org.activiti</groupId> <artifactId>activiti- ...

  10. python起个简单web服务器

    在 Linux 服务器上或安装了 Python 的机器上,Python自带了一个WEB服务器 SimpleHTTPServer. 我们可以很简单的使用  python -m SimpleHTTPSer ...