반응형

ACL 접근 제어 목록

(Access Control List)

허가되지 않은 이용자가 라우터나 네트워크의

특정 자원에 접근하려고 하는 것을 차단하는 기능입니다.

첫 번째 두 번째 실습에 이어 세 번째 시간입니다.

 

이 실습에서는 ACL (Access Control List)을 사용하여 특정 네트워크 트래픽을 필터링하는 방법을 다룹니다.

목표는 불필요하거나 위험한 접근을 제한하여 네트워크 보안을 강화함에 있습니다.

ACL에 대한 자세한 개념은

아래 글을 참고해 주세요!

https://jdcyber.tistory.com/17

 

ACL (Access Control List) 이란? ACL 구성 가이드: 네트워크 보안 강화를 위한 필수 지침 (쉬운 설명, 예

ACL (Access Control List) 정의 및 개념 ACL (Access Control List) 은 네트워크 보안의 핵심 구성 요소로, 네트워크 장비에서 데이터 패킷의 흐름을 제어하는 데 사용되는 일련의 지침입니다. 이 규칙들은 특

jdcyber.tistory.com

 

 

(패킷 트레이서 예제 파일은 본 글에 첨부해 놨습니다.)

1번 조건

R1, R2, R3
각각의 내부 네트워크에서는 www.ilbe.com, www.toto24.com으로 접근되지 않도록 차단하여라.
 

2번 조건

R1
13.13.20.0/24, 13.13.30.0/24 네트워크만 '13.13.10.100' 웹, FTP 접근이 가능하도록 하여라.
'13.13.10.100'으로 접근하는 모든 ICMP는 차단하여라.
단, '13.13.10.100'은 '13.13.20.0/24', '13.13.30.0/24'로 Ping이 되어야 한다.
 

명령어

conf t
(각각의 내부 네트워크에서는 www.ilbe.com, www.toto24.com으로 접근되지 않도록 차단)
access-list 110 deny ip 13.13.10.0 0.0.255.255 host 141.101.121.208
access-list 110 deny ip 13.13.10.0 0.0.255.255 host 81.150.200.78
access-list 110 permit ip any any
!
int fa0/0
ip access -group 110 int
!
(13.13.20.0/24, 13.13.30.0/24 네트워크만 '13.13.10.100' 웹, FTP 접근이 가능도록 설정)
('13.13.10.100'으로 접근하는 모든 ICMP는 차단 단, '13.13.10.100'은 '13.13.20.0/24', '13.13.30.0/24'로 Ping 가능하도록 설정)
access-list 120 permit tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 eq 80
access-list 120 permit tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 eq 443
access-list 120 permit tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 range 20 21
access-list 120 permit tcp 13.13.30.0 0.0.0.255 host 13.13.10.100 eq 80
access-list 120 permit tcp 13.13.30.0 0.0.0.255 host 13.13.10.100 eq 443
access-list 120 permit tcp 13.13.30.0 0.0.0.255 host 13.13.10.100 range 20 21
access-list 120 deny tcp any host 13.13.10.100 eq80
access-list 120 deny tcp any host 13.13.10.100 eq443
access-list 120 deny tcp any host 13.13.10.100 range 20 21
access-list 120 permit icmp 13.13.20.0 0.0.0.255 host 13.13.10.100 echo-reply
access-list 120 permit icmp 13.13.30.0 0.0.0.255 host 13.13.10.100 echo-reply
access-list 120 deny icmp any host 13.13.10.100
access-list 120 permit ip any any
!
int s0/0/0
ip access-group 120 in
 

확인

show ip access-lists

신중한 IP 주소 및 서비스 선정
  • 정밀한 대상 지정: ACL을 설정할 때, 차단하거나 허용해야 하는 특정 IP 주소, 네트워크, 또는 서비스(웹, FTP, ICMP 등)를 명확히 식별해야 합니다. 이는 불필요한 접근을 정확히 차단하고, 필요한 트래픽은 원활하게 통과시키는 데 중요합니다.
최소 권한 원칙 적용
  • 필요한 최소한의 접근만 허용: 네트워크 보안에서는 항상 최소 권한 원칙(Principle of Least Privilege)을 적용해야 합니다. 이는 사용자나 시스템이 자신의 업무를 수행하는 데 필요한 최소한의 권한만을 가지도록 하는 것입니다. ACL 설정 시, 이 원칙에 따라 필수적인 접근만 허용하고 나머지는 기본적으로 차단하는 방식을 채택해야 합니다.
서비스별 포트 번호 인식
  • 적절한 포트 사용: 웹(HTTP, HTTPS)이나 FTP 서비스에 대한 접근을 허용하거나 차단할 때, 각 서비스의 표준 포트 번호(예: HTTP는 80, HTTPS는 443, FTP는 20과 21)를 정확히 지정해야 합니다. 잘못된 포트 번호 설정은 의도하지 않은 서비스 접근을 허용하거나 차단할 수 있습니다.
정책 구현 후 검증
  • 설정 후 검증: ACL을 구성한 후에는 show ip access-lists 명령어를 사용하여 설정된 규칙을 검토하고, 실제 네트워크 트래픽이 의도한 대로 필터링되는지 확인해야 합니다. 또한, 허용된 접근과 차단된 접근 모두를 테스트하여 ACL이 정상적으로 작동하는지 검증해야 합니다.
문서화 및 지속적 관리
  • 구성 문서화: ACL 설정을 문서화하여 관리하면 나중에 네트워크 변경이나 문제 해결 시 큰 도움이 됩니다. 구성 변경 사항을 기록해 두면, 미래의 보안 감사나 네트워크 개선 작업에 유용한 참고 자료가 됩니다.
  • 지속적인 업데이트와 관리: 네트워크 환경은 지속적으로 변화하므로, ACL도 새로운 보안 위협, 변경된 네트워크 구성, 새로운 서비스 요구 사항에 맞게 주기적으로 검토하고 업데이트해야 합니다.

ACL 실습을 진행할 때, 위의 지침들을 철저히 따르는 것이 중요합니다.

이를 통해 네트워크 보안을 강화하고, 불필요한 접근을 효과적으로 차단할 수 있습니다.

또한, 실습 과정에서 발생할 수 있는 다양한 문제를 예방하고, 보안 정책을 효과적으로 구현할 수 있습니다.


 

패킷 트레이서 예제 파일


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

구독 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형
반응형

Telenet이란?

 

Telnet이란? 1969년 개발된 Telnet은 초기 인터넷 표준 중 하나로,

네트워크를 통해 원격 컴퓨터에 로그인하고 명령을 실행할 수 있는 클라이언트-서버 프로토콜입니다.

사용자는 Telnet 클라이언트 소프트웨어를 통해 서버에 접속하며,

이때 네트워크를 통해 전송되는 명령어와 데이터는 모두 평문으로 처리됩니다.

세션은 TCP/IP 연결을 기반으로 하며, 일반적으로 23번 포트를 사용합니다.

사용자가 Telnet 클라이언트를 통해 입력한 명령은 서버로 전송되고,

서버에서 해당 명령을 실행한 후 결과를 사용자에게 다시 전송합니다.

이 과정은 네트워크 지연이나 대역폭 제한과 같은 요소에 영향을 받을 수 있으나, 기본적으로 실시간으로 이루어집니다.

 

보안 문제로 인한 Telnet의 한계
  1. 데이터 암호화 부재: 모든 통신 내용이 암호화되지 않고 네트워크를 통해 전송되어, 중간자 공격에 취약합니다.
  1. 취약한 인증 과정: UNIX 시스템의 예를 들면, 해커가 Telnet 데몬을 조작하여 인증 과정 없이 원격 쉘 접근을 허용할 수 있습니다.

 

Telnet의 가장 큰 보안 취약점은 모든 통신 내용이 평문으로 전송된다는 점입니다.

이는 사용자 이름, 비밀번호, 그리고 전송되는 모든 데이터가 네트워크상에서 제3자에 의해 쉽게 가로채질 수 있음을 의미합니다.

특히, 공용 Wi-Fi와 같이 보안이 취약한 네트워크 환경에서는 중간자 공격(Man-In-The-Middle, MITM)에 매우 취약하며,

공격자는 이를 이용해 민감한 정보를 획득하거나 세션을 하이재킹 할 수 있습니다.

또한, Telnet 서버 취약점을 이용한 공격으로, 공격자가 서버에 무단으로 접근하거나 악성 코드를 심을 수도 있습니다.


SSH란?

 

SSH(Secure Shell Protocol)란? 보안 문제를 해결하기 위해 개발된 SSH는 Telnet의 대안으로,

Public Network를 통한 컴퓨터 간 통신 시 데이터 전송과 원격 제어를 안전하게 할 수 있는 프로토콜입니다.

SSH는 데이터 전송 전에 안전한 채널을 구성하여 모든 통신 내용을 암호화함으로써, 높은 수준의 보안을 보장합니다.

이로 인해 사용자 인증 정보와 기타 민감한 데이터가 제3자에게 노출되는 것을 효과적으로 방지할 수 있습니다.

 

SSH 사용의 중요성 Telnet 대신 SSH를 사용하는 주된 이유는 "보안"입니다.

SSH를 통해 안전한 채널을 구성하면, 민감한 정보가 네트워크를 통해 안전하게 전송될 수 있으며,

이는 정보 보안을 유지하는 데 필수적입니다.

현대의 네트워킹 환경에서는 대부분의 시스템과 서비스가 높은 보안 기준을 요구하기 때문에,

SSH는 Telnet보다 훨씬 권장되고 널리 사용됩니다.


암호화 메커니즘

 

SSH(Secure Shell)는 데이터를 암호화하여 전송하는 프로토콜로,

공개 키 암호화와 대칭 키 암호화 기술을 모두 사용합니다.

초기 핸드셰이크 과정에서 클라이언트와 서버 간에는 공개 키 암호화 방식을 통해 안전하게 대칭 키를 교환합니다.

이 대칭 키는 세션 동안 데이터 암호화에 사용되며, 세션 종료 시 폐기됩니다.

이 과정은 데이터의 기밀성을 보장하며, 동시에 디지털 서명을 통해 데이터의 무결성 검증도 수행합니다.


인증방법

 

SSH는 다양한 인증 방식을 지원합니다.

가장 흔히 사용되는 방식은 비밀번호 기반 인증과 공개 키 기반 인증입니다.

비밀번호 기반 인증은 사용자 이름과 비밀번호를 통해 이루어지며,

공개 키 기반 인증에서는 사용자가 사전에 서버에 등록한 공개 키와 매칭되는 개인 키를 이용하여 인증합니다.

또한, 두 단계 인증(2FA)과 같은 다중 인증 방식도 점차 널리 사용되고 있습니다.


SSH 포트포워딩 터널링

 

SSH 포트 포워딩(또는 SSH터널링)은 안전하지 않은 네트워크 상에서 안전한 통신 채널을 구축하는 기술입니다. 이 기능을 통해, 사용자는 로컬 컴퓨터의 특정 포트와 원격 서버의 포트 사이에 안전한 SSH 연결을 통한 터널을 생성할 수 있습니다. 이를 통해, 로컬 시스템에서 원격 서비스에 안전하게 접근할 수 있으며, 데이터가 암호화되어 전송되기 때문에 중간자 공격으로부터 보호됩니다. 포트 포워딩은 원격 데이터베이스 접근, 서버 관리, 그리고 내부 네트워크 서비스에 대한 안전한 접근 등에 널리 사용됩니다.


SSH 구현과 활용

 

SSH는 다양한 운영 체제에서 널리 지원되며, Linux와 macOS, Windows 등

대부분의 시스템에서 쉽게 설정하고 사용할 수 있습니다.

서버 측에서는 SSH 서버를 구성하고, 클라이언트 측에서는 SSH 클라이언트를 통해 서버에 안전하게 접속할 수 있습니다.

사용자는 SSH 클라이언트를 통해 파일 전송(예: SCP, SFTP), 원격 명령 실행,

그리고 포트 포워딩 등 다양한 작업을 수행할 수 있습니다.

실제 환경에서는 시스템 관리자가 원격 서버의 유지보수를 위해 SSH를 사용하거나,

개발자가 서버에 안전하게 코드를 배포하기 위해 SSH를 사용하는 등 다양한 용도로 활용됩니다.

SSH의 구현을 위해서는 서버와 클라이언트 양쪽에서 적절한 설정이 필요합니다.

예를 들어, 서버에서는 SSH 데몬(ssh daemon)을 실행하고 적절한 보안 정책을 구성해야 하며,

클라이언트에서는 서버의 공개 키를 신뢰하는 과정, 즉 호스트 키 검증을 수행해야 합니다.

이 과정을 통해, 클라이언트는 서버의 정체성을 확인하고, 서버는 클라이언트의 인증 정보를 검증합니다.

SSH의 사용은 단순히 원격 접속에 국한되지 않습니다.

예를 들어, SFTP(Secure File Transfer Protocol)는 SSH를 기반으로 한 파일 전송 프로토콜로, 안전한 파일 전송을 보장합니다.

또한, SSH를 통해 가상 사설 네트워크(VPN)와 유사한 환경을 구축할 수도 있습니다.

이러한 고급 기능들은 SSH가 단순한 원격 터미널 접속 프로토콜을 넘어서,

네트워크 보안의 핵심 도구 중 하나로 자리 잡게 한 요인입니다.

SSH 구현과 활용에 관한 추가 학습을 위해서는 SSH의 공식 문서,

오픈 소스 커뮤니티에서 제공하는 가이드, 그리고 네트워크 보안에 관한 전문 서적이나 온라인 코스를 참조하는 것이 좋습니다.

이를 통해 SSH의 기본적인 사용법뿐만 아니라, 보안 관련 고급 설정과 최적화 방법에 대해서도 학습할 수 있습니다.


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

구독 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형
반응형

CCNA

(Cisco Certified Network Associate)란 무엇일까요?

CCNA는 네트워크 기술 능력을 검증하는 가장 기초적인 시험입니다.

여기서 CCisco라는 미국 캘리포니아에 있는 네트워크 하드웨어, 보안 서비스를 제공하는 기업의 이름이며

이곳에서 자격 증명을 해준다고 해서 CCNA라고 합니다.

 

CCNA(Cisco Certified Network Associate)는 전 세계적으로 인정받는 네트워크 기술 인증 중 하나로,

네트워크의 기본적인 이해부터 복잡한 네트워크 솔루션의 구현까지,

네트워킹 분야에 필수적인 기술들을 포괄합니다.

이 인증은 네트워크 엔지니어링의 세계로 첫발을 내딛고자 하는 초보자는 물론,

기술을 새롭게 업데이트하고자 하는 경험 많은 전문가들에게도 큰 가치를 제공합니다.

Cisco라는 업계 선두 기업의 이름을 담고 있는 CCNA는 단순히 기술 능력의 증명뿐만 아니라,

커리어 발전과 전문성 강화를 위한 토대를 마련해 줍니다.

이 자격증을 취득함으로써, 개인은 네트워크 분야에서의 전문 지식과 실무 능력을 공식적으로 인정받게 되며,

업계에서의 경쟁력을 한층 강화할 수 있습니다.

CCNA 시험에서는 네트워크 전문 기술 활용 능력평가하게 되며

네트워크 기본 개념부터 라우터 기본 조작 방법, 스위치,

Static Routing, Dynamic Routing 등의 내용을 다루게 됩니다.


자격증 난이도

Cisco에서는 크게

Associate / Professional / Expert난이도를 구분하는데 이중

CCNA는 네트워크 관리자 초급이라고 생각해 주시면 됩니다.


자격증 종류

CCNA (Cisco Certified Network Associate)를 시작으로

CCNP (Cisco Certified Network Professional)

네트워크 최상위 자격증

CCIE (Cisco Certified Internetwork Expert)이 있습니다.

 

CCNA : CCNA(Cisco Certified Network Associate)는 Cisco에서 제공하는 네트워크 인증 프로그램 중 가장 기초적인 단계로, 네트워크의 기본 개념, 라우터와 스위치의 기본 조작 방법, static routing과 dynamic routing 등을 포함한 네트워크 전문 기술 활용 능력을 평가합니다. 이 자격증은 네트워크 관리자가 되고자 하는 초보자에게 적합합니다.
CCNP : CCNA 다음 단계인 CCNP(Cisco Certified Network Professional)는 보다 고급 네트워크 기술과 지식을 평가합니다. 이 자격증은 복잡한 네트워크 해결책을 설계, 구현, 관리, 그리고 디버깅할 수 있는 능력을 인증하며, 특정 네트워크 전문 분야의 지식을 증명합니다.
CCIE : CCIE(Cisco Certified Internetwork Expert)는 Cisco 인증 프로그램의 최상위 단계로, 네트워크 엔지니어링 분야에서 가장 권위 있는 인증 중 하나로 여겨집니다. CCIE는 광범위한 네트워크 인프라스트럭처를 관리하는 데 필요한 전문적인 기술 능력과 깊은 지식을 인증합니다.

CCNA는 네트워크 분야에 발을 들이고자 하는 사람들에게 첫 번째 단계로서,

기본적인 지식과 기술을 습득하게 하는 역할을 합니다.

반면, CCNP와 CCIE는 이미 네트워크 분야에서 일정 수준의 경험과 지식을 쌓은 전문가들이

더 깊이 있는 전문성을 개발하기 위해 도전하는 단계입니다.

 

"CCNA 시험과 관련된 정보는 시간에 따라 변경될 수 있으므로, 이 글에서 제공하는 정보는 최신 상태를 반영하고자 합니다. 하지만 시험 패턴, 요구 사항, 시험 비용 등의 최신 정보는 Cisco의 공식 웹사이트에서 직접 확인하는 것이 가장 정확합니다."

 

2024년 CCNA 시험을 보기 위해서는

온라인으로 시험료 결재 및 응시 요청을 하셔야하며 아래 사이트에서 신청 가능합니다.

https://www.cisco.com/c/en/us/training-events/training-certifications/exams/current-list/ccna-200-301.html

 

200-301 CCNA

This exam tests your knowledge and skills related to network fundamentals, network access, security fundamentals, automation and programmability.

www.cisco.com

 

시험 응시를 완료하셨다면 가장 본인과 가까운 시험장으로 선택하여시험을 치를 수 있습니다.

응시료325불 한화로 약 400,000원입니다.

시험에서는 총 103 문항의 문제가 출제되며, 103 문항을 120분 안에 풀어야 합니다. 

합격 가이드라인은 1000점 만점에 825점 이상이 합격입니다. 

결과는 시험 직후 바로 확인이 가능하며, 자격 유효기간은 3년입니다.

시험공부는 덤프 파일로 진행할 수 있으며 홈페이지에서 구매 가능합니다.

CCNA 시험의 가장 기초가 되는

OSI 7 계층 모델이라는 것부터  천천히 공부하고 싶으시다면

아래 링크를 클릭해 주세요

https://jdcyber.tistory.com/11

 

OSi 7계층 모델이란? (개념/이해/설명) TCP/IP Protocol suite

너무 말이 어렵게 느껴지더라도 조급해하지 마세요 그저 설명되어 있는 글을 읽고 아 그렇구나 하고 넘어가시면 됩니다. 하나하나 이해하려고 하면 할 수 없습니다. 시간이 지나며 차차 이해하

jdcyber.tistory.com

 

CCNA 시험은 네트워크 기본 개념, 네트워크 접근, IP 연결, IP 서비스, 보안 기본,

그리고 자동화 및 프로그래밍 가능성 등 여섯 가지 주요 분야를 다룹니다.

각각의 분야는 네트워킹 기술의 중요한 측면을 반영하며, CCNA 자격증을 통해 검증되는 기술들은 다음과 같습니다:

  • 네트워크 기본 개념: 네트워크의 기본 구성 요소와 작동 원리, OSI 모델 및 TCP/IP 모델, IP 주소 체계 등을 포함합니다. 이 영역은 네트워킹의 기초를 이해하는 데 필수적입니다.
  • 네트워크 접근: 스위칭, 라우팅, VLAN 구성, 인터넷 연결 등 네트워크 내외부로의 데이터 접근 방법에 대해 다룹니다. 효율적인 네트워크 트래픽 관리 및 장치 간 연결 설정 방법을 학습합니다.
  • IP 연결: IP 라우팅 기초, OSPF(Open Shortest Path First)와 같은 동적 라우팅 프로토콜을 포함하여, 네트워크 상에서 데이터 패킷이 목적지까지 어떻게 이동하는지에 대한 지식을 제공합니다.
  • IP 서비스: DHCP, NAT, QoS 등과 같은 IP 기반 서비스를 구성하고 관리하는 방법을 배웁니다. 이는 네트워크의 효율성과 안정성을 높이는 데 중요한 역할을 합니다.
  • 보안 기본: 네트워크 보안의 기본 원칙, VPN, 방화벽 설정 및 액세스 제어 리스트(ACL) 설정 등을 통해 데이터와 네트워크 자원을 보호하는 방법을 다룹니다.
  • 자동화 및 프로그래밍 가능성: 네트워크 자동화, 네트워크 관리를 위한 스크립팅 및 프로그래밍 기초, API(Application Programming Interfaces)를 활용한 네트워크 구성 및 관리 방법 등을 학습합니다. 이 분야는 현대 네트워킹 환경에서 점점 중요해지는 자동화 기술과 프로그래밍에 대한 이해를 높입니다. 

각 영역별로 설정된 학습 목표와 기대 결과를 통해,

CCNA 시험 준비생은 네트워크 기술의 광범위한 범위를 체계적으로 학습하고,

실제 네트워크 환경에서 직면할 수 있는 다양한 시나리오와 문제를 해결할 수 있는 능력을 개발할 수 있습니다.

예를 들어, 네트워크 기본 개념 영역에서는 네트워크의 기본 구조와 데이터 통신 방법을 이해함으로써,

네트워크 설계 및 구현의 기초를 마련할 수 있습니다.

또한, IP 연결 영역에서는 동적 라우팅 프로토콜을 통해 효율적인 라우팅 경로를 선택하고 구성하는 방법을 학습함으로써,

네트워크의 성능과 안정성을 최적화하는 방법을 배울 수 있습니다.

 

CCNA 시험 준비에는 다양한 학습 자원이 유용할 수 있습니다.

예를 들어, Cisco의 공식 학습 가이드, 온라인 코스(예: Udemy, Coursera),

그리고 네트워크 전문가 커뮤니티에서 공유하는 연습 문제와 시뮬레이션 소프트웨어 등이 있습니다.

학습 전략으로는 매일 일정 시간을 할애해 공부하는 것,

실제 시험 환경을 모방한 연습 문제를 풀어보는 것 등이 있으며,

이러한 자원과 전략을 활용하여 효과적인 학습 계획을 수립할 수 있습니다.


저는 CCNA 시험 통과를 목표로 학원 수업과 함께, 개인적인 학습 시간도 중요하다는 것을 깨달았습니다.

특히, 실제 네트워킹 환경에서의 문제 해결 과정을 이해하려 노력했으며,

이는 시험에서 상당히 도움이 되었습니다.

또한, 시험 준비 과정에서 만난 동료들과의 스터디 그룹은 다양한 개념을 더 깊게 이해하는 데 큰 도움이 되었습니다.


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

구독 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형
반응형

소프트웨어 개발이 복잡해짐에 따라 라이선스 및 저작권 정보 관리의 중요성이 커지고 있습니다.

이러한 상황에 대응하는 설루션으로 SPDX(Software Package Data Exchange)가 등장했습니다.
오늘은 SPDX의 정의, 역사, 작동 방식 등에 대해 알아보고,
이를 활용함으로써 어떻게 개발자와 조직이 이점을 얻을 수 있을까요?

 

SPDX란 무엇인가?

 

SPDX(Software Package Data Exchange)는 2010년에 Linux Foundation이 시작한 프로젝트로,
소프트웨어 패키지의 라이선스 및 저작권 정보를 표준화하고 공유하는 포맷입니다.

소프트웨어 개발과 관리에서 라이선스 정보의 표준화와 관리를 중요하게 다루는 도구인데요,

이 도구는 개발자와 조직이 소프트웨어의 라이선스 준수를 보다 쉽게 관리하고, 

라이선스 정보를 정확하게 이해하고 교환할 수 있도록 도와줍니다. 

SPDX는 라이선스 정보의 표준화뿐만 아니라, 소프트웨어 개발 프로세스의 효율성을 증가시키고, 

라이선스 준수와 저작권 이해도를 높이는 데 기여합니다. 

이는 조직의 품질 관리 체계 향상과 ISO 인증 획득을 위한 가이드라인과 프로세스 충족에도 도움을 줍니다.

SPDX의 목적은 소프트웨어 패키지가 사용하는 다양한 라이선스의 종류와 조건을 명확히 이해하고

간소화하는 것으로 시작했습니다.

이로 인해, 현재는 오픈 소스 커뮤니티뿐만 아니라 소프트웨어 개발의 모든 분야에서

특히 보안 업계에서는 필수적인 요소가 되어가고 있습니다.

SPDX의 기능과 장점

 

SPDX는 다음과 같은 중요한 기능과 장점을 가지고 있습니다

라이선스 리스트 제공
SPDX는 SPDX 라이선스 리스트라고 하는 표준 라이선스 식별자를 정의하고 관리합니다.
이 리스트는 수백 가지 이상의 오픈 소스 라이선스와 예외 사항들을 포함하고 있습니다.
각각의 라이선스와 예외에 대해 고유한 식별자, 표준 텍스트, 그리고 해당 라이선스를 참조하기 위한 URL을 제공합니다.
라이선스 정보의 표준화
SPDX는 각 소프트웨어 컴포넌트가 사용하는 라이선스 정보를 표준화하여 제공합니다.
이 정보는 컴퓨터가 읽을 수 있는 형태로 제공되므로, 개발자와 조직은 소프트웨어의 라이선스 준수 상태를 쉽게 확인할 수 있습니다.
라이선스 준수 간소화
SPDX를 사용하면 개발자와 조직은 패키지가 사용하는 다양한 라이선스의 종류와 조건을 정확하게 이해하고 준수할 수 있습니다.
이는 소프트웨어 라이선스에 대한 이해를 돕고, 라이선스 위반의 위험을 줄여줍니다.

또한, SPDX는 CycloneDX와 함께 소프트웨어 빌 오브 머티리얼(SBOM) 생성에 있어 핵심적인 기술로 자리매김하고 있습니다. 

이러한 기술들은 특히 보안 업계에서 필수적인 요소로 간주되며, 

개발자와 조직이 소프트웨어의 안전성과 투명성을 보장하는 데 중요한 역할을 합니다.

Json과 XML에 대해 아직 모르신다면 아래 쉽게 설명해놨으니 참고해주세요

https://jdcyber.tistory.com/42

 

JSON 이란? (효율적인 데이터 교환의 핵심)

JSON, 이 단어를 들어본 적이 있으신가요? 오늘은 웹 개발 및 데이터 전송에 있어 매우 중요하고 유용한 JSON 파일에 대해 알아보는 시간을 갖도록 하겠습니다. JSON은 데이터 교환을 가능하게 하는

jdcyber.tistory.com

https://jdcyber.tistory.com/41

 

XML이란? (데이터 통신의 보편적 언어)

안녕하세요! 오늘은 데이터 통신 및 교환에 있어 전문적이며 보편적인 언어인 XML에 대해 알아볼까 합니다. 쉽게 말해, XML은 데이터를 공유하고 전송하는 데 도움을 주는 언어로 생각하시면 됩니

jdcyber.tistory.com

SPDX의 작동 방식

 

SPDX 문서는 소프트웨어 패키지의 메타데이터를 기록하는 데 사용됩니다.

이 메타데이터에는 패키지의 이름, 버전, 제작자, 다운로드 위치 등이 포함되어 있습니다.

또한, 각 파일이 사용하는 라이선스, 해당 라이선스의 텍스트, 그리고 파일의 저작권 공지사항도 포함되어 있습니다.

라이선스 정보는 SPDX 라이선스 리스트에서 정의한 라이선스 식별자를 사용하여 기록됩니다.

이 식별자를 사용하면,

소프트웨어 패키지의 사용자와 개발자들은 패키지가 사용하는 라이선스의 종류와 조건을 정확하게 이해할 수 있습니다.

 

정리

 

SPDX는 소프트웨어 라이선스 정보의 표준화와 교환을 돕는 중요한 도구입니다.

SPDX는 라이선스 정보 관리를 표준화함으로써 ISO 인증과 연계해 조직의 품질 관리 체계 향상에 기여할 수 있습니다.

SPDX를 활용하면, 소프트웨어 개발 프로세스의 일관성과 효율성을 증가시키고,

개발자와 조직의 라이선스 준수 및 저작권 이해도를 높일 수 있습니다.

이를 통해 ISO 인증 획득의 요건으로 제시되는 가이드라인과 프로세스를 충족시키는 데 도움이 됩니다.

 

즉, 소프트웨어 개발에서 사용되는 '라이선스 정보 교환 방법'이라고 할 수 있습니다.

마치 식품의 영양 정보표처럼, 소프트웨어가 어떤 규칙(라이선스)을 따르는지 쉽게 알려주고,

이를 통해 개발자들은 소프트웨어를 만들고 사용할 때, 필요한 규칙을 잘 지키고 있는지 확인할 수 있게 됩니다.

SPDX는 CycloneDX와 더불어 SBOM 생성에 있어 핵심 기술 중 하나임은 틀림없습니다.

아직 이렇다 할 규정이 없는 상황에서 위 두 가지는 꼭 가지고 가야 할 주제로 자리하고 있습니다.

 

CycloneDX에 관한 내용은 이전 글에서 충분히 다루었으니 궁금하신 분들은 아래 글을 참고해 주세요

https://jdcyber.tistory.com/35

 

CycloneDX 란? 보안의 미래를 이끄는 힘 SBOM을 통한 소프트웨어 보안의 새로운 지평

CycloneDX란 무엇일까요? 소프트웨어 구성 요소를 한눈에 관리하는 새로운 표준 소프트웨어 개발 프로세스에서 빠질 수 없는 요소 중 하나는 구성 요소의 관리일 것입니다. 라이브러리, 프레임워

jdcyber.tistory.com

 

위에 언급된 SBOM에 대한 내용은 아래 자세히 기술해 놨으니 확인해봐 주세요

https://jdcyber.tistory.com/4

 


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

구독 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형
반응형

John the Ripper

 

1996년에 처음 공개된

존더리퍼(John the Ripper, JtR)

본래 유닉스 기반 시스템을 위해 개발된 비밀번호 크래킹 도구입니다.

사전 공격(Dictionary Attack)을 통해 비밀번호 강도를 테스트하고

암호화된(해시된) 비밀번호를 무차별 대입(brute-force) 공격하여 비밀번호를 크래킹 하기 위해 고안됐습니다.

비밀번호 크래킹 속도를 높이기 위한 다양한 모드 제공하고,

암호화된 비밀번호가 사용하는 해싱 알고리즘 자동 탐지,

손쉬운 도구 구동 및 구성 등이 포함되어 있어 초보자와 전문가 모두 연습이 가능한 비밀번호 크래킹 도구입니다.
하지만 JtR은 악의적인 해킹 목적보다는 보안 전문가들이 시스템의 약점을 찾고 강화하는 데 사용하는 교육 도구로 더 널리 인식됩니다.

보안 연습을 위한 실습 도구로서 그 가치가 높히 평가됩니다.


설치

 

아래 코드를 이용하여 깃에 접속해 존더리퍼를 손쉽게 설치할 수 있으며,

git clone "https://github.com/magnumripper/JohnTheRipper.git" && cd JohnTheRipper/src && ./configure && sudo make -s clean && sudo make -sj4

 

아래 코드를 이용하여 Zip 파일을 풀고 비밀번호 해제를 진행합니다.

cd JohnTheRipper/run ./zip2john [filename.zip] > hash.txt ./john hash.txt

 

아래 사이트에서는 직접 자신에게 맞는

OS 별 환경에 맞게 다운로드하고 설정할 수 있습니다.

https://www.openwall.com/john/

 

John the Ripper password cracker

John the Ripper password cracker John the Ripper is an Open Source password security auditing and password recovery tool available for many operating systems. John the Ripper jumbo supports hundreds of hash and cipher types, including for: user passwords o

www.openwall.com


일반적으로 비밀번호 크래커와 같은 도구는

3가지 방식으로 동작합니다.

 

사전 공격 (Dictionary Attack)

무차별 대입 (brute-force)

레인보우 테이블 (Rainbow tables)

 

전수 지수 공격 무작위 대입 공격이며

(모든 문자 및 숫자를 대입하는 방식)

사전 대입 공격은 관련성 있는 문자 및 숫자를 먼저 대입하는 방식입니다


사전 공격

사전 공격 사전에 입력된 수많은 단어와 구문,

이전에 유출된 데이터에서 가능성 있는 비밀번호 목록으로 로그인을 시도합니다.

이 도구는 올바른 비밀번호를 찾기 위해 애플리케이션 목록의 모든 단어를 입력합니다.
일반적으로 간단한 비밀번호에 효과적이지만,

복잡하고 무작위적인 비밀번호에는 덜 효과적입니다.

이 방법은 보안 수준이 낮은 시스템을 빠르게 크래킹 하는 데 유용하지만,

강력한 비밀번호에 대해서는 시간이 오래 걸릴 수 있습니다.


무차별 대입 공격

무차별 대입 공격은 사용자에게 아래와 같이 몇 가지 규칙을 구성하도록 요청합니다.

올바른 비밀번호의 최소 길이와 최대 길이,

구성될 가능성이 있는 글자 유형

(문자, 문자+숫자, 특수 문자 등)

위치 (알파벳 몇 개, 특수 문자 몇 개, 비밀번호 총 길이 등의 규칙)

이상적인 대입 구성을 찾기 위해서는 약간의 추측과 전문 지식이 필요합니다.

그리고 범위 안에서 기준에 따라 가능한 모든 비밀번호 조합을 추측하고,

올바른 비밀번호를 찾아내면 사용자에게 알려주도록 고안되어 있습니다.

이 방법은 매우 효과적인 방법이지만 속도가 매우 느립니다.

예를 들어, 대소문자와 함께 숫자와 특수 문자가 혼합된 9자리 비밀번호는

컴퓨터가 추측하는 데 9년 이상이 소요되기 때문에 실제로는 크래킹이 불가능합니다.

그래서 보안 전문가들이 항상 다양한 문자 유형의 조합으로 구성된 길고 복잡한 비밀번호를 선택하라고 제안하는 것이죠


레인보우 테이블(Rainbow tables)

 

업무에 필수적이고 보안 지향적인 애플리케이션은

비밀번호를 평문으로 저장하는 경우가 거의 없고 길이가 고정된 해시를 저장하고 있습니다.

때문에 유출된 데이터 등으로부터 얻은 해시화된 비밀번호 목록의 경우에 레인보우 테이블이 더욱 효율적일 수 있습니다.

우선 사전에 연산된 비밀번호 해시 목록을 기존의 데이터와 비교해 평문 형식의 올바른 비밀번호를 찾습니다.

해시된 데이터가 미리 계산되기 때문에 레인보우 테이블을 사용하는 것이

무차별 대입보다 속도 적으로 훨씬 빠릅니다.

레인보우 테이블은 비밀번호 해시가 솔팅(Salting) 되어 있고 솔트 값이 너무 커서

비밀번호의 전체적인 복잡성이 증가할 때는 효과적이지 못합니다.

그래서 해시된 사용자 비밀번호를 데이터베이스에 저장하는 것 외에

솔팅을 보안 방어책으로 사용하는 것입니다.

솔팅을 제대로 적용하면 비밀번호 데이터베이스가 유출되더라도

실제로 해커가 사용자 비밀번호를 본래의 평문 형식으로 되돌리는 것이 불가능하기 때문입니다.

솔팅과 해시 평문 등 어려운 단어로 알아듣지

못하시더라도 지금은 괜찮습니다.

추후 제가 설명 글을 작성해 드리도록 하겠습니다.

해당 방법은 보안을 위한 연습만 하시길 바라며

악의적인 해킹은 절대 삼가 주시기 바랍니다.


궁금하신 사항은 댓글에 남겨주세요
댓글에 남겨주신 내용은
추후 정리해서 올려드리겠습니다
이웃 신청하시면 업로드 시 알려드릴게요!
-
조금이라도 도움이 되셨다면
공감&댓글 부탁드리겠습니다
감사합니다!

반응형

+ Recent posts