ACL 종류(cisco router 기준)
    
ACL
접근 제어 목록(access control list, ACL) 또는 액세스 제어 목록은 개체나 개체 속성에 적용되어 있는 허가 목록을 말한다. 이 목록은 누가 또는 무엇이 객체 접근 허가를 받는지, 어떠한 작업이 객체에 수행되도록 허가를 받을지를 지정하고 있다. 전형적인 ACL에서 목록 안의 각 항목은 주제나 운영을 지정한다. 이를테면 XYZ 파일에 대한 ACL 위의 항목(Alice, delete)은 Alice에게 XYZ 파일을 삭제할 허가 권한을 제공한다.

RACL(reflect)
기존의 ACL에서 간단한 설정으로 내부에서 나가는 트래픽에 대해 제한없이 송신하고 외부에서 들어오는 패킷을 차단하도록하는 조금 더 발전된 형태의 ACL이다.내부에서 나가는 트래픽의 특정 번호를 기억하였다가 동일한 트래픽이 다시 유입된다고 판단되면 그부분만 허용한다.이나 ACL에서 임시 ACL리스트를 만들어 이를 기록함으로써 판단하게 된다.

DACL(dynamic)
외부에서 ACL방화벽을 올린 라우터로 인증을 받은후 인증완료된 사용자에 한해 내부로 통신이 가능하게 한다.ACL에 외부 인증 기능을 추가함으로써 원격지의 인증된 사용자와 통신을 가능하게 한다.

CBAC(Context Based)
RACL에서 조금 더 발전된 형태로써 RACL이 커버하는 Layer4 계층을 넘어 응용계층 Layer7까지 제어가 가능하다.내부 소스의 프로토콜에 따라 state table을 생성하고 이를 관리한다. 관리하는 각 프로토콜 별로 별도의 세션 종료시간을 가진다(UDP 30초,ICMP 10초, TCP fin 패킷 수신후 5초뒤에 삭제) 또한 이는 변경이 가능하다.
허용되는 패킷에 대해 ACL고 함께 유동적으로 작동하는데, 먼저 CBAC에서 걸러진 패킷에 대해 허용하고 해당하지 않는 정보는 모두 ACL에 의해 분류된다. 예를 들어 내부에서 외부로 나갔다 돌아올때 허용될 프로토콜을 세세하게 지정하여 외부와 통신하게 하고 외부에서 들어오는 패킷은 DACL을 이용해 인증될 경우 연결하는 등의 응용이 가능하다.

ZFW(Zone Based)
IOS에서 구현하는 가장 상위단계의 방화벽으로써 사실상 ASA/PIX 방화벽에 필적하는 기능을 제공한다.ZONE 기반으로 방화벽을 구현하며, 각각의 인터페이스에 zone을 할당하고 zone과 zone을 묶어 zone-pair를 만들어 트래픽의 흐름, 응용계층을 포함한 프로토콜 제어, 폴리싱, 파라미터 맵을 이용한 세세한 필터링 기능을 제공한다.
[출처]http://code2501.tistory.com/82?category=594499


라우터(c3745-adventerprisek9_sna-m.124-11.T.bin) k9_sna이 부분이 있으면 방화벽 기능도 가지고 있다.

실습 환경



R1 telnet open하기
R1#conf t
R1(config)#line vty 0 4
R1(config-line)#no login


R4 -> R1 telnet 연결 확인
R4#telnet 10.10.12.1



extended acclist 사용
R2 설정
R2(config)#access-list 100 permit tcp any host 10.10.12.1 eq 23
R2(config)#int f0/0
R2(config-if)#ip access-group 100 in
 
R4 -> R1 telnet 확인
R4#telnet 10.10.12.1




잠시후
R4#telnet 10.10.12.1


telnet이 막히는 것을 확인할 수 있다.


위 ACL설정의 경우 ospf도 deny되어 있기 때문에 ospf를 열어 주어야 한다.

R2에서 다시 OSPF 허용
R2(config)#access-list 100 permit ospf any any

XP <-> 외부인터넷은 막히게 된다.
 
xp <-> 외부 인터넷 허용 설정
R2(config)#access-list 100 permit tcp any any established
//응답 패킷을 허용한다.
R2(config)#access-list 100 permit udp host 168.126.63.1 eq domain any
//DNS 허용
 
R2#show access-list



최종 설정 확인
access-list 100 permit udp host 168.126.63.1 eq domain any
access-list 100 permit ospf any any
access-list 100 permit tcp any host 10.10.12.1 eq telnet
access-list 100 permit tcp any any established


ACL 설정 지우기
R2#conf t
R2(config)#no access-list 100
R2(config)#int f0/0
R2(config-if)#no ip access-group 100
R2(config-if)#end
R2#sh run | include access

RACL설정
R2#conf t
R2(config)#ip access-list extended OUT->IN
R2(config-ext-nacl)#permit ospf any any
R2(config-ext-nacl)#exit
R2(config-if)#ip access-group OUT->IN in
 
RACL방식은 능동적으로 프로토콜이 변화하는 것은 막을 수 없다.
특징 : f0/0을 기준으로 출발지와 도착지의 모든 정보를 서로 뒤집어 버리는 형태로 만들어 준다.
 
XP


R2 추가 설정
R2#conf t
R2(config)#ip access-list extended IN->OUT
R2(config-ext-nacl)#permit tcp any any reflect RACL
R2(config-ext-nacl)#permit udp any any reflect RACL
R2(config-ext-nacl)#permit ip any any reflect RACL
R2(config-ext-nacl)#exit
//밖으로 나가는 acl 설정
 
R2(config)#ip access-list extended OUT->IN
R2(config-ext-nacl)#evaluate RACL
R2(config-ext-nacl)#exit
//밖에서 안으로 들어오는 설정
 
R2(config)#int f0/0
R2(config-if)#ip access-group IN->OUT out
R2(config-if)#end
R2#show access-lists



300초 이후 reflexive IP access list RACL룰은 자동으로 사라진다. 자세히 살펴보면 출발지, 목적지, 출발지 포트가 뒤집어진 것을 확인 할 수 있다. 


XP -> 외부 접속 확인




다음 실습을 위해 access-list 삭제
R2#conf t
R2(config)#no ip access-list extended IN->OUT
R2(config)#no ip access-list extended OUT->IN
R2(config)#int f0/0
R2(config-if)#no ip access-group IN->OUT out
R2(config-if)#no ip access-group OUT->IN in
R2(config-if)#end
R2#show run | include access

DACL
R2에 사용자 인증할 수 있는 인증 수단을 만들어 놓는다 그리고 외부에서 R2로 인증을 한다.인증에 성공을 하면 자동으로 내가 접속했었던 출발지 IP는 라우터에 등록이 되고 라우터는 마음대로 들어올 수 있도록 ACL이 자동으로 걸린다.
Lock & Key 라고도 한다.
 
R2인증 수단 만들기
R2(config)#username user1 password cisco
R2(config)#line vty 0 4
R2(config-line)#login local
 
R4 -> R2 telnet 연결
R4#telnet 10.10.23.2



R2에 telnet으로 접속하면 자동으로 설정한 ACL이 적용 되도록 만들어주기

R2(config)#ip access-list extended OUT->IN
R2(config-ext-nacl)#permit ospf any any
R2(config-ext-nacl)#permit tcp any host 10.10.23.2 eq 23
R2(config-ext-nacl)#dynamic APPLY permit ip any any
R2(config-ext-nacl)#exit
R2(config)#line vty 0 4
R2(config-line)#autocommand access-enable host timeout 10
R2(config-line)#end
 
R2(config)#int f0/0
R2(config-if)#ip access-group OUT->IN in
R2(config-if)#end

R2#show access-lists



R4-> R2 telnet 인증


R2에서 인증 확인




R4 -> R1으로 telnet 접근



성공적으로 인증이 되어 R1으로 접근이 가능하다.


다음 실습을 위해 access-list 지우기
R2(config)#conf t
R2(config)#no ip access-list extended OUT->IN
R2(config)#exit
R2(config)#int f0/0
R2(config-if)#no ip access-group OUT->IN in
R2(config-line)#exit
R2(config)#line vty 0 4
R2(config-line)#no autocommand
R2(config-line)#end
R2#sh run | include access

CBAC 실습
CBAC를 통해 OUT->IN으로 가는 tcp,udp,icmp허용해준다.

R2(config)#ip access-list extended OUT->IN
R2(config-ext-nacl)#permit ospf any any
R2(config-ext-nacl)#exit
R2(config)#ip inspect name CBAC_TEST tcp
R2(config)#ip inspect name CBAC_TEST udp
R2(config)#ip inspect name CBAC_TEST icmp
R2(config)#int f0/0
R2(config-if)#ip access-group OUT->IN in
R2(config-if)#ip inspect CBAC_TEST out
R2(config-if)#end
R2#show access-list



R2#show ip inspect name CBAC_TEST



R2#show ip inspect sessions(XP -> 외부 인터넷으로 접속이후)



R2#sh run | include inspect



ZFW 실습
새로운 토폴로지





IP 설정
 
R1(config)#int f0/0
R1(config-if)#ip add 14.16.0.254 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
 
R1(config)#int f1/0
R1(config-if)#ip add 172.16.0.254 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
 
R1(config)#int f0/1
R1(config-if)#ip add 192.168.100.254 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit

XP IP설정



  2k(windows 2000)



BT
root@bt:~# ifconfig eth0 14.16.0.10/24 up
root@bt:~# route add default gw 14.16.0.254
 
BT->XP , BT -> 2k(windows 2000) ping 통신 확인



zone based firewall
-zone끼리 통신 불가
-zone끼리 통신가능하도록 정책 설정
-CPL(Cisco Policy Language)사용
1.zone 생성
2.interface에 zone 할당
3.zone-pair 생성(zone과의 관계,트래픽의 흐름)
4.class-map/poicy-map 생성(access-list)
5.policy-map을 zone-pair에 적용
 
각 zone에 ping 통신확인



1.zone 생성
R1#conf t
R1(config)#zone security INSIDE
R1(config-sec-zone)#exit
R1(config)#zone security OUTSIDE
R1(config-sec-zone)#exit
R1(config)#zone security DMZ
R1(config-sec-zone)#exit
 
2.interface에 zone 할당
R1(config)#int f0/1
R1(config-if)#zone-member security INSIDE
R1(config-if)#exit
R1(config)#int f1/0
R1(config-if)#zone-member security DMZ
R1(config-if)#exit
R1(config)#int f0/0
R1(config-if)#zone-member security OUTSIDE
R1(config-if)#end
R1#show zone security



트래픽 설계
IN -> OUT
IN -> DMZ
OUT -> DMZ
DMZ -> OUT
 
3.zone-pair 생성(zone과의 관계,트래픽의 흐름)
R1#conf t
R1(config)#zone-pair security IN->OUT source INSIDE destination OUTSIDE
R1(config-sec-zone-pair)#exit
R1(config)#zone-pair security IN->DMZ source INSIDE destination DMZ
R1(config-sec-zone-pair)#exit
R1(config)#zone-pair security OUT->DMZ source OUTSIDE destination DMZ
R1(config-sec-zone-pair)#exit
R1(config)#zone-pair security DMZ->OUT source DMZ destination OUTSIDE
R1#sh zone-pair security



4.class-map생성
내가 보고 싶은 트래픽
 
설계
dns, http, https, ftp
여러트래픽을 한꺼번에 지정할 때는 match-any를 항상 지정해주어야 한다.
 
xp -> 모든 통신
R1(config)#access-list 100 permit ip any any
R1(config)#class-map type inspect ALL_T
R1(config-cmap)#match access-group 100
R1(config-cmap)#exit
R1(config)#class-map type inspect DNS_T
R1(config-cmap)#match protocol dns
R1(config-cmap)#exit
R1(config)#class-map type inspect HTTP_T
R1(config-cmap)#match protocol http
R1(config-cmap)#exit
R1(config)#class-map type inspect HTTPS_T
R1(config-cmap)#match protocol https
R1(config-cmap)#exit
R1(config)#class-map type inspect match-any WEB_T
R1(config-cmap)#match class-map DNS_T
R1(config-cmap)#match class-map HTTP_T
R1(config-cmap)#match class-map HTTPS_T
R1(config-cmap)#exit
R1(config)#class-map type inspect FTP_T
R1(config-cmap)#match protocol ftp
R1(config-cmap)#exit
 
//UTM과 개념이 비슷하다,정의내리고 포함시켜서 사용
 
 
 
4.poicy-map 생성(access-list)
R1(config)#policy-map type inspect IN->OUT_P
R1(config-pmap)#class type inspect ALL_T
R1(config-pmap-c)#inspect
R1(config-pmap-c)#exit
R1(config-pmap)#policy-map type inspect IN->DMZ_P
R1(config-pmap)#class type inspect DNS_T
R1(config-pmap-c)#inspect
R1(config-pmap-c)#exit
R1(config-pmap)#class type inspect HTTP_T
R1(config-pmap-c)#inspect
R1(config-pmap-c)#exit
 
 
R1(config)#policy-map type inspect OUT->DMZ_P
R1(config-pmap)#class type inspect HTTP_T
R1(config-pmap-c)#inspect
R1(config-pmap-c)#exit
R1(config-pmap)#class type inspect HTTPS_T
R1(config-pmap-c)#inspect
R1(config-pmap-c)#exit
 
R1(config)#policy-map type inspect DMZ->OUT_P
R1(config-pmap)#class type inspect DNS_T
R1(config-pmap-c)#inspect
R1(config-pmap-c)#exit
 
 
5.policy-map을 zone-pair에 적용
 
R1(config)#zone-pair security IN->OUT
R1(config-sec-zone-pair)#service-policy type inspect IN->OUT_P
R1(config-sec-zone-pair)#exit
R1(config)#zone-pair security IN->DMZ
R1(config-sec-zone-pair)#service-policy type inspect IN->DMZ_P
R1(config-sec-zone-pair)#exit
R1(config)#zone-pair security OUT->DMZ
R1(config-sec-zone-pair)#service-policy type inspect OUT->DMZ_P
R1(config-sec-zone-pair)#exit
R1(config)#zone-pair security DMZ->OUT
R1(config-sec-zone-pair)#service-policy type inspect DMZ->OUT_P
R1(config-sec-zone-pair)#end
 
확인
 
R1#show zone-pair security



R1#show class-map type inspect



나가는 트래픽만 허용했는데 트래픽이 들어올 수 있는 것은 inspect로 세션을 검사해서 in바운드 acl을 자동으로 허용해주기 때문이다.

+ Recent posts