bxm's IT Story
방화벽 GNS3 본문
CentOS | Win701 | Win2016 | Win702 |
3 | 1 | 2 | 4 |
공통]
en
conf t
no ip domain lookup
line c 0
logg sy
exec-timeout 0
exit
line vty 0 4
pass cisco
exit
hostname ##
## 1세대 방화벽 Packet Filtering ##
SW1]
no ip routing
HQ]
## VTP가 없으므로 바로 트렁킹
conf t
int f0/0
no shut
ip add 100.1.1.254 255.255.255.0
exit
int f0/1
no shut
ip add 1.1.100.1 255.255.255.252
end
wr
IOS_FW]
conf t
int f0/0
no shut
ip add 1.1.100.2 255.255.255.252
exit
int f0/1
no shut
ip add 1.1.100.5 255.255.255.252
end
wr
BB (BackBone)]
conf t
int f0/0
no shut
ip add 1.1.100.6 255.255.255.252
exit
int f0/1
no shut
ip add 1.1.100.9 255.255.255.252
end
wr
Branch]
conf t
int f0/0
no shut
ip add 1.1.100.10 255.255.255.252
exit
int f0/1
no shut
ip add 200.1.1.254 255.255.255.0
end
wr
## OSPF ##
HQ]
conf t
router ospf 13
router-id 1.1.1.1
network 100.1.1.254 0.0.0.0 area 0
network 1.1.100.1 0.0.0.0 area 0
end
wr
IOS_FW]
conf t
router ospf 13
router-id 2.2.2.2
network 1.1.100.2 0.0.0.0 area 0
network 1.1.100.5 0.0.0.0 area 0
end
wr
BB]
conf t
router ospf 13
router-id 3.3.3.3
network 1.1.100.6 0.0.0.0 area 0
network 1.1.100.9 0.0.0.0 area 0
exit
## BB가 DR이 되게 만들기 위해서
int f0/1
ip os priority 100
end
wr
Branch]
conf t
router ospf 13
router-id 4.4.4.4
network 1.1.100.10 0.0.0.0 area 0
network 200.1.1.254 0.0.0.0 area 0
end
wr
BB]
conf t
access-list 1 permit 100.1.1.0 0.0.0.255
access-list 1 permit 200.1.1.0 0.0.0.255
ip nat inside source list 1 int f1/0 overload
int f0/0
ip nat inside
exit
int f0/1
ip nat inside
exit
int f1/0
no shut
ip nat outside
ip add dhcp
exit
## IP 받은것을 확인!!
ip route 0.0.0.0 0.0.0.0 f1/0 10.0.0.1
## 모든 OSPF 라우터들에게 Default-route를 뿌려야 얘로 향할것이므로
router ospf 13
default-information originate always
Win7]
## VMnet1번 // IP 설정
Win2016]
## VMnet2번 // IP 설정
Window + R : devmgmt.msc
## Kedu.edu 를 지우고 새로 만들기!!
## 권한서버 - 주서버(찾아보기) - NS 선택 - 책임자 : admin.kedu.edu
## 이름서버 - 편집 -
[CMD] - [nslookup]
> www.kedu.edu
> kedu.edu
## 이름풀이 잘 되나 확인 ##
Win7]
CMD
nslookup
>www.kedu.edu
CentOS]
## VMnet3번, IP 변경
vi /etc/sysconfig/network-scripts/ifcfg-ens32
vi /etc/resolv.conf
systemctl restart network
nslookup
>www.kedu.edu
>kedu.edu
systemctl restart httpd
systemctl restart vsftpd
Win7]
## www.kedu.edu
--> 안된다.
## www.naver.com
## Win701을 종료하고, VMware에서 Win701 우클릭 - Manage - Clone
## Virtual Machine 안에 WIN702 새로운 빈 디렉토리 만들어주고 설정
WIN702]
## VMnet4번 , IP 넣기
## 이름 풀이 확인
## 인터넷 확인
## 사이트 접속 되나 확인 / FTP 되나도 추가로 확인해보기.
## IOS Firewall ##
- Cisco Router의 경우 모델과 IOS 버전에 따라 Router Firewall 기능을 구현하는 것이 가능하다.
1. ACL(Access Control List)
2. RACL(Reflexive ACL)
3. DACL(Dynamic ACL)
4. CBACL(Context-Based ACL)
5. ZFW(Zone-based Firewall)
1. ACL(Access Control List)
IOS_FW]
conf t
ip access-list extended OUT->IN
permit udp any host 100.1.1.250 eq 53
permit tcp any host 100.1.1.251 eq 80
deny ip any any
int f0/1
ip access-group OUT->IN in
## 설정 후 <IOS_FW>과 <ISP> 라우터 사이의 OSPF 네이버 관계가 끊어지게 된다. 이유는 OSPF hello 패킷에 대해서 수신을 허용하지 않았기 때문이다. 이를 해결하기 위하여 OSPF hello 패킷을 허용해야 한다.
## 주의할 점은 [deny ip any any] 보다 앞에 선언되어야 한다는 것이다.
IOS_FW]
conf t
ip access-list extended OUT->IN
5 permit ospf host 1.1.100.6 any
[과제] FTP도 허용해 보시오.
IOS_FW]
ip access-list extended OUT->IN
21 permit tcp any host 100.1.1.251 eq 21
## FTP를 추가하려면 30번 이전의 번호로 추가하면 된다.
## tcp = 프로토콜
## any = 출발지
##100.1.1.251 = 목적지
## 기본적인 ACL의 경우 1세대 방화벽으로 Session을 인지하는 것이 아니라, 수신 Packet과 적용되어 있는 Filtering
정책을 비교하여 수신 여부를 결정한다. 결과적으로 내부에서 외부로 전송한 트래픽의 응답을 처리할 수 없다.
이유는 응답 트래픽을 모두 허용하는 것이 불가능하기 때문이다. 출발지 포트는 Random 포트이고, 해당 포트들을
모두 허용할 수는 없다.
## 위와 같은 응답 트래픽 수신 문제를 해결할 수 있는 1세대 방화벽 기술에는 아래와 같은 것들이 있다.
- 'established 옵션'
- 'RACL(Reflexive ACL)'이 있다.
IOS_FW]
ip access-list extended OUT -> IN
22 permit tcp any 100.1.1.0 0.0.0.255 established
## 'established' 옵션을 사용할 경우, tcp 서비스의 응답 트래픽은 수신이 가능하다. 그러나 실제 IOS_FW가 Session을
인지하고 처리하는 것이 아니라, TCP 헤더의 Flag 중 ack 혹은 rst flag가 1인 경우 허용한다는 뜻이다.
(TCP 응답 트래픽의 경우 해당 Flag가 1로 체크)
## 공격자가 해당 TCP Flag를 얼마든지 조작이 가능하고, 또한 TCP가 아닌 다른 Protocol에 대해서는 응답 트래픽을
수신할 수 없기 때문에 제한이 많다. 이와 같은 한계점을 해결할 수 있는 1세대 방화벽 기술에는
'RACL(Reflexive ACL)'이 있다!!
## 현재 내부에서 외부로 나가는 것을 막은 적이 없음. 하지만 외부의 인터넷을 방문한 후 복귀할 때 BB에서 IOS_FW로
가는 ACL에 걸려버리게 된다!! (ACL은 현재 52,80,21번을 제외하고 전부 Deny!!)
이럴 때는 Established 옵션을 쓰면 된다.
IOS_FW]
show ip access
conf t
ip access-list extended OUT->IN
22 permit tcp any 100.1.1.0 0.0.0.255 established
show ip access
## 현재 Win702에서 Server 까지 지나갈 수 있고, Server에서 외부로 나갈 수도 있다.
하지만, Server에서 외부 Internet에 접속 후 다시 내부로 들어오려고 할 때 방화벽에 막혀 들어오지 못한다.
그러기에 Established를 사용했으나, 그것마저도 원할하지 않은 상황이다.
kedu.edu는 들어가지는데, www.naver.com는 결국 안들어가짐 ㅠㅠ
따라서 이를 방지하고자 RACL을 사용할 것이다.
## 궁금했던것 !!!!! UTM에서는 방화벽 설정을 해주지 않으면 '자동 Deny' 였는데, 여기의 IOS_FW는 설정을 따로
해주지 않았음에도 Win701(내부) -> 외부 인터넷이 통신이 되었다. 이유는 라우터에서 쓰는 방화벽이기 때문에
기본설정이 UTM처럼 'Default Deny'면 기본 통신 자체부터가 불가능하기 때문에 일일이 설정하기가 번거롭게 된다.
따라서 기본 설정은 Permit인 것임!!
## 2. RACL(Reflexive ACL) ##
* RACL의 경우 1세대 방화벽 기술로 Session 정보를 인식할 수 없다 (Stateless)
## RACL은 IOS_FW에서 Source-IP/De-IP와 So-Port/De-Port 정보를 확인 후, 응답 트래픽을 수신하기 위한 임시
ACL을 생성하게 된다. 임시 ACL의 경우 Source와 Destination 정보가 역으로 변경된 것이다. 동적포트(ex. FTP~)는 불가하다.
## RACL을 사용할 경우, 'Established' 옵션과는 다르게, TCP 외 다른 프로토콜의 응답도 처리가 가능하다.
* 리플렉시브 액세스리스트 (Reflexive Access List)란 내부에서 외부로 통신을 시작하는 순간 해당 세션만 허용하기
위하여 만들어지는 액세스 리스트를 말한다.
* 일반 액세스 리스트 사용시 Established 옵션을 사용하여 세션을 차단할 수 있다. established 키워드는 ACK나 RST
비트의 설정 여부에 따라 TCP 패킷을 차단한다. 즉, ACK나 RST 비트가 설정되어 있는 패킷은 세션의 처음이 아님을
의미하므로, 이미 설정된 세션에 속하는 패킷들이다. 따라서 이런 패킷들은 통과시킨다.
일반 액세스 리스트는 인터페이스에 영구적으로 설정되어 있으므로, 적당히 속이면 항상 외부에서 접근이 가능하며,
Established 키워드를 사용한 앞의 방법으로는 TCP 상위 레이어 프로토콜만 제어할 수 있다.
그러나, 리플렉시브 액세스 리스트를 이용한 세션 필터링은 일시적인 필터를 사용하고, 세션이 끝나면 제거된다.
이것으로 인해 해커들은 세션의 도중에만 작업할 수 있다.
==> 자기가 알아서 생성하고, 자기가 알아서 지운다. 실습을 통해 알아보자!
IOS_FW]
## 이전에 실습한 ACL을 모두 삭제
conf t
int f0/1
no ip access-group OUT->IN in
exit
no ip access-list extended OUT->IN
ip access-list extended RACL->OUT
permit tcp any any reflect RACL_T
permit udp any any reflect RACL_T
permit icmp any any reflect RACL_T
permit ip any any
ip access-list extended RACL->IN
permit ospf host 1.1.100.6 any
permit udp any host 100.1.1.250 eq 53
permit tcp any host 100.1.1.251 eq 80
evaluate RACL_T
int f0/1
ip access-group RACL->OUT out
ip access-group RACL->IN in
Win701]
## 인터넷 되는지 시험!! 잘 된다!!
## 정리!! ##
* 1세대(SPI) 방화벽은 동적포트(ex. FTP)일 경우 통신이 불가하다.
3세대 방화벽은 FTP의 경우 Passive 모드를 사용하여 동적포트로 연결이 가능하다. 알FTP(알드라이브 같은것)에서
Passive 모드 체크 후 연결.
* RACL의 경우 1세대 방화벽 기술이기 때문에 Session을 인지하는 것이 아니라, 단순히 출발지와 목적지 정보를
반대로 설정하여 응답 트래픽을 허용하는 것이다. 때문에, FTP와 같은 2개 이상의 포트를 사용하는 서비스의 경우
정상적으로 처리가 되지 않는다. 이러한 동적 포트 서비스를 지원하기 위해서는 3세대 기술인 SPI(Stateful Packet
Inspection)가 필요하다.
* FTP는 'Passive mode'를 사용할 경우, 1세대 방화벽에서도 사용이 가능하다.
## 지금까지는 RACL이 만능같지만 나가는 것에 대해서만이지, 세션 전체를 인지하지 않음. 그래서 한계점이 있다!
## 3. DACL(Dynamic ACL) ##
* 출장 혹은 재택 근무중인 직원이 회사 내부망에 접근을 하려는 경우, 오늘날엔 Remote Access VPN을 주로 사용한다.
만약 VPN을 구성할 수 없는 경우 방화벽에서 인증을 통해 특정 사용자가 내부망에 접근할 수 있는 임시 ACL이 생성이
가능하다.
==> 이를 DACL(Lock & Key)이라고 한다.
## 내부가 사설망(학원으로 따지면 10 네트워크!)이다. 원칙적으로는 외부에서 사설망으로 들어올 수 없다.
방화벽에서 VPN 인증을 하고 들어와야함. 하지만 만약에 VPN을 통해 인증을 할 수 없는 경우에 방화벽에서 인증을
통해 ACL을 만드는 것을 DACL이라고 한다.
* DACL의 동작 과정은 다음과 같다.
1) 외부 사용자가 DACL이 설정된 Router로 telnet 접근을 한다.
2) 정상적으로 Telnet을 통해 사용자 계정이 인증된 경우 접근을 허용하는 임시 ACL이 활성화된다.
3) 그 후 인증에 통과된 외부 사용자는 임시 ACL에 정의된 서비스에 대해서는 접근이 가능해진다.
HQ]
conf t
username admin password cisco123
line vty 0 4
login local
IOS_FW]
show ip access-list
conf t
username reuser password cisco123
ip access-list extended RACL->IN
41 permit tcp any host 1.1.100.5 eq 23
42 dynamic applythis permit tcp any host 1.1.100.1 eq 23
line vty 0 4
login local
autocommand access-enable host timeout 10
* [41 permit tcp any host 1.1.100.5 eq 23]
: 외부로 나간 직원의 출발지 IP를 모르기 때문에 'Any' 명령어를 주고,
목적지 IP는 자신의 IOS_FW 라우터의 IP를 준다.
* [42 dynamic applythis permit tcp any host 1.1.100.1 eq 23]
: 외부로 나간 직원이 접근을 시도할 때 이 명령어가 등장한다. 이 때 평상시에는 활성화가 안 되어 있기 때문에
line vty 0 4 -> 안에 login local을 준 후 [autocommand access-enable host timeout 10]을 입력해 준다.
이 의미는 위 명령어인 dynamic applythis를 인증 시도할 때, 자동으로 활성화 한다는 의미이고,
autocommand의 host의 의미는 처음 들어온 외부직원의 IP로 바꾸라는 의미이다. 즉, 초기에는 Any 였지만,
처음 인증을 성공한 외부직원의 IP로 바꾸라는 의미이다.
show ip access-list
## 아직 인증 전이기 때문에 42의 any가 그대로 있다.
## Win702에서
Win702]
telnet 1.1.100.5
## 그리고 IOS_FW에서 설정한 user name을 적어준다.
ID : reuser
PW : cisco123
## ID와 비밀번호를 입력하면, HOST와의 연결을 끊었음. 이러면 연결을 잃으면서 42번줄에 Any 자리에 Win702의
IP가 저장되고 입장이 허용되는 것이다!! 방화벽을 통과해서 안으로 들어가지는 것임!!
그리고 나서 show ip access-list를 다시 쳐보면, 자동으로 ACL이 만들어진다.
Telnet으로 해서 Password가 맞으면 그 아래꺼는 전부 다 허용이 된다!! ==> Rock & Key
## 4. CBAC(Context-Based ACL) ##
* CBAC부터 3세대 방화벽 기술인 'SPI(Stateful Packet Inspection)'을 지원한다.
기존 1세대 방화벽이 다순히 L3/L4 헤더의 정보를 기반으로 Packet 수신 여부를 결정하였기 때문에 동적 포트
서비스는 처리가 불가능했다. (ex. FTP..)
==> 세션을 인지하지 못하고, L3/L4 정보만 보고 판단하였음.
* 3세대 방화벽 기술인 SPI는 Session을 인지하고 처리하기 때문에, 다수의 포트를 사용하는 포트 서비스 트래픽도
처리가 가능하고, Application 계층 정보도 어느 정도 제어가 가능하다.
==> 같은 세션에 속해있는가? 속해있다면 허가해줌.
IOS_FW]
conf t
int f0/1
no ip access-group RACL->IN in
no ip access-group RACL->OUT out
exit
no ip access-list extended RACL->IN
no ip access-list extended RACL->OUT
ip inspect name CBAC_T tcp
ip inspect name CBAC_T udp
ip inspect name CBAC_T icmp
## CABC 이름을 정의하고, SPI를 수행할 프로토콜을 지정. 해당 프로토콜의 트래픽에 대해서는 응답을 수신하기 위한
임시 ACL이 생성된다.
## 이제 Access-list를 만들자.
ip access-list extended OUT->IN
permit ospf host 1.1.100.6 any
permit udp any host 100.1.1.250 eq 53
permit tcp any host 100.1.1.251 eq 80
deny ip any any
int f0/1
ip access-group OUT->IN in
ip inspect CBAC_T out
##Win701, 702에서 kedu.edu 접속되나 확인, www.naver.com도 되나 확인
Win701]
[CMD] - ipconfig /flushdns
## 인터넷이 안된다~ 다시 확인해보기.
## 돈 안들이고 1세대 방화벽을 구축할 때에 제일 좋은건 위의 'CBAC' 방식이다. 하지만 단점도 존재함.
- TCP/UDP/ICMP 요청에 대한 응답 트래픽은 수신이 가능하다(정적포트 서비스).
그러나, FTP 서비스는 RACL과 동일하게 Data Connection이 정상적으로 연결되지 않는다. 이유는
CBAC의 경우 특정 Protocol의 특성을 이해하기 위해서 해당 'Application Protocol'을 Inspect로
지정해야 하기 때문이다.
IOS_FW]
conf t
ip inspect name CBAC_T ftp audit-trail
## [audit-trail]은 해당 Protocol에 대한 log를 발생시키는 옵션 명령이다.
* URL Filter
- CBAC의 경우 단순히 L3/L4 정보만 제어하는 것이 아니라, Application 계층도 어느정도 제거가 가능하다.
## 네이버를 막아보자 ##
IOS_FW]
conf t
ip urlfilter exclusive-domain deny .naver.com
ip urlfilter allow-mode on
ip urlfilter audit-trail
ip urlfilter name CBAC_T http urlfilter
Win701]
www.naver.com
캐시 지우고, 접속해보기.
http://www.naver.com 는 안들어가진다!! 하지만 https://www.naver.com 로는 들어가진다!!
'Network > Firewall (KEDU)' 카테고리의 다른 글
Cisco ASA 방화벽(1) - 기본 세팅, 사용법 (0) | 2021.07.15 |
---|---|
Zone based Firewall 방화벽(2) - 방화벽 우회와 방어 (0) | 2021.07.15 |
Zone based Firewall 방화벽(1) - 방화벽 세팅 (0) | 2021.07.14 |
Network] 차세대 방화벽 UTM - 방화벽의 정석 (0) | 2021.07.12 |
Network] 차세대 방화벽 UTM - 구현 및 세팅 (0) | 2021.07.12 |