思科ASA放行主/被动FTP
实验环境:

设备说明:
internet是一台windows10,用于模拟外网客户
ASA是思科ASA防火墙
FTP-SERVER是Centos7,Centos7上安装了vsftpd
实验说明:
本文章共有两个案例
第一个案例:演示FTP-SERVER配置为主动模式的ftp,然后网络防火墙(ASA)与主机防火墙(firewalld)该如何放行。
第二个案例:演示FTP-SERVER配置为被动模式的ftp,然后网络防火墙(ASA)与主机防火墙(firewalld)该如何放行。
基本配置:
先配置一下ASA接口IP地址并划分区域,internet与FTP-SERVER接口地址的配置这里就不做演示了。
ciscoasa(config)# int g0/0
ciscoasa(config-if)# ip add 172.16.10.254 255.255.255.0
ciscoasa(config-if)# nameif dmz
ciscoasa(config-if)# security-level 50
ciscoasa(config-if)# no shutdown
ciscoasa(config)# int g0/1
ciscoasa(config-if)# ip add 1.1.1.1 255.255.255.0
ciscoasa(config-if)# nameif outside
ciscoasa(config-if)# no shutdown
现在所有设备的接口地址已经配置完毕,ASA也为接口划分了区域,接下来进入正题,配置第一个案例。
第一步:我们是对公网提供FTP服务,为了数据的安全性,我们使用证书加密FTP传输的数据,接下来创建用于加密FTP数据的自签名证书。


第二步:在FTP-SERVER上安装vsftpd,然后进入vsftpd的配置文件,只需要添加一些有关FTP数据加密的配置(第三个截图)vsftpd默认就是主动模式的FTP,之后重启vsftpd,在firewalld放行FTP的21号端口,我们知道主动的FTP会使用到两个端口,20与21,为什么我们在firewalld只放行了21号端口,关于这个问题我们之后在做解释。





第三步:
1.将FTP-SERVER的21号端口映射出去。
ciscoasa(config)# object network ftp-server
ciscoasa(config-network-object)# host 172.16.10.1
ciscoasa(config-network-object)# nat (dmz,outside) static interface service tcp ftp ftp
2.放行从outside到dmz的FTP流量,到这里端口映射就做好了,你可能会疑惑,为什么没有映射20号端口,我们之后再做解释。
ciscoasa(config)# access-list outside-dmz extended permit tcp any host 172.16.10.1 eq ftp
ciscoasa(config)# access-group outside-dmz in interface outside
3.配置nat地址转换,让FTP-SERVER可以访问公网,为什么要让FTP-SERVER可以访问公网呢?这跟主动模式的FTP服务有关,之后在做解释。
ciscoasa(config)# object network ftp-server-snat
ciscoasa(config-network-object)# host 172.16.10.1
ciscoasa(config-network-object)# nat (dmz,outside) dynamic interface
第四步:
使用工具FileZilla(注意:使用ssl加密的FTP需要使用一些工具才能连接,windows与linux自带的ftp客户端无法连接ssl加密的FTP),测试实验是否成功,在internet上连接FTP,步骤如下图。
1.设置连接服务器的信息。

2.使用主动模式去连接,默认就是主动。

3.点击connect之后成功连接上了FTP。

理解FTP的主动模式:
现在我们通过理解FTP的主动模式来回应之前提到的三个问题吧,如下图所示,主动模式的FTP实际上是经过了两次TCP三次握手完成的。这两次TCP三次握手,一次是由客户端主动发起到FTP服务器的连接,FTP客户端以大于等于1024的源端口向FTP服务器的21号端口发起连接。一次是由FTP服务器通过20号源端口向客户端大于1024的目的端口发起连接。从FTP主动模式的原理我们得知,当第一次TCP三次握手完成以后,我们的FTP-SERVER会使用20号源端口主动向客户端发起连接,配置NAT地址转换就是为了FTP-SERVER可以向客户端发起连接,而客户端不会主动去连接FTP-SERVER的20号端口,所以网络防火墙和主机防火墙才不用放行20端口。



第二个案例,配置vsftpd为被动模式,配置放行网络防火墙与主机防火墙。
第一步:我们还是使用上面的环境,现在来配置vsftpd为被动模式。
其他配置不变,添加上以下内容即可,之后重启vsftpd。


在原有的基础上放行firewalld端口即可,被动模式的FTP服务端会使用随机大于1024的端口来传输数据,vsftpd可以将这个随机端口配置为不小于10的端口范围。

第二步:网络防火墙ASA的配置。
1.为outside-dmz再添加一条访问控制条目。
ciscoasa(config)# access-list outside-dmz extended permit tcp any host 172.16.10.1 range 10000 10010
2.取消为FTP-SERVER配置的nat地址转换与端口映射。
ciscoasa(config)# no object network ftp-server-snat
ciscoasa(config)# no object network ftp-server
3.添加一条新的端口映射,将172.16.10.1直接映射到公网IP,由于访问控制列表的存在,所以不用担心安全方面的问题。
ciscoasa(config)# object network ftp-server
ciscoasa(config-network-object)# host 172.16.10.1
ciscoasa(config-network-object)# nat (dmz,outside) static interface
第三步:将FTP客户端工具FileZilla修改为被动模式,连接即可。

看图理解FTP的被动模式:

思科ASA放行主/被动FTP的更多相关文章
- 思科 ASA 系列防火墙 官方文档下载指南
思科 ASA 系列命令参考 思科 ASA 系列命令参考,A 至 H 命令 思科 ASA 系列命令参考, I 至 R 命令 思科 ASA 系列命令参考,S 命令 思科 ASA 系列命令参考, ASASM ...
- 【python】ftp连接,主被动,调试等级
示例代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import os from ftplib import FTP def ftp_down( ...
- 思科ASA 基础学习
ASA int e0/0 ip add 192.168.1.1 24nameif insidesecruity-leve 100 int e0/0/0ip add 192.168.2.1 24name ...
- 思科ASA对象组NAT
ACL对象组NAT配置 ciscoasa#conf t ciscoasa(config)#hostname ASA ASA(config)#domain-name asa.com ASA(config ...
- 思科ASA基本配置
------------恢复内容开始------------ ASA基本配置 ciscoasa#show running-config //讲解已作的默认配置 ciscoasa#conf ...
- 思科ASA系列防火墙配置手册
使用console连接线登录方法 1.使用cisco的console连接线,连接设备的console口和计算机com口(笔记本用USB转COM口连接线)2.使用超级终端或secureCRT软件连接设备 ...
- FTP主/被动模式的原理
---------------------------------------------------------------------------------------------------- ...
- FTP Proxy Server
本文将在Linux环境下实现一个简单的FTP代理服务器,主要内容涉及FTP主动/被动模式和简单的Socket编程. 1. 主动模式和被动模式 FTP有两种模式,即主动模式(Active Mode)和被 ...
- 【腾讯云】腾讯云服务器搭建ftp服务器
一.硬件描述 1.1 云服务器:腾讯云 云主机 操作系统:Ubuntu Server 14.04.1 LTS 32位 CPU:1核 内存:1GB 系统盘:20GB(本地磁盘) 数据盘:0GB 公网带宽 ...
随机推荐
- Nuxt|Vue仿探探/陌陌卡片式滑动|vue仿Tinder拖拽翻牌效果
探探/Tinder是一个很火的陌生人社交App,趁着国庆假期闲暇时间倒腾了个Nuxt.js项目,项目中有个模块模仿探探滑动切换界面效果.支持左右拖拽滑动like和no like及滑动回弹效果. 一览效 ...
- 算法进阶 (LIS变形) 固定长度截取求最长不下降子序列【动态规划】【树状数组】
先学习下LIS最长上升子序列 看了大佬的文章OTZ:最长上升子序列 (LIS) 详解+例题模板 (全),其中包含普通O(n)算法*和以LIS长度及末尾元素成立数组的普通O(nlogn)算法,当然还 ...
- docker的run操作
docker的run到底做了什么操作呢? 它会优先寻找本地的镜像,如果没有就到仓库找,找不到返回错误,查找不到该镜像.能找到就拉这镜像下来,以该镜像为模板生产容器实例运行. 备注:图不是自己画的,截图 ...
- 将本地代码初始化上传到gitlab仓库
首先你已经安装了git. 1.在本地代码目录,鼠标右键Git Bash Here: 2.执行git命令,此命令会在当前目录下创建一个.git文件夹, git init 3.将项目的所有文件添加到仓库中 ...
- 多测师讲解自动化测试 _RF关键字001_( 中)_高级讲师肖sir
1.关键字如下 1.1Get Text 1.2Get Value 2.#上下滑动(滚动条) Open Browser http://www.jd.com gc Maximize Browser Win ...
- MeteoInfoLab脚本示例:多坐标系
绘图的时候首先要有坐标系(Axes),可以用axes命令创建,如果没有创建在绘图时会自动创建一个.参数里的position是用来置顶坐标系的图形(figure)中的位置的,通过位置置顶,可以将多个坐标 ...
- Android Jetpack从入门到精通(深度好文,值得收藏)
前言 即学即用Android Jetpack系列Blog的目的是通过学习Android Jetpack完成一个简单的Demo,本文是即学即用Android Jetpack系列Blog的第一篇. 记得去 ...
- JVM系列【6】GC与调优2.md
JVM系列笔记目录 虚拟机的基础概念 class文件结构 class文件加载过程 jvm内存模型 JVM常用指令 GC与调优 了解HotSpot常用命令行参数 JVM的命令行参数参考: https:/ ...
- abp(net core)+easyui+efcore实现仓储管理系统——出库管理之三(五十一)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- lumen-ioc容器测试 (6)
lumen-ioc容器测试 (1) lumen-ioc容器测试 (2) lumen-ioc容器测试 (3) lumen-ioc容器测试 (4) lumen-ioc容器测试 (5) lumen-ioc容 ...