[네트워크] 22-07-12 TIL

gununoo·2022년 7월 12일
1

네트워크

목록 보기
7/8

vlan 설정 예시

[vyos dot1q subinterface 설정 예시]
vyos@vyos-rtr# set interfaces ethernet eth1 vif 100 description 'VLAN 100'
vyos@vyos-rtr# set interfaces ethernet eth1 vif 100 address '192.168.100.1/24'
https://support.vyos.io/en/kb/articles/vlan-sub-interfaces-802-1q-2

ACL(Access Control List)

  • 번호나 이름을 이용하여 정책을 생성하고 생성된 정책으로 패킷을 필터링, 분류하는데 사용되는 기술
  • 패킷의 어느 부분까지 살펴보느냐에 따라 Standard/Extended로 구분한다.
  • Standard: 패킷의 출발지 주소만을 확인한다. (최근에는 잘 사용하지 않음)
  • Extended: 패킷의 L3, L4를 모두 볼 수 있다.
    (참고, 방화벽이나 라우터는 inspection 기능을 활용하면 L7까지 확인 가능하다.)

데이터 부분에 있는 str을 읽고 정규표현식 등을 활용하여 데이터 필터링(url 필터링, 확장자를 확인하고 데이터 필터링 가능)을 할 수 있다.
ex) 특정 사이트 막기, 이미지 파일 막기
ex) squid squidguard 를 이용한 url 필터링

dest blacklist { 
    domainlist blacklist/domains
    urllist blaklist/urls
    log accesses 
}

https://m.blog.naver.com/cgidhtml/130013976166

기본적인 구성 방법

standard(1~99) / extended(100~199)
실제로는 이름을 이용하여 정책명을 설정하는 경우가 대다수이다!

standard 예시

access-list 1 permit 1.1.1.0 0.0.0.255
-> 출발지 주소가 1.1.1.0 ~ 1.1.1.255 인 것을 허용하겠다
access-list 1 deny host 2.2.2.2 (= 2.2.2.2 0.0.0.0)
access-list 1 deny any

extended 예시

access-list 100 permit tcp any host 3.3.3.3 eq 80
src(출발지): any
dst(도착지): 3.3.3.3:80

access-list 100 deny icmp any host 3.3.3.3 echo
src(출발지): any
dst(도착지): 3.3.3.3로 들어오는 echo(= ping)

access-list 100 deny ip any host 4.4.4.4
src(출발지): any
dst(도착지): 4.4.4.4

ACL의 rule
1. top-down(위에서부터 아래로 차례차례 적용된다. 순서가 매우 중요하다)
2. acl에서 지정하지 않은 트래픽은 자동으로 차단된다.
보이지는 않지만 acl의 가장 아래에는 access-list X deny any 또는 access-list X deny ip any any가 생략되어있다.
3. 작성된 acl은 적용해주어야 활성화된다. 적용할 때에는 interface, vty(telnet, ssh와 같은 virtual terminal), NAT -> ip nat inside source list 1 int fa0/0 overload

GNS 실습

DSW1, DSW2 slot에 NM-16ESW 추가
HQ에 NM-1FE-TX 추가
인터넷 -> VMnet10(NAT) 추가
본사서버 -> VMnet1 추가
본사 PC -> VMnet2 추가
지사 PC -> VMnet3 추가

시나리오
1. 우리 회사는 본사 지사 간 WAN으로 연결됨
2. 본사, 지사는 공인 주소 211.183.3.0/24를 사용할 수 있음
211.182.3.2은 ISP 주소, 211.183.3.3은 라우터 주소
211.183.3.1은 ISP와 우리 라우터 간 연결된 스위치 주소

본사 내부에 있는 서버의 주소 172.16.1.100은 외부 통신 시 211.183.3.100과 1:1로 정적 매핑된다 -> 정적 NAT

본사 내부 PC들은 211.183.3.101 하나를 이용하여 인터넷을 사용
지사 내부 PC들은 211.183.3.102 하나를 이용하여 인터넷을 사용
-> 동적 PAT

  1. DSW1-DSW2에 연결된 서버들은 vlan 10에 할당,
    PC들은 vlan 20에 할당된다.
  2. 본사와 지사에 위치한 PC들은 DHCP를 통하여 IP 주소를 할당받는다. DHCP 서버는 본사에서 통합 관리한다. (HQ 라우터가 DHCP 서버로 동작한다)

sol)
ip -> vlan -> 라우팅 -> NAT -> 필터링, 보안 순으로 구성하기

인터페이스에 ip 입력

[HQ]
conf t
int fa0/0
ip add 211.183.3.3 255.255.255.0
no sh

int fa1/0
ip add 10.10.10.1 255.255.255.252
no sh

int fa0/1
no sh

int fa0/1.10
encap dot1q 10
ip add 172.16.1.2 255.255.255.0

int fa0/1.20
encap dot1q 20
ip add 172.16.2.2 255.255.255.0

do show ip int br

[BR]
conf t
int fa0/0
ip add 10.10.10.2 255.255.255.252
no sh

int fa0/1
ip add 192.168.116.2 255.255.255.0
no sh

[HQ]

ping test

! ISP로 ping
do ping 211.183.3.2
.!!!!

! BR로 ping
do ping 10.10.10.2
.!!!!

vlan 구성

[DSW1]
! vlan 생성하기
vlan dat
vlan 10 name SERVER
vlan 20 name PC
exit

! trunk port 구성
conf t
int fa1/10
sw mode trunk

int fa1/15
sw mode trunk

do show int trunk

! access port 구성
int fa1/1
sw mode access
sw access vlan 10

do show vlan-sw br

[DSW2]
! vlan 생성하기
vlan dat
vlan 10 name SERVER
vlan 20 name PC
exit

! trunk port 구성
conf t
int fa1/15
sw mode trunk

! access port 구성
int fa1/2
sw mode access
sw access vlan 20

do show int trunk

do show vlan-sw br

라우팅 구성

라우팅:
라우터는 기본적으로 직접 연결된 네트워크에 대하여 통신이 가능하다.
떨어져 있는 네트워크에 대하여 해당 정보를 라우터에 입력이 되도록 해주어야 한다.
1. 정적 라우팅: 관리자 또는 사용자가 원격지 네트워크 정보를 직접 입력하는 방식. 단방향
네트워크 정보를 유지하기 위하여 불필요한 트래픽이 발생하지 않으므로 빠르다.
일반적인 구성 방법:
ip route 2.2.2.0 255.255.255.0 3.3.3.3
"2.2.2.0": 목적지 네트워크 주소, 목적지 IP 주소
"255.255.255.0": 서브넷 마스크(만약 1대만 지정하고 싶다면 255.255.255로 지정)
"3.3.3.3": 목적지 네트워크로 찾아기기 위해 선택할 다음(바로 옆) 라우터 주소
2. 동적 라우팅: 라우터간 라우팅 프로토콜을 이용하여 자신들이 알고있는 네트워크 정보를 서로에게 광고한다. 동일 목적지에 대하여 여러 경로를 전달 받는다면 헤딩 경로 중 가장 빠른 경로를 선택하고 해당 경로를 라우팅 테이블에 인스톨한다. 최신 경로를 계속해서 유지하려고 한다.

[HQ]
1. 인터넷과의 통신을 위한 default route
2. 지사 내부와의 통신을 위한 static route

[BR]
1. default route

라우팅 우선 순위

동일 목적지에 대하여 서로 다른 방법으로 도달이 가능한 경우, 이에 대한 우선 순위가 있다.
connetctd: 0
static route: 1
routing protocol: 프로토콜 별로 다르다. 예를 들어 RIP 120, OSPF 110
숫자가 작을수록 우선 선택된다.

인터넷과의 통신을 위한 default route 설정

[HQ]
conf t
ip route 0.0.0.0 0.0.0.0 211.183.3.2
ISP: 211.183.3.2

지사 내부와의 통신을 위한 static route 설정

[HQ]
ip route 192.168.116.0 255.255.255.0 10.10.10.2
목적지: 192.168.116.0
next-hop: 10.10.10.2

HQ 라우터로의 default route 설정

[BR]
conf t
ip route 0.0.0.0 0.0.0.0 10.10.10.1
목적지: 0.0.0.0
next-hop: 10.10.10.1

ping test

[HQ]
do ping 192.168.116.2 so 172.16.1.2
do ping 192.168.116.2 so 172.16.2.2

do ping 8.8.8.8

VXLAN이란?

VXLAN은 레이어 3 네트워크 기반으로 레이어 2 연결을 확장하기 위해 터널링을 사용하여 데이터센터 연결을 제공하는 캡슐화 프로토콜입니다.

https://www.juniper.net/kr/ko/research-topics/what-is-vxlan.html

OpenStack

OpenStack은 풀링된 가상 리소스를 사용하여 프라이빗 및 퍼블릭 클라우드를 구축하고 관리하는 오픈소스 플랫폼입니다.
https://www.redhat.com/ko/openstack-35971
https://byline.network/2019/01/22-36/
https://www.prestonlee.com/wp-content/uploads/2012/05/Nova-Essex-Schema.png

정적 NAT 구성

[HQ]
ip nat pool HQSRV 211.183.3.100 211.183.3.100 prefix-length 24
pool name: HQSRV
start IP: 211.183.3.100
end IP: 211.183.3.100

ip nat inside so static 172.16.1.100 211.183.3.100
inside local IP(사설 IP): 172.16.1.100
inside global IP: 211.183.3.100
-> 172.16.1.100을 211.183.3.100으로 보내겠다.

int fa0/0
ip nat outside

int fa1/0
ip nat inside

int fa0/1.10
ip nat inside

int fa0/1.20
ip nat inside

[centos1]
ping www.google.com -c 3 -> 된다

[HQ]
do show ip nat tr

[PC]
211.183.3.100 접속
-> LEEGUNWOO 페이지 뜸

ssh로 211.183.3.100 접속 -> 된다
-> 지정된 IP만 접속할 수 있도록 설정해야함

DCHP

[Virtual Network Editor]
VMnet2, VMnet3 -> DHCP 설정 해제

DHCP 서비스
서버 - DHCP - 클라이언트
클라이언트는 부팅 시 DHCP 프로토콜 내에 discover 메시지를 포함하여 목적지 MAC, FF:FF:FF:FF:FF:FF(L2 broadcast 주소)로 전송한다.

DHCP 시나리오
1. 본사 내부는 172.16.2.0/24에서 주소를 할당 받는다. 지사 내부는 192.168.116.0/24 할당 받는다.
2. 각 네트워크에서 1~100까지는 내부적으로 사용이 예약되어있어 실제로 클라이언트들이 제공 받는 주소는 172.16.1.101 ~ , 192.168.116.101 ~ 할당 받는다.
3. 임대 기간은 2시간으로 한다.
4. DNS 서버는 8.8.8.8

[HQ]
conf t
! 제외할 주소의 범위부터 설정
ip dhcp excluded-address 172.16.2.1 172.16.2.100
ip dhcp excluded-address 192.168.116.1 192.168.116.100

DHCP 서버 구성

ip dhcp pool HQ
network 172.16.2.0 /24
default-router 172.16.2.2
lease 0 2
dns 8.8.8.8

ip dhcp pool BR
network 192.168.116.0 /24
default-router 192.168.116.2
lease 0 2
dns 8.8.8.8

  • 지사를 위한 DHCP 서버 구성
  • centos2를 clone하여 centos3을 생성(full clone)
  • centos3에서 VMnet2로 되어있는 인터페이스를 VMnet3으로 변경
  • centos2, centos3을 모두 실행하고 인터페이스 설정 창에서 정적으로 되어있는 구성을 DHCP로 변경하여 IP 주소를 받아오는지 여부를 확인한다.
  • BR의 fa0/1에서 relay를 구성한다.

DHCP Relay Agent 구성

[BR]
conf t
int fa0/1
ip helper-address 10.10.10.1

test

[centos3]
ping 172.16.1.100 -> 된다
172.16.1.100 접속 -> LEEGUNWOO 페이지 뜸
ping 172.16.2.101 -> 된다

ifconfig -> 192.168.116.101

[centos2]
ifconfig -> 172.16.2.101

NAT 구성

[HQ]
end
conf t
! 설정된 ip nat pool 확인
do show run | in ip nat pool

!PC들을 위한 동적 PAT 구성
! 각 사설 네트워크에서 사용할 공인 주소를 풀로 작성
ip nat pool HQPC 211.183.3.101 211.183.3.101 pre 24 -> 본사 공인 주소
ip nat pool BRPC 211.183.3.102 211.183.3.102 pre 24 -> 지사 공인 주소
do show run | in ip nat pool

! 각각의 사설 주소를 ACL을 이용하여 분류하기
ip access-list standard hqadd
permit 172.16.2.0 0.0.0.255 -> 본사 사설 주소

ip access-list standard bradd
permit 192.168.116.0 0.0.0.255 -> 지사 사설 주소

exit
ip nat inside source list hqadd pool HQPC overload
-> hqadd(사설 주소) -> hqpc(공인 주소)로 변환
-> 여러 개의 사설 주소가 한 개의 공인 주소(211.183.3.101)를 공유

ip nat inside source list bradd pool BRPC overload

end
show ip nat translation

[centos3]
www.naver.com 접속 -> 된다

[HQ]
show ip nat translation | in 192.168.116.101
-> naver 트래픽이 보임

[centos2]
www.rapa.or.kr 접속 -> 된다

[HQ]
show ip nat translation | in 172.16.2.101
-> rapa 트래픽이 보임

보안

aws와 같은 클라우드 환경에서의 기본 보안 사항
1. NACL: VPC 내에 여러 개의 서브넷을 생성하고, 각 서브넷에서 다른 서브넷으로의 통신 시 필터링이 필요한 경우 NACL을 적용한다. 주 목적은 서브넷 단위에서의 패킷 필터링이며 outbound 적용을 주로 적용한다.
2. security-group: 서브넷 단위가 아닌 인스턴스 단위로 보안 사항을 적용하고자 하는 경우.
주로 inbound에 대하여 적용하며, outbound는 기본적으로 permit any와 같이 설정되어있다.
3. IAM: 계정 관리
root 사용자 -> aws 모든 서비스에 대하여 접근이 가능하며 계정 추가, 삭제, 계정에 대한 권한 부여 등을 진행한다. 즉, linux의 superuser인 root와 동일하다고 생각하면 된다.
iam 사용자 -> 특정 aws root 계정 하에서 생성된 일반 사용자(db 관리, 개발, 운영자)
각 계정 별로 접근할 수 있는 서비스에 대하여 지정할 수 있으며, 해당 사용자가 로그인하는 방법도 선택할 수 있다. access key id, access key를 사용하여 자신의 개발 환경 또는 linux와 같은 환경에서 자신의 로컬 환경과 aws 환경을 연결하여 사용할 수 있다.

extended ACL 구성

quiz1. 회사 내에 있는 IP 주소들이 NAT되지 않은 상태에서 외부로 빠져나가려고 한다면 이는 모두 차단해야한다. 172.16.1.0/24, 172.16.2.0/24, 192.168.116.0/24, 10.0.0.0/8

[HQ]
end
conf t

! 인터넷으로 빠져나갈 때 차단
access-list 101 deny ip 172.16.1.0 0.0.0.255 any
!172.16.1.0에서 any로 가는 것 차단
access-list 101 deny ip 172.16.2.0 0.0.0.255 any
!172.16.2.0에서 any로 가는 것 차단
access-list 101 deny ip 192.168.116.0 0.0.0.255 any
!192.168.116.0에서 any로 가는 것 차단
access-list 101 deny ip 10.0.0.0 0.255.255.255 any
!10.0.0.0에서 any로 가는 것 차단

int fa0/0
ip access-group 101 out

[centos1]
ping www.google.com -c 3
-> 안 된다

[centos2]
ping www.google.com -c 3
-> 안 된다

[centos3]
ping www.google.com -c 3
-> 안 된다

-> dns로 나가는 것 자체가 안 된다??
-> deny ip any any가 생략되어있기 때문!!
-> permit any any를 추가해야된다

[HQ]
exit
access-list 101 permit ip any any

[centos1, 2, 3]
www.naver.com 접속 -> 인터넷 접속 된다

[BR]
do ping 8.8.8.8
UUUUU -> 잘 차단되었음 -> destination unreachable
-> 가는 경로는 맞지만 차단되었음 -> 방화벽에 의해서
-> HQ가 방화벽에 의해 차단되었다고 unreachable이라고 대답해줌

quiz2.
fa0/1.10 아래에는 우리 회사 본사에 있는 웹서버가 위치하고 있다. 이 웹서버는 원격 관리를 위하여 ssh를 사용 중인데 아무나 접속해서는 안 된다. 오직 외부(인터넷)에 있는 211.183.3.1(퇴근한 서버 관리자의 집 IP 주소)과 본사 내부에 있는 172.16.2.100에서는 ssh 연결이 가능하다. 다른 곳으로부터의 ssh 연결은 모두 차단된다.
ssh를 제외한 나머지 모든 접근(172.16.1.0/24)은 허용된다. 이를 fa0/1.10에 적용하라.

  1. 외부 211.183.3.1에서 ... 허용
    access-list 112 permit tcp
  2. 내부 ... 허용
    access-list
  3. 나머지 모든 외부 주소로부터 ssh 연결 차단
    access-list
  4. 나머지 모든 트래픽 차단
    access-list

참고)
access-list 112 permit tcp any host 2.2.2.2 eq 80
access-list 112 permit tcp host 3.3.3.3 host 4.4.4.4 eq 22
access-list 112 permit ip any any

test

윈도우에서 211.183.3.100으로 ssh, http, ping 연결 가능
172.16.1.101, 172.16.2.101에서는 211.183.3.100으로 ssh 연결 불가. 단, http/ping은 가능
172.16.1.101을 정적으로 172.16.1.100으로 IP 주소를 변경한 다음 ssh 연결 시도하면 가능!

access-list 104 permit tcp host 211.183.3.1 host 172.16.1.100 eq 22
access-list 104 permit tcp host 172.16.2.100 host 172.16.1.100 eq 22
access-list 104 deny tcp any host 172.16.1.100 eq 22
access-list 104 permit ip any any
int fa0/1.10
ip access-group 104 out

[centos2]
ping 172.16.1.100 -> 된다
curl http://172.16.1.100 -> 된다
ssh -l root 172.16.1.100 -> 안 된다

wired settings 변경
-> ip: 172.16.2.100
-> gw: 172.16.2.2

ifconfig ens32 -> 172.16.2.100
ssh -l root 172.16.1.100 -> 된다

외부(pc)에서 연결 test
putty로 ssh 연결 -> 된다
http://172.16.1.100
ping 172.16.1.100

profile
take a look

0개의 댓글