통합검색
로그인
회원가입
Open menu
로그인
회원가입
통합검색
Synology
7
AWS
5
Linux
30
PHP
9
Python
3
Javascript
24
HTML / CSS
12
ETC
4
떡볶이집앞 사진관
Synology
7
AWS
5
Linux
30
PHP
9
Python
3
Javascript
24
HTML / CSS
12
ETC
4
떡볶이집앞 사진관
ETC
[MacOS, Firebase] iOS Firebase 앱푸시를 위한 APN 인증서 생성 방법
Firebase 를 통해 iOS 앱푸시를 이용 중인데, 24년도 이전에 제작한 iOS앱의 경우 Firebase에 p12 방식의 인증서가 등록되어 있다. p12 인증서의 경우 만료일이 1년으로 설정되어 있기 때문에 애플 개발자센터에서 발급 받은 APN 인증서를 Firebase 에 재등록해야 한다. 또한, APN발급을 위해서는 자체서명인증서(csr) 이 사전에 준비되어 있어야 하는데, 자체서명 인증서는 MacOS 또는 리눅스에서 가능하다. (openssl 사용을 위해) 자체서명 인증서 생성(csr) - Mac or Linux에서 가능 MacOS 또는 리눅스 운영체계에서 '터미널'을 연다음 아래와 같이 자체서명 인증서를 생성한다. 2048비트 RSA 개인 키 생성 openssl genrsa -out mykey.key 2048 CSR 생성 openssl req -new -key mykey.key -out mycsr.csr 주의할 점은, 아래와 같이 정보를 정확하게 입력해야 인증서 유효성 검증에 성공한다. - Country Name : KR - State or Province Name : Seoul - Locality Name : Seoul - Organization Name : 조직명 - Organizational Unit Name : 조직명 - Common Name : 앱 Bundle ID (ex: AAAAAABBBBB.com.CCCC.App) APNs(cer) 발급 (애플 개발자센터) 애플 개발자센터로 이동하여 아래와 같이 자체서명인증서 첨부 및 APN 인증서를 발급받아 다운로드 받는다. 1. 로그인 -> Account -> 인증서, 식별자 및 프로파일 상단 Certificatese 우측 [+] 버튼 클릭하여 인증서 생성 화면으로 이동 2. Apple Push Notification service SSL (Sandbox & Production) 선택 후 Continue 클릭하여 다음 화면으로 이동 3. 인증서 발급 하려는 App ID 선택후 Continue 클릭 4. Choose File 선택하여 위에서 생성한 mycert.csr 파일 첨부 5. Download 버튼 클릭하여 aps.cer 다운로드 p12인증서로 변환 애플에서 다운받은 aps.cer 파일을 pem 파일로 변환 openssl x509 -in aps.cer -inform DER -out aps.pem -outform PEM 개인 키(key, pem) 과 함께 .p12 파일을 생성 openssl pkcs12 -export -inkey mykey.key -in aps.pem -out aps.p12 - Enter Export Password : 패스워드 설정후 기억할 것! Firebase 인증서 추가 위에서 생성한 aps.cer 또는 p12 인증서를 Firebase -> setting -> 프로젝트설정 -> 클라우드메시징 으로 이동하여 업로드 및 위에서 p12 생성시 설정한 패스워드를 입력하여 등록 완료.
[MacOS] 터미널에서 tar 압축시 숨김파일 압축되지 않도록 하기
MacOS에서 '터미널' 앱으로 특정 경로의 폴더/파일을 압축한 다음, 압축 파일을 리눅스 등 다른 OS로 가져가 압축을 해제하는 경우 ._파일명 과 같은 숨김파일이 함께 생성된다. 이는, 맥OS에서 원본 파일에 대한 리소스포크와 메타데이터 기록을 위한 숨김 파일로 맥OS에서는 파일이 보이지 않으나, 타 OS로 폴더를 이동하는 경우 비로소 보이게 된다. 맥OS 에서 터미널 앱을 통해 tar 로 압축을 진행할 때 아래와 같은 명령어로 숨김파일이 함께 압축되지 않도록 해야한다. 숨김파일이 압축되지 않도록 하기 #COPYFILE_DISABLE=1 tar --exclude='._*' --exclude='.DS_Store' -zcvf 압축할파일명.tar.gz 압축할 경로 위와 같이 COPYFILE_DISABLE=1 로 메타데이터가 생성되지 않도록 환경변수 값을 변경한 다음 --exclude='._*' 로 '._' 로 시작하는 숨김파일을 제외하고 압축시킨다.
[윈도우서버] 최대 동접자수를 늘리기 위한 윈도우 서버 설정
윈도우에서 VMware로 다수의 리눅스 서버를 구동하고 있는 환경에서는 유입 트래픽이 윈도우를 거쳐 VMware로 유입되므로 윈도우 자체에서 동접자를 수용할 수 있어야 한다. 윈도우에서 최대 동접자를 늘리기 위한 레지스트리 설정 방법을 안내한다. 설정후 반드시 재부팅이 필요하다. regedit [윈도우 - 시작 - regedit] 로 레지스트리 편집기를 실행한다. 화면과 같이 두개의 옵션 값을 수정 혹은 추가한다. (아래 두 레지스트리가 없는 경우 추가한다.) MaxUserPort 통신 소켓(포트)의 최대 개수를 설정한다. 기본 값은 5,000 이다. 32비트 (REG_DWORD) / 최소 5,000 ~ 최대 65,534 / 기본값 5,000 TcpTimedWaitDelay TCP가 통신 소켓 연결을 해제하고 재사용 하기까지 기다려야 하는 시간을 설정한다. 기본 값은 240(초/4분) 이다. 32비트 (REG_DWORD) / 최소 30 ~ 최대 300 / 기본값 240
홈서버 구축기 / 보안을 염두한 홈서버 네트워크 구성
이사를 계획하게 되면서 새로운 집에서 홈서버 네트워크 구축을 해보자 맘을 먹었고 이사한지 한달도 채 되지 않아 IDC에서 운영중이던 서버를 반출하고 홈서버를 구축했습니다. 몇년전에도 홈서버를 구축했던 적이 있는데, 애매한 장비들로 구축하는 바람에 어설프게 끝나고 말았던 경험이 있습니다. 다시는 IDC 입주를 하지 않겠다는 굳은 각오로 홈서버 네트워크를 구축하게 되었으며, 고생 끝에 완성된 저만의 홈서버 네트워크를 기록으로 남겨 봅니다. 1 홈서버 구축을 결심하게 된 이유 첫째, IDC 비용이 부담으로 다가왔습니다. 네임서버 2대, 웹서버 1대, 스토리지 서버 1대를 운영 중이었는데, 최근 이사를 하면서 큰 지출을 하게 되니 매달 지출되는 서버 비용이 아깝다 느껴졌습니다. 네임서버 2대를 AWS Route53으로 전환하고, 스토리지 서버를 시놀로지 나스로, 1U 웹서버를 데스크탑으로 타협하여 IDC 비용을 줄여보자는 계산이었습니다. 무엇보다 우리 집은 같은 방이라도 랜포트별로 개별 아이피가 들어오기 때문에 가성비 좋은 홈서버 구축이 가능한 상황이었습니다. (랜포트 마다 아이피가 다른건 처음이라 놀라웠습니다. 신축 아파트는 다 그런가요..?) 둘째, 서버를 소비하는 느낌이 싫었습니다. 제가 운영하는 웹사이트는 손수 디자인하고, 개발하여 제작하는 반면, 서버는 비싸게 구입하게 되지만, IDC로 직행하여 수명을 다할 때 쯤 되어서야 제 눈으로 볼 수 있다는게 매번 아쉬움으로 남았습니다. 랜선도 직접 꽂아주고, 장애가 생기면 십자 드라이버로 직접 분해하여 고쳐주는등 애착을 갖고 정성을 다해 관리해보고 싶었습니다. 2 네트워크 구성 홈서버 네트워크에 트래픽이 유입되는 경우 [클라이언트] => [외부 프록시 서버] => [공유기] => [프록시서버] => [웹서버 / 스토리지서버] 순으로 흐르게 됩니다. 각 장비별로 정리해 보았습니다. 1) 공유기(라우팅) 아이피타임의 가정용 인터넷 공유기 관리콘솔이 친숙하다는 이유로 아이피타임의 랙용 유선 공유기를 설치 하였습니다. 외부에서 트래픽이 아이피타임 공유기로 들어오게 되면 80/443 포트로 들어온 경우 프록시 서버로, 그외 포트는 해당하는 서버로 포트 포워딩 합니다. 추후 서버 증설을 염두하여 랜포트가 많은 모델을 찾다가 이 제품으로 선택했습니다. 모델명 : IPTIME T16000M 구성 : port기반 포워딩 금액 : 신품 18만원 2) 리버스프록시 서버 중계 서버란 이유로 가장 저가형으로 당근에서 15만원에 매수한 intel N100 CPU의 미니PC입니다. 중국제 미니 PC에서 흔히 볼 수 있는 저가형 CPU로 내부 프록시 역할만 할 것이므로 사양을 최대한 타협하여 지출을 아꼈습니다. 사용하다 성능이 부족하다 싶으면 업그레이드 할 생각입니다. nginx 를 통해 공유기로 부터 전달된 트래픽을 도메인 기반으로 Reverse proxy 하여 웹서버 혹은 시놀로지 NAS로 전달합니다. 사양 : CPU - intel N100 (4Core 4Threds) / RAM - ddr4 16G 구성 : nginx + reverse proxy 금액 : 중고 15만원 3) 웹서버 구입시 가장 고민이 많았던 서버였습니다. 과연 나에게 ecc 램이 필요할까란 생각에 며칠을 깊은 고민에 빠졌지만, 결과는 '필요 없음' 이었습니다. 장애가 생겨 사이트 접속이 단절 된다는 가정을 해봤고, 회원들이 용인해줄 수 있는 단절 시간은 몇분 정도일까 생각 해봤는데 결과는 '하루' 였거든요...ㅎ 당근에서 좋은 가격으로 intel CPU기반의 데스크탑으로 들여왔습니다. ('이그닉'이라고 아시나요?) CPU가 ecc 지원 모델이라 내심 기대하고 본체를 뜯어보니 메인보드가 ecc 를 non-ecc로 작동 시키는 보드네요. ㅎㅎ 당근에서 가져온 데스크탑을 다시 분해하여 랙에 맞는 3U 케이스와 파워서플라이를 구매하여 재조립 하였습니다. window OS 위에 VMWare를 얹어 centos + apache + mariadb 조합으로 운영되는 웹서버입니다. 이 데스크탑을 구매하기 전, IDC에서 반출한 1U를 집에서 반나절 돌렸다가 와이프에게 등짝 스매싱을 당하고 바로 처분 했습니다. 사양 : CPU- intel i7 12700 (12Core 20Threds) / RAM - ddr4 32G 구성 : window10 + VMWare VPS(centos + mariadb + apache) 당근에서 구입하여 적출하여 재조립한 구성은 아래와 같습니다. 적출당한 미니데스크탑(M-ATX 플랫폼 보드) 금액 : 신품 중고거래 60만원 소음과 효과적인 방열을 위해 3U케이스를 선택 했습니다. 적출한 부품을 재조립 하기 위한 3U케이스 구매 모델명 : AMAQUEST K338F 3U / 금액 : 약 8만원 애초 구매한 데스크탑과 3U 케이스의 파워서플라이 규격이 달랐기에, 케이스 규격에 맞는 파워서플라이를 추가 구매 하였습니다. 추후 하드디스크 추가 장착을 고려하여 정격출력 350W 에서 500W로 조금더 큰 것으로 구매 하였습니다. 3U 케이스 규격에 맞는 파워서플라이 추가 구매 모델명 : 쿨러마스터 MWE 500 BRONZE V2 230V / 금액 : 약 5만원 4) 스토리지서버/메일서버/백업서버 (시놀로지 나스) 시놀로지 나스는 DS1621+ 6bay 모델입니다. 홈 네트워크에서 가장 많은 일을 하는 바쁜 서버입니다. 역할에 비해 부족한 하드웨어 사양으로 인해 시놀로지가 수명을 다하면 헤놀로지로 도전해볼까 진지하게 고민중입니다. 아래는 시놀로지가 하는 일입니다. 참 바쁘죠..? [스토리지 서버] docker + minio 조합으로 Object Storage 서버를 구동하여 웹서버에서 업로드되는 모든 리소스는 시놀로지 나스 도커로 들어가게 됩니다. 웹서버와 시놀로지간 통신은 AWS S3 SDK 를 활용하고 있습니다. [메일서버] 웹서버의 메일서버로 활용되고 있습니다. 메일 수신은 시놀로지 MailPlus Server 가 직접 담당하고 있으며, 메일 송신은 AWS SES SMTP 를 relay 하여 발송하고 있습니다. [원격 백업 서버] 웹서버, 프록시서버, 외부 프록시서버에서 매일 새벽3시에 시놀로지로 원격 백업을 수행합니다. [개발서버 활용] docker에 다양한 개발 환경을 구축해 두고 개발용 서버로 활용합니다. 모델명 : DS1621+ 구성 : docker를 통한 minio 파일 서버 + 메일서버 + 원격백업서버 사양 : CPU - AMD Ryzen V1500B (4Core 8Threds) / RAM - ddr4 16G / hdd : 18T 금액 : 하드 미포함 160만원 3 보안 대책 1) 외부 리버스프록시 서버 적용 홈서버로 유입되는 모든 트래픽은 반드시 외부 리버스프록시 서버를 거쳐 홈서버로 오도록 되어 있습니다. 즉, 외부 아이피인 2.2.2.2 로 접속하면 프록시를 통해 우리집 아이피 1.1.1.1 의 서버를 요청합니다. 홈서버는 네트워크 앞단에 물리적 방화벽이 없기 때문에 DDOS등 공격에 취약할 수 밖에 없습니다. 만의 하나 DDOS가 유입되는 경우 소프트웨어적으로 대응할 수 밖에 없으며, 아이피 변경으로 우회 시키려 해도 맥Address 를 변경해야 하기 때문에 쉬운 일은 아닙니다. 그래서 외부 프록시서버로 적어도 L3/L4 방화벽이 제공되는 AWS 의 lightsail 을 이용 중입니다. 우리집 공인IP를 외부에서 은폐 시킬 수 있고, 방화벽을 통과한 DDOS가 유입 되더라도 외부 프록시서버로 먼저 유입 되기 때문에 lightsail의 아이피만 바꾸면 그만입니다. 무엇보다 라이트세일은 아이피 변경이 매우 즉각적이고 쉽습니다. 심지어 저렴합니다. DDOS는 막는게 아니고 피하거나 버텨 내는거라 배웠습니다. 저는 빨리 도망갈 수 있는 길을 택했습니다. 사양 - CPU : 2vcpu / RAM : 2G 2) 외부 프록시 서버로 lightsail 을 택한 이유 리버스 프록시 서버이기 때문에 비용이 적은 VPS를 택했습니다. GCP, 오라클 클라우드, 호스팅어등 다양한 VPS 서비스가 있지만, 웹서비스 구축을 위해 AWS에서 S3, Cloud Front, SES, Route53 등의 서비스를 사용하고 있기에 관리 측면에서 AWS lightsail을 택했습니다. 또한, 앞서 언급된 DDOS시 즉각적인 아이피 변경을 통해 어렵지 않게 DDOS 트래픽을 증발시켜 버릴 수 있다는 장점이 있었습니다. 3) lightsail 트래픽 정책의 아쉬운 점 그리고 대안 보안을 위해 외부 프록시서버를 거치도록 하였지만, 홈서버에서 발생되는 트래픽은 모두 '비용' 이라는 점이 문제입니다. lightsail 2vcpu / ram 2G 상품은 월간 3T 트래픽을 제공하는데, 타사 VPC 서비스에 비해 상대적으로 적은양의 트래픽을 제공하는 점이 아쉬운 점입니다. 유념 할 점은 3T 트래픽 양은 in/out을 포함한 사용량이라는 것입니다. 즉, 클라이언트가 사이트의 10M 짜리 이미지를 요청한 경우 lightsail 프록시 서버가 홈서버로부터 이미지를 받아와 클라이언트에게 보여주기 까지 in/out 트래픽을 합쳐 총 20M의 트래픽을 소진한다는 겁니다. 물론, 홈서버에서 발생한 트래픽까지 포함한다면 30M가 됩니다. 불필요한 트래픽 누수를 막기 위해 lightsail 프록시 서버에는 nginx 를 통해 캐싱을 활성화 해두었습니다. 클라이언트를 통해 한번 호출된 리소스는 lightsail 에서 7일간 재사용 되며, 30일간 호출되지 않은 리소스의 경우 로컬에서 삭제하는 룰로 셋팅하였습니다. 4 홈서버를 운영하며 느낀 점 가정 인터넷 회선은 여러 위험 요인이 도사리고 있고 그 위험 부담은 본인이 책임져야 한다는 부담감도 공존합니다. 실수로 ssh 포트를 닫았을때 대신 포트를 열어주거나, 서버 전원 버튼을 대신 눌러줄 사람이 항시 대기하고 있다는 안도감은 IDC의 장점이기도 합니다. 저는 홈서버를 비즈니스 목적으로 사용하고 있습니다. 갑작스런 서버 장애가 제 비즈니스에 치명적이지 않고 용인된다는 점이 비즈니스 목적으로 사용할 수 있는 이유입니다. 순간적인 순단 현상이라도 비즈니스에 치명적이라면 절대 홈서버는 비즈니스로 적합하지 않다 생각합니다. 그럼에도 홈서버가 제공해주는 이점은 많습니다. 안정성 문제를 논외로 한다면, IDC비해 후한 회선 대역폭, 상면비가 없다는 점, 반드시 1U이지 않아도 되는 하드웨어 구성의 자유로움, 적은 비용으로 서버 공부 할 수 있다는 점, 서버에 애착을 가질 수 있다는점.. 그리고, 방안에 크고 못생기고 시끄러운 서버랙을 볼 때 마다 이런 짓을 이해해주고 응원해주는 우리 재무부장관님께 감사함을 느낄 수 있다는 것은 큰 장점입니다. 장관님 감사합니다. 2024년 7월 현재는 관리가 용이하도록 WEB서버의 VM으로 내부 프록시서버가 통합 되었으며, 시놀로지 나스는 DS1621+ 에서 RS1221+로 기변되었으며, WEB서버는 하드웨어가 상당부분 업그레이드 되었습니다. 또한, 방음을 위해 전체 하드웨어의 쿨러가 녹투아 쿨러로 교체 되었습니다. 2024년 10월 현재는 메인 웹서버가 하드디스크 핫스왑, 쿨링 개선을 위해 케이스가 silverstone rm400 으로 교체 되면서 일부 장치가 추가 되었습니다. .article_title{font-weight:bold !important;display: block;padding-bottom:10px;border-bottom:1px solid #ddd;font-size:30px;letter-spacing:-1px;} .article_title em{display:inline-block;vertical-align:middle;margin-right: 5px;width:30px;line-height:30px;text-align:center;border-radius:1px;font-style:normal;background:#333;font-size:16px;color:white;font-weight:bold;margin-top:-2px;} @media screen and (max-width: 750px){ .article_title{font-size:20px;} .article_title em{width: 25px;line-height:25px;font-size:14px;} }
1