ASA防火墙应用(结合VMware和QEMU搭建仿真环境)

概述
如今网络安全日益重要,网络面临的威胁也越来越大,来自企业网内部和外部的网络攻击可能为企业带来严重的损失,问题产生时我们该如何解决?
防火墙是我们的首选考虑。思科防火墙在业界一直享有盛名,它集高安全性和高可扩展性于一身,能够对病毒、垃圾邮件、非授权访问等进行实时监控,企业用户的理想选择。前期在讲授网络高级课程安全模块时,防火墙技术主要是以讲解理论为主,配合ASA模拟器介绍常用命令的用法。没有把ASA放在一个具体的生产环境中来研究它是如何工作的,最近研究了一下VMware和QEMU,发现完全可以把二者结合起来,这样基于ASA的实验就更加完整了。同时,对于那些技术爱好者来说,也是不错的选择。于是我整理了一下文档,以一个企业常见拓扑为例来介绍ASA的典型配置。

文档分2部分:
第一部分:搭建VMware+ASA环境
第二部分:配置ASA应用

PS:由于实验过程截图较多,需要的朋友通过后面的链接下载附件。这里仅列出主要配置。

应用案例:

企业需求:

1、初始化配置
2、接口参数配置
3、配置远程管理接入
4、配置ASA静态路由
5、配置网络地址转换NAT
6、配置ACL实现内网正常访问外网
7、发布DMZ区域web服务器
8、配置URL过滤
9、其它配置

1、初始化配置命令
  hostname ciscoasa  ————————-//配置主机名
  domain-name cisco.com ————————-//配置域名
 enable password ciscoasa ————————-//配置特权模式密码
 passwd telciscoasa ————————-//配置telnet密码
 show firewall  ————————-//查看ASA工作模式(路由和透明)
 
 2、接口参数配置
 int e0/0 ————————-//进入接口模式
 nameif outside ————————-//命名接口
 security-level 0 ————————-//安全级别设置为0
 ip address 200.1.1.1 255.255.255.0 ————————-//配置outside接口IP地址
 no shutdown ————————-//开启端口
 exit
 int e0/1 ————————-//同上
 nameif inside
 security-level 100
 ip address 192.168.1.1 255.255.255.0
 no shutdown
 exit
 int e0/2 ————————-//同上
 nameif dmz
 security-level 50
 ip address 172.16.1.1 255.255.255.0
 no shutdown
 exit
 show interface interface brief ————————-//查看接口IP信息
 
 3、配置远程管理接入
  username admin password admin privilege 15 ————————-//建立本地特权用户账号
  telnet 192.168.1.0 255.255.255.0 inside ————————-//允许内网机器从inside接口接入
  telnet timeout 60 ————————-//超时时间为60秒
  aaa authentication telnet console LOCAL ————————-//启用本地账户身份验证
 
  crypto key generate rsa modu 1024 ————————-//生成RSA密钥对
  ssh 0 0 outside  ————————-//允许任意机器从outside接口加密连接
  ssh timeout 60 ————————-//超时时间为60秒
  ssh ver 2 ————————-//启用SSH 版本2
  aaa authentication ssh console LOCAL  //认证使用本地数据库
 
 4、配置ASA静态路由
  route outside 0 0 200.1.1.2 ————————-//配置缺省路由
  sh route ————————-//查看路由表
 
  5、配置网络地址转换NAT
  nat (inside) 1 192.168.1.0 255.255.255.0 ————————-//设置被转换地址范围及local接口
  global (outside) 1 interface ————————-//设置转换地址及global接口
  global (dmz) 1 interface ————————-//设置转换地址及global接口
  sh xlate ————————-//查看NAT转换表
 
  6、配置ACL实现内网正常访问外网
  access-list 101 extended permit tcp 192.168.1.0 255.255.255.0 any eq 80 ————————-//允许内部网段访问外部http服务
  access-list 101 extended permit tcp 192.168.1.0 255.255.255.0 any eq 53
  access-list 101 extended permit udp 192.168.1.0 255.255.255.0 any eq 53 ————————-//允许内部网段访问外部DNS服务
  access-list 101 extended permit tcp 192.168.1.0 255.255.255.0 any eq 554 ————————-//允许内部网段访问外部流媒体服务
  access-group 101 in interface inside ————————-//应用ACL到inside接口进方向
 
 
  7、发布DMZ区域web服务器
  static (dmz,outside) 200.1.1.1 tcp interface 172.16.1.2 www ————————-//设置静态NAT并进行端口映射
  access-list 102 extended permit tcp any interface outside eq 80 ————————-//开启访问outside接口80端口
  access-group 102 in interface outside ————————-//应用ACL102到outside接口进方向
 
  8、配置URL过滤
  step1:定义Regex(正则表达式)-定义URL匹配的字符串
  step2:创建class-map(类映射)-识别传输流量,分类流量
  step3:创建policy-map(策略映射)-针对不同的类执行不同的操作
  step4:应用policy-map应用接口上
 
   regex url1 “\.sohu\.com”
—————————————————————————————————–
   access-list tcp_filter permit tcp 192.168.10.0 255.255.255.0 any eq www
   class-map tcp_filter_class
   match access-list tcp_filter 
—————————————————————————————————–
   class-map type inspect http http_class
   match request header host regex url1
—————————————————————————————————–
   policy-map type inspect http http_url_policy
   class http_class
   drop-connection log 
—————————————————————————————————–
   policy-map inside_http_url_policy 
   class tcp_filter_class
   inspect http http_url_policy
—————————————————————————————————–
   service-policy inside_http_url_policy interface inside
 
 
  其他配置
  清空当前ASA相关协议配置
  clear config route|static|nat|global
 
  清空ASA所有配置
  clear config all
 
  配置ASA日志管理服务器
  logging enable
  logging trap informational
  logging host inside 192.168.1.2
 
  高级配置
  启用IDS功能
  ASA防火墙上配置IPSecVPN
  ASA上配置SSL/Easy Vpn
  配置Failover增加可用性
  配置负载均衡
  希望大家继续关注!

配置ASA防火墙

Posted in 网络安全, 计算机网络 | Tagged , , , | Leave a comment

网络工程&情书

下面是位高人对于网络工程的一点看法,非常形象和生动,特转载过来,让我们来感受一下作者对于技术的热爱和雅兴。

我以为我们同属于/30,ping出timed out才明白处于不同的VLAN. 我尝试着用爱做route,并用Tracer来验证,complete的结果曾经让我感到兴奋无比.

接着,我试着用net use 打开你的心扉,我才发现原来你的net share并没有为我而start. 我开始急了,于是使用ping flood,希望有一天你能为我的执着而感动,可是TTL一次又一次过去了,你依然no response.我开始绝望了,可是一次偶然的机会让我发现原来你并没有处在DMZ里面,我才了解你还是很受伤的,才会把自己禁锢在intranet里面,但是我心里一直期待着vpn那天的到来,希望有一天你能够将我放在你的ACL内,到那时,我将会把我对你的爱用md5 encrypt,借着L2TP向你转达我对你的思念;

同时,你也可以用IPSEC向我倾诉你的寂寞,我深信,我们的爱经受得住IP V6的考验,因为我们的心与心之间,已经建立起了基于TB Fiber带宽的IP Tunnel.

——-为什么爱情不能像设置VLAN一样把不同的“IP”的人绑在一起.

为什么周遭的事物不能像创建ACL那样随心所欲的控制. 为什么相爱的人远在天涯却不能像做VPN一样,拉到近在咫尺. 为什么你我之间没有一个边界路由呢?我已经给你发了公告包了,可是你却没有学习我的路由表,你甚至连一个Default Route的机会都不给我. 你把自己一层一层的封闭,telnet…enable…conf t…ip router…是谁给了你address,是谁给了你router table,是谁给了你access-list,你的生活又遵循怎样的NAT.我想要加入你的网络,让你所有子网路由都向我发公告包吧!我能承受.

人生有太多太多的选择了,但是正是因为有了太多的选择,迷茫了~~~懊悔了~~~,不知道自己真正需要的是什么. 回头才发现,原来—我只要我们在一起,其它一切都是假的. 我从modem这样的一层设备一层层的爬,发现二层的switch不适合我,三层的router也不是我的归宿. 现在的我就像一个边界路由,不知道那些数据包应该何去何从.没有了你就没有了table,我要大喊一声,你就是我的机架,让我回到我的机架上吧!

直到有一天,“四层协议”告诉我,原来address是可以伪造的,就连MAC—Address都是可以伪造的.这一切都是假的,我被下层设备欺骗了.那些我曾经不屑的modem,switch…

你让我如何相信还有爱情….

Posted in 网络安全, 计算机网络 | Tagged , | Leave a comment

[Linux命令小技巧]关于seq的使用技巧.

seq 可以表达数字,一串数字。 例如 seq 50 就会从一打印到 50 个数字 ,还可以跳着出数。例如想每隔两个数出一个数字 seq 1 2 10 这样就只有奇数输出. 例如想产生一个前边家字符的循环 seq -f ‘yoyojacky%g’ 10 这样就会产生从yoyojacky1-yoyojacky10的字符串。
用于产生从某个数到另外一个数之间的所有整数
  例一:
  # seq 1 10
  结果是1 2 3 4 5 6 7 8 9 10
seq
-f, –format=FORMAT use printf style floating-point FORMAT (default: %g)
-s, –separator=STRING use STRING to separate numbers (default: \n)
-w, –equal-width equalize width by padding with leading zeroes

-f 选项 指定格式
例如:
#seq -f”%3g” 9 11
9
10
11
% 后面指定数字的位数 默认是”%g”,
“%3g”那么数字位数不足部分是空格
#sed -f”%03g” 9 11 这样的话数字位数不足部分是0
% 前面制定字符串
seq -f “yoyojacky%03g” 9 11
yoyojacky009
yoyojacky010
yoyojacky011

-w 指定输出数字同宽 不能和-f一起用
# seq -w -f”test%03g” 9 11
seq: format string may not be specified when printing equal width strings
# seq -w 99 103
099
100
101
102
103
输出是等宽状态的,前面会补零来满足字符长度.

-s 指定分隔符 默认是回车
seq -s” ” -f”student%03g” 9 11
student009 student010 student011

有朋友会问我这个东西做什么用呢?
生成序列有什么用途呢?
其实很多地方都可以用到的,这里举例说明一下,例如在企业里,新构建的邮件服务器需要批量添加用户帐户,100个.
用户名都是以stuff加上用户的序列号,例如stuff001, stuff002,这样的样式,并且需要生成8位随机密码,请你编写一个脚本来实现,做为管理员,你一定会想到很多方法,其中一个比较方便的方法就是写一个批处理添加帐户的脚本.
我们用到的命令是: useradd / passwd来进行帐户的添加和创建密码.可是这样不能够批量创建,想要批量创建的话,这些帐户的序列号很多,一个一个地输入很不方便,我们就可以结合脚本,结合shell的循环语句来实现:
批处理脚本如下:
仅供参考:

批量添加用户

批量添加用户

图中的一些内容需要讲解一下:
userlist=$(seq -f”student%03g” $NUMBER1 $NUMBER2) 语句是为了生成批量的用户,而for语句是为了实现循环, useradd是添加用户,
PASSWD=$(openssl rand -base64 5)这条语句是为了实现8位长度的随机密码, 利用的是openssl语句的随机码功能,rand是实现生成伪随机字节(man openssl 可以看到rand选项的功能是:rand Generate pseudo-random bytes.), base64是基于64位编码的算法, 最后一个5代表生成的随机码的长度:
[root@rhel5 /]# openssl rand -base64 10
TXmei9PawwOGyg==
[root@rhel5 /]# openssl rand -base64 5
kTPtyOA=
[root@rhel5 /]#
这里可以看出来,如果用10位的长度,算出的随机伪码长度16位,不便于用户使用,我们这里利用这个命令生成随机码是为了作为用户的初始密码使用的.所以5位长度的编码生成的随机码就正好8位,满足我们安全的需要了,因此这里用5而不用10或者别的数字.
批量添加用户的脚本执行后的结果:
[root@rhel5 /]# sh test.sh
请输入起始帐户编号(例如:l):1
请输入结束帐户编号(例如:100):5
student001
Changing password for user student001.
passwd: all authentication tokens updated successfully.
student002
Changing password for user student002.
passwd: all authentication tokens updated successfully.
student003
Changing password for user student003.
passwd: all authentication tokens updated successfully.
student004
Changing password for user student004.
passwd: all authentication tokens updated successfully.
student005
Changing password for user student005.
passwd: all authentication tokens updated successfully.
帐户创建完成!!
[root@rhel5 /]#
检查结果看看:
[root@rhel5 /]# tail -n 5 /etc/passwd
student001:x:504:504::/home/student001:/bin/bash
student002:x:505:505::/home/student002:/bin/bash
student003:x:506:506::/home/student003:/bin/bash
student004:x:507:507::/home/student004:/bin/bash
student005:x:508:508::/home/student005:/bin/bash
[root@rhel5 /]#
[root@rhel5 /]# tail -n 5 /etc/shadow
student001:$1$ATIgawOJ$RqNFEs9mU3.SXFi43QtMP.:15313:0:99999:7:::
student002:$1$4Lmxs2cM$Yr4fz7d2xZNcvXHytjn4m/:15313:0:99999:7:::
student003:$1$dY1sdDG5$DXr4ufg1LzamNKDfWhCiR.:15313:0:99999:7:::
student004:$1$qNQP74Jr$TDf1gJfJv2mvMHoX.uuLJ.:15313:0:99999:7:::
student005:$1$XYjo5ri2$pn7uAMZTCqwVaVKL0hwfj/:15313:0:99999:7:::
[root@rhel5 /]#
帐户和密码文件创建完成了,很迅速.
那么我们再去看看生成的随机密码文件:
[root@rhel5 /]# cat password.txt
student001 0jFNDY4=
student002 oeIZ3Dk=
student001 pb+FFi8=
student002 EQ4DqYQ=
student003 d0b7wvI=
student004 BPu1yRk=
student005 e093uig=
[root@rhel5 /]#
这样一来,管理员只要将这些密码交付给用户就可以让用户使用linux资源了.类似的管理需求只要举一反三就可以了…是不是很方便呢?

Posted in Linux | Tagged , , , , , , , , , | Leave a comment