본문 바로가기

Challenge/SK 뉴스쿨 정보보안과 3기

SK 뉴스쿨 시스템 기초 (2022.03.03 ~ 03.11)

728x90
반응형
4월이 지난 지금 시점에서 쓴 교육 일지이다. (굉장히 게으른 나,,, 반성합니다...)
앞으로 한 과목이 끝날 때 마다 교육일지를 계속해서 하나씩 쓸건데, 매우 간략하게 기록하려고 한다. 
일지의 작성의 이유는 일년 간 진행되는 뉴스쿨 수업 과정을계속해서 복습하는 습관을 기르기 위해서기 때문이다.

 

 

시스템 기초는 SK 뉴스쿨에서 시작한 첫 과목이었다.

 

 

크게 목차는 '윈도우 기초'와 '리눅스 기초'로 나누어 진다.

 


 

 

1. 윈도우 기초

 

윈도우는 컴퓨터 분야의 종사하지 않아도 누구나 한번 쯤 사용해봤고 그만큼 익숙한 운영체제일 것이다. 

 

 


 

 

윈도우의 역사

 

 

윈도우는 MS-DOS에서 멀티태스킹과 GUI(Graphical User Interface)를 제공하기 위한 프로그램으로 처음 출시되었고,

1984년에 도입된 Mac OS를 추월하며 90% 이상의 시장 점유율로 PC 시장을 장악했다.

 

윈도우 운영체제는 NT 버전을 기점으로 구버젼과 신버젼으로 나눌 수 있다.

 

NT버전 이전까지는 FAT32를 기본 파일 시스템으로 채택하였으나,

NT 버전부터는 NTFS를 파일 시스템으로 사용한다.

또한 TCP/IP 네트워킹을 지원하고 32bit 응용프로그램용 Win32 API를 적용했다.

 

이후 여러 버전이 나왔고 현재 날짜 기준으로(2022.04.02) 윈도우 11이 최신 버전이다.

(하지만 아직까지 호환성 문제 때문에 나는 10 버전을 계속해서 쓰고 있다.. 언젠가는 업데이트 해야지)

 

 

 

윈도우 부팅과정

 

 

윈도우의 부팅과정은 간략하게 설명하면

 

Power ON

ROM BIOS(Basic I/O System)

POST(Power On Self Test)

MBR(Master Boot Record)

bootmgr.exe(Boot manager)

winload.exe(Boot Loader)

ntoskrnl.exe 순이다.

 

Power ON : 말 그대로 컴퓨터의 전원을 켜는 행위이다. 외부 전압을 시스템에서 사용가능한 전압으로 변환하여 CPU로 전달한다.

 

ROM BIOS : CPU의 이상 유무를 확인하고 CPU 테스트 결과를 ROM BIOS에 저장된 값과 비교하고 일치할 경우에 POST 작업을 수행한다.

 

POST : System Bus로 특정 시그널을 전송한다. 그 후 RAM이나 키보드 같은 하드웨어의 기능을 테스트한다.

 

MBR : 코드를 실행하는 동안 오류가 발생하는지 확인하고 오류가 없으면 부팅 가능한 파티션을 탐색한다. 파티션 탐색이 완료가 되면 특정 섹터인 VBR(Volume Boot Record)로 이동해서 bootmgr.exe를 실행한다.

 

bootmgr.exe : 절전모드 상태인 경우에는 winresume.exe를 로드하고 아닌 경우에는 BCD(Boot Configuration Data)를 읽으며 부팅 정보를 획득한다. 획득한 부팅 정보를 참조 하고 winload.exe를 실행하며 제어권을 넘긴다.

 

winload.exe : 하드웨어와 관련된 구성 파일과 함께 커널을 읽는다.

 

ntoskrnl.exe : 하드웨어 가상화, 프로세스, 메모리, 시스템 서비스 관리 등의 역할을 수행한다.

 

 

 

윈도우 서비스

 

 

윈도우 서비스란 오랜 시간 실행되며 특정한 기능을 수행하는 실행 파일이다.

보통의 경우, 윈도우 운영체제가 실행될 때 같이 실행이되고 유닉스 또는 리눅스의 데몬과 개념이 유사하다.

 

 

실행 창에서 'services.msc' 입력

 

 

 

 

 

윈도우 레지스트리

 

32/64bit 아키텍쳐에서 윈도우 운영체제의 설정과 선택 항목을 담고있는 데이터베이스이다.

하드웨어, 소프트웨어, 사용자 PC 선호도, 중요 시스템 정보 등의 대한 설정이 포함한다.

그래서 레지스트리를 함부러 만지면 컴퓨터 작동이 정상적으로 안될 수도 있으니 편집할 때는 주의하자!

 

레지스트리는 키와 값으로 구성되어있다.

키 : 윈도우의 폴더와 유사한 형태

값 : 키 안에 담겨있는 이름 또는 자료

 

HIVE 파일은 레지스트리 외에도 C드라이브 내에 파일로도 존재한다.

레지스트리 하이브 로드가 가능한 DB파일은 아래와 같다.

  • C:\Windows\System32\config\Sam
  • C:\Windows\System32\config\Security
  • C:\Windows\System32\config\Software
  • C:\Windows\System32\config\System

 


 

 

윈도우 실습 (2022년 3월 7일)

 

 

원격접속

원격접속 순서 (기본 포트는 3389)

 

1. 서버 컴퓨터의 ‘services.msc’로 들어가 ‘Remote Desktop Services’의 서비스 상태를 ‘실행 중’으로 변경

 

2. 서버 컴퓨터의 ‘시스템 속성’에 들어가 ‘원격’탭의 ‘원격 데스크톱’, ‘이 컴퓨터에 대한 원격 연결 허용’으로 설정

 

 

 

3. 서버 컴퓨터의 ‘lusrmgr.msc’로 들어가 ‘그룹’탭의 ‘Remote Desktop Users’의 구성원에 접속이 가능한 유저를 추가 **단 그 계정의 비밀번호가 설정되어있어야함 → 비밀번호 설정: net user [계정명] [password] → ex) net user mojito 123456

 

 

4. 서버 컴퓨터의 ‘고급 보안이 포함된 Windows 방화벽’에 접속하여 ‘인바운드 규칙’탭의 ‘원격 데스크톱 - 사용자 모드(TCP-In)’의 설정을 ‘규칙 사용 함’, ‘연결 허용’으로 전환

 

 

5. 호스트 컴퓨터에서 ‘원격 데스크톱 연결’에 들어가서 서버 컴퓨터의 아이피 주소(ipconfig 명령어로 확인가능)와 접속 할 계정과 비밀번호를 입력

 

 

 

6. 접속완료

 

 


 

윈도우 과제 (2022년 3월 7일)

 

 

윈도우10 (호스트PC)에서 윈도우7(서버PC)로 TCP 접속하기

 

1. 윈도우7의 제어판 → 프로그램으로 이동 후

 

 

2. ‘window 기능 사용/사용 안 함’ 클릭 후 → 텔넷 서버 체크 박스에 체크

 

 

3. 호스트 pc 윈도우 10도 똑같이 제어판 → 프로그램 → Windows 기능 켜기/끄기로 이동

.

 

4. ‘텔넷 클라이언트’ 체크 박스 체크 후 확인

 

 

5. 호스트 pc(Win 10) cmd 창에서 ‘telnet’ 명령어로 접속

 

 

6. ‘open’ 명령어로 이용해서 window 7의 아이피 주소(192.168.0.128)를 통해 telnet 접속 시도 (실패)

 

7. 다시 윈도우7의 ‘서비스’로 가서 ‘Telnet’ 항목 더블클릭

 

 

8 .‘시작 유형’을 ‘수동’으로 바꿔주고, ‘서비스 상태’를 ‘시작’으로 변경

 

9. 다시 호스트 pc에서 ‘open 192.168.0.128’로 접속 → 성공!

 

 

10. 로그인 창이 나오면 윈도우 7의 계정인 ex) Administrator 입력 후 → 비밀번호 1234 입력 → 접속 성공!’

 


 

 

 

2. 리눅스

 

 

사실 옛날 내가 엘리스를 다닐 시절 리눅스에 관해 포스팅 한 적이 있다.

 

 

리눅스

리누스 토발즈(Linus Torvalds)행님이 만든 운영체제 우선, 오픈 소스 소프트웨어임. 개인적으로 그래서 다른 운영체제보다 리눅스가 맘에 듦. 오픈소스란 원래 오픈소스 소프트웨어(Open Source Software

mld42.tistory.com

 

그래서 뉴스쿨에서 처음 리눅스를 배웠을 때 거부감이나 어려움은 많이 없었던 것 같다.

 

 

init 프로세스

init 프로세스는 리눅스 운영체제의 가장 최상단에 위치한 프로세스이며, PID 1번 값을 가지는 가장 중추적 프로세스이다.

/etc/inittab 파일에서 확인 할 수 있다.

 


 

우분투 및 Centos6 과제 (2022년 3월 10일)

 

 

 

우분투 GUI 환경에서 STATIC IP 설정하기

 

 

1. Settings → Network 접속 후, Connected - 1000 Mb/s로 활성화 된 칸의 맨 오른 쪽 톱니바퀴 아이콘 클릭

 

 

 

2. Automatic (DHCP)로 되어있는 설정을 ‘Menual’로 전환

 

 

 

3. 전환 후, Address 탭은 변경하고자 하는 고정 ip 주소 작성, Netmask탭에는 서브넷마스크 할당, 마지막으로 Gateway에 gateway 주소 작성 후 Apply 버튼 누르면 끝

 

 

 

다음은 CLI 환경에서 Static Ip 주소 할당하기

 

 

1. 고정 아이피 주소를 할당하기 위한 파일의 위치는 ‘/etc/netplan’ 그안에 ‘01-network-manager-all.yaml’을 변경해야함

 

 

2. ‘sudo vi 01-network-manager-all.yaml’ 명령어로 루트 권한으로 파일을 vim 편집기로 연 후,

‘ethernets’ → ‘ens33(인터페이스; 개인마다 다름)’ → ‘dhcp4: false’ → ‘addresses: -[변경하고자하는 주소]’ → ‘gateway4: [게이트웨이 주소]’ → ‘nameservers:’ → ‘addresses: [DNS 주소]’ 순으로 작성을 하고 편집기

 

:wq(저장 후 종료) 명령어로 종료

 

 

3. 마지막으로 설정 된 사항을 적용하기 위해 ‘sudo netplan apply’ 명령어 실행

 

 

 

4. 그 후, 네트워크 설정이 잘 되었는지 ping 명령어로 테스트 → 성공

 

 


 

Centos 6 GUI 환경에서 Static Ip 주소 설정하기

 

 

 

1. 우측 상단 네트워크 아이콘 우 클릭 → ‘Edit Connections’ 클릭 → 활성화 된 ‘Network Connections’창의 현재 활성화 된 네트워크 연결 더블 클릭 또는 ‘Edit’ 클릭 → ‘IPv4 Settings’ 탭으로 들어가서 초기 설정인 ‘Automatic (DHCP)’를 ‘Manual’로 전환

 

 

 

2. ‘Address’ 탭에 자신이 변경하고픈 ip 주소

‘Netmask’에 서브넷 할당

‘Gateway’ 탭에 Gateway주소를 작성 후 Apply

 

 

 

3. 수정 된 설정을 적용하기 위해

root 권한으로 ‘/etc/init.d/network restart’ 명령어 실행

 

 

 

4. 연결이 잘 되 었는 지 확인하기 위해 ‘ping 8.8.8.8’ 명령어 수행 → 성공

 

 

 


 

CentOS6 CLI환경에서 해보기

 

 

 

1. 현재 IP = 192.168.0.135

 

 

 

2. ‘vi /etc/sysconfig/network-scripts/ifcfg-eth0’ 명령어로 수정 할 파일을 vi편집기로 실행

 

 

3. ‘BOOTPROTO=dhcp → static’, ‘IPADDR=[사용할 아이피]’, ‘NETMASK=[넷마스크 입력]’, ‘GATEWAY=[게이트웨이 주소 입력]’

 

 

 

4. 수정 된 설정을 적용하기 위해

root 권한으로 ‘/etc/init.d/network restart’ 명령어 실행

 

 

 

5. ‘ping 8.8.8.8’ 명령어로 테스트 → 성공!

 

 

* 여기까지 하면 브라우저에서 작동이 안된다!!! 왜냐하면 DNS를 설정해주지 않았기 때문에!! GUI라에서도 DNS를 설정해주자.

 

 


 

 

우분투 과제 (2022년 3월 11일)

 

 

과제1 (iptables 사용)

 

문제 2) 출발지 아이피 주소가 192.168.0.111인 접속의 모든 접속 포트를 차단하는 규칙을 작성하시오.

정답: iptables -I INPUT -s 192.168.0.111 -p tcp --dport 1:65535 -j DROP

 

문제3) INPUT Chain에 출발지 주소가 127.0.0.1인 icmp 패킷을 거부하는 규칙을 추가하시오.

정답: iptables -I INPUT -s 127.0.0.1 -p icmp -j DROP

 

 

 

과제2

조건1)) 서버: CentOS, 일반 컴퓨터: Ubuntu, 관리자 컴퓨터: Windows 10(Host)

조건2)) 서버는 모든 ping 테스트를 네트워크 점검을 위해 허용한다.

조건3)) 서버로 ssh는 관리자 컴퓨터에서만 가능하다.

 

 

 

조건 2의 정답:

iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT

iptables -I OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

 

 

조건 3의 정답:

관리자 컴퓨터 ip 확인 → 172.**.*.41

 

 

 

iptables -A INPUT -s 172.**.*.41 -p tcp --dport 22 -j ACCEPT

호스트 pc 아이피 ssh 접속 허용하기

 

 

 

iptables -A INPUT -s 0.0.0.0/0 -p tcp --deport 22 -j DROP

호스트 pc 아이피 제외 전부 ssh 접속 차단

 

 

 

우분투에서 ssh 접속 차단 확인

 

 

윈도우10에서 ssh 접속 허용 확인 → 차단 ....????????????????

 

 

iptables -F 로 일단 다 지우기(처음부터 다시)

 

 

 

last -d로 외부접속 ip 확인하기

 

 

 

알고보니 호스트 ip가 192.168.0.1였다 ㅠㅠ

 

 

이번에는 다시 확실한 아이피 주소를 허용하고 나머지는 차단하기

 

 

 

윈도우10에서 접속 → 성공

 

 

 

리눅스에서 접속 → 차단

 

728x90
반응형