본문 바로가기
  • 오늘처럼

소프트웨어 아키텍처/Linux13

[Ubuntu 보안] AppArmor 기본 개념과 설정 Application Armor (AppArmor) 리소스에 대한 접근 제어 방식에는 DAC방식과 MAC 방식이 있다. Discretionary(임의의, 자유재량에 의한) Access Control 의 약어인, DAC 방식은 '리소스의 접근'에 대하여 누가(주체) 리소스(객체)에 접근하려는지로 구분하게 되는데, 이 때 해당 리소스의 소유자는 리소스에 접근하려는 사용자나 사용자그룹 단위로 제한을 할 수 있다. 자원의 소유자가 임의로 권한을 줄 수 있는 방식이다. DAC 방식과 비교되는 MAC 방식도 있다. Mandatory(강제) Access Control 의 약어로, 미리 정의된 정책에 따라 사용자의 접근을 제어한다. 자원에 접근하려는 사용자(주체) 별로 보안 등급이 존재하고, 리소스에도 보안 레벨이 존.. 2022. 10. 7.
strace 를 통한 syscall 확인과 seccomp Kernel 과 system call 리눅스 운영체제에서 핵심이되는 프로그램은 커널(kernel) 이다. 커널은 하드웨어 장치와 어플리케이션(소프트웨어) 사이에서 동작하며 두 계층 사이의 인터페이스를 담당한다. 그 외에도 메모리 관리, I/O 장치 관리 등 하드웨어의 모든 주요 기능을 제어하면서 효율적인 자원 관리를 수행하게 된다. 운영체제의 자원인 메모리 영역은 크게 2가지 공간인, Kernel space(커널 공간) 와 User space(사용자 공간) 로 구분할 수 있다. 사용자가 작성한 프로그램이나 어플리케이션들은 이 사용자 공간의 메모리를 사용하게 되고, 커널 자체의 코드에 대한 부분이나 커널 확장 등의 경우 커널 공간의 메모리를 사용한다. 또한 이 커널 공간에는 시스템 내부적인 제어를 위해 시.. 2022. 9. 22.
[Ubuntu] 우분투 UFW 방화벽 사용하기 UFW(Uncomplicated Firewall) 소개 어플리케이션이 구동되는 서버는 서비스를 위하여 통신 포트를 외부에 노출해야 하지만, 이 때 보안 취약점에 유의해야 한다. 모든 포트를 노출해서는 안되며, 노출되는 포트 또한 특정 사용자(IP Address Range)에게만 허용이 되야 한다. Linux Kernel 에 있는 '네트워크 패킷 필터(이하 Netfilter)' 라는 내부 패킷 필터링 시스템(Network framework)을 통해, 위와 같은 네트워크 패킷에 대한 접근 제어를 수행할 수 있다. 이 'Netfilter' 와 인터페이스 하기 위해 가장 많이 사용되는 툴이 iptables 이다. 그런데 iptables 의 경우 범용성으로 인해 사용 난이도가 다소 높은, 다시말해 러닝커브가 높은.. 2022. 9. 19.
Linux - sudo 와 su 명령어의 차이 리눅스 계열의 OS 를 사용하다보면, sudo 명령어나 su 명령을 자주 사용하게 된다. 1. 리눅스 계정 먼저 리눅스 운영체제에서 사용자(계정)는 다음의 4가지 타입으로 구분된다. Normal User account adduser 등의 명령어로 생성 가능한 일반 유저 ex) harang, tester1, user1, .... Superuser account 리눅스 시스템의 루트 유저로 UID 0번으로 지정. 시스템 내 제한 없는 권한을 보유 ex) root System account 주로 운영체제의 설치 과정에서 생성되는 계정으로, superuser 로 동작하지 않아도 되는 소프트웨어나 서비스에 사용 ex) ssh, mail Service account system account 와 유사하며, 서비스나.. 2022. 9. 8.
TLS 인증서 (3) - openssl 을 통해 key, csr, crt 파일 만들기 *명령어는 최하단에 별도로 정리하였습니다. 이번에는 실제 명령어를 사용하여 key, csr, crt 파일을 생성해본다. 1. key 파일 생성 먼저 비대칭 암호화 통신에 사용되는 개인키(비밀키)를 생성한다. # 개인키 만들기 명령어 : openssl genrsa [-out filename] [numbits] - numbits 의 경우 개인키의 사이즈이며 반드시 명령어 마지막에 위치 (디폴트 값은 512) openssl genrsa -out test.key 2048 생성된 개인키의 키 값과 파일 내용을 각각 확인한다. # 완성된 개인키의 파일 내용 확인 cat ./test.key -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAr9IpTEnzxy660fPz7HeTJth.. 2022. 6. 17.
TLS 인증서 (2) - 신뢰할 수 있는 인증서 지난 1편에서는, 공격자의 network packet 스니핑을 방지하기 위해 비대칭 키인 public key(lock) 과 private key 를 사용한 안전한 통신 방식에 대해서 알아 보았다. 이번에는 공격자가 중간에 packet 을 가로채는 걸 넘어서, 아예 실제 존재하는 웹서버와 매우 유사한 가짜 웹 서버를 만든 다면 어떻게 될까? 기존 웹서버가 인증을 처리하는 방식을 그대로 구현한 뒤에, 사용자의 요청이 다른 루트를 타게 조작하여 요청이 가짜 웹서버로 가게 될 경우, 사용자는 기존 인증 방식을 그대로 이용하여 가짜 웹 서버에 인증처리를 진행할 수 있다. 사용자 입장에서는 브라우저를 열었을 때의 화면과 인증 처리 등의 진행 방식이 실제 웹 사이트와 모두 동일하게 보이므로 화면에서는 사용자가 접속한.. 2022. 6. 16.