计网实验六

实验六:网络安全相关实验

任务1 IPTABLES

数据包通过防火墙的流程总结为下图:

img

iptables为我们定义了4张”表”,当他们处于同一条”链”时,执行的优先级如下。

优先级次序(由高而低):

raw –> mangle –> nat –> filter

我们将经常用到的对应关系重新写在此处,方便对应图例查看。

  1. 链的规则存放于哪些表中(从链到表的对应关系):

PREROUTING 的规则可以存在于:raw表,mangle表,nat表。

INPUT 的规则可以存在于:mangle表,filter表,(centos7中还有nat表,centos6中没有)。

FORWARD 的规则可以存在于:mangle表,filter表。

OUTPUT 的规则可以存在于:raw表mangle表,nat表,filter表。

POSTROUTING 的规则可以存在于:mangle表,nat表。

  1. 表中的规则可以被哪些链使用(从表到链的对应关系):

raw 表中的规则可以被哪些链使用:PREROUTING,OUTPUT

mangle 表中的规则可以被哪些链使用:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

nat 表中的规则可以被哪些链使用:PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)

filter 表中的规则可以被哪些链使用:INPUT,FORWARD,OUTPUT

img

  1. 表、链和规则的关系(以prerouting链为例)

    img

任务1.1

image-20231213123153060

步骤:

  1. 打开vmware和wsl,用ifconfig查看两者的ip地址

  2. 先试试看能不能互相ping

  3. 在wsl中添加规则

    查看filter中INPUT的规则

     sudo iptables -t filter -nvL INPUT --line-numbers
    

    添加拒绝接受ICMP回应请求报文的规则

    sudo iptables -t filter -I INPUT -p icmp -m icmp --icmp-type echo-request -j REJECT
    
  4. 现在wsl可以ping虚拟机,但虚拟机不能ping wsl了

  5. 使用date命令打印当前时间,然后截图,并

    echo "22920212204317 郑子睿"
    
  6. 删除规则

    这里的规则序号是1

     iptables -t filter -D INPUT 1
    
  7. 检查虚拟机是否可以ping wsl,验证规则删除成功与否

任务1.2

  1. 在虚拟机中启动http服务

    python3 -m http.server
    
  2. 虚拟机的ip地址是192.168.174.130,在wsl中用nc命令检查端口

    # 这个命令是用于网络诊断的。它的作用是使用nc(netcat)工具来尝试连接到指定的IP地址(172.23.201.100)上的端口范围(50到100之间的端口)。参数解释如下:
    # -v: 启用详细模式,显示更多信息。
    # -w 10: 设置超时时间为10秒,如果在10秒内无法建立连接,则超时。
    # -z: 表示的是“零I/O模式”,只进行端口扫描,不发送任何数据。
    # 因此,这个命令的作用是在10秒内尝试连接到172.23.201.100上的端口50到100之间,但不发送任何数据,仅检查端口是否处于打开状态。
    nc -v -w 10 -z  172.23.201.100 50-100
    

    image-20231213180555457

  3. 在虚拟机中配置规则

    1. 先把现有规则保存在文件中

      sudo iptables-save > iptables_rules
      
    2. 服务器关闭所有端口之后 仅开启 80 端口访问

      ### 写在ban80.sh
      ## 关闭所有端口
      sudo iptables -P INPUT DROP  # 默认拒绝所有输入流量
      sudo iptables -P FORWARD DROP  # 默认拒绝所有转发流量
      sudo iptables -P OUTPUT ACCEPT  # 允许所有输出流量
      sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT  # 允许已建立的、相关的连接
      
      ## 开放 80 端口
      sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  # 允许来自 TCP 协议的 80 端口流量
      

      这些命令的含义是:

      • -P: 设置默认策略,INPUT 设置为拒绝所有输入流量,FORWARD 设置为拒绝所有转发流量,OUTPUT 设置为允许所有输出流量。
      • -A: 添加规则到iptables规则链中。
      • -m conntrack --ctstate ESTABLISHED,RELATED: 允许已经建立的连接和相关的流量通过。
      • -p tcp --dport 80 -j ACCEPT: 允许来自TCP协议的80端口流量通过。
  4. 在wsl再次测试

    端口从connection refused变成time out

    image-20231213181448107

  5. 这些命令将默认策略设置为允许所有流量,然后清除所有的规则和用户自定义链。这会导致iptables恢复到初始状态,允许所有流量通过。

    # 写在open80.sh
    sudo iptables -P INPUT ACCEPT
    sudo iptables -P FORWARD ACCEPT
    sudo iptables -P OUTPUT ACCEPT
    sudo iptables -F
    sudo iptables -X
    

任务2 namp 扫描工具

任务2.1 主机发现

扫描虚拟机所在的子网

nmap -sn 192.168.174.130/24

image-20231213210249037

解释:根据官方文档以及查到的vmware的nat模式的解释,有三个设备连接在子网VMnet8上,如下图:

image-20231213210641377

在本实验中,192.168.174.130为ubuntu虚拟机的ip,192.168.174.1为宿主机在VMnet8中的ip,最后的192.168.174.254应该是nat路由器的ip。

也可以了解一下VMWare的桥接模式

任务2:端口扫描

直接扫描

nmap scanme.nmap.org
  1. 增加参数指定使用 google(8.8.8.8 / 8.8.4.4)或其他的 DNS 服务器进行扫描。
nmap --dns-servers 8.8.8.8 scanme.nmap.org
  1. 忽略主机的存活状态,禁止 ICMP ping 后重新扫描。
nmap -Pn scanme.nmap.org
  1. 在虚拟机中开启http服务python3 -m http.server

    1. 直接nmap 192.168.174.130/24观察

      image-20231213212148389

    2. source ban80.sh后观察

      image-20231213212246567

    3. source open80.sh恢复

任务3:HTTPs协议分析(TLS)

任务4:ARP spoofing与中间人攻击

  1. 在ubuntu中打开wireshark,选择ens33

  2. 在ubuntu中用arp -a查看默认网关的ip和mac

  3. 在kali中打开Ettercap,先ping一下ubuntu,直到在host_list出现ubuntu和它的默认网关

  4. 重置wireshark

  5. 在kali中发起攻击

  6. 在ubuntu中用arp -a查看默认网关的mac是否变化

  7. wireshark停止嗅探,观察

    image-20231213221823190

    发现kali通过不断告诉ubuntu,默认网关的ip对应的mac是它;也不断告诉默认网关,ubuntu的ip对应的mac是它(使用arp回复报文)

  8. 关闭kali的Ettercap,一段时间后,ubuntu的默认网关地址恢复正常

posted @ 2023-12-14 00:44  sakuraLGGM  阅读(91)  评论(0)    收藏  举报