본문 바로가기

전체 글

(43)
하드링크와 심볼릭링크 파일은 한 inode를 가리키는 여러 디렉토리 엔트리를 만들 수 있다. #include int link(const char *existingpath, const char *newpath); int linkat(int efd, const char *existingpath, int nfd, const char *newpath, int flag); 이 함수는 새로운 디렉토리 엔트리(newpath)를 만들어서 존재하는 파일을 참조하게 한다. newpath가 이미 있는 파일이면 에러를 리턴한다. unlink를 하면 그 파일의 링크는 없어지나, 다른 곳에서 링크되어있다면 계속 접근 가능하다. (= 링크 횟수가 0에 도달해야 파일 내용을 삭제할 수 있다.) 하드링크 inode를 같게 한다는 의미 동일한 파일시스템 안..
[시스템프로그래밍] du 구현하기 보호되어 있는 글입니다.
[시스템프로그래밍] ls, file과 directory 지난 시간 까지는 file에 (open, read, write, lseek, close) 대한걸 배웠습니다. 이번에는 ls 명령어를 배우면서 파일의 속성과 디렉토리에 대해 공부합니다 이제 본격적으로 시스템 호출 API에 대해 살펴보기 시작합니다. 파일은 UNIX 철학의 중심이므로 시작하기에 좋습니다. 라고 책 원문에 적혀있는 걸 확인했습니당. file descriptor I/O 시스템에서 쓰이며, 커널에서 식별하기 위한 작은 정수(0,1,2)이다. directory 모든 시작은 root 폴더 '/' dir은 비어있지 않음. 무조건 '.'과 '..'을 가짐 . : 현재 디렉토리 .. : 상위 디렉토리 ? 그럼 최상위 폴더인 root에도 ..이 있을까? 더보기 실습해본 결과 있음! 그 이유는 일관성을 유지하..
[시스템프로그래밍] who, cp, buffering 컴퓨터 메모리는 user space와 system space로 나뉘어있음. 다양한 프로그램이 user space에서 running됨 커널을 통해 프로그램들이 통신함. 모든 unix 명령어들은 다른 사람이 주로 C를 이용해 만든 프로그램임 새 명령어를 추가하고 싶으면 /bin, /usr/bin, /usr/local/bin 에서 구현 who command : 어떤 유저가 서버에 접속했는지 출력해주는 명령어 logname, terminal, time, from where utmp utmp는 유닉스 및 유닉스 계열 운영 체제에서 사용되는 시스템 파일 또는 데이터베이스 이 파일은 현재 로그인한 사용자 및 시스템 관련 정보를 추적하는 데 사용 주로 /var/run/utmp 또는 /var/log/wtmp와 같은 경로..
[시스템프로그래밍] ssh, sftp, 커널과 셸 서버 접속하기 SSH란? Secure Shell Protocol, 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜 ssh s@machine IP -p 기존 원격 접속은 ‘텔넷(Telnet)’이라는 방식을 사용했는데, 암호화를 제공하지 않기 때문에 보안상 취약하다는 단점이 있었다. 실제로 WireShark같은 패킷 분석 프로그램을 이용하면 누구나 쉽게 원격 접속 과정에서 옮겨지는 비밀번호나 파일 내용 등의 데이터를 탈취할 수 있다. 때문에 이를 암호화하는 SSH 기술이 등장했고, 현재 원격 접속 보안을 위한 필수적인 요소로 자리잡고 있다. 출처: https://library.gabia.com/contents/infrahosting/9002/ 작동원리 SSH는 대칭키/비대칭키 암호 방식으로 작동 보안 접..
[시스템프로그래밍] 가상화, 리눅스, WSL2와 Ubuntu 차이 이 수업에서 우리가 왜 리눅스를 쓰는지, 우리가 쓰는 툴에 대해서 먼저 공부해보았습니다. 리눅스는 내 컴퓨터에 가상화해서 올려진 운영체제라 가상화가 뭔지 알아봐야하구요! 가상화란?하나의 실물 컴퓨팅 자원(CPU, 메모리, 스토리지, 네트워크 등)을 마치 여러 개인 것처럼 가상으로 쪼개서 사용하거나, 여러 개의 실물 컴퓨팅 자원들을 묶어서 하나의 자원인 것처럼 사용하는 것 가상화의 장점 - 하나의 하드웨어를 다양한 용도에 맞게 분할하여 사용하므로 자원 활용의 경제성을 높임 - 가상머신(VM)은 동일한 하드웨어에서 구동하지만 논리적으로는 분리되어 있음. 그래서 악성코드 공격을 받아도 같은 시스템 내 다른 시스템으로 확장되지 않음 - VM은 이동성이 강해 로컬 또는 원격 가상화 서버 사이를 이동하기 쉬움 우리..
보안 알고리즘 구분 내용 기밀성 서로 주고받은 실제 정보에 대한 비밀성을 보장하는 개념 무결성 서로 주고받은 실제 정보에 대한 정확성을 보장하는 개념 가용성 정당한 사용자가 필요할 때마다 즉각적으로 정보에 접근해 사용하는 개념 인증 송신자와 수신자 사이의 확신성을 보장하는 개념 부인 봉쇄 수신자가 정보를 받았는데 송신자가 이를 부인하는 일 등을 방지하는 개념 기밀성 보안 알고리즘 송신자와 수신자가 평문이 아닌 암호문을 통해 상호 간의 비밀 통신을 보장하는 개념을 의미한다. 기밀성을 구현하기 위해서는 암호 이론이 필수적이다. 사이버 암호 체계에서는 암호 해독문을 열쇠라고 부른다. 이 열쇠 방식에 따라 대칭 암호 구조, 비대칭 암호 구조로 구분한다. 대칭 암호 구조 송신자와 수신자가 사용하는 열쇠가 동일한 경우, 비밀 열..
TCP/IP 네트워크 공격 유형 1. 스캐닝 공격 - 본격적인 공격에 앞서 수행하는 일종의 사전 정찰 - 포트 스캔 : 원격지 호스트를 대상으로 어떤 포트 번호를 사용 중인지 확인하는 기법으로 TCP 헤더의 플래그 항목을 이용해 수행. - 엔맵 : 포트 스캐너의 대명사. TCP Full Open 스캔 기법, TCP Half Open 스캔 기법, TCP FIN 스캔 기법, TCP X-mas 스캔 기법 등이 있다. apt-get install nmap - Full Open 스캔: nmap 127.0.0.1 -p 22 -sT, TCP 3단계 연결을 완성을 통해 확인하기 때문에 포트 스캔 기록을 남길 수 있다. 구분 해당 포트 사용 중 해당 포트 미사용 중 송신자 SYN 플래그 전송 SYN 플래그 전송 수신자 ACK, SYN 플래그 전송 AC..