본문 바로가기
728x90

전체 글307

Docker는 방화벽을 무시한다 - ufw/firewalld가 외부 노출을 막지 못하는 이유 오늘 있었던 일홈서버에서 스프링(Spring) 배치/스케줄러 앱을 도커 컴포즈(Docker Compose)로 띄워놓고 쓰고 있다. 이 앱은 8080 포트로 열려 있고, 필요할 때 curl로 특정 엔드포인트를 호출해서 배치 작업을 트리거하는 구조다. 서버는 ufw로 방화벽을 켜놓은 상태였고, 8080 포트는 ufw 허용 목록에 올려둔 적이 없었다. 그래서 당연히 외부에서는 접근이 불가능하다고 생각하고 있었다. 그런데 오늘 우연히 톰캣(Tomcat) 로그에서 이런 에러를 발견했다. java.lang.IllegalArgumentException: Invalid character found in method name[0x16 0x03 0x01 ...]. HTTP method names must be tokens.. 2026. 9. 26.
await 없는 async 함수는 비동기로 동작하지 않는다 async라는 이름이 만드는 오해자바스크립트의 async function을 보면 자연스럽게 "이 코드는 비동기로 동작하는구나"라고 생각하게 된다. 하지만 실제로 실행 흐름을 뜯어보면, async라는 키워드 자체는 비동기 실행을 보장하지 않는다. 진짜 비동기 전환을 일으키는 건 async가 아니라 그 안에 있는 await이다. 이 글에서는 코드로 그 근거를 하나씩 확인한다. await 없는 async 함수는 동기로 동작한다다음 코드를 실행해보자. console.log('A');async function asyncFunc() { console.log('B'); // await 없음}asyncFunc();console.log('C'); 결과는 A → B → C 순서다. asyncFunc()를 호출하는 순간 .. 2026. 9. 25.
리눅스 마운트 꿀팁: 재부팅했는데 마운트 포인트에 데이터가 없다면? 서버를 재부팅했는데 /data에 넣어 둔 데이터가 감쪽같이 사라졌다면 누구나 당황한다. 하지만 이런 경우 대부분은 데이터가 지워진 것이 아니다. 마운트(mount)가 제대로 되지 않아서, 지금 SSD가 아니라 루트 디스크 안의 빈 디렉터리를 보고 있는 것이다. 이 글에서는 리눅스 마운트의 기본 개념부터, 가려진 데이터를 확인하는 바인드 마운트, 이런 상황을 확인하고 해결하는 방법, 그리고 마운트 포인트에 데이터가 루트 디스크로 쓰이는 것을 막는 chattr +i 활용법까지 정리한다.결론: 재부팅 후 데이터가 보이지 않으면 findmnt /data로 마운트부터 확인하자. 출력이 없다면 마운트가 안 된 것이고, 마운트 문제라면 SSD의 데이터는 그대로 있다. 1. 마운트(mount)란?윈도우는 디스크마다 C.. 2026. 9. 21.
SSH 보안 강화, 인증 방법 5가지 총정리 서버를 운영하다 보면 가장 먼저 열게 되는 문이 SSH다. 그만큼 가장 먼저 공격받는 문이기도 하다. 이 글에서는 SSH가 지원하는 인증 방법을 정리하고, 어떤 방법을 쓰고 어떤 방법을 사용하지 말아야 하는지 살펴본다.SSH 인증 방법 5가지OpenSSH가 지원하는 사용자 인증 방법은 크게 다섯 가지다.비밀번호 인증(password)호스트 기반 인증(host-based)공개키 인증(public key)키보드 인터랙티브 인증(keyboard-interactive)커버로스 인증(GSSAPI, Kerberos)비밀번호 인증, 공개키 인증, 키보드 인터랙티브 인증은 설정 방법까지 살펴보고, 호스트 기반 인증과 커버로스 인증은 개념만 간단히 소개한다. 이 두 방법의 구체적인 설정은 다음 글에서 다룬다. 1. 비밀.. 2026. 9. 21.
728x90