[컴] SSH Proxy Command 사용법

ssh tunneling / agent forwarding / proxy /

SSH Proxy Command 사용법

아래처럼 c:\atarget_server.pem, bastion.pem 이 있다고 하자.

- a/
    - target_server.pem
    - bastion.pem

다음처럼 하면, ssh proxy 를 사용할 수 있다.

ssh -p 22 -i target_server.pem -o ProxyCommand="ssh -i bastion.pem -p 5555 -W %h:%p myid@12.12.12.1" myid2@11.11.11.1

위와 같이하면, myid@12.12.12.1:5555 로 proxy 를 열고, myid2@11.11.11.1:22에 접속하게 된다.

대략적인 흐름은 아래와 같다.

local --> myid@12.12.12.1:5555  --> myid2@11.11.11.1:22

이 방법을 ssh agent forwarding 보다 보안측면에서 낫다고 ref. 2 에서 이야기 한다.

ssh config 를 이용하기

아래처럼 config file 을 만들면, ssh target_server 를 쳐서 접속할 수 있게 된다.

# ~/.ssh/config
# comment 는 이렇게.

Host my-proxy-nick-name
    Hostname 12.12.12.1
    IdentityFile d:\a\bastion.pem
    User namh
    Port 5555


Host target_server
    Hostname 11.11.11.1
    ProxyJump my-proxy-nick-name
    IdentityFile d:\a\target_server.pem
    User admin
#    Port 22

windows openssh 의 config 위치

%userprofile%\.ssh\config 에 생성하면 된다.

proxyjump, port-forwarding, agent-forwarding, tunneling

이 3개는 다른 것들이다.(아마도. ^^;)

See Also

  1. ssh "permissions are too open" - Stack Overflow : windows 에서 “permissions are too open” 에 대한 문제를 어떻게 해결하는지 알려준다.
  2. 쿠...sal: [컴] ssh tunneling

References

  1. An Illustrated Guide to SSH Agent Forwarding
  2. Why using SSH agent-forwarding is a Bad Idea | by Harsha Koushik | Kernel Space | Medium
  3. SSH ProxyCommand example: Going through one host to reach another server - nixCraft
  4. ProxyJump is safer than SSH agent forwarding | InfoWorld

[컴] gradle DSL 에서 Groovy vs Kotlin

gradle 어느 언어로 / gradle dsl groovy vs kotlin /groovy 와 코틀린 중 어느것을 사용해야 할까?

gradle DSL 에서 Groovy vs Kotlin

gradle 을 작성할때 사용하는 언어(DSL) 은 groovy 와 kotlin 2가지로 가능하다. 처음에 groovy 만 가능했는데, 요새는 kotlin 도 지원하고 있다.

그래서 어느쪽의 문법을 익혀두는 것이 좋은 지 고민이 된다.

관련해서 누군가 Gralde Forums 에 질문을 했다.

결론은 gradle team 에서는 2개 언어 모두를 중요 DSL 로 가져가는 방향으로 로드맵을 짜고 있는 듯 하다. 다만 과거의 gradle 버전은 groovy 만 지원했었기에, 과거 gradle 을 사용하는 project에 대해서는 groovy 문법이 필요할 수 있다.

참고:

[컴] gradle 의 동작

gradlew / 어떻게 동작 / 간단한 동작 / 단계 그래들 / gradle cycle / / 동작방식

gradle 의 동작

build cycle

ref.1 의 이야기를 정리했다.

Gradle은 dependency 기반의 programming 을 위한 언어이다.

Gradle 에서는 다음 2가지를 할 수 있다.

  1. tasks 를 정의
  2. task 간의 dependency 들을 정의

그외 다음과 같은 특징이 있다.

  • Gradle 은 그들이 갖고 있는 dependency 들의 순서로 실행되는 것을 보장해준다.
  • 각 task 는 단 한번만 실행되는데, 이 task들은 Directed Acyclic Graph(DAG, 비순환 방향 그래프) 를 구성한다.
  • task들을 실행할 때 이런 dependency graph 를 만들어 주는 build tool들이 있다.
  • Gradle 은 완전한 dependency graph 를 먼저 만들고 나서 task 를 실행한다.
  • build script 들이 이 dependency graph 를 설정(configure) 한다. 그래서 이것을 build configuration scripts 라고 이야기한다.

Build 단계들(phases)

3개의 phase 가 있다.

  1. Intialization : 어떤 project가 build 에 참여하는지를 정한다. 그리고 이 project들에 대해서 각각 Project instance 를 생성한다.
  2. Configuration :
    • 이 phase에서는 project object들이 configured 된다. build 하려는 project들의 build script 들이 실행된다.
    • 즉, Gradle 은 실행될 ’task들의 부분집합’을 정하고, 만들고 설정한다
    • 이 부분집합은 gradle command 의 parameter 로 오는 task name 과 현재 directory 에 의해 정해진다.
  3. Execution : configuration에서 정해진 이 각 task들을 실행한다.

See Also

  1. Gradle User Manual: Version 7.5.1 : gradle plugin 만드는 법
  2. 쿠…sal: [컴] Gradle 을 사용해야 하는 이유(원본 : Why Build Your Java Projects with Gradle Rather than Ant or Maven?)
  3. 쿠…sal: [컴][안드로이드] gradle 사용하기, 2013-09

Reference

  1. Gradle User Manual: Version 7.5.1 : gradle 의 build cycle 을 이야기 한다.

[컴][os] C:\Program Files 와 같은 ACL 을 갖는 폴더 생성

 

export acls / import acls / acls 복사 / acl 복사 / 권한 복사 / 보안 복사/ security / authentication / windows folder 보안 복사

C:\Program Files 와 같은 ACL 을 갖는 폴더 생성

c:\> icacls "c:\Program Files" /save f:\progfile_acls

아래처럼 파일권한이 저장된다.

Program Files
D:PAI(A;;FA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;CIIO;GA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;;0x1301bf;;;SY)(A;OICIIO;GA;;;SY)(A;;0x1301bf;;;BA)(A;OICIIO;GA;;;BA)(A;;0x1200a9;;;BU)(A;OICIIO;GXGR;;;BU)(A;OICIIO;GA;;;CO)(A;;0x1200a9;;;AC)(A;OICIIO;GXGR;;;AC)(A;;0x1200a9;;;S-1-15-2-2)(A;OICIIO;GXGR;;;S-1-15-2-2)

이것을 d:\a\Program Files 에 적용하려면 아래처럼 하면 된다.

D:\a> mkdir "Program Files"
D:\a> icacls . /restore f:\progfile_acls

다른 이름의 folder 에 적용하는 법

다른 이름을 갖고 있는 folder 에 적용하려면, 저장된 acl file에서 directory 이름을 변경해주면 된다.

아래처럼 apps2 로 변경한 후,

apps2
D:PAI(A;;FA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;CIIO;GA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;;0x1301bf;;;SY)(A;OICIIO;GA;;;SY)(A;;0x1301bf;;;BA)(A;OICIIO;GA;;;BA)(A;;0x1200a9;;;BU)(A;OICIIO;GXGR;;;BU)(A;OICIIO;GA;;;CO)(A;;0x1200a9;;;AC)(A;OICIIO;GXGR;;;AC)(A;;0x1200a9;;;S-1-15-2-2)(A;OICIIO;GXGR;;;S-1-15-2-2)

아래처럼 적용해 주면 된다.

D:\a> mkdir apps2
D:\a> icacls . /restore f:\progfile_acls
처리된 파일: .\apps2
1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

D:\a>icacls ./apps2
./apps2 NT SERVICE\TrustedInstaller:(F)
        NT SERVICE\TrustedInstaller:(CI)(IO)(F)
        NT AUTHORITY\SYSTEM:(M)
        NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(F)
        BUILTIN\Administrators:(M)
        BUILTIN\Administrators:(OI)(CI)(IO)(F)
        BUILTIN\Users:(RX)
        BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
        CREATOR OWNER:(OI)(CI)(IO)(F)
        APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(RX)
        APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(OI)(CI)(IO)(GR,GE)
        APPLICATION PACKAGE AUTHORITY\모든 제한된 응용 프로그램 패키지:(RX)
        APPLICATION PACKAGE AUTHORITY\모든 제한된 응용 프로그램 패키지:(OI)(CI)(IO)(GR,GE)

1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

Reference

  1. 쿠…sal: [컴] windows 의 icacls 사용법

[컴] windows 의 icacls 사용법

windows ACL 확인 / acl 이란? / acl 에 대한 / 권한 제어 / permission / grant permission /

windows 의 icacls 사용법

ACL 확인

cmd 창에서 icacls "c:\Program Files" 를 하면 “Program Files” folder에 대한 현재 ACL 을 볼 수 있다.

f:\>icacls "c:\Program Files"
c:\Program Files NT SERVICE\TrustedInstaller:(F)
                 NT SERVICE\TrustedInstaller:(CI)(IO)(F)
                 NT AUTHORITY\SYSTEM:(M)
                 NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(F)
                 BUILTIN\Administrators:(M)
                 BUILTIN\Administrators:(OI)(CI)(IO)(F)
                 BUILTIN\Users:(RX)
                 BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
                 CREATOR OWNER:(OI)(CI)(IO)(F)
                 APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(RX)
                 APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(OI)(CI)(IO)(GR,GE)
                 APPLICATION PACKAGE AUTHORITY\모든 제한된 응용 프로그램 패키지:(RX)
                 APPLICATION PACKAGE AUTHORITY\모든 제한된 응용 프로그램 패키지:(OI)(CI)(IO)(GR,GE)

위의 ‘()’(괄호) 안에 들어있는 값을 permission 을 줄때 쓰면 된다. 다음은 testfolder 에 대해서 ’everyone’에게 R(read-only access)를 주는 command 이다.

# testfolder 에 대해서 'everyone'에게 R(read-only access)를 부여

icacls testfolder /grant everyone:R /t /c

option 설명:

  • /t : 현재 디렉터리 및 하위 디렉터리에서 지정 된 모든 파일에 작업을 수행합니다.
  • /c : 파일 오류 불구하고 작업을 계속 합니다. 오류 메시지는 계속 표시 된다.
  • /grant
    • /grant:r : 권한을 새롭게 replace 한다. :r이 없으면, add 가 된다. 즉 현재 존재하는 permission 에 새로운 permission 을 추가하게 된다.

ACL

ACL 은 aceess control list 의 약자. list 에 있는 개별 permission rule 은 access control entry(ACE) 라고 부른다. 이것이 access 를 control 한다. 이런 access control list 들은 discretionary access control lists(DACLs) 라 부른다.

exporting, importing ACL

다음처럼 하면 acl 를 그대로 복사할 수 있다.

/t 넣으면, sub-directory 의 acl 까지 같이 저장한다. 이러면 restore 시점에도 같은 directory 구조를 가지고 있어야 한다.

icacls testfolder /save testfolder_acl /t
icacls testfolder /restore testfolder_acl

참고:

inheritace permissions, 상속 권한

만약 위에서 처럼 testfolder에 everyone:R/t를 써서 sub-directory 에 줬다. 그런데 만약 testfolder에 새로운 sub-directory 를 추가하면, 그 sub-directory 는 everyone:R 이라는 permission 을 갖고 있지 않게 된다.

이것은 testfolder에 상속가능한 permission 들을 주지 않았기 때문이다. 아래처럼 상속이 되는 권한을 줄 수 있다. 권한에 대한 내용은 ref. 2 를 참고하자.

D:\a>icacls testfolder /grant:r Everyone:(OI)(CI)W /t
처리된 파일: testfolder
1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

D:\a>icacls d:\a\testfolder\
d:\a\testfolder\ Everyone:(R)
                 Everyone:(OI)(CI)(W)
                 BUILTIN\Administrators:(I)(F)
                 BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                 NT AUTHORITY\SYSTEM:(I)(F)
                 NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                 NT AUTHORITY\Authenticated Users:(I)(M)
                 NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
                 BUILTIN\Users:(I)(RX)
                 BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)

1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

새롭게 생성된 sub-directory 에 ACE 가 추가되어 있는 모습

D:\a>mkdir .\testfolder\testsub2

D:\a>icacls ./testfolder/testsub2
./testfolder/testsub2 Everyone:(I)(OI)(CI)(W)
                      BUILTIN\Administrators:(I)(F)
                      BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                      NT AUTHORITY\SYSTEM:(I)(F)
                      NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                      NT AUTHORITY\Authenticated Users:(I)(M)
                      NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
                      BUILTIN\Users:(I)(RX)
                      BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)

1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

/reset

D:\a>icacls ./testfolder /reset
처리된 파일: ./testfolder
1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

D:\a>icacls ./testfolder/testsub2
./testfolder/testsub2 BUILTIN\Administrators:(I)(F)
                      BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                      NT AUTHORITY\SYSTEM:(I)(F)
                      NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                      NT AUTHORITY\Authenticated Users:(I)(M)
                      NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
                      BUILTIN\Users:(I)(RX)
                      BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)

1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

D:\a>icacls ./testfolder/
./testfolder/ BUILTIN\Administrators:(I)(F)
              BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
              NT AUTHORITY\SYSTEM:(I)(F)
              NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
              NT AUTHORITY\Authenticated Users:(I)(M)
              NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
              BUILTIN\Users:(I)(RX)
              BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)

1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

D:\a>

Reference

  1. icacls: List, set, grant, remove, and deny permissions – 4sysops
  2. icacls | Microsoft Learn

[컴] context menu 에 beyond compare 가 안보일때

BCompare / 비욘드 컴페어 / shell extension / context menu 관리 / 컨텍스트 메뉴 툴

context menu 에 beyond compare 가 안보일때

shell extension 설치

기본적으로 아래처럼 options 을 통해 context menu 에 넣을 수 있다.(shell extention) 다만 portable install 에서는 동작하지 않는다고 한다.

그래도 안보일때

ref 1 을 참고하면 된다. ref. 1 에 가면 registry patch file 이 있다. 그것을 download 하자. 그것을 이용하는 방법은 다음과 같다.

  1. Beyond Compare 삭제
  2. Remove.reg 실행
  3. Reboot
  4. Beyond Compare 설치
  5. Add_64-bit.reg 실행: 실행전에 path 확인 기본 path 는 “C:\Program Files\Beyond Compare 4” 이다. 이것을 맞춰서 변경하자.
  6. Reboot : 개인적으로는 리부팅을 안해도 잘됐다.

See Also

  1. ShellExView - Shell Extension Manager For Windows : shell extension 을 관리하는 툴

References

  1. Beyond Compare Technical Support

[컴] 카카오톡 장애 사건

 

카카오 장애 / 카카오택시 장애 / 분산 / 대규모 /백업 / 노하우

카카오톡 장애 사건

  • SK C&C 판교 데이터센터 화재로 인해 발생했다.
  • 화재원인 추정(2022-10-17) : UPS(무정전 전원장치) 설비에서 화재가 발생한 것으로 보인다고 한다. 이 장치는 배터리를 사용한다.

from ref. 4:

실제 이 시간(2022-10-15 18:04) 네이버 서비스 상당 부분은 복구돼 정상 가동되고 있음에도 카카오는 상당수 서비스가 아직 먹통이다. SK C&C도 이날 “일부 서비스들이 백업 미비 등으로 장애가 지속되는 부분은 해당 서비스 제공사에서 설명드릴 부분”이라고 했다.

카카오 관계자는 “서버 이중화는 다 되어있다고 하는데, 서비스 자체가 복잡하게 구성돼 있는데다 하나의 IDC(인터넷데이터센터) 전체가 영향을 받는 이슈다보니까 다른 서버로 전환하는데 시간이 걸리고 있다”며 “최대한 빨리 서비스가 복구될 수 있도록 노력 중”이라고 했다.

from ref. 5:

카카오 측은 “서버가 유기적으로 구성돼 있어 판교 데이터센터의 장애가 다른 데이터센터에도 영향을 미쳤다”고 해명했다. 데이터 분할 백업을 해놓긴 했지만 정작 데이터 분할 백업을 하는 이유가 된 유사시 데이터 안전성에 대해서는 단 한 번의 사고로 전체가 무력화되는 지점이 있다는 것을 스스로 인정한 셈이다. 서비스를 실시간으로 백업하는 시스템이 사실상 작동하지 않았다는 얘기다. 이에 대해 IT업계 관계자는 “서버가 탄 것도 아니고 단순 화재였는데 유사시 백업 서비스가 작동하고 우회경로로 바로 돌아가면 서비스 기능들은 정상 작동될 수 있었으나 이게 작동하지 않은 것으로 보인다”면서 “백업하는 목적이 고객 데이터 안전을 위한 것이 아니라, 백업 절차 준수 그 자체라는 점을 만천하에 드러낸 사건”이라고 지적했다.

해명에 대한 생각

카카오 측은 “서버가 유기적으로 구성돼 있어 판교 데이터센터의 장애가 다른 데이터센터에도 영향을 미쳤다”고 해명했다.

me:

이상한 해명이다. 유기적으로 구성돼있으면, 그 내용을 그대로 다른 곳에 똑같이 2중화를 했어야 한다. 즉 하나가 멈추면, 다른 하나로 트래픽이 가도록 만들어놨어야 한다. 저 이야기만 봐서는 이중화를 안했거나, 여러 데이터센터로 이중화, 즉 region 을 분리하는 것을 안해놨다는 이야기 같다.

Reference

  1. SK C&C 판교 데이터센터 화재로 인한 인터넷 서비스 장애 사건
  2. SK 판교데이터센터 화재 8시간 만에 완진…카톡 ’먹통’은 여전 | 연합뉴스, 2022-10-16
  3. [르포]“6년 전으로 되돌아갔다”…카카오 멈추자 택시 손님도 기사도 발만 동동 - 머니투데이
  4. “서버분산 기본조치도 안했나”, 카카오 먹통에 시민들 ‘분통’ - 머니투데이, 2022-10-15
  5. 문어발 확장 열올린 카카오…데이터 분산백업 기본도 안지켜 : 네이트 뉴스, 2022-10-16