보안 쉘 SSH보안 쉘 SSH 이란 암호통신을 이용하여 네트워크상의 다른 컴퓨터에 접속하여 원격으로 명령을 실행하거나 파일을 조작하는 응용 프로그램 또는 프로토콜을 의미한다. 기존의 Telnet FTP rlogin rsh 등 평문 송수신 서비스의 취약점을 대체하기 위해 설계 되었으며 디폴트로 22/tcp 포트를 사용한다.암호화된 원격 터미널 서비스 제공 + 암호화된 파일 송수신 서비스 제공💡 평문 송수신 서비스는 스니핑 공격, 재전송 공격에 취약하다. 특히 r계열 서비스는 IP spoofing 에 취약 다수의 클라이언트가 원격접속 및 동시요청 ⇒ 다중 접속 서버fork() 기반의 multi-tasking 서버thread 기반의 multi-thread 서버select() poll() 기반의 multipl..
process 관련 식별 ID : PID, PPID, PGID, SIDprocess 자원접근 권한 판단하기 위한 ID : RUID(Real UID), RGID(Real GID), EUID(Effective UID), EGID(Effective GID)RUID : 프로세스를 실행시킨 사용자의 UIDRGID : 프로세스를 실행시킨 사용자의 GIDEUID : 프로세스가 실행중인 동안에만 부여되는 UID로 자원 접근권한 판단EGID : 프로세스가 실행중인 동안에만 부여되는 GID로 자원 접근권한 판단SUID와 SGID는 프로세스가 실행중인 동안에 해당 실행파일의 소유자, 소유그룹의 권한으로 자원에 접근할 수 있도록 하는 권한 설정이다. SUID와 SGID가 설정되지 않은 프로세스를 실행시키면 프로세스를 실행시킨..
패스워드 저장 정책에는 passwd 파일 내 계정 정보와 함께 저장하는 일반 패스워드 정책과 shadow 파일에 패스워드를 별도로 저장하는 shadow 패스워드 정책이 있다.shadow 파일패스워드 정보를 평문으로 저장할 경우 유출 피해가 발생할 수 있으므로 패스워드를 암호화하여 보호해야한다. shadow 패스워드를 사용하여 /etc/shadow 파일에 암호화된 패스워드가 저장되도록 하고 root 만이 읽을 수 있도록 제한한다. shadow 파일에는 계정별 암호화된 패스워드와 에이징(aging)정보가 저장되어 있다. 패스워드 에이징 정보는 시간의 흐름에 따른 패스워드 관리 정책이다.① 사용자 계정명② encrypted_password : 암호화된 패스워드 (3가지 필드 아래 글 참고)③ last_chan..
cron 서비스 cron 은 UNIX/LINUX 시스템의 정기적으로 등록된 작업을 실행시켜주는 서비스이다. cron 서비스를 이용하려면 다음 세 가지 구성요소가 필요하다crontab 파일 : 정기적 작업 등록 파일crontab 명령 : 작업 등록을 위해 사용하는 명령crond : cron 데몬 프로세스로 작업 등록 파일에 정의된 작업을 처리하는 데몬 프로세스/etc/crontab 파일 형식 ✨root가 설정하는 작업 등록 파일로 모든 사용자에 대한 작업을 등록할 수 있다 ➜ 640 권한 설정 권장분분은 0-59까지 숫자로 작성시시는 0-23까지 숫자로 작성일일은 1-31까지 숫자로 작성월월은 1-12까지 숫자로 작성요일요일은 0-6까지 숫자로 작성 ( 0:일요일, 1:월요일 ~ )계정명작업을 실행할 사용..
사용자 및 그룹 관리useradd : 사용자 추가-u UID , -g GID , -G 보조그룹 , -c comment, -d 홈 디렉터리 , -s 로그인 쉘-m -d : 계정과 함께 홈 디렉터리 생성-o 중복 UID를 허용하는 옵션Q. 공격자가 다음과 같은 명령어를 실행했다. 이 명령어의 의미는?-o 옵션은 중복 UID를 허용하는 옵션으로 공격자가 root 권한을 탈취하기 위해 -o 옵션을 사용하여 UID = 0 , GID = 0 인 일반 사용자 계정을 생성하는 명령어이다. usermod : 사용자 변경공격자가 root 권한을 탈취하기 위해 -o 옵션을 사용하여 일반 사용자 계정을 UID = 0 , GID = 0 로 수정하는 명령어이다. userdel : 사용자 계정 삭제-r : 홈 디렉터리와 메일함도 ..
시간남으면 그림그려서 추가 ... + 강의자료프로그램 실행 과정프로세스 생성과 동시에 프로세스 그룹도 생성된다. 프로세스 그룹은 커널이 터미널 제어권을 관리하기 위한 목적으로 사용하는 프로세스들의 집합으로 쉘(shell)에서 실행된 프로세스와 자식 프로세스들이 하나의 프로세스 그룹으로 관리된다.터미널 제어권이란 터미널로부터 입력되는 데이터와 터미널로부터 발생하는 시그널에 대한 제어권으로 프로세스 그룹 단위로 제어권이 부여된다.커널이 프로세스 그룹을 식별하기 위한 식별자로 PGID를 부여하며, PGID는 해당 그룹의 리더 프로세스(쉘로부터 실행된 프로세스)의 PID를 PGID로 설정한다.Foreground mode : 터미널에 대한 제어권을 가지고 동작하는 모드Background mode : 터미널에 대한..
프로세스프로세스의 메모리 영역은 User 영역과 Kernel 영역으로 나뉜다. 프로세스가 생성되면 커널 운영체제은 프로세스 별로 관리정보를 담고 있는 프로세스 제어 블록(PCB, Process Control Block)을 생성한다.프로세스 제어 블록 PCBProcess number : 프로세스 식별(PID), 부모 프로세스 식별(PPID)Program counter(PC) : Context Switching 발생 시 다음에 실행할 명령어의 위치값 저장register 저장 영역 : Context Switching 발생 시 현재 프로세스의 실행 상태 정보(레지스터 정보) 저장Process state : 프로세스의 현재 상태 정보(Ready, Running, Blocked 등) 저장Memeory limits ..
find 명령어find 명령은 시스템 내에 있는 파일 중 사용자가 원하는 파일을 찾을 때 사용한다. 찾은 파일에 특정 명령을 실행하도록 명령할 수 있다. find path [expression] [action] 검색할 경로는 최상위 루트 디렉터리 / 부터 시작하는 절대경로나 현재 디렉터리 . 부터 시작하는 상대경로를 지정할 수 있다.find / : 최상위 루트 디렉터리 모든 파일 검색find /tmp : /tmp 디렉터리 이하 파일 검색find . : 현재 디렉터리 이하 파일 검색 검색 조건(옵션)은 하나 이상 명시할 수 있으며 논리 연산이 가능하다. (논리 연산을 생략하면 AND 연산을 의미)-a : AND 연산-o : OR 연산! : 부정 연산기본 사용법find . -type f -user root현..
파일의 종류일반(정규)파일 : 텍스트나 바이너리 형태의 데이터를 저장하고 있는 파일디렉터리 : 디렉터리에 포함된 파일명과 해당 파일의 inode number 정보를 목록으로 가지고 있는 특별한 파일특수파일 : 프로세스 간 통신(IPC)목적의 특수파일(e.g. 파이프, 소켓) 또는 입출력 장치(e.g. 프린터, 키보드)를 사용하기 위한 장치파일ls 명령어ls 명령어는 list의 약자로 디렉터리에 있는 파일 목록을 보여주고 여러가지 정보(파일타입, 접근권한, 소유자, 소유그룹, 크기, 최종 수정일시 등) 확인할 때 사용한다.디렉터리에는 파일명과 해당 파일의 inode number 정보만 가지고 있으며 ls 명령어로 파일의 상세정보를 볼 수 있는 것은 해당 inode number를 통해 inode 구조체 정보..
파일시스템(File System)파일시스템은 물리적인 저장장치(e.g.하드디스크)에 파일을 생성, 저장, 관리하기 위한 논리적인 자료구조이다. 물리적인 저장장치는 논리적인 파티션으로 나눠지며, 파티션별로 고유한 파일시스템(e.g. NTFS, EXT2, EXT3, EXT4)을 생성한다.mount : 특정 디렉터리와 파일시스템을 연결해주는 것umount : 특정 디렉터리와 파일시스템 연결을 해제하는 것파일시스템 구성Boot block: 운영체제가 부팅하거나 초기화하기 위한 부트스트랩 코드를 담고 있는 블록Super block: 파일시스템을 관리하기 위한 정보를 담고 있는 블록inode list: 파일시스템 내 파일들에 대한 속성 정보를 담고 있는 리스트Data block: 실제 파일의 내용(데이터)이 저장되..
프로세스 간 통신 (IPC, Inter-Process Communication)프로세스들은 각자 독립적인 메모리 공간(가상 메모리 공간)을 사용하기 때문에 메모리 공간을 공유해서 통신하는 것은 불가능하다. 따라서 프로세스 간 통신을 위해서는 운영체제(커널)에서 지원하는 주요 프로세스 간 통신 기법을 이용해야 한다.Pipe, shared Memory, Message Queue, Semaphore, Socket, Signal파이프(Pipe) 및 파이프라인(Pipeline)파이프 또는 파이프라인은 프로세스(명령)의 표준 출력을 다른 프로세스(명령)의 표준 입력으로 전달해주는 기능을 한다. 2개의 프로세스 사이에서 단방향으로 통신할 수 있도록 지원하는 특수 파일이다.명령어의 실행 결과를 다른 명령어의 입력으로 ..
입출력 재지정 (I/O Redirection) 기능명령에 의해 프로그램을 실행하면 커널(운영체제)에 의해 프로세스가 생성되고 프로세스는 기본적인 입출력(I/O)을 위한 3개의 파일을 오픈한다.표준 입력(STDIN, FD:0) : 키보드로부터 입력받기 위한 파일표준 출력(STDOUT, FD:1) : 수행 중에 발생한 정상 메시지를 모니터로 출력하기 위한 파일표준 에러(STDERR, FD:2) : 수행 중에 발생한 에러 메시지를 모니터로 출력하기 위한 파일유닉스/리눅스 시스템에서 프로세스별로 오픈한 파일을 식별하기 위해 부여한 파일 번호로, 프로세스가 실행되면 기본적으로 3개의 파일을 오픈한다. 이 때 오픈한 파일을 식별하기 위해 부여하는 FD가 0(표준입력), 1(표준출력), 2(표준에러)로 정해져있다.입..