본문 바로가기

전체 글

(43)
MAC 주소 추적의 진실 인터넷을 하다보면 IP 주소 추적이니 MAC 주소 추적이니 하며 협박아닌 협박을 하는 경우가 있습니다. 여기서 MAC 주소 추적에 대해 알아보겠습니다. MAC 주소는 네트워크 장치(와이파이 모듈, 이더넷 카드)에 제조 과정에서 할당된 고유한 주소를 말합니다. 주소 표준에는 길이에 따라 EUI-48과 EUI-64가 있습니다만 현재 대부분 6바이트 크기의 EUI-48을 사용합니다. 6바이트 중에서 앞 3바이트는 제조사 고유번호, 나머지 3바이트는 장치 번호를 뜻합니다. 그러므로 이 주소를 알면 네트워크 장비의 제조사를 알 수 있습니다. 다만 MAC 주소는 장치의 고유 번호이지만 소프트웨어적으로 변조가 가능합니다. 기기의 고유한 번호라서 개개인을 추적하는데 사용될 수 있다는 점 때문에 Windows에서도 WI..
Tails OS 소개 Tails는 기록을 남기지 않고 안전하게 Tor를 사용가능하게 하는 익명성 강화를 위한 OS입니다. https://tails.boum.org/index.en.html 기본적으로 USB에 설치하여 Live 부팅을 통해 이용하는 것으로, 우분투 설치하기 전에 USB로 부팅하여 체험해 보는 것과 동일한 방식입니다. OS 자체를 USB에서 RAM으로 올려서 실행하기 때문에 컴퓨터에 기록이 남지 않고, 기존 OS에서 Tor 브라우저를 사용하는 것보다 악성코드로 인한 유출에 자유로울 수 있습니다. Tails를 처음 실행하면 위와같은 모습입니다. Tor 브라우저를 실행하면 기본적으로 NoScript와 uBlock origin 플러그인이 설치되어 있는 것을 볼 수 있습니다. 이것으로 혹시 모를 악성코드에 대비하여 안전..
systemd로 시스템 자원 제한하기 다수의 사람들이 공동으로 사용하는 시스템이나 여러 프로세스들이 돌아가는 서버라면 특정 사용자나 프로세스가 자원을 독점하여 다른 작업에 지장이 생기는 문제에 대해 상당히 민감할겁니다. 하지만 현재 인터넷에 올라와있는 해결방법 중 하나인 cpulimit은 자동 실행 설정하기도 불편하고 단지 특정 프로세스에 대해 CPU 만 제한할 수 있다는 겁니다. 하지만 우리의 멋진 PID 1인 systemd는 다릅니다. CPU와 memory 뿐만 아니라 프로세스 수, IO 마저 제한이 가능합니다. 거기다 systemd는 계층적으로 서비스들을 관리하고 있으므로 특정 사용자나 컨테이너, 서비스 하위의 모든 프로세스에 대해 제한이 가능합니다. 다만 이 기능을 사용하기 위해서는 두가지 필요 요건이 있습니다.먼저 systemd v..
systemd 사용자 유닛 만들기 systemd에서는 사용자만의 유닛을 만들고 로그인 시 자동으로 실행하도록 설정할 수 있습니다. 이것으로 개별 사용자의 입맛대로 시작 프로그램을 등록할 수 있고, .timer나 resource control 등의 systemd 기능들을 사용할 수 있습니다. 먼저 사용자의 systemd 유닛 파일이 존재하는 디렉토리는 계정의 홈 디렉토리 아래의 .config/systemd/user/ 입니다. 사용자가 어떤 유닛을 만들어서 사용하고 싶다면 이 디렉토리에 저장되어 있어야 합니다. 예시로 chromium을 관리하는 서비스를 만들려면 아래와 같이 하면 됩니다. [Unit] Description=Chromium service [Service] ExecStart=/usr/bin/chromium 이 내용을 ~/.con..
man 페이지의 특정 섹션 보기 리눅스에서 명령어나 라이브러리의 함수의 자세한 설명과 인자들을 보기 위해서 man 페이지를 자주 사용합니다. 다만 동일한 이름의 명령어와 함수가 존재하는 경우가 있습니다. 그래서 함수의 설명과 인자를 보고싶었는데 정작 man 페이지에서는 명령어의 메뉴얼을 보여주는 것을 본 적이 있을겁니다. man 페이지는 내용에 따라서 여러 섹션으로 나뉘어 있습니다. 리눅스에서는 아래와 같이 8개의 섹션이 정의되어 있습니다. 1. 명령어2. system call3. 라이브러리 함수4. 특수 파일5. 파일 포맷 및 관습6. 게임7. 기타8. 시스템 관리 명령어 이렇게 한 페이지에 여러 섹션으로 나뉘어져 있기 때문에 페이지 이름이 중복되더라도 문제없이 메뉴얼이 저장, 표시될 수 있습니다. man 페이지 이름이 중복되는 것들..
표준 SQL에서 문자열 상수 안의 single quote SQL에서 문자열 상수를 사용할 때 작은 따옴표(single quote)로 원하는 문자열을 감싸는 것으로 표기합니다. 하지만 문자열 내부에 작은 따옴표가 존재한다면 파싱 때 문제의 소지가 있으므로 이스케이핑이란 방법으로 특수한 처리를 해야합니다. 다른 프로그래밍 언어를 공부하셨다면 문자 이스케이핑을 하기 위해서 백슬래시(\)를 가장 먼저 떠올리실겁니다. 하지만 SQL에서는 다릅니다. 정확히는 SQL 표준은 백슬래시를 사용한 이스케이프를 허용하지 않습니다. 다만 여러 RDBMS 구현체들이 사용자의 편의성과 이러저러한 이유로 백슬래시로도 이스케이핑이 가능하도록 지원하고 있습니다. 표준에서 백슬래시로 이스케이핑을 지원하지 않는 이유는 인코딩의 차이로 인해 DBMS가 백슬래시를 잘못 인식할 경우 보안적으로 문제..
리눅스 시스템 시간 동기화하기 ㅋ리눅스 시스템의 시간 동기화에 대해 사용되는 프로그램을 찾아보면 주로 ntpd, rdate를 소개하고 있습니다. 다만 둘 다 새로운 패키지를 설치해야 한다는 귀찮음과 rdate를 사용하여 정기적으로 동기화하려면 cron이나 systemd timer 등의 다른 프로그램의 도움이 필요합니다. 그래서 저는 요즘 대부분의 배포판에 도입된 systemd의 timesyncd 를 사용하여 시간 동기화를 하는 것을 추천합니다. systemd가 적용되어 있다면 systemd-timesyncd도 자동적으로 설치되기 때문에 따로 설치할 필요도 없고, systemd의 특유의 간단한 설정으로 어렵지 않게 적용할 수 있습니다. 먼저 timesyncd의 설정 파일은 /etc/systemd/timesyncd.conf 에 존재합니다..
hostnamectl로 리눅스 호스트명 변경하기 옛날 init 시절에 호스트명을 변경하려면 상당히 귀찮았습니다. 거기다 파일 하나만 바꿨다간 갑자기 에러가 뜨거나 하는 경우도 빈번했습니다. 하지만 systemd가 도입되면서 hostnamectl 이란 명령이 새로 생겼고, 이 명령을 사용하면 간단하며 안전하게 호스트명을 변경할 수 있습니다. hostnamectl를 아무 인자없이 실행하면 시스템의 호스트명, 샤시, Machine ID, Boot ID, 가상화, 커널 버전 등의 정보를 출력합니다.이것은 제 컴퓨터에 구축해둔 컨테이너에 접속하여 hostnamectl을 실행한 모습입니다. 현재 호스트명은 test로 설정된 것을 볼 수 있습니다. 이 호스트명을 변경하려면 set-hostname 과 변경할 호스트명을 인자로 입력하면 됩니다. # hostnamect..