리눅스 마스터

히든위키 코리아
필독 유닠스 계열 저작물, 성인물, 도박 프로그래밍 웹 써버 보안 대화방
필독 사항 프로젴트 트라이던트 표면 웹 싸이트 제작 파이썬 리눅스 마스터 대화방 2019년
위키 편집 리넠스 마약, 아청물, 해킹 웹 프로그래밍 웹 싸이트 보안
위키 문서 작성법 우분투 다크넽 싸이트 제작 쟁고우 정보 보안 기사

목차

개요

한국정보통신진흥협회가 운영하는 국가공인 민간자격증. 자세한 내용은 https://www.ihd.or.kr/guide_lms.do 참조.

리눅스 마스터리눅스 기반의 데스크탑 활용 및 써버 운영 능력, 리눅스 시스템의 설계개발 및 관리 능력, 리눅스 기반의 네트워크 및 서버 구축/운영 능력을 검정하는 자격증이다. 생각보다 인지도가 꽤 있는 자격증으로 매년 응시수가 늘어나고 있다. 실제로 시험장에 가보면 워드나 컴활치는 사람만큼 숫자가 있어서 놀라게 된다.

리눅스 마스터 2급은 낮은 거고, 리눅스 마스터 1급이 더 높은 자격증이다. 정보보안 기사도 따면 좋다. 해커가 되기 위해 해킹을 배운다면 각종 해킹 툴이 이미 포함되어 있는 칼리 리눅스로 시작하는 게 좋다.

2급은 1차 1만 5천원, 2차 3만원이다. 1급 1차는 4만원, 2차는 6만원으로 국내 자격증 대비 비싼 편이다.

2급 1차 응시 지역은 On-line 접속가능한 모든 지역, 2차 응시지역은 서울, 부산, 대구, 광주, 대전, 인천, 수원, 전주, 제주(9개시)이다. 1급 응시 지역은 서울, 부산, 대구, 광주, 대전, 인천, 수원, 제주(8개시)이다.

응시자격은 1차는 제한이 없고, 2차는 1차 시험 합격자에 한해 1차 시험 합격일(합격자 발표일) 기준으로 2년 이내 응시가 가능하다.

2급은 5학점을 인정해주고, 1급은 14학점을 인정해준다.

시험 방식과 과목

2급 1차는 리눅스 일반에서 100% 나오며 60분 동안 컴퓨터로 보는 50문제 사지택일 필기에서 60점을 넘기면 합격이다.

2급 2차는 리눅스 운영 및 관리에서 60%가 나오며, 리눅스 활용에서 40%가 나온다. 100분 동안 80문제를 사지택일 필기로 풀면 되며, 60점 이상이면 합격이지만 과목당 40% 미만이면 과락이다.

1급 1차는 리눅스 실무의 이해에서 20%, 리눅스 시스템 관리에서 40%, 네트워크 및 서비스의 활용에서 40%가 나온다. 100분 동안 사지택일 필기로 100문제를 풀면 되며, 60점 이상이면 합격이지만 과목당 40% 미만이면 과락이다.

1급 2차는 문제 해결 능력 실기 평가이며, "사용자 관리, 파일시스템 관리, 장치관리, 프로세스 관리, 장치관리, 시트템보안 등 리눅스 시스템의 전반적인 관리 능력평가"와 "웹, 파일, 메일 등의 네트워크 서비스 및 네트워크 보안 등에 관한 실무 능력평가"를 본다. 단답, 서술식 필기가 40%이며, 관리 및 설정의 실기가 60%이다. 필기는 10문항, 실기는 5-7문항이며 두 과목을 합쳐 100분 동안 본다. 과락은 없고, 60점을 넘기면 합격이다. 실기 시험은 아시아눅스가 깔린 컴퓨터로 본다. 실기 시험을 레드 햇 엔터프라이즈 리눅스 기반인 아시아눅스로 봐서, 우분투, 리눅스 민트, 칼리 리눅스데비안 계열의 리눅스만 써본 사람은 일부 명령어디렉터리 구조가 달라 좀 어색할 수도 있다.

2018년 2월 기준으로 리눅스 마스터 1급 2차는 쎈트OS (CentOS) 6.9 또는 페도라 (Fedora) 13 버전으로 시험을 진행한다.


리눅스마스터 1급의 2차 시험 때에는 컴퓨터 앞에서 시험을 본다. 참고로 운영체제는 바록 그 아시아눅스이다. 사실 어떻게 보면 1급 1차 시험보다 1급 2차 시험이 더 쉽다고도 할 수 있는데 man 페이지나 설정 파일을 직접 찾아서 볼 수 있기 때문이다.

리눅스 마스터 2급은 1차와 2차 시험 두가지로 나뉜다. 2급 1차는 객관식 사지선다형인 필기인데 특징으로 집에서 컴퓨터로 볼 수 있다. 족보다 떠다니고 있으므로 그냥 한쪽 창에서 찾아가면서 풀 수 있다. 2급 2차는 객관식 사지선다형으로서 시험장에서 봐야 한다. 1차는 집에서 접수후 원하는 날짜에 컴퓨터로 시험을 치르고 2차는 시험장에 가서 필기로 시험을 친다.

2급 1차는 온라인 시험이기에 "입금=합격"인 시험이다. 애당초 난이도가 의미가 없는게 시간도 60분으로 널널한데다가 문항은 50문항 밖에 안된다. 과락은 60점인데, 이는 30문제만 맞추면 합격한다는 소리다. 보통 이런 온라인[[1]]의 경우 우클릭을 막거나 혹은 창을 내릴수 없게하는 등의 조치를 취해서 부정행위를 그나마 억제하려고 하는데 이 시험은 그런것도 없다. 따라서 문제를 통째로 긁어서 구글에 검색하는 방식을 사용할 수 도 있다. 굳이 그렇게 하 지않더라도 옆에 기출문제본을 펴넣고 ctrl+f로 찾아다녀도 과락은 충분히 넘긴다. 그래도 은근히 100점맞기는 어려운게 CBT에 기출문제에 없는 문제들이 생각보다 다량으로출제된다. 이 때는 정말 알고있는 지식으로만 승부볼수 밖에 없다. 물론 그런거 다틀려도 80점은 그냥 넘기므로 불합격 하는건 정전이 나거나 졸도를 하지않는한 불가능 하다.

2급 2차는 80문제를 100분 안에 푸는 객관식 사지선다형으로서 시험장에서 봐야 한다. 그 80문제중에서도 60%인 48문제가 1과목으로 리눅스 운영및 관리이고 나머지 32문제가 2과목으로 리눅스 활용으로 나누어져있다. 과락은 전체 60%에 각 과목 40%로 워드나 컴활과 같다. 1과목은 터미널명령어가 거의 8할 이상이 나오므로 터미널명령과 그 옵션을 주구장창 외워야한다. 2과목은 네트워크나 애플리케이션등이 나온다. 즉 1과목은 리눅스에 대한 시험이 나오고 2과목은 리눅스와 관련된 것이 시험에 나온다고 보면된다. 문제자체가 사고력을 요하는 문제는 없으므로 공부만 해간다면 전공자 비전공자 가릴거 없이 할만한 시험이다. 덤프와 똑같이 나오는 문제는 없다고 보면되지만 덤프를 많이 푸는게 합격에 지름길이긴 하다. 그러므로 덤프를 많이 풀어본다면 충분히 합격할 수 있다.

1급 1차는 필기만 보며 객관식 사지선다형이다. 100분 동안 100문제를 푼다. 과목은 리눅스 실무의 이해, 리눅스 시스템 관리, 네트워크 및 서비스의 활용이다.

1급 2차는 단답형, 서술형인 필기(40%)와 관리 및 설정을 하는 실기인 실무형(60%)으로 나누어져 있다.

리눅스 실무의 이해

1급 1차 시험 100 문제 중 20문제가 나온다.

리눅스의 개요

  • 운영 체제의 개념, 구성 원리, 작동 원리, 종류 등을 이해한다.
  • 리눅스의 기초를 이루는 철학에 대해서 이해한다.
  • 리눅스의 탄생 배경과 발전, 커널의 버전과 기능에 대해 알아본다.
  • UNIX의 역사와 발전 및 리눅스 배포판에 대해 알아본다.

운영 체제의 개요

리눅스, 윈도우즈, 맥OS, 안드로이드, 아이OS(iOS), 비에스디(BSD), 유닉스 등이 운영 체제이다.

운영 체제의 이해

운영 체제의 목적은 효율적 사용, 사용자 편리성, 비간섭(운영 체제 사용자들의 활동에 간섭을 방지한다.)이다.

  • 효율적 사용: 컴퓨터 자원의 효율적인 활용을 보장한다.
  • 사용자 편리성: 컴퓨터 시스템의 편리한 사용법을 제공한다.
  • 비간섭: 운영 체제 사용자들의 활동에 간섭을 방지한다.

운영 체제의 종류

운영 체제에는 리눅스, 윈도우즈, 맥OS, 안드로이드, 아이OS(iOS), 비에스디(BSD), 유닉스 등이 있다.

리눅스 기초

리눅스의 철학

오픈 소스 철학에 따라 소스 코드가 공개되어있다. 리누스 토발즈리눅스 커널 최초 개발자다.

그누(GNU)에서 리눅스용 소프트웨어를 많이 개발하였다. 그누와 밀접한 관계가 있는 자유 소프트웨어 재단(Free Software Foundation, FSF) 대표는 리처드 스톨먼이다. 그누 소프트웨어GPL이라는 라이선스하에서 배포된다. 그누 진영의 철학은 상업적으로 판매하고 소스 코드를 비공개하는 저작권카피라이트(copyright)에 반대하여 카피레프트(copyleft) 정신을 따른다. 이런 소프트웨어를 자유 소프트웨어(free software)라고 부른다. 여기서 free는 무료라는 의미가 아니라 소스 코드를 공개하여 자유롭게 사용할 수 있게 했다는 뜻이다.

리눅스의 역사

리누스 토르발스(Linus Torvalds)가 미닉스(Minix)와 유사한 최초의 리눅스(Linux)를 만들었다.

리눅스의 개요: 기출 및 예상 문제

1급 1차

  • 운영 체제의 기능에 대한 설명을 틀린 것은?

1. 하드웨어와 사용자 간의 인터페이스를 제공한다.

2. 시스템 자원을 스케쥴링 한다.

3. 사용자가 원하는 특정 문제를 해결하기 위한 작업을 처리한다.

4. 응용 프로그램의 작성과 실행을 편리하게 한다.


해설: 운영 체제하드웨어와 사용자 간의 인터페이스를 제공하고, 시스템 자원을 스케줄링하며, 응용 프로그램의 작성과 실행을 편리하게 한다. 사용자가 원하는 특정 문제를 해결하기 위한 작업을 처리하는 것은 일반 프로그램이다. 답: 3

1급 2차

  • 다음은 무엇을 설명하는 것인가?

- FSF(Free Software Foundation)에 의해 만들어진 라이선스다.

- 리눅스에 포함되어 있는 대부분의 프로그램들이 이 라이선스에 기준을 두고 있다.

- 이 라이선스 기반의 프로그램은 누구나 소프트웨어의 복제, 재배포, 개작을 할 수 있다.


해설: GPL은 FSF에 의해 만들어진 라이선스로서 리눅스에 포함되어 있는 대부분의 프로그램들이 이 라이선스에 기준을 두고 있다. 이 라이선스 기반의 프로그램은 누구나 소프트웨어를 복제, 재배포, 개작 등을 할 수 있다. 답: GPL, GNU Public License, GNU 공중 이용 허락 계약서

리눅스 시스템의 이해

리눅스와 하드웨어

리눅스의 구조

부트 매니저

X 윈도우

셸(shell)

일반적인 리눅스유닉스의 내부 구조는 하드웨어, 커널(kernel), (shell), 애플리케이션의 네 가지로 구분할 수 있다. 하드웨어를 제어하는 게 커널이고, 사용자가 사용하는 게 애플리케이션, 그리고 커널과 애플리케이션을 연결하는 게 셸이다.


셸의 기능

  • 대화식(interactive) 사용

사용자의 요청을 기다리다 요청을 받아서 처리하는 대화형 구조.

  • 프로그래밍

소스 코드바이너리컴파일되지 않고, 즉석에서 읽어서 해석해서 실행되는 스크맆트(script) 방식으로 사용된다.

  • 리눅스 세션(session)의 설정(customization)

셸은 리눅스의 세션에 대한 변수들을 정의하여 사용자가 리눅스 환경을 자신이 원하는 상태로 쓰게 해준다. 예를 들어, 키보드 조작, 화면 표시 기능, 프로세스의 동작 환경 등을 설정할 수 있다.

셸의 종류

크게 본 셸 계열과 C 셸 계열이 있다. 본 셸 계열은 sh(bourne shell), ksh(korn shell), bash(Bourne Again Shell)이 있고, C 셸 계열은 csh(C Shell), tcsh(TC Shell)가 있다. 리눅스에서는 bourne shell을 기반으로 한 Bash 셸이 가장 많이 쓰인다. 유닉스에서는 본 셸의 기능을 확장한 콘 셸이나 C 셸이 많이 사용된다.

프로세스

리눅스 시스템의 이해: 기출 및 예상 문제

네트워크의 이해

네트워크 기초

OSI 7 Layer

네트워크를 통한 통신을 위해서는 당사자 간의 규약이 필요하며 이를 프로토콜이라고 한다. 이러한 프로토콜들은 전세계의 수많은 기업이나 연구소 등에서 개발되어 사용된다. 이렇게 다양한 프로토콜들이 상호 운용되어 동작하기 위해서는 기준이 되는 모델이 필요하게 되었다. OSI 참조 모델(OSI Reference Model, ISO/IEC 7498-1:1994)은 이러한 목적으로 ISO에서 개발된 일종의 프로토콜 모델이다. OSI 참조 모델은 1978년 스위스 제네바에서 국제 표준 기구인 ISO와 CCITT가 공동으로 발표한 데이터 통신 프로토콜의 표준으로 이 모델이 모든 컴퓨터 제조업체들의 의해서 실현된다면 어떤 다른 컴퓨터와도 통신할 수 있게 된다. OSI 참조 모델은 1984년에 첫번째 문서가 발간되었고, 1994년에 이를 수정한 두번재 문서가 발간되었다.

OSI(open system interconnection)란 개방형 시스템 간의 연결을 의미한다. 개방형은 시스템의 종류나 구현 바업, 시스템의 규모 등의 조건에 제약 받지 않고, 서로 다른 시스템끼리도 연결하여 통신이 가능하도록 한 것을 말한다.


전송 계층 보안 (TLS, Transport Layer Security, SSL, HTTPS)이 이름에 전송 계층 (transport layer)이 들어간다고 4번째 계층인 전송 계층에서 작동한다고 생각하면 안 된다. TLS는 5번째 계층인 쎄션 계층 (session layer)에서 작동한다.

  • TLS/SSL. WHAT?! 개념과 동작원리

2010.01.12

http://guguru.tistory.com/2


7. application layer

응용 계층

6. presentation layer

표현 계층

5. session layer

쎄션 계층


4. transport layer

전송 계층


3. network layer

네트워크 계층

2. data link layer

데이터 링크 계층

1. physical layer

물리 계층

네트워크 설정

네트워크의 이해: 기출 및 예상 문제

1급 1차

  • 다음에서 설명하는 OSI 모델 계층으로 알맞은 것은?

데이터의 암호화와 해독을 수행하고, 효율적인 전송을 위해 필요에 따라 압축과 압축해제를 수행하는 계층이다.

1. 네트워크 계층

2. 세션 계층

3. 표현 계층

4. 응용 계층


해설: presentation layer 답: 3

1급 2차

리눅스 시스템 관리

1급 1차 시험 100 문제 중 40문제가 나온다.

일반 운영 관리

사용자 관리

root(super user) 사용자 관리

사용자 계정 관리

파일 시스템 관리

프로세스 관리

프로그램이 실행되면 하나의 프로세스(process)로 운영된다. 시스템 관리자는 이 프로세스를 제어하여 시스템을 효과적으로 관리한다.

프로세스의 실행 레벨

컴퓨터가 부팅이 되면서 init (initialization) 프로세스는 /etc/inittab 파일의 내용을 한 행씩 실행한다. 이 파일에 실행레벨(runlevel)을 정하여 두고 설정에 따라 리누긋가 각 실행레벨로 부팅한다. /etc/inittab에 런러벨에 관한 모든 설정을 하는 경우와 inittab에 실행할 런레벨을 설정하고 실제 실행 레벨에 관한 사항은 /etc/init/re.conf에 기술하는 경우가 있다. 이 둘의 실질 내용은 동일하다. 0에서 6까지 각 런레벨마다 뭘 할지 정해져있고, 관리자가 실행레벨 하나를 지정하면, init는 지정된 실행레벨의 스크맆트들을 실행한다.

  • runleverl 0

수행되어야 할 프로세스들이 지정되어 있는 디렉터리: /etc/rc.d/rc0.d

셧다운 절차에 대해 책임진다. 모든 프로세스를 종료시키고, 파일 시스템을 언마운트(unmount)하는 작업을 포함한다.

  • runlevel 1

/etc/rc.d/rc1.d

단일 사용자 모드. 보통 시스템 관리자가 시스템에 특정 설정을 할 때 사용한다. 시스템이 이 모드에 있을 때는 다른 사용자들은 로그인할 수 없다.

  • runlevel 2

/etc/rc.d/rc2.d

다중 사용자 모드. 단, NFS를 지원하지 않는다.

  • runlevel 3

/etc/rc.d/rc3.d

다중 사용자 모드. 대부분의 배포판에서 기본적이 런레벨로 사용하는 runlevel. 충분히 네트워크가 가능한 리눅스 시스템으로 사용될 수 있도록 대부분의 서비스들이 시작될 수 있도록 설정할 수 있다.

  • runlevel 4

/etc/rc.d/rc4.d

사용자 정의 레벨로 정의될 수 있도록 비어있는 레벨이다.

  • runlevel 5

/etc/rc.d/rc5.d

그래픽 로그인 프롬프트(Aisnux와 Fedora의 경우 xdm 실행)를 띄우는 용도로 사용된다. 시작되는 서비스들은 실행레벨 3과 동일하게 설정할 수 있다.

  • runlevel 6

/etc/rc.d/rc6.d

재실행 모드. 이 실행 레벨은 거의 실행 레벨 0과 같지만, init.d가 시스템이 재실행될 것인지, 종료될 것인지를 결정한다.


이러한 런레벨 스크립트에 대한 사항들은 다음과 같다.

  • /etc/rc.d/rc3.d과 같은 각 runlever 디렉터리의 파일은 모두 링크 파일이다.
  • 이 링크 파일들은 모두 /etc/rc.d/init.d 디렉터리의 실제 파일로 링크되어 있다.
  • 이 디렉터리들의 파일들은 K 또는 S로 시작하는데, K로 시작하는 스크맆트 파일은 해당 부팅레벨에서 실행하지 않는 프로세스들이고, S로 시작하는 스크맆트 파일들은 해당 부팅 레벨에서 부팅 시에 실행하는 프로세스들이다.
  • K나 S의 숫자들은 실행될 순서를 나타낸 것이다.
  • 이런 링크를 생성하고 삭제할 수 있는 명령어는 chkconfig이다. 즉, 각 부팅레벨마다 링크파일을 별도로 만들고 삭제하고 K나 S를 변경할 수 있는 명령어이다.

그리고 한 가지 더 주의 깊게 보아야 할 것은 맨 마지막 스크맆트가 S99local이라는 것이다.(하지만 칼리 리눅스에서는 /etc/rc.d/rc3.d 디렉터리 안에 보이지 않는다. 원래 다른데 있는 건지, 칼리 리눅스만 다른 건지 모르겠다. 우분투 리눅스는 경로가 조금 다른데 /etc/rc3.d/ 이다. 여기도 S99local 파일은 보이지 않고, 다른 파일들만 보인다.) 이 스크맆트에 의해 /etc/rc.d/rc.local 스크맆트가 수행된다. 즉, /etc/rc.d/rc.local 파일에 설정해 둔 내용들이 부팅시마다 매번 자동 실행되는 이유는 여기에 있다. rc.local 파일은

#!/bin/sh -e

로 시작해서

exit 0

로 끝나야 한다. 만약 / 디렉터리에 있는 swapfile이라는 이름의 스왑 파일을 부팅시마다 스왑 파일로 불러오려면 #!/bin/sh -e와 exit 0 사이에

swapon /swapfile 

라는 내용을 적어주면 된다.

부팅시 자동실행

Linux startup script - 부팅시 자동실행

Linux에서 부팅시에 자동으로 실행되게 하기 위해서는 몇 가지 설정이 필요하다.


1.

/etc/init.d에 script를 넣는 다.

/etc/init.d/script명 start : 시작

/etc/init.d/script명 stop : 종료

/etc/init.d/script명 restart : 재시작

이 3가지 argument를 잘 받게 짜면 된다.


2.

/etc/init.d에 넣었다고 자동 실행되는 것은 아니다.

그리고 /etc/rc.d/rc.번호d 에 /etc/init.d에 대한 symbolic link를 넣어줘야 각 run level에서 실행이 된다.

S로 시작하는 건 시작(번호 순으로 순서 결정)

K로 시작하는 건 종료(번호 역순으로 순서 결정)


/sbin/chkconfig라는 utility가 그 일을 대신 해준다.


man chkconfig

chkconfig --list

chkconfig --level 2345 --add 스크립트명 on

chkconfig --level 2345 --add 스크립트명 off

/etc/init.d/와 /etc/init/의 차이점

/etc/init.d 와 /etc/init 폴더의 차이점

/etc/init.d 는 System V init tools(SysVinit)가 사용하는 스크립트를 담고 있습니다. 이는 리눅스가 지금까지 전통적으로 사용해온 서비스 관리 프로그램인 init 프로세스가 사용하는 스크립트 들입니다. init 프로세스는 커널이 초기화되고 나서 가장 처음 실행되는 프로세스 입니다. /etc/init.d 안에는 init 프로세스가 특정한 서비스(apache, mysql, …) 들을 start, stop, restart, reload 할 수 있는 쉘 스크립트들이 들어있습니다. 이 스크립트들은 사용자가 직접 실행할 수도 있고 /etc/rc?.d 디렉토리에 링크가 연결되어 부팅시에 자동으로 실행하게 할수도 있습니다

/etc/init 은 Upstart가 사용하는 설정파일들을 담고 있습니다. Upstart는 너무 오래된 init을 대체하기 위한 비교적 최근에 개발된 프로그램 입니다. /etc/init 디렉토리에는 Upstart가 start, stop, reload, status 명령을 통해서 특정 서비스를 어떻게 동작시켜야 하는지 설정을 담고있습니다. 우분투 10.04(lucid) 버전부터 우분투는 전통적인 SysVinit 프로세스에서 Upstart 로 전환중입니다. Upstart 로 시스템 구성이 선호되지만 당분간은 SysVinit 구조도 같이 제공될것입니다. 사실, SysVinit 스크립트는 Upstart의 호환성 레이어를 이용해서 처리되게 됩니다.

.d 디렉토리 이름은 일반적으로 어떤 환경에 필요한 설정 파일이나 스크립트를 담고 있다는 의미로 쓰입니다.(예를 들어 /etc/apt/sources.list.d 는 sources.list 를 작성하는데 필요한 파일들이 들어있습니다. /etc/network/if-up.d 는 네트워크 인터페이스를 활성화 시킬때 필요한 스크립트를 담고 있습니다). 이 경우에는 “init”은 논리적인 이름을 가진 디렉토리 이지만, SysVinit이 먼저 init.d 디렉토리를 사용하고 있으니, Upstart는 그냥 init 을 같은 목적으로 사용하는 디렉토리명으로 선택했습니다.

Upstart 는 systemd로 언젠가는 대체될 예정입니다.


https://jundols.com/2016/12/21/etcinit-d-%EC%99%80-etcinit-%ED%8F%B4%EB%8D%94%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90/

http://blog.sapzil.org/2014/08/12/upstart/

http://lunatine.net/about-systemd/

background/foreground 실행

프로세스가 포어그라운드(foreground)로 실행되는 동안에는 터미널에서 입력 등의 작업을 할 수가 없다. 반면 백그라운드(background)는 프로세스가 실행되는 동안에도 터미널에서 작동을 받아들인다.

  • 포어그라운드(foreground): 셸 프롬프트에서 명령을 입력하고 엔터를 치면 대부분 포그라운드로 프로세스를 띄운다. 포르가운드 모드로 실행되는 프로세스는 키보드 입력을 받을 수 있고, 화면에 출력할 수 있다. 셸을 포그라운드로 실행 중인 프로세스가 종료되기를 기다렸다가, 종려하면 다시 셸 프롬프트를 보여주며 명령 대기 상태가 된다.
  • 백그라운드(background): 백그라운드로 프로세스를 실행시키면 셸은 백그라운드 프로세스의 종료 여부에 관계없이 즉각 명령 대기 상태가 되어 다른 명령을 받아들일 준비를 갖춘다. 명령을 백그라운드로 실행시키고 싶을 때는 메타 문자 '&'를 명령 뒤에 적는다. 백그라운드는 인터넷 서비스를 위한 데몬 프로그램과 같이 프로그램이 장시간 키보드의 입력 없이 실행되어야 하는 경우에 사용된다.


트루크맆트를 컴퓨터에 설치 후 실행하려고

truecrypt

를 입력하면 포그라운드(foreground)로 실행되며, 포그라운드라 명령 프롬프트가 뜨지 않아 터미널에는 어떤 키보드 입력도 할 수 없는 상태이며, 터미널 상태에서 "Ctrl + C"를 누르면 종료된다.

truecrypt &

를 하면 백그라운드(background)로 실행되기 때문에 프로그램만 실행시키고 명령 프롬프트가 바로 뜨며, 터미널에서 다른 명령을 실행시킬 수 있다. 백그라운드 상태에서는 터미널에서 "Ctrl + C" 인터럽트 키를 눌러도 종료되지 않는다.

tor가 실행중일 때는 포그라운드(foreground) 상태이므로 다른 명령어의 입력을 받을 수 없다. 원래 명령어는 뒤에 &을 붙여서 입력을 하면 백그라운드(background)로 실행이 된다. 하지만 tor는 실행시 명령어가 아니라 그냥 파일을 실행시키는 것이므로

./tor &

를 입력해봤자 백그라운드가 아니라, 그냥 포그라운드로 실행된다. 명령어가 아니라 그냥 파일이어서 그렇다.


bg, fg 전환

bg 명령어와 fg 명령어, jobs라는 명령어는 이러한 프로세스들의 foreground작업과 background작업에 관한 설정과 확인을 하는 명령어이다.

jobs 명령어를 사용하면 자기자신이 실행시킨 프로세스리스트와 프로세스앞에 순서를 함께 출력하다. 이 순서 번호를 이용하여 프로세스를 백그라운드나 포그라운드로 전환이 가능하기때문에 bg명령어나 fg명령어를 사용할때 jobs명령어를 같이 사용하는 경우가 많다.

bg 명령어는 "Back Ground"의 약어로서 현재 실행중인 프로세스를 백그라운드작업으로 전환하는 쉘내부명령어이다.

포어그라운드로 실행 중인 명령어를 종료할땐 Ctrl + C 키를 누르면 종료가 된다. 하지만 Ctrl + C가 아닌 Ctrl + Z키를 누르게 되면 프로세스가 멈추게 된다. 프로세스의 종료와 멈춤을 잘 구분해야 한다. 이렇게 프로세스가 멈춰있는 상태에서 jobs를 이용하여 현재 앞쪽의 번호를 확인후 bg명령어 %[번호]를 이용하여 백그라운드로 전환이 가능하다.

foreground에서 tail -f 명령어가 실행되고 있을 때

Ctrl + Z를 해서 일시 정지 시킨 후
jobs

를 입력하면

[1]+  Stopped                 tail -f /var/log/messages

와 같은 식으로 작업 내역이 보인다. 1번이니 %1을 bg 명령어에 넣어서

bg %1

를 입력하면

[1]+ tail -f /var/log/messages &

처럼 뒤에 &이 붙어 백그라운드로 실행된다.


백그라운드 프로세스를 포어그라운드로 바꾸려면

jobs

를 해서

[1]   Running                 tail -f /var/log/messages &
[2]-  Running                 tail -f /var/log/dmesg &
[3]+  Stopped                 vim

와 같이 뜨면

fg %2

를 한다. 그러면

tail -f /var/log/dmesg

와 같이 2번 프로세스가 foreground로 전환된다.

프로세스의 종료

실행 중인 프로세스를 확인하는 명령어인 ps에 모든 프로세스를 보여주라는 옵션인 -A를 붙여

ps -A

를 실행하여 tor의 PID를 알아낸다. 예를 들어 tor의 PID가 747이라면

kill -15 747

를 입력한다. 그러면 tor에 종료 명령이 가고, 해당 프로그램은 프로그램을 종료하려고 시도한다. 만약 15 옵션이 듣지 않으면 9 옵션을 시도해본다.

kill -9 747

9 옵션은 커널(kernel)에서 해당 프로세스를 강제 종료시키는 것이다. 같은 프로그램이라도 매번 실행시킬 때마다 PID 번호가 바뀐다.

소프트웨어 설치 및 관리

패키지를 통한 소프트웨어 설치

소스 코드 컴파일 및 설치

일반 운영 관리: 기출 및 예상 문제

장치 관리

장치의 설치 및 관리

하드웨어 연결

커널 컴파일 및 설치

주변 장치 설정

장치 관리: 기출 및 예상 문제

시스템 보안 및 관리

  • 시스템 분석을 위해 로그 분석 및 관리 방법을 습득한다.
  • cron, at 등을 통한 시스템 관리의 자동화 방법에 대해 알아본다.
  • 시스템 보안 관리를 위한 방법과 관련 명령어를 습득한다.
  • 시스템 백업 정책 수립 및 관련 명령어를 알아보고 시스템 백업 방법을 익힌다.

시스템 분석

시스템 로그 분석

리눅스에는 시스템상의 문제와 보안상의 이유로 특정 파일에 log을 기록하게 된다. 이 log 파일을 보고 시스템의 문제를 진단하고 시스템을 효과적으로 관리할 수 있다. 또한, 이것은 시스템을 안전하게 지키기 위한 도구가 될 수 있다. 시스템 보안을 위한 프로그램들 또한 로그 파일을 분석하는 것을 기본으로 개발되고 있기도 하다. 여기에서는 이 log 파일의 기본 개념과 각각의 로그 파일에 대해서 살펴보도록 한다.

시스템 로그의 정의

log는 일지란 뜻이다. FTP 접속 사항, telnet 접속 사항, 시스템 작동 사항 등이 로그 파일에 기록된다.

이렇게 리눅스 서버에서 발생하는 로그는 크게 두 가지로 나눌 수 있다. 첫 번째는 커널(kernel) 로그로서 커널 메시지(kernel messages)라고 하는 것으로 klogd 라는 데몬에 의해 생성되는 것이고, 두 번째는 시스템 로그라고 하는 syslogd 데몬에 의해 생성되는 시스템 로그들이다.

보안 위험을 감지하기 위해서는 시스템에서 남겨지는 메시지를 확인해야 한다. 서버 보안에 문제가 있어 해킹을 당했을 경우 이에 대한 1차적인 확인을 로그 파일을 통해 할 수 있다.

리눅스에서 /var/log 디렉터리에서 모든 로그를 기록 및 관리한다. 이 디렉터리에는 /etc/syslog.conf 파일에서 지정한 시스템 로그 파일들, 각종 서비스 데몬의 설정 파일에서 지정한 로그 파일 등이 모두 이 디렉토리에 위치한다.

시스템 로그 파일
  • /var/log/messages

이 파일에는 syslog.conf에서 로그로 기록하지 않도록 지정한 것을 제외한 시스템의 모든 사항들이 기록된다.

  • /var/log/secure

시스템에 사용자가 원격 접속, 즉 원격 로그인 정보를 기록한 것(messages에 기록되지 않은 사적인 로그인 정보가 기록되는 것이다.)으로서 서버 보안에 아주 민감하고 중요한 파일이다. 특히 tcp_wrapper(xinetd)의 접속 제어에 관한 로그 파일로서 언제, 누가, 어디에서, 어떻게 접속했는가에 대한 로그를 기록하고 있다. sshd 데몬과 su 관련 실행, telnet 원격 접속 및 gdm 관련 실행 내용들이 기록되는 로그 파일로서, 시스템에 불법 침입 등이 있었다고 의심이 될 때는 반드시 이 로그 파일을 확인해야 한다.

  • /var/log/maillog
  • /var/log/cron
  • /var/log/boot.log
  • /var/log/dmesg
  • /var/log/wtmp와 last
  • /var/log/lastlog
  • xferlog
  • /var/log/httpd/access_log

아파치 서버의 로그 파일이다. 이 파일은 기본적으로 Apache 서버의 httpd.conf 파일에 의해 제어가 된다. 이 파일을 통해 웹 서비스에 대한 서비스 내용을 모니터링 할 수 있다. 로그에는 접속한 원격 컴퓨터의 이름 또는 IP 주소, 원격 로그인 이름(제공되지 않은 경우 "-"로 표시됨.), 원격 사용자 이름(제공되지 않은 경우 "-"로 표시됨.), 접속된 시각, 실행되었던 HTTP 명령어, 리턴된 상태 코드, 송수신된 바이트 수, 웹 사이트 정보, 클라이언트 정보 등의 순서로 정보가 표시된다.

  • /var/log/httpd/error_log

Apache 서버의 로그 파일이다. 이 파일은 기본적으로 아파치 서버의 httpd.conf 파일에 의해 제어가 된다. 이 파일을 통해 웹 서비스에 대한 에러 정보를 파악할 수 있다.

시스템 로그 분석 활용
syslogd를 사용한 로그 기록

시스템 로그를 기록하는 프로그램이다. syslogd에 의해 시스템에 대한 로그를 기록하여, klogd에 의해 커널에 대한 로그가 기록된다.

  • /etc/syslog.conf

syslogd의 설정 파일이다.

logrotate를 통한 로그 관리

logrotate는 로그 파일의 크기를 제한하고 관리하기 위한 프로그램이다.

  • /etc/logrotate.conf

logrotate의 설정 파일이다.

  • /var/lib/logrotate.status

logrotate로 작업한 작업 내역이 보관되는 파일이다.

Cron을 사용한 작업 자동화

반복되는 특정한 명령이나 작업을 지정한 시간에 동작되오록 예약하고 싶을 때 Cron 기능을 사용한다. crontab에 작업을 등록하는 방식으로 사용한다.

at을 통한 예정 작업 설정

at 명령어는 특정일의 지정된 시각에 지정된 작업을 1회 실행한다.

시스템 보안 및 관리

시스템 보안 관리

사용자 접근 관리
물리적 접근 관리

랙(rack)에 보관된 서버에 물리적으로 접근하지 못 하게 보안 장치를 한다.

대부분의 OS는 재부팅을 한 후 부트로더에서 수퍼 유저의 접근 권한을 취득할 수 있다. 이를 이용하면 입력 출력 장치 연결만으로도 다양한 보안 위험 요소가 발생하게 된다.

  • BIOS 접근 제한
  • 부트로더 접근 제한
  • 터미널 접근 제한

xlock: 사용자가 지정한 패스워드를 입력하기 전까지 X11 로컬 디스플레이를 잠그는 명령이다.

vlock: 하나 이상의 세션(가상 콘솔)을 잠글 때 사용되는 명령이다.

nologin: root를 제외한 다른 사용자의 접근을 차단하는 방법이다.

일반 사용자 접근 관리

일단 계정을 탈취한 후 root 계정을 탈취하는 것은 생각보다 손쉽게 이루어진다. 계정을 생성하는 시점부터 필요한 최소한의 권한만 부여하여 이러한 문제에 대하여 사전에 예방할 수 있다.

네트워크 접근 관리

방화벽을 많이 사용한다. 리눅스에서 제공하는 기본적인 방화벽은 tcp_wrapper와 iptables가 있다. 이 둘은 host와 ip에 대한 접근 허가를 다루는 부분이며 이는 기본적으로 OSI 참조 모델에서 Layer 3(Network layer)에서 동작을 한다.

iptables의 경우 커널에서 직접 처리하도록 커널의 모듈화된 형태로 동작을 하며 tcp_wrapper는 librwapper를 지원하는 애플리케이션에서 사용이 가능하다.

시스템 백업

시스템 백업의 정의 및 개요

백업은 데이터를 여러군데 복사해서 보존하는 작업이다.

백업의 종류
  • A Day-zero Backup

시스템 설치 후 사용자들이 시스템을 사용하기 전에 시스템의 모든 파일과 애플리케이션을 백업하는 것이다.

  • A Full Backup

일반적인 기준에 의하여 주기적으로 시스템의 모든 파일과 애플리케이션들을 백업하는 것이다.

  • A Incremental Backup

애플리케이션 등 새로 추가되거나 변경, 삭제되는 것과 같이 특정한 이벤트 후나 주기적으로 이전 백업 후 변경된 파일들만 백업하는 것이다.

  • 단순 백업

full backup 후 iincremental backup을 진행한다.

  • 다단계 백업

주기적으로 여러 단계의 백업을 만든다. 예를 들어 10개의 테이프에 백업을 만든다면 1-2번은 한달에 한번씩, 3-6번은 한주에 한번씩, 7-10번까지는 하루에 한번씩 백업한다. 그러면 최근 백업으로는 복구할 수 없는 예전에 삭제된 파일이더라도 예전 백업본으로 복구할 수 있다.

백업 정책 구성 방안

시스템 업그레이드를 할 경우 좀 더 쉽고 정확하게 하기 위해 필요 시스템 파일의 백업은 shell script를 사용하면 보다 쉽게 진행 가능하다. 예제로 아래에 몇가지 시스템 파일을 백업하는 셸 스크맆트를 작성하여 보았다.

#!/bin/bash
MANAGER="/var/sadm"
FILES="/etc/passwd /etc/shadow /etc/group /etc/rc.* /etc/fstab /etc/exportfs /etc/crontab /etc/aliases"
cd $MANAGER/private
for FILE in $FILES ; do
/bin/echo $FILE
BFILE='basename $FILE'
/usr/bin/diff $BFILE $FILE
/bin/mv $BFILE $BFILE.bak
/bin/cp $FILE $BFILE
done

위의 예제는 FILES에 지정된 파일을 /var/sadm/private 에 백업하며 이전 설정과 달라지는 부분이 있다면 출력해주는 간단한 셸 스크립트이다. 관리자는 cron 설정 파일에 다음과 같이 추가하여 백업의 결과를 메일로 받아볼 수 있다.

0 0 *   * * root /bin/sh /var/sadm/private/daily \
| mail -s "daily output" sysadm

백업 관련 명령어

cpio

cpio는 파일을 아카이브 형태로 복사하는 프로그램이다.

taper

taper는 테이프의 백업과 복구 프로그램이다.

dump

dump는 전통적인 유닉스의 백업 프로그램이다.

  • dump의 장점

여러개의 테이프에 백업할 수 있다.

접근 권한, 소유자 등의 정보도 복구할 수 있다.

  • dump의 단점

모든 파일 시스템은 개별적으로 dump 하여야 한다.

로컬 머신에서만 사용이 가능하다.

  • dump의 실행

예) 8mm tape driver에 /dev/rsd0a의 파일 시스템을 백업하기 위한 명령

/usr/etc/dump 0ufsdb /dev/nrst8 6000 54000 126 /dev/rsd0a\
rdist

rdist 명령은 시스템 관리 및 전체 노드의 저장 장치를 항상 동일하게 유지시키는 데 사용한다.

rmt

rmt는 dump, restore, tar와 유사한 배업 프로그램에서 테이프 장치에 원격 접근을 가능하게 한다.

tar / gzip

tar는 과거 테이프 백업시 사용되던 아카이브 프로그램이다. 여러개의 파일을 하나로 묶어주지만 압축 기능이 없어 압축은 gzip 등을 사용하여 한다.

dd

dd는 블록 단위로 파일을 복사하거나 변환하는 명령어이다.

시스템 보안 및 관리: 기출 및 예상 문제

1급 1차

  • 커널 부팅 메시지를 확인할 수 있는 명령어는 무엇인가?

1. boot

2. lastlog

3. dmesg

4. message


해설: /var/log/dmesg 파일에는 시스템이 부팅할 때 보이는 시스템 정보 메시지들이 기록된다. 따라서 시스템 부팅시 이상한 메시지가 나오면 이 파일을 보고서 확인이 가능하다. /var/log/boot.log 파일과 유사한 것이지만, dmesg 명령으로 이 파일의 내용을 확인할 수 있어 이 파일을 보는 것이 일반적이다. 답: 3


  • 다음 중 su 명령을 사용하여 root로 사용자 전환한 기록을 확인하고자 할 때 (괄호) 안에 들어갈 로그 파일로 알맞은 것은?
root@ihd ~]# grep su (    )

1. /var/log/secure

2. /var/log/messages

3. /var/log/boot.log

4. /var/log/access_log


해설: /var/log/secure 파일은 시스템에 사용자가 원격 접속, 즉 원격 로그인 정보를 기록한 것(messages에 기록되지 않은 사적인 로그인 정보가 기록되는 것이다.)으로서 서버 보안에 아주 민감하고 중요한 파일이다. sshd 데몬과 su 관련 실행, telnet 원격 접속 및 gdm 관련 실행 내용들이 기록되는 로그 파일로서, 시스템에 불법 침입 등이 있었다고 의심이 될 때는 반드시 이 로그 파일을 확인해야 한다. 답: 1


  • 아래 명령에 대한 설명으로 가장 적절한 것은?
# tar --create --newer 8 Sep 2013 --file /dev/ftape /usr/src --verbose

1. ftape라는 장치에 있는 내용을 /usr/src로 옮기고 있다.

2. /usr/src의 모든 내용을 /dev/ftape에 옮기고 있다.

3. tar를 이용하여 ftape라는 장치에 변경된 부분의 백업을 진행하고 있다.

4. ftape 장치의 내용과 /usr/src의 내용 중에서 2013년 9월 8일 이후에 생성된 내용들의 동일성 여부를 점검하고 있다.


해설: --create: 백업 파일 생성시에 사용하는 옵션

--newer: 뒤에 나오는 날짜보다 이후에 변경 및 생성된 파일에 대한 이벤트

--file: 백업 파일의 저장 위치 및 파일명 또는 디바이스명

답: 3

1급 2차

  • /mnt/backup/ 디렉토리에 /home/Dannis/ 디렉토리의 내용을 담은 home-Dannis-backup.cpio라는 cpio 아카이브 파일을 생성하는 명령을 작성하시오.


해설: cpio의 경우 파일 리스트를 받아 아카이브를 만드는 명령어다. 그리고 디렉토리를 인식하지 못한다. 그래서 파일 리스트를 만들어 cpio 명령으로 넘겨주고 -o 옵션을 이용하여 아카이브를 만들어 리디렉트(redirect)로 디스크에 기록한다.

답: find /home/Dannis/ | cpio -o > /mnt/backup/home-Dannis-backup.cpio

네트워크 및 서비스의 활용

1급 1차 시험 100 문제 중 40문제가 나온다.

네트워크 서비스

웹 관련 서비스

인증 관련 서비스

인증 관련 서버 관리(설치 및 설정)

파일 관련 서비스

삼바(Samba) 서버 관리

NFS(Network File System) 서버 관리

FTP 서버 관리

메일 관련 서비스

메일 서버의 설치 및 활용

DNS 관리

가상화 관리

기타 서비스

수퍼 데몬 관리(설치 및 설정)

Proxy 관리

DHCP 관리

VNC 관리

NTP 관리

네트워크 서비스: 기출 및 예상 문제

네트워크 보안

대부분의 컴퓨터가 네트워크에 연결되어 있고, 네트워크를 통해 시스템에 침입하는 것이 지역적 보안이나 물리적 보안을 깨는 것보다 더 쉬운 상황이다. 이러한 상황에서 시스템의 보안을 책임져야 하는 시스템 관리자들은 네트워크상의 보안 운영에 대한 기본 방침을 확립해야 한다. 이러한 작업을 도와줄 수 있는 도구들은 많은 배포판에서 제공되고 있으며, 이를 적절히 활용하는 기술이 필요하다.

네트워크 침해 유형 및 특징

DoS(Denial of Service) 공격

한 사용자가 시스템의 리소스를 독점하여 다른 사용자가 사용하지 못 하게 하는 것이다. 내부에서의 공격과 외부에서의 공격이 있다. 내부에서의 공격은 디스크 채우기, 메모리 고갈, 모든 프로세스 죽이기, 프로세스 만들기 등이 있다.

외부에서의 공격은 서버가 처리할 수 있는 용량 이상의 네트워크 트래픽을 보내서 서버를 마비시킨다.

웜(Worm), 바이러스, 백도어

컴퓨터 웜(computer worm)은 스스로를 복제하는 컴퓨터 프로그램이다. 컴퓨터 바이러스와 비슷하다.

바이러스가 다른 실행 프로그램에 기생하여 실행되는 데 반해 웜은 독자적으로 실행되며 다른 실행 프로그램이 필요하지 않다.

백도어

백도어(backdoor)는 시스템 설계자나 관리자에 의해 고의로 남겨진 시스템의 보안 허점으로 응용 프로그램이나 운영 체제에 삽입된 프로그램 코드이다.

  • 패스워드 크래킹 백도어

유닉스 시스템에 접속하기 위한 최초이며 고전적인 침입 방법을 백도어들은 패스워드 크래커를 실행하여 취약한 패스워드를 가진 계정을 알아낸다. 이러한 계정들은 시스템에 침입하기 위한 백도어의 가능성을 내재하고 있다.

  • Rhosts ** 백도어

네트워크에 연결된 유닉스 시스템에서 사용하는 rsh, rlogin 등의 명령어들은 호스트의 이름에 의해 인증이 이루어지고, 추가적인 패스워드를 묻지 않는 보안 취약성을 내재하고 있다.

  • Checksum과 Timestamp 백도어

침입자들이 실행 파일을 자신의 트로이 목마 버전으로 교체시키는 경우가 있다. 많은 시스템 관리자들이 타임스탬프와 유닉스의 sum 프로그램 등과 같은 체크섬 값에 의해 실행 파일의 변경 유무를 진단하낟. 하지만 침입자들의 기술도 발달되어 트로이 목마 프로그램의 타임스탬프를 원래 파일의 타임스탬프 값으로 생성시킬 수 있고, CRC 체크섬 값도 원래의 체크섬 값으로 가장할 수 있다. 요즘에 MD5 체크섬은 쉽게 깨지므로 SHA-2 이상의 해시 함수가 권장된다. SHA-2 이상은 이러한 임의적인 가장이 불가능하므로 무결성 보장을 위한 도구로 권고되고 있다.

  • Login 백도어
  • Service 백도어
  • Cronjob 백도어
  • Library 백도어
  • Kernel 백도어
  • 파일 시스템 백도어
  • Bootblock 백도어
  • 프로세스 은닉 백도어(process hiding backdoors)
  • 루트킷(rootkit)

백도어를 설치하는 가장 인기있는 패키지 중의 하나가 루트킷이다. 루트킷에 소개된 전형적인 백도어용 프로그램들은 다음과 같다.

z2: utmp, wtmp, lastlog로부터 특정 엔트리를 제거한다.

Es: sun4 기반 커널들의 이더넷 스니퍼이다.

Fix: 체크섬 값을 가장하는 도구이다.

Sl: 매직 패스워드를 통하여 관리자로 로그인하는 도구이다.

  • 네트워크 트래픽 백도어(network traffic backdoors)
  • TCP 쉘 백도어
  • UDP 쉘 백도어
  • ICMP 쉘 백도어
  • 암호화된 링크


트로이 목마(Trojan Horse)

정상적인 기능을 하는 프로그램으로 위장해서 프로그램 내에 숨어서 의도하지 않은 기능을 수행하는 프로그램의 코드 조각이다.트로이 목마 프로그램은 시스템에 대한 재침입을 위한 백도어로 사용하기 위해 시스템에 설치하는 경우가 많다.

버퍼 오버플로우(Buffer overflow)

버퍼 오버플로 공격이라는 말은 보안에 관심이 있는 사람이라면 누구나 한 번쯤은 들어본 말일 것이다. 버퍼 오버플로 공격이란 말 그대로 지정된 버퍼보다 더 많은 데이터를 입력해서 프로그램이 비정상적으로 동작하도록 만드는 것을 의미한다. C 언어에서는 데이터가 지정된 버퍼보다 더 많이 입력되었는지를 체크하지 않고 메모리에 쓰는 것이 일반적이다. 이것은 하나하나 체크를 하다보면 프로그램의 수행 성능이 크게 저하되기 때문이다. 이러한 사실은 옛날부터 알려저 왔지만 오랫동안 특별히 많은 사람들의 관심을 끌지 못 했다. 프로그램이 비정상적으로 종료되는 것 이외에는 특별한 의미가 없기 때문이었다. 하지만 버퍼 오버플로가 되는 순간에 사용자가 원하는 임의의 명령어를 수행시킬 수 있다는 가능성이 알려지면서 문제가 되기 시작했다.

대비 및 대처 방안

방화벽(Firewall)

방화벽의 원래 의미는 건물에서 발생한 화재가 더 이상 번지는 것을 막는 것이다. 내부 네트워크를 보호하기 위해 외부에서의 불법적이 ㄴ트래픽이 들어오는 것을 막고, 허가하거나 인증된 트래픽만 허용하는 적극적인 방어 대책이라고 할 수 있다.

DMZ

DMZ란 회사의 사설 네트워크와 외부의 공중 네트워크(인터넷) 사이에 중립 지역으로서 삽입된 컴퓨터 호스트, 또는 소형 네트워크를 말한다.

VPN

가상 사설 망(virtual private network)은 인터넷과 같은 공중망을 사용하여 사설망을 구축하게 해주는 기술 혹은 통신망을 통칭한다.

예전에는 인터넷 망을 통하지 않고, 본사와 지사를 직접 네트워크 회선으로 연결하였다. 지금도 군부대에서는 보안을 위해 직접 회선으로 연결하는 경우가 있다. 물론 비용이 많이 든다.

IDS

IDS는 intrusion detection system(침입 탐지 시스메)의 약자로 단순한 접근 제어 기능을 넘어서 침입으 패턴 데이터베이스와 expert system(전문가 시스템)을 사용해 네트워크나 시스템의 사용을 실시간 모니터링하고, 침입을 탐지하는 보안 시스템이다.

스니핑 방지

스니퍼(Sniffer)는 원래 Network Associate사의 등록 상표였으나 현재는 PC나 Kleenex처럼 일반적인 용어로 사용되고 있다. sniff라는 단어의 의미(냄새를 맡다, 코를 킁킁거리다.)에서도 알 수 있듯이 스니퍼는 "컴퓨터 네트워크상에 흘러 다니는 트래픽을 엿듣는 도청 장치"라고 말할 수 있다. 그리고 스니핑(sniffing)이란 이러한 스니퍼를 이용하여 네트워크상의 데이터를 도청하는 행위를 말한다. 살인자살 동영상을 의미하는 스너프(snuff)도 sniff와 동일한 "코를 킁킁거리다, 냄새를 맡다"는 뜻이다.

IP 매스커레이딩을 이용한 보안

만약 몇몇 장비만이 공인 인터넷 주소를 필요로 하고, 대부분의 사용자가 클라이언트로서 일반적인 프로그램만 사용한다면 공인 인터넷 주소를 부여하지 않고 라우팅이 불가능한 인터넷 대역의 주소(이후 사설 IP 주소라고 한다)를 사용함으로써 외부에서 접근을 할 수 없게끔 근본적으로 막아버리는 방법이 존재한다. 이러한 기법을 사용하기 위해 IP 매스커레이딩(Masquerading)이라는 기능을 사용하게 될 것이다.

기타 대응책

보안 취약점을 점검하여 제거한다. 그리고 침입 탐지를 한다.

네트워크 보안: 기출 및 예상 문제

1급 1차

  • iptables를 이용하여 외부 인터페이스인 ppp0로부터 들어오는 telnet 접근을 차단하기 위한 명령으로 옳은 것은?

1. iptables -A INPUT -p tcp --destination-port telnet -i ppp0 -j DROP

2. iptables -L INPUT -p tcp -dp telnet --interfaces ppp0 -j REJECT

3. iptables --direction INPUT --protocol tcp --destination-port telnet --interfaces ppp0 --jump DROP

4. iptables --input telnet --output DROP


2. -L 옵션은 리스트를 보기 위한 옵션이다.

3. --direction 대신 -A가 들어가야 한다.

4. --input 대신 -A INPUT이 들어가야 하고, ppp0에 대한 정의가 없다.

답: 1

1급 2차

  • 시스템 부하가 높아져 확인 결과 해커가 웹 서버를 공격하고 있다는 사실을 알았다. 공격을 시도하고 있는 IP는 192.168.0.10/24 대역대와 같으며 접근 통제 정책을 통하여 해당되는 IP에 대하여 web 접속을 차단한다. 또한, 22 포트는 172.168.1.10 IP에서만 접속을 허용한다. 다은 (괄호) 안에 알맞은 내용을 적으시오.(12점)
/sbin/iptables (1) (2) -s 172.168.1.10 (3) tcp (4) 22 -j (5)
/sbin/iptables (1) (2) -s 0/0 (3) tcp (4) 22 -j (6)
/sbin/iptables (1) (2) -s 192.168.0.10/24 (3) tcp (4) 80 -j (6)


해설: iptables -A INPUT -s 172.168.1.10 -p tcp --dport 22 -j ACCEPT

22번 포트에 172.168.1.10 IP를 허용하는 룰이다.

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

22번 포트에 모든 IP를 차단하는 룰이다.

iptables -A INPUT -s 192.168.0.10/24 -p tcp --dport 80 -j DROP

80번 포트에 192.168.0.10/24 대역을 차단하는 룰이다.

답: (1) -A (2) INPUT (3) -p (4) --dport (또는 --destination-port) (5) ACCEPT (6) DROP

기출문제 모음

2급 1차 기출 문제

  • bash 환경에서 아래 명령의 실행 결과에 대한 설명으로 가장 적절한 것은?
#export PATH=$PATH:/etc

1. 기존의 경로(PATH)를 제거하고 새로운 경로를 추가하였다.

2. 기존의 경로(PATH)에 /etc라는 새로운 경로를 추가하였다.

3. 잘못된 명령으로, export $PATH=PATH:/etc로 실행하는 것이 옳다.

4. 잘못된 명령으로, export PATH=PATH:/etc로 실행하는 것이 옳다.



2

  • 리눅스를 설치한 후 부팅을 하였는데, LILO boot: 프롬프트가 나오지 않고 LI문자만 출력하고 부팅이 이루어지지 않는 경우에 대한 설명으로 맞는 것은?

1. 디스크립터 테이블(Descriptor Table)이 깨어졌다.

2. 처음에는 부트 로더(Boot Loader)가 작동하였으나 Map 파일에서 디스크립터 테이블을 로드하지 못할 때 발생할 수 있다.

3. 두 번째 단계의 부트 로더(Boot Loader)가 작동하였으나 Map 파일에서 디스크립터 테이블을 로드하지 못할 때 발생할 수 있다.

4. 미묘한 지오메트리(geometry) 불일치에 의해서 또는 Map Installer 실행없이 /boot/map이 이동되어 두 번째 부트섹터 로더가 잘못된 주소로 로드되었다.



4

  • 다음중 다수의 디스크나 파티션을 하나로 묶어서 구성하는 기술과 관련 있는 조합으로 알맞은 것은?

1. ᄀext4 ᄂLVM

2. ᄀext4 ᄂRAID

3. ᄀext3 ᄂext4

4. ᄀLVM ᄂRAID



4

  • 현재 디렉토리의 위치가 /home/user1일 경우 다음중 그 의미가 다른 것은?

1. cd ..

2. cd /home

3. cd ./..

4. cd home



4

  • 시스템의 네트워크 인터페이스에 대한 정보를 확인하는 명령어로 적절하지 못한 것은?

1. ifconfig

2. netstat -l

3. cat /etc/crontab

4. route



3

  • 현재 호스트에서 ihd.or.kr까지 연결되는 과정을 알고 싶을 때 사용할 명령은?

1. traceroute ihd.or.kr

2. ping ihd.or.kr

3. telnet.ihd.or.kr

4. ftp ihd.or.kr



1

  • posein 사용자가 현재 hannam이라는 그룹에 속해 있다. 다음 중 posein 사용자의 그룹을 IHD로 변경할 때 알맞은 것은?

1. usermod –n IHD posein

2. usermod –g IHD posein

3. usermod –n IHD hannam

4. usermod –g IHD hannam



2

  • reboot명령어의 수행 과정에 대한 설명으로 틀린 것은?

1. 파일 시스템을 언마운트한다.

2. 시스템을 shutdown한다.

3. 시스템 실행수준(run level)을 3으로 변경시킨다.

4. 다중 사용자(multi-user)모드에서는 수행되지 않는다.



4

  • 다음 중 텍스트 파일에서 특정 패턴을 갖는 줄을 찾아서 출력해주는 명령으로 알맞은 것은?

1. file

2. grep

3. less

4. find



2

2급 2차 기출 문제

  • 다음 중 파일의 허가권(Permission)을 확인 할 수 있는 명령으로 알맞은 것은?

가. chgrp

나. chown

다. chmod

라. ls



  • 다음 중 사용자 user, 그룹 test1 소유인 디렉터리 /home/user를 포함하여 하위 디렉터리 및 파일의 소유자를 ihd로 변경하려고 할 때 ( 괄호 ) 안에 들어갈 옵션으로 알맞은 것은?
# chgrp (    ) ihd /home/user

가. -f

나. -c

다. -R

라. -h



  • /dev/sda2 파티션을 ext4 파일 시스템으로 생성하려고 한다. 다음 ( 괄호 ) 안에 들어갈 내용으로 틀린 것은?
[root@www ~] # (      ) /dev/sda2

가. mke2fs -t ext4

나. mkfs -t ext4

다. mke2fs -j

라. mkfs.ext4



  • 다음 중 디스크의 사용 가능한 용량을 확인 할 때 사용하는 명령어로 알맞은 것은?

가. df

나. du

다. free

라. fdisk



  • tail -f /var/log/syslog 명령어로 실행중인 프로세스를 백그라운드 프로세스로 관리하려고 한다. 다음 중 프로세스를 대기시키기 위해 사용 할 수 있는 인터럽트 키 조합으로 알맞은 것은?

가. [Ctrl] [b]

나. [Ctrl] [c]

다. [Ctrl] [z]

라. [Ctrl] [d]



  • 다음 중 nohup 명령어에 대한 설명으로 틀린 것은?

가. 사용자가 로그아웃하거나 작업 중인 터미널 창이 닫혀도 실행중인 프로세스를 백그라운드 프로세스로 작업될 수 있도록 해주는 명령이다.

나. 실행한 명령을 자동으로 백그라운드로 보내지 않고, 사용자가 명령행 뒤에 '&&'를 명시해야한다.

다. 실행중인 프로세스의 표준 출력과 에러는 'nohup.out'라는 파일을 생성하여 기록한다.

라. 작업 디렉터리에 쓰기가 불가능할 경우 '$HOME/nohup.out' 파일을 자동으로 생성하여 기록한다.



1급 1차 기출 문제

  • 다음 중 운영체제의 목적으로 틀린 것은?

가. 효율적 사용(efficient use)

나. 사용자 편리성(user convenience)

다. 비간섭(noninterference)

라. 대화형 처리(Interactive Processing)



  • 다음 중 badman.com에서 ssh를 통해 침입을 시도 하려고 한다. 해당 도메인의 침입을 막기 위해 조치 할 수 있는 명령어 혹은 파일로 틀린 것은?

가. /etc/sysconfig/iptables

나. /etc/hosts.deny

다. iptables

라. selinux



  • 다음 중 iptables의 3가지 체인으로 틀린 것은?

가. INPUT

나. DROP

다. OUTPUT

라. FORWARD



  • 다음 중 vsftpd.conf 설정에서 하나의 IP 주소 당 허용할 최대 접속수를 지정하는 항목으로 알맞은 것은?

가. max_per_ip=3

나. max_per_client=3

다. max_per_address=3

라. max_per_ip_address=3



  • xinetd 관련 로그를 별도의 파일인 /var/log/xinetd.log에 저장하려고 한다. 다음 중 관련 설정으로 알맞은 것은?

가. log_type = FILE /var/log/xinetd.log

나. log_type = SYSLOG /var/log/xinetd.log

다. log_type = /var/log/xinetd.log

라. log_file = /var/log/xinetd.log



1급 2차 기출 문제

  • 다음은 사용자 신분 확인 명령에 대한 설명이다. (괄호) 안에 알맞은 내용을 적으시오.

명령어 (1): 유효 사용자 아이디(effective user ID)의 정보를 확인하는 명령이다.

명령어 (2): 시스템에 접속할 당시의 계정명과 접속 정보를 확인하는 명령이다.

명령어 (3): 현재 시점에서 사용하고 있는 내가 누구인가에 대한 자세한 정보를 보여준다. 사용자 아이디, 그룹 아이디, 소속 그룹 정보 등을 확인할 수 있다.

조건

- (1): 관련 명령어만 적는다.

- (2): 관련 명령을 적는데 필요하면 옵션을 포함해서 기재한다.

- 명령은 대소문자를 구분하며, 띄어쓰기, 기호 등을 정확히 기술한다.



(1) whoami

(2) who am I (who ARG1 ARG2 모두 정답), who –m, who –a, who -u

(3) id


해설

whoami: 자신의 사용자 아이디 조회

who am i: 자신의 정보 조회

who: 시스템에 로그인 되어 있는 사용자를 출력해 주는 명령어

w: 시스템에 로그인 되어 있는 사용자와 사용자가 수행중인 작업을 출력해 주는 명령이다.

id: 시스템에 등록된 아이디에 대한 정보를 출력하느 명령으로 UID, GID, 속한 그룹 정보를 보여준다.

users: 시스템에 로그인 되어 있는 사용자의 아이디를 출력해 주는 명령어