저번에 했던 실습을 해결하는 시간을 갖음
[ 실습 ] UTM firewall Settin Lab
- Internal 망의 Host들이 DMZ 망의 서비스를 사용할 수 있게 하세요.
(단, 필요한 트래픽만 허용되어야 한다.)
ex) - www.webhack.com
- 원격 서비스(Telnet, SSH)
- Internal 망의 Host들이 DMZ, 외부 서버에 수업시간 중에만 접근할 수 있게 하세요.
ex) 내부: www.webhack.com DMZ: www.naver.com, www.google.com
- External의 Host OS가 내부서버에 접근할 수 있게 하세요.
1번을 보면 Sources와 Destinations는 알고있으니 Services에서 Ping추가 해주듯 Telnet과 SSH를 넣어주면 된다.
2번은 DMZ와 외부서버를 허용해주려면 NAT 설정을 해줘야한다. 우선 방화벽 설정으로 와서 룰을 새로 만들어준다
Sources는 Internal(Network)넣어주고 Services에는 HTTP와 HTTPS 그리고 DNS도 넣어줌
Destinations에는 허용하는 IP를 적어주면 된다. 특정 대역을 줘도 되기 때문에 그냥 위에 있는 Any IPv4를 넣어줌(any는 좋은 방법은 아니긴 함)
확인은 클라이언트의 DNS를 내부 20.20.20.10으로 변경해주고 리눅스에서 cd /var/named로 이동해 webhack.com.zone파일 열어서 IP주소를 20.20.20.10으로 변경해줌 그리고 systemctl restart named로 재시작해줌
클라이언트에서 웹브라우저 하나 켜서 webhack.com을 연결 해보면 잘 되는것을 확인할 수 있음
3번은 처음에 설정했던 것을 Ping말고 HTTP와 HTTPS 그리고 DNS를 넣어서 허용처리 한다.
그러면 아래쪽에 있는 설정은 삭제해도 괜찮다. 그러면 Internal구간에서 DMZ로 가는 구간에서 DNS, HTTP, HTTPS, ping은 다 가능할 것 우선 webhack.com은 접속이 되고 google.com은 못감 지금의 문제점은 클라이언트가 google의 IP가 뭐냐고 DNS에 물어본다 DNS는 외부로 나가는게 안되는 것 DMZ구간에 External기준 DNS가 나가는걸 허용하라는 것
새로운 룰을 적용해준다. DMZ(Network)로 준다. Services는 DNS로 주고 Destinations에는 그냥 Any IPv4로 넣어준다. Action에는 Allow를 해서 허용해주고 룰 설정을 해준다.
리눅스에서 nslookup으로 www.google.com을 물어본다. 찾을 수 없다고 뜬다.
Network Protection에 NAT에 와서 새로 룰을 만들어줌 다른건 따로 건들지 않고 Interface에는 External로 해주고 저장을 해준다.
우리가 할 수 있는 설정은 다 했다.
다시 리눅스에서 nslookup으로 확인해보면 가져오는걸 확인할 수 있음
이렇게 가져오는걸 보고 클라이언트 역시 nslookup으로 google.com을 IP를 잘 가져오는걸 확인할 수 있다. IP를 가져오지만 웹페이지에선 접속이 잘 안되기에 다시 firwall에서 다시 새로운 룰을 만들어줌 소스에는 DMZ(network)넣어주고 Destinations에는 Any IPv4를 넣어주고 Services에는 DNS를 넣어준다.
마지막 내용은 Network Protection에서 NAT로 와서 DNAT 설정을 해주면 된다. Rule type은 DNAT로 해주고 for traffic from에는 Any, Using service에는 HTTP로 해주고 Going to에는 내가 설정한 192.168.43.201로 해주는 External(Address)로 해줌 Action에는 Web server(20.20.20.10)로 해주고 아래는 HTTP로 설정함 Automatic firewall rule을 체크 해주고 만들어준다.
확인은 호스트PC에서 192.168.43.201을 검색하면 webhack사이트로 오는걸 확인할 수 있음
파이썬
anaconda를 설치 해줌 대부분 기본으로 설정해서 설치 한다. 이걸로 수업을 진행할 예정
설치가 완료된다면 Anaconda Navigator을 실행해준다.
실행하면 이런 화면을 확인할 수 있음 이러한 도구들이 많이 있고 사용할 수있다 라는 것
쥬피터 노트북을 키면 이런 웹브라우저로 켜진다. 여러 내용들이 있는데 이 경로는 아까 우리가 설치하려는 그 위치이다.
여기에 새 폴더를 하나 만들어주면 jupyter에도 똑같은 파일이 생겼다.
오른쪽에 New를 눌러서 파이썬 3으로 해주면 이렇게 파일이 생겼다. 역시 아까 만들었던 test파일에도 생긴걸 확인할 수 있음
New라고 만들게 되면 이런 코드를 작성할 수 있는 페이지로 넘어간다. 본격적으로 코드를 작성하기 위한 창임 이런 창을 셀이라고 함 이 셀은 초록생 창일 때 입력모드고 파란색창은 명령모드이다.
이렇게 작성하고 실행하기 위해 컨트롤 엔터를 하게되면 바로 출력을 할 수있음
jupyter는 그냥 파이썬과 다르게 한 파일안에 셀을 따로 추가할 수 있는데 셀 추가는 명령모드에서 b를 누르면 가능하고 삭제는 d 셀 간에 이동은 방향키로 가능하다
print는 기본적으로 괄호안에있는 것을 출력하고 엔터까지 수행한다.
그렇기 엔터를 없애고싶다면 횡을 안바꾸고 싶다면 , end=''를 추가해준다.
\n은 개행문자이다.
무언가 강조하고싶을 땐 "와'를 구분해서 사용해주면 된다. '을 사용해서 강조하고싶다면 \를사용해서 써준다.
\t는 tab을 누른것 처럼 사용이 된다.
print를 사용할 때 한번에 두개의 값을 출력하기 위해선 ,를 사용하면 된다.
파이썬에선 연산식을 사용하게 되면 결과를 알려주게 된다.
[ 실습 ] 연산결과는 연산식을 활용한다.
12 + 54 = 66 입니다
268 - 42 = 226입니다
2 * 23 = 46 입니다
120 / 3 = 40.0입니다
이런식으로 작성해준다.
이런식으로 \n을 작성해서 한번에 출력할 수 있음
값의 type을 알고싶다면 앞에 type을 써주면 된다. 수식을 쓰면 그 결과값의 타입을 알려준다.
주석처리 하는 방법은 쓰고싶은 걸 쓰고 앞에 #을 달아주면 주석처리로 된다.
그렇기 때문에 결과값도 안나온다. 컨트롤 /를 누르게 되면 한번에 가능한다. 이것은 툴마다 다르다.
셀의 종류가 여러가지가 있는데 위쪽에 있는 code라고 있는 부분을 확장해보면 Markdown이 있는데 코드가 아닌것을 보고서처럼 사용할 수 있음 #에 따라1~5개 까지 크기별로 처리도 가능하다.
markdown에 -를 사용해서 목록처럼도 사용할 수 있다.
변수를 해볼 것
변수는 임의의 값을 저장하는 것 언제든 변경될 수 있다.
변수를 선언할 땐 이름을 넣고 저장하고자 하는 값을 넣으면 된다.
변수를 출력하고싶을 땐 역시 print를 사용하면 된다.
변수를 사용할 때 주의점은
- 변수의 이름은 영문자나 숫자로 구성되어야 한다.(한글도 되긴 하는데 권장은 안함, 특수문자는 안됨)
- 변수의 첫 글자는 숫자로 사용할 수 없다.
- 변수의 이름은 대소문자를 구분한다.
- 파이썬의 예약어는 변수 이름으로 사용할 수 없다. (파이썬의 예약어는 이미 파이썬에서 사용하고 있는 것들을 말함 예시로는 print)
예시어를 확인하는 방법은
import keyword
print(keyword,kwlist)로 확인 가능하다.
연산자
+는 덧셈 -는 뺄셈 *은 곱셈 /는 나눗셈 %는 나머지이다 //는 나눗셈의 결과의 정수부분을 뜻함 **는 제곱이다.
복합 대입 연산자라고 함 위에서 a와b의 값을 4와 3으로 변수에 저장하고 a랑b랑 더하고 그 결과를 a에 저장한다는 걸 말한것이다.
관계 연산자
앞에 있는걸 항상 주체로 생각해서 a가~ 이런식으로 이야기를 한다.
관계연산자는 ==는 같냐는 뜻이고 !=는 같지않으면 이라는 뜻 !는 not을 뜻함
이것을 조건으로 사용할 수 있다. 그렇기 때문에 관계 연산자는 조건 연산자로 많이 사용된다.
True를 값 자체로 사용할 수 있다. True와 False는 하나의 값이다.
논리 연산자
논리 연산자는 and, or, not들을 논리 연산자라고 한다.
and는 둘다 True일 때 True를 출력한다.
or은 둘중 하나만 True여도 True를 출력한다.
not은 앞에 붙여주는것인데 반대의 의미이다. 결과를 반대로 조회한다.
bit 연산자이다.
bit연산자는 말 그대로 bit로 하는것 2진수로 전환해서 생각 해야함 12는 1100이고 5는 0101이다.
1100 & 0101 을 출력하면 공통부분만 1로 출력해서 0100이므로 4이다. 이건 bit연산의 and이다
1100 | 0101 을 출력하면 둘을 비교해서 하나만 1이면 출력해 1101이므로 13이다. bit연산의 or이다.
1100 ^ 0101 을 출력하면 다른부분이 있을 때 1로 출력하면 1001이라 9이다. ^는 bit의 베타적 논리합이다.
~1100을 출력하면 0011이다. ~는 bit의 not연산이다.
1100 >> 1을 출력하면 0110으로 6이 나옴 >>1는 시프트 연산의 오른쪽으로 가는 것 쉽게 생각하면 나누기 2하는 느낌이다.
1100 << 1을 출력하면 0001 1000으로 24이다. <<1는 시프트 연산의 왼쪽으로 가는 것 쉽게 생각하면 곱하기 2하는 느낌이다.
'학원' 카테고리의 다른 글
2023/08/21 파이썬(List, Dictionary) (1) | 2023.08.21 |
---|---|
2023/08/18 파이썬(입력함수, 조건문, 반복문, 리스트, 정렬) (0) | 2023.08.18 |
2023/08/11 UTM (0) | 2023.08.11 |
2023/08/10 Snort (0) | 2023.08.10 |
2023/08/09 IDS (0) | 2023.08.09 |