一 实验目的

掌握如何设计防火墙的高级过滤策略以抵御各种类型的攻击。

二 实验内容

  1. 防止端口扫描;
  2. 防止 ping 攻击;
  3. 防止 ip 碎片攻击;
  4. 丢弃坏的 TCP包;
  5. 防止 SYN攻击。

三 实验原理

参见 网安技术与应用(3)——Linux防火墙iptables的使用

四 实验条件

1、仪器设备条件:PC 及其网络环境;

2、物质条件:Linux(kernel 2.6包含 Iptables);

3、相关文献资料:教学网站所提供的电子文档

五 实验过程

1、默认规则

# 启动防火墙
modprobe ip_tables
sudo ufw enable
sudo ufw reload
#清除规则
sudo iptables -F
#设置默认规则为丢弃一切报文
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP

2、防止端口扫描和Ping攻击

OUTPUT是关于虚拟机ping主机的设置,INPUT是关于主机ping虚拟机的设置。

1/s 10就是一秒钟不能发超过10个,1/m 10就是1分钟不能发超过10个,ping操作的通信1秒钟不可能达到发送10个,最多来回2-3次,但1分钟10次消息传输是完全有可能的

所以,只要OUTPUT或INPUT有一方设置了1/m 10,就会在发送10条消息后停止;如果2个都是1/s 10,就会永远ping下去

因为是双方的通信,所以output和input都要打开【accept】

sudo iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# 用于测试
sudo iptables -A OUTPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
# sudo iptables -A OUTPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT
# 防止 ping 攻击,允许每秒和每分钟一个包,触发条件是10个包
# sudo iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
sudo iptables -A INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT

  • windows去ping虚拟机:
ping -l 65500 -t 192.168.85.128

ping -l 10 -t 192.168.85.128

3、IP碎片控制

对于不管来自哪里的 ip 碎片都进行控制,允许每秒通过 100 个碎片 (触发条件是100个包)

sudo iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

4、丢弃坏的TCP

sudo iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

5、防止SYN攻击

防止 SYN攻击,限制SYN的请求速度为3个/s,触发条件为6个tcp报文

sudo iptables -N syn-flood
sudo iptables -A INPUT -p tcp --syn -j syn-flood
sudo iptables -A syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN
sudo iptables -A syn-flood -j REJECT

6、屏蔽指定IP

有时候我们发现某个ip不停的往服务器发包,这时我们可以使用以下命令,将指定ip发来的包丢弃

sudo iptables -F
BLOCK_THIS_IP="192.168.85.1"
sudo iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

7、配置服务项

利用iptables,我们可以对日常用到的服务项进行安全管理,比如设定只能通过指定网段、由指定网口通过SSH连接本机

sudo iptables -A INPUT -i eth0 -p tcp -s 192.168.85.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
sudo iptables -L

8、网口转发配置

对于用作防火墙或网关的服务器,一个网口连接到公网,其他网口的包转发到该网口实现内网向公网通信,假设eth0连接内网,eth1连接公网,配置规则如下:

sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

六 思考题解答

(1)如何限制WPS联网服务? 如何限制网易云音乐的联网服务?

网易云限制

  • 下载网易云

    sudo dpkg -i netease-cloud-music_1.2.1_amd64_ubuntu_20190428.deb
    
  • 打开网易云,播放一首歌,并查看其占据的进程号

    netstat -anp | grep netease
    
  • 将涉及到的服务器IP在IPtables中禁止

  • modprobe ip_tables
    sudo iptables -I INPUT -s 59.111.181.52 -p tcp -j DROP
    sudo iptables -I INPUT -s 117.167.98.146 -p tcp -j DROP
    sudo iptables -I INPUT -s 120.226.29.35 -p tcp -j DROP
    sudo iptables -I INPUT -s 59.111.181.35 -p tcp -j DROP
    sudo iptables -I INPUT -s 59.111.19.33 -p tcp -j DROP
    sudo iptables -I INPUT -s 36.158.208.102 -p tcp -j DROP
    sudo iptables -I INPUT -s 36.158.208.101 -p tcp -j DROP
    sudo iptables -I INPUT -s 59.111.160.195 -p tcp -j DROP
    sudo iptables -I INPUT -s 117.167.98.147 -p tcp -j DROP
    sudo iptables -I INPUT -s 111.45.68.154 -p tcp -j DROP
    sudo iptables -I INPUT -s 36.158.208.105 -p tcp -j DROP
    
  • 设置后发现已经断网

  • WPS限制

    • 下载WPS

      sudo dpkg -i wps-office_11.1.0.10920_amd64.deb
      
    • 查看WPS占据的进程号

      netstat -anp | grep wps
      
    • 将涉及到的服务器IP在IPtables中禁止

      modprobe ip_tables
      sudo iptables -I INPUT -s 110.43.89.138 -p tcp -j DROP
      sudo iptables -I INPUT -s 120.92.103.226 -p tcp -j DROP
      sudo iptables -I INPUT -s 120.241.92.117 -p tcp -j DROP
      sudo iptables -I INPUT -s 120.232.170.41 -p tcp -j DROP
      sudo iptables -I INPUT -s 183.214.1.252 -p tcp -j DROP
      sudo iptables -I INPUT -s 120.131.2.130 -p tcp -j DROP
      sudo iptables -I INPUT -s 111.31.36.189 -p tcp -j DROP
      sudo iptables -I INPUT -s 121.36.23.203 -p tcp -j DROP
      sudo iptables -I INPUT -s 111.31.36.189 -p tcp -j DROP
      sudo iptables -I INPUT -s 120.92.74.246 -p tcp -j DROP
      sudo iptables -I INPUT -s 120.92.34.89 -p tcp -j DROP
      sudo iptables -I INPUT -s 39.156.80.78 -p tcp -j DROP
      sudo iptables -I INPUT -s 120.92.106.21 -p tcp -j DROP
      sudo iptables -I INPUT -s 110.43.67.230 -p tcp -j DROP
      sudo iptables -I INPUT -s 120.232.170.41 -p tcp -j DROP
      sudo iptables -I INPUT -s 183.214.1.252 -p tcp -j DROP
      sudo iptables -I INPUT -s 120.131.2.130 -p tcp -j DROP
      sudo iptables -I INPUT -s 111.31.36.189 -p tcp -j DROP
      sudo iptables -I INPUT -s 121.36.23.203 -p tcp -j DROP
      sudo iptables -I INPUT -s 111.31.36.189 -p tcp -j DROP
      sudo iptables -I INPUT -s 120.92.74.246 -p tcp -j DROP
      sudo iptables -I INPUT -s 110.43.89.138 -p tcp -j DROP
      

(2)在过滤规则条数很多的情况下,应该如何设计规则链表,来提高 Iptables的过滤效率?

iptables的规则匹配是按顺序匹配的,这就会造成随着规则数量的增加,效率会下降的问题,解决方向和方案如下:

① 管理IP

  • ipset:通过IP集合的方式管理itables,集合可以动态修改

    #创建一个名为myipset的集合,timeout 0允许新增IP带时间参数,最大存储IP数量是1000000
    ipset create -exist myipset hash:net family inet hashsize 1024 maxelem 1000000 timeout 0
    #添加一个关于ipset myipset的 iptables规则,
    iptables -I INPUT -m set --match-set myipset src -j DROP
    #添加IP 1.2.3.4到myset中,并且timeout是3600秒
    ipset -exist add myipset 1.2.3.4 timeout 3600
    

② 管理规则

另一个方向是如何设置规则匹配数据包,使得大多数的不可能匹配的数据包不用去一一匹配每一条规则。基本上这种想法有两套方案:

  • 手动分类–自定义链:

    • 优点:可以自由定义规则筛选地址,拥有更大的灵活性
    • 缺点:需要配置者对本网络的流量类型很熟悉。比如说你想开放几个不连续的地址访问80端口,使用ipset有点大材小用了,但是你也不必写下如下的规则:
iptables -A FORWARD -s ip1 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s ip2 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s ip3 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s ip4 -p tcp --dport 80 -j ACCEPT
如果你这么写了,那么每一个数据包都要匹配所有的规则,你要这么写:
iptables -N SB_FORWARD
iptables -A SB_FORWARD -s ip1 -j ACCEPT
iptables -A SB_FORWARD -s ip2 -j ACCEPT
iptables -A SB_FORWARD -s ip3 -j ACCEPT
iptables -A SB_FORWARD -s ip4 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -j SB_FORWARD

如此一来,大多数数据包仅仅需要匹配一个规则即可,那就是最后的那条规则,一旦不匹配就不需要继续了。这实际上是将共同的东西抽象了出来,将线形的规则进行了分类。Netfilter提供了自定义链的机制来使用户可以将一维链表存储的规则放到多维链表中。

  • 自动分类–借助hipac算法:将报文分类抽象为多维的范围匹配问题,让内核自己分类数据包

    使用一个Netfilter新的包分类机制完成的,它自动进行包分类,使用多维的树来维护规则而不是使用一维链表,在匹配方式上不是用规则来匹配数据包,而是用基于多维树分类的数据包来匹配存于多维树的规则,在存在大量离散规则的情况下,效果显著

(3)分析若干种现有流行的攻击方法,如何有针对性地设计 Iptables 的高级过滤规则?

  • SYN攻击

    • 限制syn的请求速度:需要调节一个合理的速度值,不然会影响正常用户的请求

      iptables -N syn-flood
      iptables -A INPUT -p tcp --syn -j syn-flood
      iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
      iptables -A syn-flood -j DROP
      
    • 限制单个ip的最大syn连接数

      iptables –A INPUT –i eth0 –p tcp --syn -m connlimit --connlimit-above 15 -j DROP
      
  • DOS攻击:利用recent模块抵御DOS攻击

    • 单个IP最多连接3个会话

      iptables -I INPUT -p tcp -dport 22 -m connlimit --connlimit-above 3 -j DROP
      
    • 新的连接请求加入到SSH列表

      iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
      
    • 5分钟内你的尝试次数达到3次,就拒绝提供SSH列表中的这个IP服务。被限制5分钟后即可恢复访问

      Iptables -I INPUT -p tcp --dport 22 -m state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP
      
  • 单个IP过度访问

    • iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP
      
  • 木马反弹

    • iptables –A OUTPUT –m state --state NEW –j DROP
      
  • ping攻击

    • iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/m -j ACCEPT
      

参考链接:

Linux桥设备以及iptables的效率的一些问题

使用iptables抵抗常见攻击

网安技术与应用(4)——配置iptables防御常见攻击相关推荐

  1. 网安技术与应用(2)——基于DTLS的安全服务器设计

    一 实验目的 通过实验,掌握DTLS的基本原理,掌握python3-dtls库的基本使用. 二 实验内容 利用 DTLS 库编写客户端和服务器程序,服务端开启监听,提供数据传输.文件传输功能: 客户端 ...

  2. 网安技术与应用(6)——基于Paillier的安全计算

    文章目录 一.实验概述 1.实验原理 1.1 Paillier原理 1.2 开源包半同态加密phe 2.实验内容 二.实验过程 1.实现并验证Paillier同态加密算法 1.1 安装phe模块 1. ...

  3. 高光时刻丨赛宁网安携前沿技术研究亮相Blackhat 2022

    面向热门网安话题 全球"白帽黑客"带来新一轮技术研讨 Blackhat 2022 火热进行中! 今天凌晨4:00 赛宁网安科研专题组披星戴月 围绕WASM安全性 进行了40分钟的实 ...

  4. 第二届“强网”拟态防御国际精英挑战赛落幕,29支国内外精英队伍未能突破拟态防御,赛宁网安靶场平台完美支撑BWM新赛制.

    5月22至23日,由赛宁网安技术支持的第二届"强网"拟态防御国际精英挑战赛在南京江宁圆满落幕!该赛事吸引了网络安全领域及社会各界的广泛关注,本届大赛由中国工程院.中国网络空间安全协 ...

  5. 知道创宇CSO周景平:人才短缺、监管落地,网安行业如何破局 | 数据猿采访

    数据智能产业创新服务媒体 --聚焦数智 · 改变商业 如今,已经进入万物互联时代,形式不受限.辐射范围广.影响领域深的网络攻击,急剧扩张并疯狂肆虐,如何应对网络威胁已成为关乎国防安全的重要议题.与此同 ...

  6. CentOS简单配置防御ddos攻击

    DDOS这种攻击的目的就是在短时间内制造数量巨大的并发连接,从而使用服务器down机或消耗掉网络带宽和系统资源导致正常用户无法正常访问浏览网站. DoS Deflate 是一个轻量级阻止拒绝服务攻击的 ...

  7. 首届“天网杯”网络安全大赛启动 | 赛宁网安提供全面技术支撑

    ​​6月25日,由中华人民共和国公安部.天津市人民政府指导,天津市公安局.天津市委网信办.天津市工信局.天津市滨海新区人民政府.公安部第一研究所.国家计算机病毒应急处理中心共同主办,南京赛宁信息技术有 ...

  8. BCS2022|技术升级、理念更新、全球合作——国际网安巨头共论未来网络安全之道...

    随着全球数字化进程不断加快,安全漏洞.数据泄露.网络诈骗.勒索病毒等网络安全威胁日益凸显,有组织.有目的的网络攻击形势愈演愈烈,网络安全面临越来越大的威胁与挑战.网络安全威胁会朝什么方向演变,又该如何 ...

  9. 网安面试题汇总--持续记录

    介绍:我是一名保安,保卫一方平安,深爱业主小丹,喜欢小熊饼干. 笔者回尝试回答一下面试题并记录,欢迎大佬写下高见. 如下网安面试题,如有侵权,联系笔者删除. 渗透测试(红队攻防) 代码审计 安全研究 ...

最新文章

  1. cascader 动态加载 回显_ElementUI cascader级联动态加载回显和搜索看这个就够了
  2. 食品行业ERP选型 需把握关键的20%
  3. LC_ALL=C表示什么?
  4. sql编写将时间转换年月日 时分格式
  5. 【日程发布】LiveVideoStackCon 音视频技术大会 2022 上海站
  6. CRM WebClient UI Relationship drop down list render logic
  7. 微软开源新字体Cascadia Code,源于Windows Terminal
  8. 嵌入式linux文件系统启动,嵌入式Linux之文件系统启动分析【原创】
  9. linux的静态编译elf无法调试,[翻译]自己动手编写一个Linux调试器系列之4 ELF文件格式与DWARF调试格式 by lantie@15PB...
  10. Android SQLite用法
  11. WebView断网提示
  12. python中安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))…………
  13. c 语言基础笔试题1
  14. 三星a5009Android6.0,三星A5009 6.0 root教程及获取6.0的root权限
  15. 循环神经网络(RNN)
  16. 使用Quantlib,通过YTM计算债券净值
  17. 自定义vbs脚本开机启动程序
  18. 【深度学习】模型过拟合的原因以及解决办法
  19. php获取当前日期所在自然周周一周末以及前后自然周始末
  20. App引流推广:能够提高用户的转化的技术

热门文章

  1. 分享一下玩滑板的心得体会
  2. 百家争鸣,智能办公群雄论剑,吹响企服三会号角第一声
  3. 原来在朋友眼里,我是一个闪闪发光的人
  4. java实现utf-8与GB2312编码的转换
  5. Uni-app 小程序使用腾讯云IM实时通讯
  6. 耗电更少,苹果 M1 编译代码速度与 2019 年 Mac Pro 一样快
  7. 为什么我的单片机不是“跑车”而是“牛车”,过来人告诉你。
  8. 60天造个火箭给你玩玩,你想要不?
  9. python32位与62位可以随便装吗_电脑32位和64位可以随便换吗???
  10. 数字·空间·光艺术|数字空间和光艺术作品