Chapter 15. 리눅스보안의기초 -...

39
Chapter 15. 리눅스 보안의 기초

Transcript of Chapter 15. 리눅스보안의기초 -...

Page 1: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

Chapter 15. 리눅스 보안의 기초

Page 2: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

00. 개요

01. 정보 보안의 기초

02. 시스템 로그

03. 방화벽 관리

04. 보안 관리 도구

Page 3: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

• 정보 보안의 3요소가 무엇인지 설명할 수 있다.

• 로그가 무엇인지 설명할 수 있다.

• 로그 파일을 확인하고 내용을 분석할 수 있다.

• 로그 관리 데몬을 설정할 수 있다.

• GUI 도구를 사용하여 방화벽을 설정할 수 있다.

• 명령을 사용하여 방화벽을 설정할 수 있다.

• NMap을 사용하여 시스템에서 열려 있는 포트가 무엇인지 확인할 수 있다.

• PAM이 무엇인지 이해하고 설정 파일을 설명할 수 있다.

• SELinux가 무엇인지 설명할 수 있다.

Page 4: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

리눅스 실습 스터디 맵

Page 5: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

00 개요

[그림 15-1] 15장의 내용 구성

Page 6: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

01 정보 보안의 기초

정보 보안의 정의

정보 보안에는 물리적인 보안, 기술적인 보안, 관리적인 보안 등 다양한 측면

정보 보안은 정보 자산을 여러 가지 위협으로부터 보호하여 기밀성, 무결성, 가용성을 유지하는 것

정보 보안의 3요소: CIA 삼각형

기밀성(confidentiality)은 허가받은 사용자만이

해당 정보에 접근할 수 있도록 하는 것

무결성(integrity)은 정보가 무단으로 변조되지 않았음을 의미

가용성(availability)은 필요할 때 인가를 받은 사용자가

정보나 서비스에 접근할 수 있는 것

Page 7: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

01 정보 보안의 기초

보안 기본 조치

불필요한 서비스 통제하기

• 꼭 필요하지 않은 서비스 포트는 모두 차단

• 서비스를 통제하는 데는 불필요한 서비스 자체를 제거하는 방법과 방화벽에서 패킷을 필터링하는 방법을 함께 사용하는 것이 바람직

소프트웨어 패치 실시하기

• 시스템 관리자는 패치의 발표에 주의를 기울이고 있다가 패치가 나오면 즉시 설치

주기적으로 점검하기

• 프로세스의 목록과 사용자의 상태, 서비스의 동작 상태, 네트워크 연결 상태, 디스크의 남은 용량 등을 주기적으로 확인

백업하기

• 주요 시스템 설정과 소프트웨어, 사용자 데이터 등을 주기적으로 백업

• 문제가 발생했을 때 빠르게 복구하는 방법도 연습해둬야

공부하는 시스템 관리자

• 시스템 관리자는 늘 공부하는 자세로 신기술에 대한 검토와 적용, 안정적인 서비스 운영 등을 위해 꾸준히 노력

Page 8: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

02 시스템 로그

로그

로그는 커널과 리눅스 시스템이 제공하는 여러 서비스와 응용 프로그램이 발생시키는 메시지

로그를 저장하고 있는 파일을 로그 파일: 대부분 /var/log 디렉터리에 위치

로그 파일을 통해 시스템의 상태를 확인 가능

주요 로그 파일

/home/share 디렉터리 공유 설정

[root@localhost ~]# cd /var/log[root@localhost log]# ls -FXorg.0.log cron-20130714 maillog secure-20130703Xorg.0.log.old cups/ maillog-20130609 secure-20130707Xorg.1.log dracut.log maillog-20130703 secure-20130714Xorg.1.log.old dracut.log-20130706 maillog-20130707 speech-dispatcher/Xorg.2.log firewalld maillog-20130714 spice-vdagent.logXorg.9.log gdm/ messages spooleranaconda/ glusterfs/ messages-20130609 spooler-20130609audit/ hp/ messages-20130703 spooler-20130703boot.log httpd/ messages-20130707 spooler-20130707btmp iscsiuio.log messages-20130714 spooler-20130714btmp-20130703 iscsiuio.log-20130609 mysqld.log sssd/chrony/ iscsiuio.log-20130703 pm-powersave.log tallylogcluster/ iscsiuio.log-20130707 ppp/ vbox/cron iscsiuio.log-20130714 prelink/ wtmpcron-20130609 lastlog samba/ xferlogcron-20130703 libvirt/ secure xferlog-20130714cron-20130707 mail/ secure-20130609 yum.log[root@localhost log]#

Page 9: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

02 시스템 로그

주요 로그 파일

로그 파일의 소유자는 거의 대부분 root 계정

접근 권한은 대부분의 경우 600으로 설정

보안의 측면에서도 일반 사용자 계정에서 로그 파일의 내용을 함부로 볼 수 없게 하는 것이 바람직

[root@localhost log]# ls -l messages*-rw-------. 1 root root 96632 7월 14 10:52 messages-rw-------. 1 root root 1097810 6월 9 03:21 messages-20130609-rw-------. 1 root root 2101960 7월 3 15:04 messages-20130703-rw-------. 1 root root 607526 7월 7 03:42 messages-20130707-rw-------. 1 root root 935502 7월 14 03:35 messages-20130714[root@localhost log]#

Page 10: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

02 시스템 로그

주요 로그 파일 용도

Page 11: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

02 시스템 로그

로그 파일 예: /var/log/messages 파일

커널이나 데몬에서 발생하는 대부분의 메시지가 기록

로그는 날짜와 시간, 로그를 발생시킨 호스트 이름, 데몬 이름, 메시지 내용 등으로 구성되며 한 행씩 기록

[root@localhost log]# tail messagesJul 14 17:42:43 localhost kernel: [84141.809698] nfs: server 192.168.0.15 not responding, timed outJul 14 17:47:49 localhost kernel: [84424.568616] nfs: server 192.168.0.15 not responding, timed out(중략)Jul 14 17:51:31 localhost dbus-daemon[602]: ** Message: D-Bus service launchedwith name: net.reactivated.FprintJul 14 17:51:31 localhost dbus-daemon[602]: ** Message: entering main loop[root@localhost log]#

Page 12: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

02 시스템 로그

로그 관리 데몬

리눅스 시스템의 로그 파일 중 일부는 로그 관리 데몬에 의해 통제: rsyslog

rsyslog 서비스를 제공하는 데몬은 /sbin/rsyslogd

rsyslog 서비스를 설정하는 파일은 /etc/rsyslog.conf

• 어떤 로그를 어떻게 처리할 것인지를 규칙(rule)으로 정의

[root@localhost log]# systemctl status rsyslog.servicersyslog.service - System Logging Service

Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled)Active: active (running) since Sun, 2013-07-14 23:01:54 KST

Main PID: 601 (rsyslogd)CGroup: name=systemd:/system/rsyslog.service

└601 /sbin/rsyslogd -n -c 5Jul 14 23:01:54 localhost.localdomain systemd[1]: Started System Logging Serv...[root@localhost log]#

Page 13: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

02 시스템 로그

로그 관리 데몬

규칙은 한 행에 선택자와 동작으로 작성하며 공백 문자나 탭으로 구분

선택자

rsyslog의 선택자는 기능명(facility)과 우선순위(priority)를 기반

기능명: 로그 메시지를 생성하는 프로그램을 지정

우선순위: 메시지의 심각도

기능명.우선순위

Page 14: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

02 시스템 로그

선택자 적용

기능명과 우선순위를 결합하는 방법

Page 15: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

02 시스템 로그

동작: 선택자가 선택한 메시지를 어떻게 처리할 것인지를 정의

예: 커널이 발생시킨 메시지 중 우선순위가 crit 이상인 메시지를 /var/log/kern.log 파일에 저장

예: 메시지를 파일에도 저장하고 user1 사용자에게도 메시지를 출력

kern.crit /var/log/kern.log

kern.crit /var/log/kern.logkern.crit user1

Page 16: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

02 시스템 로그

로그 관리 도구

그놈은 로그를 관리할 수 있는 GUI 도구인 로그뷰어를 제공: gnome-system-log

gnome-system-log 실행

[그림 15-3] 로그뷰어 암호 임력

[root@localhost log]# rpm -qa gnome-system-loggnome-system-log-3.8.1-1.fc19.x86_64[root@localhost log]#

Page 17: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

02 시스템 로그

로그 관리 도구

로그 뷰어 실행: 왼쪽의 로그 파일을 선택하면 오른쪽에 로그 파일의 내용이 출력

[그림 15-4] 로그뷰어 창

Page 18: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

03 방화벽 관리

방화벽

네트워크를 통한 외부의 접속을 차단하려면 방화벽(firewall)을 사용해야 함

페도라 19에서는 이전의 iptables 대신에 firewall 데몬 서비스 제공

방화벽 동작 확인하기: firewalld.service

방화벽 시작과 종료

[root@localhost log]# cd[root@localhost ~]# systemctl status firewalld.servicefirewalld.service - firewalld - dynamic firewall daemon

Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)Active: active (running) since Sun, 2013-07-21 21:35:35 KST

Main PID: 566 (firewalld)CGroup: name=systemd:/system/firewalld.service

└566 /usr/bin/python -Es /usr/sbin/firewalld --noforkJul 21 21:35:35 localhost.localdomain systemd[1]: Started firewalld - dynamic...[root@localhost ~]#

systemctl stop firewalld

systemctl start firewalld

Page 19: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

03 방화벽 관리

GUI 도구로 방화벽 설정하기

방화벽을 관리하기 위한 GUI 도구로 firewall-config

[그림 15-5] firewall-config창

[root@localhost ~]# firewall-config &

Page 20: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

03 방화벽 관리

firewall-config의 사용법: Current View

현재 설정하는 내용을 바로 적용할 것인지를 결정

Current View의 값이 ‘Runtime Configuration’이라면 서비스나 포트 등의 항목을 변경했을 때 그 즉시 적용

Current View의 값이 ‘방화벽 설정’이라면 설정한 내용을 적용하기 위해 서비스나 시스템을 다시 시작

• 파일 메뉴 아래에 있는 동그라미 화살표 아이콘(reload icon)을 클릭

• 또는 옵션 메뉴에서 ‘Reload Firewalld’ 메뉴를 선택하면 적용

firewall-config의 사용법: 영역(zone)

네트워크를 신뢰도 수준에 따라 여러 개의 영역으로 구분하여 사용

Page 21: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

03 방화벽 관리

firewall-config의 사용법: 방화벽 설정하기

서비스, 포트, 마스커레이딩, 포트 포워딩, ICMP 필터를 설정

서비스 항목은 http, ssh, ftp 같은 이미 잘 알려져 있는 서비스 중 신뢰할 수 있는 서비스를 열거나 닫는 것

포트 항목은 서비스 목록에 없는 네트워크 서비스를 열어주기

위해 해당 서비스의 포트 번호를 직접 지정할 때 사용

마스커레이딩은 내부의 IP 주소를 하나의 외부용 주소로 변환하는 것으로 리눅스 시스템을 라우터 기능으로 사용할 때 적용

ICMP 필터는 ICMP 프로토콜로 보내는 메시지에서 거부할 유형을 표시

Page 22: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

03 방화벽 관리

방화벽 관리 명령

Page 23: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

03 방화벽 관리

허용하는 서비스 목록 보기: --list-services

서비스 추가하기

서비스 삭제하기

포트 추가하기

[root@localhost ~]# firewall-cmd --list-servicesmdns dhcpv6-client telnet ssh[root@localhost ~]#

[root@localhost ~]# firewall-cmd --add-service=http[root@localhost ~]# firewall-cmd --list-servicesmdns http dhcpv6-client telnet ssh[root@localhost ~]#

[root@localhost ~]# firewall-cmd --remove-service=telnet[root@localhost ~]# firewall-cmd --list-servicesmdns http dhcpv6-client ssh[root@localhost ~]#

[root@localhost ~]# firewall-cmd --add-port=5000/tcp[root@localhost ~]# firewall-cmd --add-port=5000/udp[root@localhost ~]# firewall-cmd --list-ports5000/udp 5000/tcp[root@localhost ~]#

Page 24: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

03 방화벽 관리

포트 삭제하기

Permanent 옵션 사용하기

--permanent 옵션은 바로 적용되지는 않지만 방화벽에 설정 내용을 저장

이 옵션으로 지정한 항목을 적용하려면 reload를 하거나 firewalld를 다시 시작해야 함

런타임과 방화벽에 저장하기를 동시에 하려면 런타임 적용과 permanent 옵션 적용을 모두 실행해야 함

[[root@localhost ~]# firewall-cmd --remove-port=5000/tcp[root@localhost ~]# firewall-cmd --remove-port=5000/udp[root@localhost ~]# firewall-cmd --list-ports[root@localhost ~]#

[root@localhost ~]# firewall-cmd --add-service=telnet[root@localhost ~]# firewall-cmd --permanent --add-service=telnet[root@localhost ~]#

Page 25: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

NMap : 포트 스캔 도구

NMap은 내 서버나 원격의 서버가 사용 중인 포트, 운영체제 등을 스캔하여 출력

NMap은 네트워크 관리용으로도 사용되고, 취약한 포트가 사용 중인지 확인이 가능하여 보안용으로도 사용

스캔하는 것만으로도 보안 침입을 위한 준비 과정으로 간주하므로 원격 서버를 마구 스캔하면 안됨

NMap 설치하기

[root@localhost ~]# yum -y install nmap nmap-frontend(생략)Running transaction

Installing : 2:nmap-6.40-2.fc19.x86_64 1/2Installing : 2:nmap-frontend-6.40-2.fc19.noarch 2/2Verifying : 2:nmap-frontend-6.40-2.fc19.noarch 1/2Verifying : 2:nmap-6.40-2.fc19.x86_64 2/2

Installed:nmap.x86_64 2:6.40-2.fc19 nmap-frontend.noarch 2:6.40-2.fc19

Complete![root@localhost ~]#

Page 26: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

nmap 명령의 기본 형식

Page 27: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

옵션 없이 nmap 실행하기

지정한 호스트에서 현재 열려 있는 포트를 요약하여 출력

④ selinux는 정지 상태로 한다.

[root@localhost ~]# nmap localhostStarting Nmap 6.25 ( http://nmap.org ) at 2013-07-21 02:55 KSTNmap scan report for localhost (127.0.0.1)Host is up (0.000032s latency).Other addresses for localhost (not scanned): 127.0.0.1Not shown: 992 closed portsPORT STATE SERVICE22/tcp open ssh23/tcp open telnet25/tcp open smtp111/tcp open rpcbind631/tcp open ipp901/tcp open samba-swat5901/tcp open vnc-16001/tcp open X11:1Nmap done: 1 IP address (1 host up) scanned in 0.21 seconds[root@localhost ~]#

Page 28: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

특정 서버 스캔하기

특정 서버를 IP 주소를 사용하여 지정하고 -O 옵션도 지정했다. -O 옵션은 해당 시스템의 운영체제 정보출력

[root@localhost ~]# nmap -O 192.168.0.15Starting Nmap 6.25 ( http://nmap.org ) at 2013-07-21 03:02 KSTNmap scan report for 192.168.0.15Host is up (0.00082s latency).Not shown: 999 filtered portsPORT STATE SERVICE22/tcp open sshMAC Address: 00:0C:29:37:0E:58 (VMware)Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed portDevice type: general purposeRunning: Linux 2.6.X|3.XOS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3OS details: Linux 2.6.32 - 3.6, Linux 3.1 - 3.4Network Distance: 1 hopOS detection performed. Please report any incorrect results at http://nmap.org/submit/ .Nmap done: 1 IP address (1 host up) scanned in 10.42 seconds[root@localhost ~]#

Page 29: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

윈도가 설치되어

있는 PC를 스캔

[root@localhost ~]# nmap -O 192.168.0.7Starting Nmap 6.25 ( http://nmap.org ) at 2013-07-21 03:05 KSTNmap scan report for 192.168.0.7Host is up (0.00084s latency).Not shown : 990 filtered portsPORT STATE SERVICE135/tcp open msrpc139/tcp open netbios-ssn445/tcp open microsoft-ds554/tcp open rtsp902/tcp open iss-realsecure912/tcp open apex-mesh2869/tcp open icslap5357/tcp open wsdapi10243/tcp open unknown49161/tcp open unknownMAC Address: 00:24:54:14:EB:B5 (Samsung Electronics Co.)Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed portDevice type: general purpose|phoneRunning: Microsoft Windows Vista|2008|7|PhoneOS CPE: cpe:/o:microsoft:windows_vista::- cpe:/o:microsoft:windows_vista::sp1 cpe:/o:microsoft:windows_server_2008::sp1 cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windowsOS details: Microsoft Windows Vista SP0 or SP1, Windows Server 2008 SP1, or Windows 7, Microsoft Windows Vista SP2, Windows 7 SP1, or Windows Server 2008, Microsoft Windows Phone 7.5Network Distance: 1 hopOS detection performed. Please report any incorrect results at http://nmap.org/submit/ .Nmap done: 1 IP address (1 host up) scanned in 7.69 seconds[root@localhost ~]#

Page 30: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

UDP 포트 스캔하기: -sU 옵션을 사용

[root@localhost ~]# nmap -sU -v localhostStarting Nmap 6.25 ( http://nmap.org ) at 2013-07-21 03:17 KSTInitiating UDP Scan at 03:17Scanning localhost (127.0.0.1) [1000 ports]Discovered open port 111/udp on 127.0.0.1Completed UDP Scan at 03:17, 1.31s elapsed (1000 total ports)Nmap scan report for localhost (127.0.0.1)Host is up (0.000036s latency).Other addresses for localhost (not scanned): 127.0.0.1Not shown : 995 closed portsPORT STATE SERVICE68/udp open|filtered dhcpc111/udp open rpcbind123/udp open|filtered ntp631/udp open|filtered ipp5353/udp open|filtered zeroconfRead data files from: /usr/bin/../share/nmapNmap done: 1 IP address (1 host up) scanned in 1.51 seconds

Raw packets sent: 1004 (28.855KB) | Rcvd: 2001 (85.232KB)[root@localhost ~]#

Page 31: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

특정 네트워크를

대상으로

포트 스캔하기

[root@localhost ~]# nmap -sT -O -v 192.168.0.0/24Starting Nmap 6.25 ( http://nmap.org ) at 2013-07-21 03:21 KSTInitiating ARP Ping Scan at 03:21Scanning 86 hosts [1 port/host]Completed ARP Ping Scan at 03:21, 2.26s elapsed (86 total hosts)Initiating Parallel DNS resolution of 86 hosts. at 03:21Completed Parallel DNS resolution of 86 hosts. at 03:21, 0.01s elapsedNmap scan report for 192.168.0.0 [host down]Nmap scan report for 192.168.0.3 [host down]Nmap scan report for 192.168.0.8 [host down](생략)Initiating Connect Scan at 03:23Scanning 192.168.0.155 [1000 ports]Completed Connect Scan at 03:23, 0.66s elapsed (1000 total ports)Initiating OS detection (try #1) against 192.168.0.155Retrying OS detection (try #2) against 192.168.0.155Nmap scan report for 192.168.0.155Host is up (0.026s latency).All 1000 scanned ports on 192.168.0.155 are closedMAC Address: B4:62:93:58:7A:63 (Unknown)Too many fingerprints match this host to give specific OS detailsNetwork Distance: 1 hopRead data files from: /usr/bin/../share/nmapOS detection performed. Please report any incorrect results at http://nmap.org/submit/ .Nmap done: 256 IP addresses (11 hosts up) scanned in 131.04 seconds

Raw packets sent: 940 (59.982KB) | Rcvd: 380 (31.058KB)[root@localhost ~]#

Page 32: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

PAM

PAM은 ‘pluggable authentication modules’의 약자 -> 삽입형 인증 모듈

PAM은 모듈 방식으로 구성되어 있어 시스템 관리자가 필요에 따라 인증 모듈을 추가·삭제·편집 가능

PAM 설정 파일

/etc/pam.d 디렉터리에 각 서비스별로 설정 파일 존재

[root@localhost ~]# ls /etc/pam.datd ksu smartcard-authauthconfig login smartcard-auth-acauthconfig-gtk other smtpauthconfig-tui passwd smtp.sendmailchfn password-auth sshdchsh password-auth-ac suconfig-util polkit-1 su-lcrond postlogin sudocups postlogin-ac sudo-ifingerprint-auth ppp system-authfingerprint-auth-ac preupgrade system-auth-acgdm-autologin preupgrade-cli system-config-authenticationgdm-fingerprint remote system-config-keyboardgdm-launch-environment runuser vsftpdgdm-password runuser-l xservergdm-smartcard samba zenmap-rootgnome-screensaver setup[root@localhost ~]#

Page 33: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

PAM 설정 파일 형식

모듈 인터페이스

• auth : 사용자를 인증하는 데 사용, 예를 들어 암호가 정확한지를 확인

• account : 이 모듈은 접근이 허용되는지를 확인, 예를 들어 사용자 계정이 유효한지 또는 사용자가 해당 날짜에 로그인할 수 있는지를 확인

• password : 이 모듈은 사용자 계정의 암호를 바꾸는 데 사용

• session : 이 모듈은 사용자의 세션을 설정하고 관리, 또한 사용자의 홈 디렉터리를 마운트하는 것과 같이 접근을 허용하는 데 필요한 부가적인 작업을 수행

제어 플래그: 특정 모듈의 성공과 실패를 어떻게 처리할 것인지를 알려줌

• required : 해당 모듈은 인증을 계속하기 위해 반드시 성공해야 한다. 만약 실패하면 사용자는 다른 모든 모듈의 테스트가 끝날 때까지 결과를 받지 못한다.

• requisite : 해당 모듈은 인증을 계속하기 위해 반드시 성공해야 한다. 그러나 만약 이 지점에서 실패하면 사용자는 실패에 대한 메시지를 즉시 받는다.

• sufficient : 실패하면 이 모듈의 결과가 무시된다. 만약 이 모듈이 성공하고 앞선 required 모듈 중 실패가 없으면 인증 성공을 리턴한다.

• optional : 이 모듈의 결과는 무시된다. 이 모듈은 오직 해당 인터페이스에 다른 모듈이 없는 경우에만 인증에성공하는 데 필요하다.

<모듈 인터페이스> <제어 플래그> <모듈 이름> <모듈 인자>

Page 34: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

PAM 설정 파일 형식

모듈 이름: 삽입 가능한(pluggable) 것을 지정

모듈 인자: 인증 과정에서 정보가 필요한 일부 모듈에 정보를 전달

[root@localhost ~]# ls /lib64/securitypam_access.so pam_krb5afs.so pam_sepermit.sopam_cap.so pam_lastlog.so pam_shells.sopam_chroot.so pam_limits.so pam_sss.sopam_console.so pam_listfile.so pam_stress.sopam_cracklib.so pam_localuser.so pam_succeed_if.sopam_debug.so pam_loginuid.so pam_systemd.so(생략)

Page 35: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

PAM 파일의 예

1행은 주석이다. 주석은 #로 시작

2행부터 4행은 로그인 인증을 위한 모듈

• pam_securetty.so : 사용자가 root로 로그인하려고 할 때 해당 터미널이 /etc/securetty 파일에 등록되어 있어야 한다. 터미널이 등록되어 있지 않다면 ‘Login incorrect’ 메시지가 출력되고 로그인 실패

• pam_unix.so nullok : 사용자에게 암호를 입력하도록 프롬프트를 출력하고 입력한 암호가 /etc/shadow에 등록된 암호와 같은지를 확인한다. nullok 인자는 pam_unix.so 모듈이 빈 암호도 허용한다는 것을 의미한다.

• pam_nologin.so : 인증의 마지막 단계로 /etc/nologin 파일이 존재하는지를 확인한다. 만약 존재할 경우 사용자가 root가 아니면 인증에 실패한다.

5행의 account required pam_unix.so는 계정의 정상 여부를 확인하기 위해 필요한 모듈

6행의 password required pam_cracklib.so retry=3은 만약 암호가 만료된 경우 pam_cracklib.so 모듈이 새 암호를 입력하도록 프롬프트를 출력하고, 새로 입력한 암호가 사전 기반으로 쉽게 해독될 수 있는 것인지를 검사

7행의 password required pam_unix.so shadow nullok use_authtok는 만약 프로그램이 사용자의 암호를 바꾸려면 반드시 pam_unix.so 모듈의 password 인터페이스를 사용하도록 하는 것

8행의 session required pam_unix.so는 전체 세션을 관리하기 위해 pam_unix.so 모듈을 사용함을 의미

1 #%PAM-1.02 auth required pam_securetty.so3 auth required pam_unix.so nullok4 auth required pam_nologin.so5 account required pam_unix.so6 password required pam_cracklib.so retry=37 password required pam_unix.so shadow nullok use_authtok8 session required pam_unix.so

Page 36: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

SELinux

‘Security-Enhanced Linux’의 약자

미국의 NSA(National Security Agency)에서 개발

SELinux는 침입자가 root 권한을 획득할 경우 시스템의 모든 부분이 해킹당할 수 있는 위험을 보완

SELinux의 기초

SELinux는 리눅스 커널에 강제 접근 제어(mandatory access control, MAC)를 구현

SELinux를 사용할 때 파일, 디렉터리, 장치 등은 객체(object)로 정의되고 사용자, 프로세스, 프로그램은 주체(subject)로 정의

MAC는 파일의 유형이나 사용자의 역할에 따라 접근할 수 있는지를 세부적으로 정의하여 통제

Page 37: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

SELinux 설정 파일: /etc/selinux/config

SELINUX : SELinux를 사용할 것인지를 결정.

• enforcing: SELinux를 적용

• permissive: SELinux 정책이 강제로 적용되지 않고 경고 메시지만 출력

• disable: SELinux가 적용되지 않음

SELINUXTYPE : SELinux 정책 유형으로 타깃으로 정해진 프로세스만 보호할 것인지, 선택된 프로세스만 보호할것인지를 지정

# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enforced.# permissive - SELinux prints warnings instead of enforcing.# disabled - No SELinux policy is loaded.SELINUX=enforcing#SELINUX=disabled# SELINUXTYPE= can take one of these two values:# targeted - Targeted processes are protected,# minimum - Modification of targeted policy. Only selected processes are protected.# mls - Multi Level Security protection.SELINUXTYPE=targeted

Page 38: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안

04 보안 관리 도구

SELinux 설정 명령

getenforce 명령은 현재 SELinux의 상태를 알려줌

setenforce 명령은 SELinux의 상태를 바꿀 수 있음

현재 SELinux의 상태 확인

SELinux의 적용을 중지하려면 setenforce 0 명령을 사용

다시 SELinux를 적용하려면 setenforce 1을 실행

[root@localhost ~]# getenforceEnforcing[root@localhost ~]#

[root@localhost ~]# setenforce 0[root@localhost ~]# getenforcePermissive[root@localhost ~]#

[root@localhost ~]# setenforce 1[root@localhost ~]# getenforceEnforcing[root@localhost ~]#

Page 39: Chapter 15. 리눅스보안의기초 - silla.ac.krmclab.silla.ac.kr/lecture/201501/sm/sm_lecture_15.pdf정보보안의정의 정 안에는 물리적인안 , 기술적인안 , 관리적인안