基于iptables防火墙堵漏
之前在网上流传个段子:发现自己电脑被入侵,最有效的办法是即拔掉网线~
虽然只是个段子却说明一旦机器发现漏洞被入侵,阻断入侵刻不容缓,无论对个人电脑和业务服务器都是如此。
商业服务器虽然有各种防护措施,但是也不能保证百分百安全,一旦被入侵处理起来可不能直接拔网线。具体处理措施有很多,比如打各种系统补丁、封端口、修复代码漏洞、清除后门程序等等~
除此之外,通常还会通过防火墙block可疑请求,最近处理系统漏洞过程中遇到了个比较有意思的事情:
服务器上有个非核心业务端口8080怀疑被入侵了,发现之后立刻安排安全部门和研发同步排查,在所有事情搞清楚之前研发先通过iptables规则drop掉了所有到8080端口的请求,然后安全同事用nmap扫描8080端口的状态是filtered......
印象中端口要么是open要么是closed,那filtered是个什么状态呢?
原来nmap扫描端口有6种状态:
1、Open 开放状态:
nmap 发起两个 SYN 的请求,服务器上监听在此端口的进程会进行应答,会返回 SYN/ACK, nmap 收到服务端返还回来的应答后会发送两个 RST ,并不会和服务端建立通信连接,完成端口的探测。
2、Closed 关闭状态:
nmap 发起两个 SYN 的请求,服务器上由于没有进程监听该端口,内核会返回 RST, nmap 收到服务端返还回来的 RST 报文,将探测结果定义为 closed 。
3、Filtered 过滤状态:
这种情况是服务端将收到的 nmap SYN 报文直接丢弃,不进行应答, 由于 nmap 直接发送了两个 SYN 报文,都没有收到应答,所以认定服务端开启了防火墙,将 SYN 报文丢弃。
4、Unfiltered 未过滤状态:
nmap 默认进行的是 SYN 扫描,当用 -sA 选项( TCP ACK 扫描),连续发送两个同样的 ACK 报文,由于 snmp 确认收到了一个服务端根本没有发送的报文,所以服务端会发送一个 RST 报文, snmp 收到服务端发送来的 RST 报文后,确认服务端没有对报文进行丢弃处理,注意本探测不能发现端口是开放还是关闭状态,只能确认探测的报文服务端已收到,并回复给了 snmp RST报文。
5、Open|filtered 开放或过滤状态:
这种状态主要是 nmap 无法区别端口处于 open 状态还是 filtered 状态。这种状态长出现于 UDP 端口
6、Closed|filtered 关闭或者过滤状态
原来如此,Filtered其实就是nmap认为是对端drop掉了SYN包;
现在的IP tables规则是这样的:
iptables -A INPUT -s 172.16.7.80 -p tcp --dport 80 -j DROP
查看的执行结果是这样的:
抓包看server侧没有相应,端侧就会重传:
漏洞虽然堵住了,请求也确实进不来了,但总感觉差了点什么,有没有办法让nmap扫描结果是Closed 呢?上面关于Closed解释是:当nmap扫描系统没有监听端口时,kernel会响应RST,只要让iptables返回RST就行了,看iptables文档中,Reject部分如下:
REJECT
作为对匹配的包的响应,返回一个错误的包:其他情况下和DROP相同。 此目标只适用于INPUT、FORWARD和OUTPUT链,和调用这些链的用 户自定义链。这几个选项控制返回的错误包的特性:
--reject-with type
Type可以是icmp-net-unreachable、icmp-host-unreachable、icmp-port-nreachable、icmp-prot o-unreachable、 icmp-net-prohibited 或者 icmp-host-prohibited,该类型会返回相应的ICMP错误信息(默认是port-unreachable)。选项
echo-reply也是允许的;它只能用于指定ICMP
ping包的规则中,生成ping的回应。最后,选项tcp-reset可以用于在INPUT链中,或
自INPUT链调用的规则,只匹配TCP协议:将回应一个TCP RST包。
于是将iptables规则改成如下:
iptables -A INPUT -s 172.16.7.80 -p tcp --dport 80 -j REJECT --reject-with tcp-reset
再次扫描结变成了我们想要的样子:

基于iptables防火墙堵漏的更多相关文章
- 编译内核实现iptables防火墙layer7应用层过滤 (三)
在前面的两篇文章中我们主要讲解了Linux防火墙iptables的原理及配置规则,想博友们也都知道iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙.以 ...
- linux 的iptables防火墙
.a文件就是*.o文件的集合, 是object文件的归档文件, 所以, 用nm -A ???.a看到的 symbolic符合名称都是 相应的, 包含的 .o文件.... linux 2.4内核中 ...
- Netfilter/iptables防火墙
http://os.51cto.com/art/201107/273443.htm [51CTO独家特稿]Linux系统管理员们都接触过Netfilter/iptables,这是Linux系统自带的免 ...
- IPTables系列:如何配置Ubuntu 14.04中的IPTables防火墙
IPTables基本命令 在向大家介绍复杂防火墙规则之前,还是先上一些简单的料,让大家对IPTables最为基本的命令有一些简单了解. 首先要说明的是IPTables命令必需以root权限运行,这意味 ...
- 20条IPTables防火墙规则用法!
导读 管理网络流量是系统管理员必需处理的最棘手工作之一,我们必需规定连接系统的用户满足防火墙的传入和传出要求,以最大限度保证系统免受攻击.很多用户把 Linux 中的 IPTables 当成一个防火墙 ...
- iptables防火墙的原理及应用
简介 (netfilter, 位于Linux内核中的包过滤功能体系 ,称为Linux防火墙的“内核态”) iptables防火墙工作在网络层,针对TCP/IP数据包实施过滤和限制,iptables防 ...
- linux iptables 防火墙简介
iptables防火墙简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非 ...
- Iptables防火墙规则使用梳理
iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤.封包重定向和网络地址转换(NAT)等功能 ...
- Iptables防火墙规则使用
iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤.封包重定向和网络地址转换(NAT)等功能 ...
- centos6.5下系统编译定制iptables防火墙扩展layer7应用层访问控制功能及应用限制QQ2016上网
iptables防火墙扩展之layer7应用层访问控制 概述: iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙.以基于网络层的数据包过滤机制为主,同 ...
随机推荐
- 订单逆向履约系统的建模与 PaaS 化落地实践
导读 本文重点介绍了京东零售电商业务在订单逆向履约上面的最佳技术实践,京东零售快退平台承接了零售几乎所有售前逆向拦截和退款业务,并在长期的业务和技术探索中沉淀了丰富的业务场景设计方案.架构设计经验,既 ...
- 代码随想录算法训练营第一天| LeetCode 704. 二分查找、LeetCode 27. 移除元素
704. 二分查找 题目链接:https://leetcode.cn/problems/binary-search/ 视频链接:https://www.bilibili.c ...
- IOS Safari、微信小程序 img或者其他标签元素出现黑边、黑线阴影
这个问题最开始出现在小程序上,然后在社区找到一个一样得案例 案例:https://developers.weixin.qq.com/community/develop/doc/000608420706 ...
- [mysql]状态检查常用SQL
前言 使用MySQL自身命令获取数据库服务状态. 连接数 -- 最大使用连接数 show status like 'Max_used_connections'; -- 系统配置的最大连接数 show ...
- [golang]获取本机IP
前言 方便在内网环境中获取服务器本机IP,省了在脚本中过滤ip或ifconfig的结果. 如果内网中有nginx的话,通过nginx获取本机IP也很方便,可参考 借助nginx自动获取本机IP 示例代 ...
- go创建web项目分别在windows和linux部署
转载请注明出处: 要在Linux服务器上运行Go的Web项目,可以按照以下步骤进行操作: 在服务器上安装Go:首先,在Linux服务器上安装Go编程语言.你可以从官方网站(https://golang ...
- 何时使用MongoDB而不是MySql
什么是 MySQL 和 MongoDB MySQL 和 MongoDB 是两个可用于存储和管理数据的数据库管理系统.MySQL 是一个关系数据库系统,以结构化表格格式存储数据.相比之下,MongoDB ...
- 优化 Redis 集群缓存分配:解决节点间分配不均导致内存溢出问题
一.Redis 集群部署简介 在现代应用程序中,缓存被广泛应用以提高性能和减轻后端数据库的压力.本文将探讨面对 Redis 集群缓存分配不均问题时的解决方法. 我们的 Redis 集群部署包括 3 主 ...
- 02.中台框架前台项目 admin.ui.plus 学习-介绍与简单使用
中台框架前台项目 admin.ui.plus 的初识 基于 vue3.x + CompositionAPI setup 语法糖 + typescript + vite + element plus + ...
- 修复linux系统更新后Conky无法启动的问题
kali系统更新后的版本为 ~$uname -a Linux 4rk 5.9.0-kali5-amd64 #1 SMP Debian 5.9.15-1kali1 (2020-12-18) x86_64 ...

