一、试验场景
试验目的:
1、通过搭建Suricata和iptables来实现端口和流量转发访问内网的web服务器
2、配置Suricata签名,结合iptables来对流量进行控制,实现waf的IPS功能
3、试验效果,对于危险的或存在攻击的访问流量进行drop,来达到保护内网web服务的效果
二、配置iptables
1、安装suricata和iptables
suricata:(安装)
yum install epel-release yum-plugin-copr
yum install yum copr enable @oisf/suricata-6.0
yum install suricataiptabels:(安装)
yum -y install iptables iptables-services
#使用时候记得关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2、配置suricata
这里的配置只需要注意,yaml配置文件中内网的IP网段要和试验对应起来即可
3、配置iptabels
#开启远程转发
sysctl -w net.ipv4.ip_forward=1
#入站的流量装入到内网的10.130web服务器上sudo iptables -t nat -A PREROUTING -i ens33 -d 192.168.0.114 -p tcp --dport 80 -j DNAT --to-destination 10.10.10.130:80
#从服务器出来的流量转到外网端口iptables -t nat -A POSTROUTING -d 10.10.10.130 -p tcp --dport 80 -j SNAT --to 192.168.0.114
#转发端口放行(配置完成后就可以通过访问0.114外网地址,来直接访问到我们内网的web站点内容,并且是在不知道内网web服务器的情况下)iptables -t filter -I FORWARD -j ACCEPT
#此时当我们外网访问我们的IPS的外网IP的之后,IPS会直接帮我们转发到内网
#结合通过iptables结合suricata来对流量进行监控。IPSiptables -I FORWARD -j NFQUEUE --queue-num 0 #(默认为0,可以不指定)
#启动suricata并且配置q=0后,可以配合iptables的策略来决定哪些流量会到达Suricata
suricata -c suricata.yaml -q 0此步骤完成后,我们的流量走向是通过IPS外网进入到IPS的Suricata,通过suricata来转发到IPS的内网网卡。因此,在流量经过Suricata的时候就可以进行进行一波检测。
三、配置Suricata
1、修改配置文件
①在suricata的rules的文件中新建一个规则文件 (suricata.rules)前缀随意
②在sericata.yaml配置文件中加入新建的规则配置
2、在suricata.rules添加签名规则
注:签名规则结构在签名的文章有讲解,这里不做解释。
#这是一条用于检测url地址中存在的sql注入,结合iptables就可以使用drop来对流量进行拦截
drop http $EXTERNAL_NET any <> $HOME_NET $HTTP_PORTS (msg:"疑似地址栏正在进行SQL注入"; http.uri; pcre: "/union.+|select.+|updatexml|select.+from|@@database|database()|information_schema|load_file|substr|left|#|--|order%20by|%20and%20|%20or%20|extractvalue/i"; priority: 3; sid:562001;)
四、效果
这里使用的pikachu靶场进行演示,靶场在内网主机上,当作内网web服务。