写在前面
我们都知道,nmap是安全测试中用来扫描主机开放服务的一款工具,也是黑客对目标实施攻击信息收集的第一步。当然了,对于各大资产测绘平台中已经收录的资产利用防火墙做出策略已经起不到防护效果,其实只要不把像数据库服务、22、FTP这种危险端口映射到公网上,黑客也是无法获取目标开放的服务的。但是对于本身在公网上的云主机,或是对抗黑客已经进入内网进行横向,对服务器本身做出防扫描还是很有必要。
写这个文章主要是想重新回顾一下linux上防火墙的配置,毕竟一次在HW面试中,面试官跟我说要会配置这个东西很难,??
基础知识补充
1.linux防火墙之firewalld基础
firewalld是iptables的升级版,有区域的概念。默认情况共分为以下9个安全区
所有默认的规则都是外到内的,自己可以指定内到外的策略,源改为本机IP即可,指定限制的对象类型分为以下几种:
firewalld借助firewall-cmd进行管理,firewall-cmd总共有下列参数
firewalld的几个动作如下
动作 | 含义 |
---|---|
default | 不做任何处理 |
accept | 接受数据包 |
reject | 拒绝数据包,并返回拒绝 |
drop | 丢弃数据包,不做返回 |
log | 做日志记录 |
firewall自定义规则
因为在firewall中自定义规则还涉及到相关对象的选择,所以做以下知识补充
firewall中的表
表名 | 作用 |
---|---|
filter表 | 数据过滤 |
nat表 | 地址转换 |
mangle表 | 拆解报文,做出修改,并重新封装 |
firewall中的链
链名 | 释义 |
---|---|
INPUT | 入站数据包处理 |
OUTPUT | 出站数据包处理 |
FORWARD | 转发数据包处理 |
PREROUTING | 在进行路由选择前数据包处理 |
POSTROUTING | 在进行路由选择后数据包处理 |
2.linux防火墙之iptables基础
firewalld是iptables的升级版,iptables的底层是netfilter内核,firewalld的底层是iptables。iptables在使用当中过于复杂,但是在实际使用firewalld过程中会涉及到部分与iptables重合的语法,所以只选择重点做笔记。
iptables和firewalld一样,有“三表四链”的说法,但是其实iptables还多一个raw表,实际应用中很少涉及。
规则的操作有:增、删、改、查、存。
规则的语法是 iptables [-t表名] 选项 [链名] [规则] [动作]
规则操作表如下
操作名称 | 对应语法 |
---|---|
追加至尾部 | -A |
删除 | -D |
插入至顶部 | -I |
清空所有规则 | -F |
替换 | -R |
iptables设置规则中匹配的参数可选择的如下
条件参数 | 释义 |
---|---|
[!]-p | 协议 |
[!]-s | 源地址,多个由逗号分隔 |
[!]-d | 目的地址,多个由逗号分隔 |
[!]–sorce-port | 源端口 |
[!]–destination-port | 目的端口 |
[!]-i | 接收数据包的接口 |
[!]-o | 发送数据包的接口 |
-m | 用于扩展匹配 |
-j | 执行动作 |
iptables中的扩展模块如下
扩展模块名 | 作用 |
---|---|
multiport | 可以添加多个不连续的端口 |
iprange | 指定”一段连续的IP地址范围" |
string | 指定报文中包含对应的字符串 |
time | 根据时间段区匹配报文 |
icmp | 可以控制其他主机无法ping同本机,但本机可以ping同其他主机 |
connlimit | 限制每个客户端P地址到服务器的并行连接数 |
limit | 通过令牌桶限制请求数 |
tcp-flags | tcp标志位 |
state | 按链接状态过滤链接,有NEW、ESTABLISHED、RELATED、INVALID |
实验效果
1.利用iptables防止nmap扫描
kali自带iptables
配置前的效果图
做出如下配置
iptables -t filter -I INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j REJECT
iptables -t filter -I INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j REJECT
iptables -t filter -I INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j REJECT
iptables -t filter -I INPUT -p tcp --tcp-flags ALL SYN -j REJECT
iptables-save > /etc/network/iptables.rules #永久生效
配置后的效果图
2.利用firewalld防止nmap扫描
参考链接firewalld防火墙配置
未配置前的效果图
下面来做出配置(不懂可以参考上面的基础知识):
1.新建一条链PORT_SCANNING
firewall-cmd --direct --permanent --direct --add-chain ipv4 filter PORT_SCANNING
firewall-cmd --reload
2.做规则配置
firewall-cmd --permanent --direct --add-rule ipv4 filter PORT_SCANNING \
0 -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 100/minute --limit-burst 50 -j RETURN
firewall-cmd --reload
firewall-cmd --permanent --direct --add-rule ipv4 filter PORT_SCANNING 1 -j DROP
firewall-cmd --reload
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -j PORT_SCANNING
firewall-cmd --reload
配置后的效果图
但是SSH不上了,解决办法待定。