목차
과거 한번 따로 다루었기도 하지만 실제로 개인용으로 사용하고 있는 스위치의 틴포일
기반의 커스텀 샵
인 Ownfoil
은 참으로 간단하고 훌륭한 프로젝트입니다.
그러나 개발자의 로드맵
과는 달리 최근 의미있는 업데이트
가 전혀 진행되질 않고 있어 굉장히 아쉬운 상황이라 할 수 있습니다.
스위치의 틴포일 커스텀 샵
은 기기에 연동하는 경우 상당히 편리한 구성으로 무선으로 사용하기도 편하지만 별도의 장비만 있다면 굳이 프리샵등을 사용하지 않아도 된다는 장점이 있습니다.
이번엔 구독자 중 한분이 댓글로 알려주신 또다른 프로젝트가 있어 잠시 살펴보았던 틴포일 웹서버라는 프로젝트입니다.
잠시 스펙을 살펴보니 기존의 nut 서버
나 Ownfoil
보다 기능이 상당히 괜찮아 보였기에 저 역시 관심이 생겼습니다.
도커 이미지는 다소 오래되었으나 최근까지 업데이트도 꾸준하기에 한번 테스트를 삼아 설치할겸 설치 가이드
를 작성해보겠습니다.
Ownfoil
과 nut서버
의 경우 경우 지인들과 함께 사용할 때에 사용자를 관리하는 기능이 없다보니 안전한 공유가 쉽지 않고 외부에서 비밀번호를 뚫기 위한 공격을 시도하는 경우 별도의 알림이나 앞딴 웹서버가 없다면 아무래도 막아내기 어려운 구조입니다.
따라서 기본적인 보안 대책을 조금이라도 더 가진 tinfoilwebserver
틴포일 웹 서버를 소개하겠습니다.
이제는 Ownfoil
과 헤어질때가 온 것 같습니다.
danifunker
라는 개발자가 유지보수하고 있는 tinfoilwebserver
는 기존 닷넷 기반의 exe
타입의 프로젝트를 그대로 도커로 옮긴 것으로 보입니다.
기본 구성만 보아도 상당히 매력적인데 기존 틴포일 커스텀 샵의 기능은 모두 갖추고 있으며 추가적인 주요 설정만 한번 살펴 보겠습니다.
{
-------중략--------
"Authentication": {
"Enabled": false, // 인증을 활성화하려면 «true», 그렇지 않으면 «false»
"WebBrowserAuthEnabled": false, // 인증되지 않은 경우 기본 웹 브라우저 로그인 프롬프트를 활성화하려면 «true» (인증이 비활성화된 경우 효과 없음)
"Users": [ // 허용된 사용자 목록 (여러 사용자를 선언하려면 쉼표를 구분자로 사용)
{
"Name": "", // 사용자 이름
"Pwd": "", // 암호
"MessageOfTheDay": "" // 사용자를 위한 사용자 정의 메시지
}
]
},
"Blacklist": {
"Enabled": false, // IP 블랙리스트 기능을 활성화하거나 비활성화하려면 «true», 그렇지 않으면 «false»
"FilePath": "", // 블랙리스트 IP를 저장할 파일 경로
"MaxConsecutiveFailedAuth": 0, // IP를 블랙리스트에 추가하기 위한 연속된 인증되지 않은 요청 횟수
"IsBehindProxy": false // true로 설정하면 들어오는 IP 주소는 "X-Forwarded-For" 헤더에서 가져올 것이며, 그렇지 않으면 TCP/IP 프로토콜에서 가져올 것입니다
},
-----중략--------
}
먼저 눈에 띄는 것은 Authentication
항목입니다.
사용자를 JSON
형식으로 쉽게 추가가 가능한데 안타깝게도 자동 갱신
은 아니다 보니 수정이 조금 번거롭긴합니다.
그러나 컨테이너를 잠시 중지하고 추가후 재기동하면 적용이 될테니 비교적 어렵지 않게 운용이 가능할 것으로 보입니다.
다음은 blacklist
기능으로 지속적으로 실패하는 IP를 차단
해버리는 기능입니다.
느낌은 리눅스의 Fail to ban
과 유사한 방식으로 로그인 실패가 특정 횟수 이상일때 해당 IP
를 차단하는 식으로 동작하리라 생각되는군요.
이처럼 설정 파일 하나로 쉽게 구성이 가능한 방법이기 때문에 꽤나 유용하게 사용이 가능하겠습니다.
자 그럼 어떻게 구축해야할지 실전으로 들어가보겠습니다.