본문으로 바로가기

@ 보안 솔루션 관련 장비

- 방화벽 : 외부에서 내부로 접근하는 트래픽은 제어(차단)하는 장비
- 차단 예외: 응답 패켓, 외부에서 내부로 요청 패캣

- IDS : 침입 탐지 장비(내부로 접근하는 트래픽에 대해서 분석 및 로그 출력 실시),, 차단 하는 기능은 없음.
- IPS : 침입 방지 장비(IDS + 방화벽 기능) 즉,,,차단기능 탐재

- UTM : 방화벽 , IDS, IPS, 웹 방화벽, 무선 관련 보안 기능... 기타 등등 통합 보안 장비
  =IDS + IPS,,, 운영체제가 리눅스......iptables를 그래픽기반(gui)기반으로 바꾼것이다.


외부 -----------------라우터-------방화벽-------------내부----------------
                            why?  라우터까지 패킷이 와야함. 그래서 라우터 뒤에 위치

외부-----------------라우터-------방화벽-------IDS/IPS------(웹 방화벽)---------내부 시스템/서버


외부----------------라우터--------UTM---------------내부 시스템 /서버

외부 --------------UTM----------------------------내부 시스템 /서버

 


1.출발지가 ‘13.13.10.1~2’ 호스트가 웹-서버 ‘172.16.1.1’로 접근하는 것을 차단하여라.
2. 출발지가 ‘13.13.10.0/24’ 서브넷이 웹-서버 ‘172.16.1.1’로 접근하는 것은 허용하여라.
3. 외부 사용자가 인터넷을 통하여 ‘172.16.1.1’ 서버로 ping 하는 것을 차단하여라.
4. Ping을 차단할 경우, 라우터에 인터페이스 정보와 함께 로그가 출력되도록 하여라.
5. 이외 나머지 트래픽들은 접근이 가능하도록 허용하여라.


R1(config)#acc
R1(config)#access-list 110 deny tcp 13.13.10.0 0.0.0.255 host 172.16.1.1 eq 80
R1(config)#ac
R1(config)#access-list 110 deny icmp any host 172.16.1.1 echo log-
R1(config)#access-list 110 deny icmp any host 172.16.1.1 echo log-input
R1(config)#ac
R1(config)#access-list 110 permit ip any any
R1(config)#int f0/1       
R1(config-if)#ip ac
R1(config-if)#ip access
R1(config-if)#ip access-group 110 out


1.평일 오전 9:00부터 오후 6:00까지만 웹-서버 ‘172.16.1.1’에서 PC ‘13.13.10.1’로 다운
로드되는 트래픽만 차단하여라.
2 이외 나머지 트래픽들은 허용한다.

R1(config-time-range)#periodic dail
R1(config-time-range)#periodic daily 09:00 to 18:00
R1(config-time-range)#exit
R1(config)#ac
R1(config)#access-list 150 deny tcp host 172.16.1.1 host 13.13.10.1
R1(config)#c
R1(config)#ac
R1(config)#access-list 150 permit ip any any
R1(config)#ip ac
R1(config)#ip access
R1(config)#ip access-g   
R1(config)#ip access-groueex
R1(config)#ip access-group
R1(config)#int f0/1       
R1(config-if)#ip ac
R1(config-if)#ip access
R1(config-if)#ip access-group 150 out
-----------------------------------------------------------------------------------------------------------
Cisco IOS Firewall


내부 네트워크 ‘150.1.13.0/24’로 접근하는 트래픽 차단 설정
① 출발지가 ‘13.13.12.2’에서 접근하는 텔넷 트래픽 차단 및 로그 메시지 확인
② 출발지가 ‘13.13.12.0/24’에서 실시하는 PING 차단
③ 대신, 내부 네트워크 ‘150.1.13.0/24’에서 ‘13.13.12.0/24’으로는 PING이 되어야함
④ 나머지 트래픽들은 접근 허용

R1(config-ext-nacl)#deny tcp host 13.13.12.2 150.1.13.0 0.0.0.255 eq 23 log-input
R1(config-ext-nacl)#deny icmp 13.13.12.0 0.0.0.255 150.1.13.0 0.0.0.255 echo
R1(config-ext-nacl)#permit ip any any
R1(config-ext-nacl)#exit
R1(config)#int s1/0
R1(config-if)#ip ac
R1(config-if)#ip access
R1(config-if)#ip access-group In-Filter in


@ R2에서 ‘150.1.13.254’로 텔넷 접속 및 PING 테스트 실시


R2#ping 150.1.13.254 source 13.13.12.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 150.1.13.254, timeout is 2 seconds:
Packet sent with a source address of 13.13.12.2
U.U.U
Success rate is 0 percent (0/5)
R2#telnet 150.1.13.254 /source
R2#telnet 150.1.13.254 /source-interface fa0/1    
Trying 150.1.13.254 ...
% Destination unreachable; gateway or host down


@ R1에서 확인한 ACL 로그 메시지와 ACL 정보 확인

*Mar  1 00:20:00.927: %SYS-5-CONFIG_I: Configured from console by console
R1#
*Mar  1 00:20:09.403: %SEC-6-IPACCESSLOGP: list In-Filter denied tcp 13.13.12.2(36939) (Serial1/0 ) -> 150.1.13.254(23), 1 packet
R1#show ip acess
R1#show ip acc 
R1#show ip access
R1#show ip access-lists
Extended IP access list 150
    10 deny tcp host 172.16.1.1 host 13.13.10.1
    20 permit ip any any
Extended IP access list In-Filter
    10 deny tcp host 13.13.12.2 150.1.13.0 0.0.0.255 eq telnet log-input (2 matches)
    20 deny icmp 13.13.12.0 0.0.0.255 150.1.13.0 0.0.0.255 echo (22 matches)


@R4에서 13.13.12.2 ping test

R4#ping 13.13.12.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 13.13.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 44/52/72 ms
R4#
--------------------------------------------------------------------------------------------------
Access-List Established

 


내부 네트워크의 보안성을 강화하기 위해 외부에서의 모든 접근을 차단하고

내부 네트워크의 외부 통신을 자유롭게 하기 위해 "Access-List Established"를 사용할 수 있다.


이 기법은 외부에서 "TCP 세션을 성립시키려는 SYN 패킷에 대하여 거부" 하고

내부에서 외부로 접속하게 되면 "응답"시 돌아오는 "SYN/ACK" 에 대하여 네트워크를 오픈하는 것이다

established 는 TCP 세션에만 적용되는 단점이 있다.

@R1
R1(config)#access-list 110 per
R1(config)#access-list 110 permit tcp any any esta
R1(config)#access-list 110 permit tcp any any established
R1(config)#access-list 110 permit udp any eq 520 any eq 520  
R1(config)#int s1/0
R1(config-if)#ip
R1(config-if)#ip ac
R1(config-if)#ip acces
R1(config-if)#ip access-group 110 in

@R2
R2#telnet 150.1.13.254 /source-interface fa0/1
Trying 150.1.13.254 ...
% Destination unreachable; gateway or host down

@R4 핑테스트 실시

R4#ping 13.13.12.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 13.13.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 44/52/72 ms
R4#telnet 13.13.12.2
Trying 13.13.12.2 ... Open

### R2 ###

R2#exit

[Connection to 13.13.12.2 closed by foreign host]

R4에서 먼저 ‘13.13.12.2’로 TCP 세션을 성립하기 위한 ‘SYN’를 전송하고, 이에 대한 응답으
로 외부로부터 ‘ACK, SYN’가 설정된 패켓을 수신함으로써 ACL ‘establised’ 키워드 때문에 텔넷 응답패킷이 허용되는
것이다

@R1

R1#show ip access-lists
Extended IP access list 110
    10 permit tcp any any established (16 matches)
    20 permit udp any eq rip any eq rip (33 matches)

‘establised는 수신한 패켓의 TCP Control Flag 중 ‘ACK’ 또는 ‘RST’가 설정된 경우에만 허용하
는 동작을 실시하기 때문에 TCP 환경에서 방화벽 기능을 수행할 수 있다.

------------------------------------------------------------------------------------------------------

리플렉시브 ACL(Reflexive ACL) :
1. 내부 --> 외부 2,외부----> 내부

리플렉시브 ACL이란 내부에서 외부로 패켓을 전송하는 순간, 외부에서 내부로 되돌아오는 응답 패켓을 허
용하는 항목이 임시적으로 자동 생성되는 것을 의미한다. 내부에서 외부로 새로운 세션이 시작, 다시 되돌아 올 수 있도록
임시적으로 항목 허용

ip access-list extended Inside-In-Filter
permit ip 150.1.13.0 0.0.0.255 any reflect CISCO

ip access-list extended Outside-In-Filter
permit udp any eq 520 any eq 520
evaluate CISCO
deny ip any any

int s1/0
ip access-group Inside-In-Filter in

int f0/0
ip access-group Outside-In-Filter in

@R1
R1#show ip access-lists
Reflexive IP access list CISCO
Extended IP access list Inside-In-Filter
    10 permit ip 150.1.13.0 0.0.0.255 any reflect CISCO
Extended IP access list Outside-In-Filter
    10 evaluate CISCO
    20 deny ip any any (3 matches)

@R2
R2에서 ‘150.1.13.254’로 텔넷 접속 및 Ping 테스트

R2#telnet 150.1.13.254 /source-interface fa0/1
Trying 150.1.13.254 ...
% Connection timed out; remote host not responding


R2#ping 150.1.13.254 source 13.13.12.2       

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 150.1.13.254, timeout is 2 seconds:
Packet sent with a source address of 13.13.12.2


---------------------------------------------------------------------------------------------

CBAC(Context-Based Access Control) == ip inspect name ~


CBAC은 리플렉시브 ACL과 마찬가지로 내부에서 외부로 나가는 세션을 검사하여,
그 세션에 대한 응답 패켓을 수신하기 위한 임시 항목을 생성함으로써 되돌아 오는 응답 패켓을 허용한다.TCP SYN 패캣 검사하여
TCP SYN 플러딩 공격을 차단가능... 결국에는 내부에서 외부만 나가는 핑만 허용된다.


ip inspect audit-trail

ip inspect name CISCO tcp
ip inspect name CISCO udp
ip inspect name CISCO icmp

ip access-list extended IN_Traffic
permit udp any eq 520 any eq 520

int s1/0
ip inspect CISCO out
ip access-group IN_Traffic in

@R1
R1#show ip inspect sessions ---- 내부에서 외부로 패킷 전송 한적 없음

R1#show ip inspect in      
R1#show ip inspect interfaces
Interface Configuration
 Interface Serial1/0
  Inbound inspection rule is not set
  Outgoing inspection rule is CISCO  --- s1/0 인터페이스 outbound로 CBAC적용됨
    tcp alert is on audit-trail is on timeout 3600  tcp 기본 타임 아웃 3600초
    udp alert is on audit-trail is on timeout 30   cp 기본 타임 아웃 30초
    icmp alert is on audit-trail is on timeout 10 cp 기본 타임 아웃 10초
  Inbound access list is IN_Traffic  --- s1/0 인터페이스에 인바운드로 확장 acl적용
  Outgoing access list is not set

@R2 (외부에서 내부로 핑차단 됨)

ping 150.1.13.254 source 13.13.12.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 150.1.13.254, timeout is 2 seconds:
Packet sent with a source address of 13.13.12.2
U.U.U
Success rate is 0 percent (0/5)
R

@R4(내부에서 외부로 핑허용 됨)
R4#ping 13.13.12.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 13.13.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 48/51/60 ms

------------------------------------------------------------------------------------------------
dynamic ACL(Lock and key) : 외부에서 내부로 텔넷 접속 허용,,,, 일정시간 경과 되면 자동 삭제

다이내믹 ACL이란 인증된 외부 네트워크로부터 전송되는 패켓을 허용하기 위해서 라우터에 자동으로 ACL
항목을 추가하는 기능을 의미한다.


username admin password cisco ---- R1에서 사용자 인증을 하기 위한 사용자 정보(username, password)를 생성한다.
username admin autocommand access-enable host timeout 10 사용자 인증후 자동으로 텔넷 접속 종료, host 키워드로 인해
나중에 출발지 ip 주소가 나중에 자동으로 생성되며, 10초후 ACL 항목이 제거 된다.

line vty 0 4--- vty라인으로 텔넷이 들어오면, 사용자 정보(username, password)확인
login local

ip access-list extended IN_Traffic ----Lock and key 구성
permit tcp any host 13.13.9.1 eq telnet
dynamic Lock&Key permit ip any 150.1.13.0 0.0.0.255
deny ip any 150.1.13.0 0.0.0.255 --- 동적 lock&key가 구성되기 전까지는 내부의  150.1.13.0.24로 전송되는 패킷 차단
permit udp any eq 520 any eq 520 --ripv2 패킷 허용

int s1/0
ip access-group IN_Traffic in --- lock and key가 적용되도록 s1/0 인바운드로 적용

-----------------------------------------------------------------------------------------

TCP SYN 플러딩 공격 방지

명령어 ip tcp intercept ~

클라이언트     서버
syn  ------------> syn
     <------------ ACK,SYN
ACK  -------------> 

TCP Intercept 유형

Watch 모드
클라이언트와 서버간에 TCP 세션이 성립되는 과정을 모니터링 한다. 만
약, 기본 30초 이내에 TCP 연결이 성립하지 않으면,
서버에게 RST를 전송하여 연결을 해지한다. 라우터 입장에서 부하 발생이 낮다.

클라이언트     서버
syn  ------------> syn
     <------------ ACK,SYN
ACK  ------------->  watch는 ack을 버리고 reset보낸다.

공격자------R2-------R1(중간라우터)----------R4
공격자가 R1---> R4로 패킷을 보내는 순간 watch모드가 작동되어
ack는 수신하지 않으며 그것을 reset 해버린다.
@R1
access-list 110 permit tcp any any
ip tcp intercept list 110
ip tcp intercept mode watch
ip tcp intercept watch-timeout 15

 

R1#debug ip tcp intercept
TCP intercept debugging is on
R1(config)#
*Mar  1 00:33:08.703: INTERCEPT: new connection (13.13.12.2:18701 SYN -> 150.1.13.254:23)
*Mar  1 00:33:08.747: INTERCEPT: (13.13.12.2:18701 <- ACK+SYN 150.1.13.254:23)
*Mar  1 00:33:08.783: INTERCEPT: (13.13.12.2:18701 ACK -> 150.1.13.254:23)

정상적인 TCP 3-Way 핸드 쉐이킹 과정이 진행되는 것을 알 수 있다

R1에서 TCP Intercept Watch 모드 설정

R1(config)#ip access-list extended TEST
R1(config-ext-nacl)#deny tcp host 13.13.12.2 host 150.1.13.254 ack
R1(config-ext-nacl)#permit ip any any
R1(config-ext-nacl)#
R1(config-ext-nacl)#int s1/0
R1(config-if)#ip access-group TEST in

@R2

R2#telnet 150.1.13.254 /source-interface fa0/1
Trying 150.1.13.254 ... Open

@R1
*Mar  1 00:35:26.767: INTERCEPT: new connection (13.13.12.2:56522 SYN -> 150.1.13.254:23)
외부에서 내부 ‘150.1.13.254’로 SYN 패켓이 전송되고, R1에서 TCP Intercept Watch 모드 동작이 시작된다.

*Mar  1 00:35:26.811: INTERCEPT: (13.13.12.2:56522 <- ACK+SYN 150.1.13.254:23)
R4에서 공격자 측으로 ‘ACK+SYN’ 패켓이 전송된다. 1번 과정에서 수신한 SYN 패켓은 공격이므로 ACK
응답은 오지 않을 것이다.
R1(config-if)#
*Mar  1 00:35:28.923: INTERCEPT: server packet passed in SYNRCVD (13.13.12.2:56522 <- 150.1.13.254:23)
R1(config-if)#
*Mar  1 00:35:33.083: INTERCEPT: server packet passed in SYNRCVD (13.13.12.2:56522 <- 150.1.13.254:23)
R1(config-if)#
*Mar  1 00:35:41.211: INTERCEPT: server packet passed in SYNRCVD (13.13.12.2:56522 <- 150.1.13.254:23)
*Mar  1 00:35:41.771: INTERCEPT: SYNRCVD timing out (13.13.12.2:56522 <-> 150.1.13.254:23)
Watch 타임 아웃 15초 이내에 외부로부터 ACK를 수신하지 못한 상태이다.

*Mar  1 00:35:41.775: INTERCEPT(*): (13.13.12.2:56522 RST -> 150.1.13.254:23

R1은 외부 공격자 IP 주소를 출발지로 하여 R4에게 RST 패켓을 전송함으로써 TCP 연결을 종료한다
------------------------------------------------

 

Intercept 모드
서버로 전송되는 TCP 패켓을 라우터가 가로채기하여, 대신 TCP
ACK+SYN를 전송하고, 상대방으로부터 ACK를 수신하면, 서버쪽으로
SYN를 전송하여 TCP 연결을 완성한다. 만약, 기본 30초 안에 Ack를 수
신하지 못하면 공격으로 간주하여 상대방에게 RST를 전송하여 연결을
해지한다. 라우터 입장에서 부하 발생이 높다.


@R1

R1(config)#access-list 110 permit tcp any any
R1(config)#
R1(config)#ip tcp intercept list 110
R1(config)#ip tcp intercept mode intercept
R1(config)#ip tcp intercept connection-timeout 30

 

@R2

R2#telnet 150.1.13.254 /source-interface fa0/1
Trying 150.1.13.254 ... Open

 

@R1

02:01:14: INTERCEPT: new connection (13.13.12.2:12817 SYN -> 150.1.13.254:23) ①
02:01:14: INTERCEPT(*): (13.13.12.2:12817 <- ACK+SYN 150.1.13.254:23) ②
R1#
02:01:15: INTERCEPT(*): SYNRCVD retransmit 1 (13.13.12.2:12817 <- ACK+SYN
150.1.13.254:23) ③
R1#
02:01:17: INTERCEPT(*): SYNRCVD retransmit 2 (13.13.12.2:12817 <- ACK+SYN
150.1.13.254:23)
R1#
02:01:21: INTERCEPT(*): SYNRCVD retransmit 3 (13.13.12.2:12817 <- ACK+SYN
150.1.13.254:23)
R1#
02:01:29: INTERCEPT(*): SYNRCVD retransmit 4 (13.13.12.2:12817 <- ACK+SYN
150.1.13.254:23)
R1#
02:01:45: INTERCEPT: SYNRCVD retransmitting too long (13.13.12.2:12817 <->
150.1.13.254:23) ④
02:01:45: INTERCEPT(*): (13.13.12.2:12817 <- RST 150.1.13.254:23) ⑤


① 외부에서 내부 ‘150.1.13.254’로 SYN 패켓이 전송되고, R1은 SYN 패켓을 가로채기 한다.
② R1은 외부 공격자측과 TCP 연결을 시도하기 위해서 서버를 대신하여 ‘ACK+SYN’ 패켓을 전송한다.
③ 외부로부터 ACK 패켓이 수신되지 않으므로 Connection 타임 아웃이 만료될때까지 ACK+SYN’ 패켓을 재
전송한다.
④ Connection 타임 아웃 이내에 외부로부터 ACK를 수신하지 못한 상태이다.
⑤ R1은 서버 IP 주소를 출발지로 하여 외부 공격자측으로 RST 패켓을 전송함으로써 TCP 연결을 종료한다.

'네트워크/서버/모의해킹 > 방화벽' 카테고리의 다른 글

17.5.29-30(71-72일차 UTM)  (491) 2017.05.30
17.5.29(70일차 UTM)  (507) 2017.05.30