bxm's IT Story
Cisco ASA 방화벽(3) - DPI(HTTP,FTP,DNS) 본문
## Application Layer Control (DPI) 1 - HTTP ##
IPS]
conf t
line vty 0 4
pass cisco123
enable cisco123
## ISP에서 Telnet 가능하게 하고, Win7에서 테스트
CE]
conf t
ip nat inside source static tcp 1.1.100.6 23 1.1.100.2 80
int f0/0
ip nat outside
exit
int f0/1
ip nat inside
exit
line vty 0 4
pass cisco123
enable password cisco123 ## Win701에서의 Telnet 사용때의 비밀번호임!
Win702]
ping 192.168.1.254
## 방화벽 단자까지 통신되는지 한번 확인
## 설정 후 Win7의 CMD에서 [telnet 1.1.100.2 80] 명령어를 입력하면, 80번 포트로 방화벽을 우회하여 ISP에
Telnet 연결이 가능하다.
Win701]
## 과제 1##
관리자는 MPF의 DPI 기능을 사용하여 위와 같은 Port 우회를 차단하고, 내부 사용자가 www.yahoo.co.kr과
www.naver.com에 접속하려는 경우 URL Filter를 사용하여 접속을 차단하시오.
ASA]
## \.은 특수문자(Regex)가 아닌 그냥 .이다.
conf t
regex Deny_URL1 ".\.naver\.com"
regex Deny_URL2 ".\.yahoo\.co\.kr"
class-map type regex match-any Deny_URL
match regex Deny_URL1
match regex Deny_URL2
exit
class-map type inspect http HTTP_DPI_C ## DPI_C 이거 정의 안해줬다가 쭉 오류났었음 ㅎㅎ..
match request header host regex class Deny_URL
## 여기서 위의 형광색은 http 안의 header에 들어가 NAVER같은 것을 검색해서 막아버린다는 것인데,
아래 443으로 막은 https는 https(security) 암호화 되어 있기 때문에 검출 자체를 못한다.
그래서 그냥 검출 못하는 것도 다 막아버린 것임!! https를 찾아서 직접 막으려면 비싸게 돈주고 버전업된거 사라.
policy-map type inspect http HTTP_DPI_P
class HTTP_DPI_C ## HTTP_DPI_C이면
drop-connection log
exit
parameters
protocol-violation action drop-connection log ## L2 IP TCP HTTP가 아닐 경우, Drop 시키겠다.
exit
class-map HTTP_C
match port tcp eq 80
exit
class-map HTTP_CS
match port tcp eq 443
exit
policy-map HTTP_P ## HTTP 막기
class HTTP_C
inspect http HTTP_DPI_P
exit
policy-map HTTP_P ## HTTPS 막기
class HTTP_CS
inspect http HTTP_DPI_P
service-policy HTTP_P interface Inside
## Verify ##
show service-policy interface Inside
* parameters -> protocol-violation action drop-connection log
L2 IP TCP HTTP가 아닐 경우, Drop 시키겠다.
## 캐시 전부 지우고 네이버와 야후 막아지나 확인
Win701]
www.naver.com
www.yahoo.co.kr
## 결국 https는 안막아지고, 그냥 인터넷 전부를 막아버린 것임. ##
## 현재 아무것도 안되니 다시 풀어주자.
ASA]
conf t
no service-policy HTTP_P interface Inside
## GUI 모드로 변경할 수도 있다. ##
## Application Layer Control (DPI) 2 - FTP ##
## FTP로 .exe 파일은 안된다. 카카오톡만 봐도 .exe 파일은 직접 전송이 불가능함!!
* Inside 사용자가 FTP 서버에서 파일을 다운로드 하는 경우 'exe' 라는 키워드가 들어있는 파일의 전송은 차단하고,
FTP 배너 메시지가 공개되지 않도록 MPF를 설정하시오.
ASA]
show run policy-map FTP_P
## 먼저 우리가 아래에서 사용할 FTP_P라는 이름을 가진 것이 있는지 확인해보자.
show service-policy interface Inside ## policy-map의 Inside에 무엇이 적용되었는지 보자.
conf t
regex Deny_FTP_File ".\.([eE][xX][eE])"
## 대괄호는 택1임!! 만약 10개가 있어도 그중 1개로 택1 !!
exe | exE | eXe | eXE | Exe | ExE | EXe | EXE |
class-map type inspect ftp DPI_FTP_C
match filename regex Deny_FTP_File
policy-map type inspect ftp DPI_FTP_P
class DPI_FTP_C
reset
exit ## 이것이면 reset해라!!
parameters
mask-banner
exit ## 배너메시지가 공개되지 않도록 하겠다.
class-map FTP_C
match port tcp eq 21
exit
policy-map FTP_P
class FTP_C
inspect ftp strict DPI_FTP_P
exit ## 이것과 일치하면~ 이런 의미임
service-policy FTP_P interface Inside
## 이제 셋팅은 모두 끝마쳤다. FTP에서 .exe 파일을 못 받게 하는 것은 매우 중요하다!! 되는지 확인!!
Win702]
## Inside에서 해야하므로 Win701에서 알드라이브 접속
Win701]
알드라이브 - 100.1.1.251 연결
CentOS]
cd /var/
cd ./ftp/pub
ls -l
## exe 파일 만들어보기
touch test.exe
Win701]
## test.exe 파일을 다운로드 하려 했으나 되지 않음!
## 그럼 권한을 바꿔도 전송하지 못할까?
CentOS]
Win701]
## Application Layer Control (DPI) 3 - DNS ##
* 리쿼시브 쿼리(RQ) : 내부 도메인 서버에게 질의 (외부 도메인을 모르면 대신 알아봐 달라!!)
* 반복 질의(IQ) : 외부 사용자가 질의할 때 사용
* 외부 사용자의 재귀적 쿼리에 대한 응답(DNS Header Flag)의 RD bit가 '1' 일때)
## 재귀적 쿼리 비트는 내부든 외부든 무조건 RD bit가 1이다.
* 외부 공격자가 특정 조직의 DNS 서버에게 다량의 Recursive Query를 반복적으로 전송하여 DNS 서버 부하를
줄 수 있다. 이와 같은 문제를 MPF를 사용하여 해결할 수 있다.
1) ASA는 외부에서 들어오는 kedu 도메인 정보 요청은 허용하고,
그 외 나머지 정보를 물어오는 DNS Query는 차단해야 한다.
Inside 사용자가 물어오는 모든 DNS Query는 허용해야 한다.
ASA]
regex Per_Domain "kedu\.edu"
class-map type inspect dns DPI_DNS_C
match not domain-name regex Per_Domain
match question
## "Kedu.edu"가 아닌, 다른 질의 메시지라는 뜻이다.
policy-map type inspect dns DPI_DNS_P
class DPI_DNS_C
drop log
exit
match header-flag RD
mask
exit
## RD 비트가 1인 재귀적 쿼리들은 RD 비트를 Drop 시키고, 0으로 바꿔라.
access-list DNS_MPF deny udp object-group HQ_IN_NET object DNS_SVR eq 53
## 하지만 출발지가 외부가 아닌 내부인 것은 검사 대상에서 제외시켜라!!
class-map L4_DNS_C
match access-list DNS_MPF
policy-map L4_DNS_P
class L4_DNS_C
inspect dns DPI_DNS_P
exit
service-policy L4_DNS_P interface DMZ
## Kali에서 2차 DNS가 있기 때문에 kedu.edu에 대한 이름풀이가 되긴 될 것임!!
Kali]
vi /etc/resolv.conf
DNS2인 168.126.63.2에 대해 동작 안하게 하고
nslookup
www.naver.com
'Network > Firewall (KEDU)' 카테고리의 다른 글
Debian Linux Port Security - (DHCP Starvation / DHCP Spoofing) (0) | 2021.07.20 |
---|---|
Cisco ASA 방화벽(Final) - ASA_NAT, DNS Rewrite, PAT, PAR (0) | 2021.07.19 |
Cisco ASA 방화벽(2) - SSH, ASDM(GUI Firewall), ACL(Access Control List), Syn Flooding 방어 (2) | 2021.07.16 |
Cisco ASA 방화벽(1) - 기본 세팅, 사용법 (0) | 2021.07.15 |
Zone based Firewall 방화벽(2) - 방화벽 우회와 방어 (0) | 2021.07.15 |