각종 셀룰러 버전을 사모으다가, '그냥 동글이 하나 있으면 좋겠는데?!' 라는 생각으로 구매하게 된 LTE 라우터, E5885

USB 스틱버전과 이것 중에 고민하다가 중고나라에 먼저 올라오는걸로 구매하였다.

보통 LTE 라우터를 구매하면, 통신사에는 자급제 LTE 폰으로 등록을 하고 휴대폰용 무제한 요금제를 사용하게 된다.
등록시 타블렛이나 라우터로 등록을 하게 되면 이런저런 제한에 걸리게 됨.

통신사별로 좀 특징이 있는데,

KT
내가 산 E5885는 KT에 출시된 기기라 KT는 얘가 LTE 라우터라는걸 안다. 따라서 전용 요금제 밖에 가입이 안되고 그 요금제가 별로인 것 같아서 제외.

SK
SK는 전산망에 없는 장비의 경우 자동으로 연결이 안된다. 복불복으로 되는 경우도 있다는데, 상담원과 전화를 해서 꼭 직접 등록을 해줘야 함.
처음에 상담원이 '연결은 잘 되었는데, 타사에서 이용 중인 기기라고 나온다. 해지를 먼저 해줘야 한다.' 라고 잘못된 정보를 줘서 한참 헤맸음... 
친절한 다른 직원이 퇴근도 안하고 잘 해결을 해주었다. 고맙다고 홍보라도 해주고 싶지만, 라우터를 폰으로 등록한게 찔림...

LG
안써봐서 모르겠지만 전 주인이 잘 썼다고 한다. LG 쓸걸...


보통 U+알뜰모바일 GS25 요금제 - GS25(15GB+/100분) 를 많이 이용하는 것 같던데,
난 SK망이 쓰고 싶어서 몇천원 더 비싼 다른 별정 통신사의 SK 무제한 요금제를 이용하였다.


기본 제공 용량인 15G까지는 잘 썼는데.. 몰랐던게, LTE 라우터도 이 장비가 직접 인터넷을 쓰는게 아니고 여기서 뿌려주는 인터넷을 다른 장비가 받아서 사용을 하다보니, 핫스팟/테더링 판정이 난다.

즉, 핫스팟 속도나 용량 제한이 걸릴 수 있다는 소리..

코로나 때문에 격리되는 동안 라우터를 사용했었는데, 그것도 모르고 200Kbps 밖에 안나오는 속도에 엄청 마음 고생을ㅠㅠㅠ


통신사마다 핫스팟을 구분하는 방식이 조금 다르다고 한다.

KT는 잘 모르겠고,

SK는 IP 프로토콜의 TTL 값으로 구분을 한다.
Time To Live의 준말로, 공유기 등 네트워크 장비를 하나 지날때마다 값을 1씩 빼다가 0이 되면 그냥 패킷을 없앰으로써 네트워크 설정이 잘못된 경우나 잘못 만들어진 패킷이 영원히 네트워크를 떠돌지 않도록 구분하는 값이 있다.

보통 64 정도의 값을 많이 사용하는데, 휴대폰에서 출발한 패킷이 64라는 값을 가지고 통신사 기지국에 도달한다면, 테더링된 장비의 경우 휴대폰을 한번 거쳐서 지나가기 때문에 1이 줄어서 63이 된다. (이런걸로 구분할 생각을 하다니, 똑똑한 놈들) 

LG는 APN 값으로 구분을 한다. 폰이 직접 접속하는 APN과, 테더링 장비가 접속하게 되는 APN이 다르다는 듯...
휴대폰의 경우에도 갖가지 방법으로 이 설정을 변경하여 속도제한 없이 사용하는 경우가 있는데, E5885의 경우엔 애초에 테더링 APN 설정이 없어서 상관이 없는 것 같다. (즉 LTE 라우터를 쓸거면 LG를 쓰자!)


커스텀 펌웨어를 올리면 TTL 을 재지정한다거나, 라우터 단에서 VPN 연결을 해버려서 우회하는 방법이 있다.

다만 상당히 번거로우니,, 그냥 혹시나 사용할 사람이 있다면 U+ 요금제를 사용하는걸 추천...


난 이렇게 된 김에 VPN 등에도 관심이 생겨서 커스텀 펌웨어에 도전해볼 예정.

0. 용어 정리

PKI (Public Key Infrastructure); 공개키 기반 구조

X.509: 공개키 인증서와 인증 알고리즘을 사용하기 위한 PKI 표준

PKCS (Public Key Cryptography Standards): Private Key를 저장하는 문법에 관한 표준
            PKCS#1, PKCS#8, PKCS#12 등을 사용

CRL (Certificate Revocation List), OCSP (Online Certificate Status Protocol): 인증서 유효성 점검을 위한 표준/방법

CA (Certificate Authority): 인증 기관

ASN.1 (Abstract Syntax Notation One): 추상 구문 기법, 네트웍상의 데이터 교환을 정의한 프로토콜

RSA (Rivest–Shamir–Adleman): 공개키 암호시스템의 하나

ECDSA (Elliptic Curve Digital Signature Algorithm): 타원곡선을 이용한 전자서명 알고리즘


0-2. 인코딩/파일 종류 정리

참고로 당연히 아래에 적는 확장자는 참고용으로 강제사항은 아님.
PEM 포맷의 개인키를 my.key.pem, my.key, key.pem 등등 저장하기 나름.

인코딩에 따른 구분

 종류

 확장자

 설명

 DER (Distinguished Encoding Representation)

 .der

 ASN.1을 표현하는 방식의 종류. (바이너리로 저장됨)

 PEM (Privacy Enhanced Mail)

 .pem

 Base64로 인코딩된 ASCII 텍스트
 (표준으로 더 자주 사용됨)


내용에 따른 구분

 종류

 확장자

 설명

 Private Key

 .key

 개인키

 Certificate

 .cer (Windows 주로 사용)
 .crt (*NIX 주로 사용)

 인증서

 PKCS #12

 .p12, .pfx

 하나의 파일에 개인키, 인증서 등을 같이 저장하는 방식에 대한 표준

 Certificate Signing Request

 .csr

 인증서 발급을 위해 내 개인키 서명을 CA에게 보내기 위한 파일

 Serial .srl

 CA가 인증서를 발급할 때 Serial 을 관리하기 위한 파일



1. OpenSSL 명령어

* 기본 config 경로: /etc/pki/tls/openssl.cnf

1) Private Key 생성

openssl genrsa -out key.pem 2048


[옵션]

-des, -seed, -aes256, ...: 해당하는 방식으로 키 암호화. 미사용시 암호화 X

-passout pass:PASSWORD: 키를 암호화할 경우 암호 지정. 미사용시 입력 프롬프트가 뜸

-f4 (0x10001), -3: E value 지정. 기본값: -f4

1024, 2048, 3072, 4096, ...: Private Key Bit 크기. 아래 부록 참고




2) CSR 생성

openssl req -new -key key.pem -out my.csr


[옵션]

-md5, -sha1, -sha256, ...: 서명에 사용할 Digest. 기본값은 버전마다 다르고 적당히 sha256 사용.
            전체 목록은 openssl dgst -h

-subj: 인증서 주제 설정. 미사용시 입력 프롬프트 표시
    예시) -subj "/C=KR/O=sho/CN=SHO Certificate"

 필드

 의미

 예시

 /C=

 국가

 KR

 /ST=

 State, 한국이라면 시/도

 Seoul

 /L=

 Location

 Yongsan

 /O=

 Organization, 회사명

 회사

 /OU=

 Organization Unit, 부서명

 부서

 /CN=

 Common Name

 SHO Root CA, blog.ioate.kr 등




3) CSR로부터 인증서 생성

X.509 V3 확장 설정

(아래에서 사용할 ca.ext, end.ext 파일)

Web TLS 인증서 (CA용) - ca.ext

basicConstraints = critical, CA:TRUE
#basicConstraints = critical, CA:TRUE, pathlen:0

subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
keyUsage = cRLSign, keyCertSign


Web TLS 인증서 (End-entity, 사이트용) - end.ext

basicConstraints = critical, CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = DNS:blog.iolate.kr, IP:1.1.1.1


CA 인증서 생성

openssl x509 -req -days 3650 -extfile ca.ext -signkey key.pem -in my.csr -out root.crt


[옵션]

-set_serial 1: 시리얼 값 지정. 미지정시 임의값 생성

-md5, -sha1, -sha256, ...: 서명에 사용할 Digest.
            전체 목록은 openssl dgst -h
            직접 신뢰 설정을 하는 Root CA 가 아니라면, sha256 사용. sha1 등 취약한 digest 사용시 브라우저에서 경고함


End-entity 인증서 생성

openssl x509 -req -days 365 -extfile end.ext -CA root.crt -CAcreateserial -CAkey my.key -in my.csr -out end.crt
openssl x509 -req -days 365 -extfile end.ext -CA root.crt -CAserial root.srl -CAkey my.key -in my.csr -out end.crt


[옵션]

-CAcreateserial: 시리얼 자동 지정 및 시리얼 파일 생성 (.srl)

-CAserial root.srl: CAcreateserial 로 한번 발급한 이후에는 이 옵션으로 시리얼 생성 파일 입력

-md5, -sha1, -sha256, ...: 서명에 사용할 Digest. sha256 사용. sha1 등 취약한 digest 사용시 브라우저에서 경고함



4) 생성된 파일 정보 확인

CSR / 인증서 / 개인키

openssl [req/x509/rsa] -noout -text -in [my.csr/end.crt/my.key]
openssl [req/x509/rsa] -noout -modulus -in [my.csr/end.crt/my.key] | openssl md5



2. 부록

Private Key 비트 크기

출처: https://en.wikipedia.org/wiki/Key_size

(대략적 요약)

* 128bit AES가 충분한 보안 수준으로 고려되었지만, 양자 컴퓨터의 등장 후 비밀 문서에 256bit 사용 권고

* 1024bit RSA와 80bit 대칭키 /
   2048bit RSA와 112bit 대칭키 / 
   3072bit RSA와 128bit 대칭키 /
   15360bit RSA와 256bit 대칭키  가 서로 보안 수준이 비슷하다고 판단됨.

* 1024bit RSA는 2006~2010년에 취약해짐.
   2048bit RSA는 2030년까지 유효할 것으로 판단.
   2030년 이후에는 3072bit 사용 권고


3. 참고

Wikipedia, OpenSSL 문서, 등등...

(그때그때 정리해둔 문서를 다시 정리한거라 참고 URL이 없음..ㅠ)

Tibero DB 를 사용할 일이 있었는데, tbAdmin이 구려서 직접 연결해서 데이터를 가져와야할 일이 있었다.

심지어 마땅한 다른 언어를 사용할 수 없어서 Excel VBA로......


윈도우 기준으로 ODBC를 시스템에 등록하고, 해당 드라이브를 이용해서 연결하면 된다.


1. ODBC 등록

ODBC 설치법은 인터넷에 검색하면 많이 나오지만, 인스톨러를 사용해서 등록하라고 하는데,,, 왠지 마음에 안들어서 수동등록함.

우선 필요한 ODBC 파일은.. 검색하면 어디서 구할 수 있는지 잘 나온다. (tbAdmin 에는 없다., 서버를 소스코드(tar.gz)로 받았을 경우 client/win32/lib/libtbcli.dll, libtbcli.lib 에 있음)

.lib도 필요한지 아닌지 잘 모르겠지만 일단 이름이 같으니까 같이 챙겨서, 삭제되지 않을 적당한 곳에 잘 꽁쳐놓자.


이후 cmd를 관리자모드로 열어서 아래 명령어 입력. 드라이버 이름(Tibero 6)이나 경로는 필요에 따라 수정해주면 된다.

odbcconf /A {INSTALLDRIVER "Tibero6|driver=D:\odbc\libtbcli.dll"}
64bit 시스템이라면, 32bit 로 등록해야 한다.
%windir%\syswow64\odbcconf /A {INSTALLDRIVER "Tibero6|driver=D:\odbc\libtbcli.dll"}


2. Excel VBA 에서 연결

도구 - 참조 에서 Microsoft ActiveX Data Objects 6.0 Library 체크 후 확인한 후 아래 코드 참고해서 작성.

Driver={Tibero 6} 는 위에서 ODBC 등록시 사용한 드라이버 이름을 사용하면 된다.


Dim conn As New ADODB.Connection
conn.Open "Driver={Tibero6};Server=x.x.x.x;Port=xxxx;UID=user;Database=sid;Password=pwd;"

Dim rs as New ADODB.Recordset
rs.ActiveConnection = conn
rs.Open "SELECT * FROM table;"

Do Until (rs.EOF = True)
...
    rs.MoveNext
Loop

rs.Close


대충 이런식으로 사용.

이 후로는 다른 DB 사용할 때랑 비슷하다. 연결 문자열 정도만 참고하면 될 듯?

+ Recent posts