Level : WORDPRESS BOOK LINKEDIN PATENT Send Mail 동냥하기 hajunho.com

반응형

**OT(운영 기술)와 IT(정보 기술) 네트워크 분리를 통한 네트워크 보안**

---

### **1. OT와 IT의 개념**

**OT(Operational Technology, 운영 기술)**

- **정의**: 물리적 장비나 프로세스를 감시하고 제어하는 하드웨어와 소프트웨어 시스템.
- **예시**: 산업 제어 시스템(ICS), SCADA 시스템, 공장 자동화 장비 등.
- **특징**:
  - 실시간성 및 안정성이 중요.
  - 일반적으로 폐쇄형 네트워크로 구성.
  - 업데이트 및 패치 주기가 길고, 보안 취약점이 존재할 수 있음.

**IT(Information Technology, 정보 기술)**

- **정의**: 데이터를 생성, 처리, 저장 및 전달하는 데 사용되는 기술.
- **예시**: 사무용 컴퓨터, 서버, 네트워크 장비, 데이터베이스 등.
- **특징**:
  - 기밀성, 무결성, 가용성이 중요.
  - 인터넷과의 연결이 일반적.
  - 정기적인 업데이트 및 보안 패치 적용.

---

### **2. OT와 IT 네트워크 분리의 필요성**

1. **보안 위협 증가**

   - 사이버 공격이 점점 정교해지면서 OT 시스템도 공격 대상이 되고 있습니다.
   - OT 시스템이 IT 네트워크와 연결되어 있으면 공격자가 IT 네트워크를 통해 OT 시스템에 접근할 수 있습니다.

2. **시스템 안정성 보장**

   - OT 시스템은 실시간 운영과 안정성이 중요하기 때문에 외부 위협으로부터 보호되어야 합니다.
   - 네트워크 분리를 통해 OT 시스템의 안정적인 운영을 유지할 수 있습니다.

3. **규제 및 표준 준수**

   - 산업별 보안 규제나 국제 표준에서 OT와 IT 네트워크의 분리를 요구하는 경우가 있습니다.
   - 예: NERC CIP, IEC 62443 등.

---

### **3. 네트워크 분리 방법**

**1. 물리적 분리(Physical Separation)**

   - **설명**: OT와 IT 네트워크를 완전히 별도의 물리적 인프라로 구축.
   - **장점**:
     - 네트워크 간 직접적인 연결이 없어 보안성이 높음.
     - OT 시스템의 안정성을 최대한으로 보장.
   - **단점**:
     - 구축 및 유지보수 비용이 높음.
     - 데이터 교환이 필요한 경우 불편함.

**2. 논리적 분리(Logical Separation)**

   - **설명**: VLAN, 서브넷팅, 방화벽 등의 기술을 이용하여 네트워크를 논리적으로 분리.
   - **장점**:
     - 기존 인프라를 활용할 수 있어 비용 효율적.
     - 데이터 교환이 필요할 때 유연하게 대응 가능.
   - **단점**:
     - 설정 오류나 취약점을 통해 네트워크 침입 가능성 존재.
     - 물리적 분리만큼의 보안성은 보장되지 않음.

---

### **4. 네트워크 분리 구현 시 고려사항**

**1. 방화벽 및 보안 장비 구성**

   - **방화벽 설치**: OT와 IT 네트워크 사이에 방화벽을 설치하여 트래픽을 제어.
   - **접근 제어 목록(ACL)**: 허용된 IP와 포트만 접근 가능하도록 설정.

**2. 침입 탐지 및 방지 시스템(IDS/IPS) 도입**

   - **IDS**: 네트워크 트래픽을 모니터링하여 이상 징후를 탐지.
   - **IPS**: 탐지된 위협을 자동으로 차단.

**3. 데이터 다이오드(Data Diode) 사용**

   - **설명**: 물리적으로 한 방향으로만 데이터가 흐를 수 있도록 하는 장비.
   - **장점**: OT 네트워크로의 역방향 접근을 완전히 차단.

**4. 안전한 데이터 교환 방법 마련**

   - **DMZ(Demilitarized Zone) 구축**: OT와 IT 네트워크 사이에 중간 영역을 만들어 안전한 데이터 교환.
   - **파일 전송 시 보안 프로토콜 사용**: SFTP, FTPS 등 암호화된 프로토콜 사용.

**5. 접근 권한 관리**

   - **최소 권한 원칙 적용**: 필요한 최소한의 권한만 부여.
   - **강력한 인증 방식 도입**: 이중 인증(MFA) 등 보안 강화.

**6. 시스템 및 소프트웨어 업데이트**

   - **정기적인 패치 관리**: 보안 취약점을 최소화.
   - **업데이트 시 영향 분석**: OT 시스템의 특성상 업데이트가 시스템에 미치는 영향을 사전에 검토.

**7. 직원 교육 및 인식 제고**

   - **보안 교육 실시**: 사회공학적 공격에 대비.
   - **보안 정책 준수 강조**: 정책 위반 시 발생할 수 있는 위험 인식.

---

### **5. OT/IT 네트워크 분리의 이점**

1. **보안 강화**

   - 외부로부터의 침입 경로를 최소화하여 사이버 공격에 대한 노출 감소.

2. **운영 안정성 향상**

   - IT 네트워크의 변화나 문제로부터 OT 시스템을 보호하여 생산성 유지.

3. **규제 준수 용이**

   - 산업 표준 및 규제 요구 사항을 충족하여 법적 리스크 감소.

---

### **6. 통합 관리의 필요성**

- **통합 보안 관제**

  - 분리된 네트워크의 보안 이벤트를 중앙에서 관리하고 모니터링.
  - SIEM(Security Information and Event Management) 시스템 도입.

- **정책 일관성 유지**

  - OT와 IT 모두에 적용되는 보안 정책을 수립하여 관리의 효율성 증대.

---

### **7. 최신 동향**

- **IoT 및 IIoT의 확산**

  - 산업용 사물인터넷 기기의 증가로 OT 네트워크의 보안 위협이 증가.
  - 추가적인 보안 계층과 네트워크 세분화 필요.

- **제로 트러스트 보안 모델 도입**

  - 내부 네트워크라도 신뢰하지 않고 모든 접근을 검증하는 모델.
  - OT 환경에서도 적용을 검토.

---

### **8. 결론 및 권장 사항**

- **전문가와의 협업**

  - 네트워크 분리 및 보안 구축 시 보안 전문가와 협력하여 최적의 솔루션 도출.

- **지속적인 보안 평가**

  - 정기적인 보안 점검과 모의 해킹을 통해 취약점 발견 및 개선.

- **비상 대응 계획 수립**

  - 사이버 공격이나 보안 사고 발생 시 대응 절차와 복구 계획 마련.

---

**추가 질문이나 특정 부분에 대한 상세한 설명이 필요하시면 언제든지 알려주세요!**

PROMISC(무차별) 모드를 활용한 네트워크 모니터링은 좋은 접근법입니다. 하지만 선박 네트워크의 특수성을 고려해야 할 부분들이 있습니다:

1. 선박 네트워크 특징
```
[일반 네트워크와 유사한 부분]
- TCP/IP 기반 통신
- 이더넷 스위치/라우터 사용
- LAN 구성

[선박만의 특수성]
- OT(운영기술) 네트워크 존재
- 위성통신 구간
- 항해/기관 시스템 연결
```

2. PROMISC 모드 활용 방안
- **모니터링 포인트 설정**
  * VSAT 라우터 연결 지점
  * OT-IT 네트워크 경계
  * 주요 서버 연결 구간

- **탐지 가능한 공격**
  * ARP 스푸핑
  * MAC 위조
  * 패킷 스니핑 시도
  * 비정상 트래픽

3. 고려해야 할 사항
- **대역폭 제약**
  * 위성통신 구간의 제한된 대역폭
  * 모니터링 트래픽 양 조절 필요

- **분리된 네트워크**
  * 항해장비 네트워크
  * 기관 제어 네트워크
  * 승무원 인터넷 네트워크

4. 구현 방안
```
[모니터링 시스템 구성]
SPAN/미러링 포트 -> 패킷 수집 -> 분석 엔진 -> 알림 시스템

[주요 기능]
- 실시간 트래픽 모니터링
- 이상 패턴 탐지
- 로그 기록
- 알림 발생
```

5. 보안 강화 포인트
- **네트워크 세그먼테이션**
  * OT/IT 네트워크 분리
  * VLAN 구성
  * 접근 제어 강화

- **모니터링 정책**
  * 중요 시스템 트래픽 우선 감시
  * 보안 이벤트 정의
  * 대응 절차 수립

이러한 접근은 기존 네트워크 보안 기술을 선박환경에 맞게 최적화하는 좋은 사례가 될 수 있습니다.

 

#### 1. `constexpr` 함수
`constexpr` 함수는 본문 바디에 있는 모든 문장이 컴파일 시간에 평가될 수 있어야 합니다. 이는 함수의 모든 파라미터가 상수 표현식이어야 한다는 것을 의미하지는 않지만, 호출 시점에 주어진 인자가 상수 표현식인 경우 컴파일 시간에 평가됩니다.

예를 들어:
```cpp
constexpr int factorial(int n) {
    return (n <= 1) ? 1 : (n * factorial(n - 1));
}

int main() {
    constexpr int val = factorial(5);  // 컴파일 시간에 계산됨
    int runtime_val = factorial(5);    // 런타임에 계산됨
    return 0;
}
```
위의 코드에서 `factorial(5)`는 `constexpr`로 컴파일 시간에 계산되어 `val` 변수에 할당됩니다. 그러나 `runtime_val` 변수는 런타임에 계산됩니다.

#### 2. `constexpr` 멤버 함수
클래스의 멤버 함수도 `constexpr`로 정의할 수 있습니다. 이는 객체의 멤버 변수를 컴파일 시간에 초기화하거나, 객체를 `constexpr`로 생성하는 데 유용합니다.

```cpp
class MyClass {
public:
    constexpr MyClass(int val) : value(val) {}
    constexpr int getValue() const { return value; }

private:
    int value;
};

int main() {
    constexpr MyClass obj(5);
    static_assert(obj.getValue() == 5, "Value mismatch!");  // 컴파일 시간에 확인됨
    return 0;
}
```
위 코드에서 `MyClass`는 `constexpr` 생성자를 가지고 있으며, `getValue` 메소드는 `constexpr`로 정의되어 컴파일 시간에 호출될 수 있습니다.

#### 3. `constexpr` 변수
`constexpr` 변수는 명시적으로 컴파일 시간에 상수로 취급됩니다.

```cpp
constexpr int a = 10;
constexpr int b = a + 20;
```
위의 예제에서 `a`와 `b`는 모두 컴파일 시간에 계산되어 상수로 정의됩니다.

### `constexpr`과 `const`의 차이점

- **`const`**:
  `const` 키워드는 변수의 값을 변경할 수 없음을 의미합니다. 그러나 `const` 변수는 컴파일 시간에 반드시 초기화될 필요가 없습니다.

  ```cpp
  const int x = someFunction();  // someFunction()은 런타임에 호출됨
  ```

- **`constexpr`**:
  `constexpr` 키워드는 컴파일 시간에 평가되고 상수로 간주되는 값을 의미합니다. 컴파일러가 가능한 코드를 최적화할 수 있도록 도와줍니다.

  ```cpp
  constexpr int y = 10;
  ```

### `constexpr`을 사용할 때 고려해야 할 점

1. **제약**:
   `constexpr` 함수는 반복문, 조건문 등을 사용할 수 있지만, 모든 식은 컴파일 시간에 평가될 수 있어야 합니다. 즉, 실행에 종속적인 코드나 동적 메모리 할당은 허용되지 않습니다.

2. **C++ 표준의 발전**:
   C++14부터는 `constexpr` 함수가 더 많은 기능을 제공하며, C++17에서는 가변 길이의 반환 타입을 지원하도록 확장되었습니다.

### 요약

`constexpr`은 컴파일 시간 상수 표현식을 정의하는 강력한 도구로, 성능 최적화, 메모리 효율성, 타입 안정성을 제공합니다. 이를 통해 코드가 더욱 효율적이고 예측 가능하게 됩니다. 컴파일러가 상수 값을 미리 계산할 수 있기 때문에, 실행 시간 성능이 크게 향상될 수 있습니다. 여러 용도로 활용할 수 있는 `constexpr`의 다양한 활용법을 익히고 적절하게 적용하면, 코드를 더욱 최적화하고 안정성 있게 작성할 수 있습니다.

 

iOS 쪽...

Snapkit Error type - 1

interfacebuilder의 constraints는 무시하고 했는데 이제 같이 고려해야 한다. 

캘린더, 메세지 뷰 등 오픈소스 땡겨서 넣고 나니 충돌 에러가 많네.

 

에러가 다음과 같은 양상을 띤다면, IB constratins와 snapkit 의 제약 사항을 함께 따져봐야 한다.

 

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.

The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.

2018-12-12 09:18:49.725504+0900 Bridge2[12529:869661] [LayoutConstraints] Unable to simultaneously satisfy constraints.

Probably at least one of the constraints in the following list is one you don't want. 

Try this: 

(1) look at each constraint and try to figure out which you don't expect; 

(2) find the code that added the unwanted constraint or constraints and fix it. 

(

    "<SnapKit.LayoutConstraint:0x282946400@TendencyCalendarPopUP.swift#140 UIButton:0x1036cba20.top == UILabel:0x1036cb730.bottom + 3.0>",

    "<SnapKit.LayoutConstraint:0x282947180@TendencyCalendarPopUP.swift#166 UILabel:0x1036ccf40.top == UILabel:0x1036cb730.bottom + 10.0>",

    "<SnapKit.LayoutConstraint:0x282947240@TendencyCalendarPopUP.swift#168 UILabel:0x1036ccf40.top == UIButton:0x1036cba20.bottom + 10.0>"

)

 

Will attempt to recover by breaking constraint 

<SnapKit.LayoutConstraint:0x282947240@TendencyCalendarPopUP.swift#168 UILabel:0x1036ccf40.top == UIButton:0x1036cba20.bottom + 10.0>

 

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.

 

The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.

 

AI 통합 엔지니어 (AI Integration Engineer): 이미 만들어진 AI 모델을 가져와 시스템에 통합하고, AI 파이프라인을 구성하는 역할을 강조한 직함입니다.
ML 파이프라인 엔지니어 (ML Pipeline Engineer): 기계 학습 모델의 워크플로우 설계, 데이터 전처리, 모델 배포 등을 포함한 ML 파이프라인 구축과 관련된 직무를 나타내는 명칭입니다.
AI 운영 엔지니어 (AI Operations Engineer): AI 모델의 운영, 배포, 모니터링을 담당함으로써 AI 모델을 프로덕션 환경에 원활하게 적용하는 역할을 강조하는 직함입니다.
데이터 인프라 엔지니어 (Data Infrastructure Engineer): 데이터 및 AI 인프라를 설계하고 유지 관리하며, AI 모델이 실제 비즈니스에 적용될 수 있도록 하는 작업을 중점적으로 수행합니다.
AI 시스템 엔지니어 (AI Systems Engineer): AI 시스템의 전체적인 설계 및 구현, 모델 통합 및 배포를 담당하는 역할을 강조하는 명칭입니다.
AI 배포 엔지니어 (AI Deployment Engineer): AI 모델의 배포와 관련된 프로세스 전반을 담당하는 역할을 강조한 직함입니다.
AI 오케스트레이션 엔지니어 (AI Orchestration Engineer): AI 파이프라인과 워크플로우의 자동화 및 최적화를 담당하는 역할을 나타내는 명칭입니다.

 

반응형

'C++ > Security' 카테고리의 다른 글

constexpr  (0) 2019.01.02
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기