출발지 네트워크가 ‘13.13.30.0/24’인 트래픽이 내부 로컬 네트워크 ‘13.13.10.1’로 Telnet 접근을 차단하여라. (목적: 이 규칙의 주요 목적은 내부 네트워크 '13.13.10.1'로의 무단 Telnet 접근을 차단하는 것입니다. Telnet 프로토콜은 암호화되지 않은 통신을 사용하기 때문에, 민감한 데이터가 노출될 위험이 있습니다. 따라서, 특정 출발지 네트워크 '13.13.30.0/24'에서 오는 Telnet 트래픽을 차단함으로써, 무단 접근과 데이터 유출을 방지하고 네트워크 보안을 강화합니다.) 명령어: access-list 110 deny tcp 13.13.30.0 0.0.0.255 host 13.13.10.1 eq 23
외부에서 내부 서버 ’13.13.10.100’으로 Ping이 되는 것을 차단하여라. 단, '13.13.10.100' 서버는 외부로 Ping이 되어야 한다. (목적: 이 규칙은 외부에서 내부 서버 '13.13.10.100'으로의 Ping(즉, ICMP 'echo' 요청)을 차단하여, 서버가 네트워크 서비스 거부(DoS) 공격이나 다른 형태의 네트워크 공격에 노출되는 것을 방지합니다. 동시에, 서버가 외부로 Ping을 보낼 수 있도록 설정하여 네트워크 연결 상태를 확인할 수 있게 합니다.) 명령어: access-list 110 deny icmp any host 13.13.10.100 echo 출발지 네트워크가 ‘13.13.20.0/24’인 트래픽이 내부 로컬 웹서버 ‘13.13.10.100’으로 접근하는 것을 차단하여라. 목적: 이 설정은 '13.13.20.0/24' 네트워크에서 오는 트래픽이 내부 로컬 웹서버 '13.13.10.100'으로의 접근을 차단합니다. 이는 웹 서버를 무단 접근과 잠재적인 공격으로부터 보호하며, 웹 서버의 데이터 보안과 안정성을 유지하는 데 중요합니다. 명령어: access-list 110 deny tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 eq 80 위에 조건을 제외한 나머지 트래픽은 허용한다.
위의 조건을 구성할 때에는 최대한 간결하게 ACL를 구성하며, ACL을 R1 Serial 1/0에 적용하여라.
명령어
conf t
(출발지 네트워크가 ‘13.13.30.0/24’인 트래픽이 내부 로컬 네트워크 ‘13.13.10.1’로 Telnet 접근을 차단)
access-list 110 deny tcp 13.13.30.0 0.0.0.255 host 13.13.10.1 eq 23
(외부에서 내부 서버 ’13.13.10.100’으로 Ping이 되는 것을 차단. 단, '13.13.10.100' 서버는 외부로 Ping 가능하도록 설정)
access-list 110 deny icmp any host 13.13.10.100 echo
(출발지 네트워크가 ‘13.13.20.0/24’인 트래픽이 내부 로컬 웹서버 ‘13.13.10.100’으로 접근하는 것을 차단)
access-list 110 deny tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 eq 80
(위에 조건을 제외한 나머지 트래픽은 허용)
access-list 110 permit ip any any
!
(위의 조건을 구성할때에는 최대한 간결하게 ACL를 구성하며, ACL을 R1 Serial 1/0 에 적용)
int s1/0
ip access-group 110 in
확인
show ip access-lists
(해당 기능을 통해 아래 ICMP 스마트 공격을 방어할 수 있습니다.)
(ICMP 스마트 공격)
SA 13.13.10.100
DA 13.13.30.255
ICMP Echo-Reply
--------------------
SA 13.13.30.X
DA 13.13.10.100
규칙 번호
유형
출발지 주소
목적지 주소
프로토콜
포트
동작
110
Deny
13.13.30.0/24
13.13.10.1
TCP
23
Telnet 접근 차단
110
Deny
Any
13.13.10.100
ICMP
-
외부에서의 Ping 차단
110
Deny
13.13.20.0/24
13.13.10.100
TCP
80
웹 접근 차단
110
Permit
Any
Any
IP
-
모든 트래픽 허용
-
Apply ACL
-
-
-
-
R1 Serial 1/0 인터페이스에 적용
이 표는 각 ACL 규칙의 세부 사항을 명확하게 보여줍니다.
각 규칙은 특정 트래픽 유형을 차단하거나 허용하도록 설정되어 있으며,
마지막으로 이러한 규칙들이 R1 라우터의 Serial 1/0 인터페이스에 적용됩니다.
이 실습은 네트워크 보안을 강화하는 데 필수적인 ACL의 구성 및 적용 방법을 보여줍니다. 이를 통해 특정 네트워크의 접근을 제어하고, 민감한 자원을 보호할 수 있습니다. 또한, 위험한 네트워크 트래픽을 효과적으로 차단하여 네트워크의 안전성을 유지할 수 있습니다.
절차 지향 절차 지향 프로그래밍에 쓰이는 언어를 절차 지향 언어라고 하며, 각 개체를 순차적으로 처리하여 프로그램 전체가 유기적으로 연결되어야 합니다. 자동차 제조를 예로 들자면, 자동차는 엔진, 차체, 핸들, 의자, 바퀴 순으로 차례대로 만들어져야 하며서로 분리되어도 안 되고, 순서가 틀려도 안 됩니다. 대표적인 예로는 C 언어가 있습니다.
Chat GPT는 이렇게 설명합니다. 객체지향 언어 (OOP):
"객체" 중심: 여기서 객체는 데이터(속성)와 이 데이터를 처리하는 함수(메서드)를 포함하는 단위입니다.
재사용성과 확장성: 코드를 재사용하기 쉽고, 시스템을 확장하거나 수정하기 쉽습니다. 예를 들어, 클래스(객체를 정의하는 틀)를 사용하여 비슷한 객체를 쉽게 생성할 수 있습니다.
예시 언어: Java, Python, C++
객체지향 객체지향언어란 프로그램을 다수의 객체로 만들고, 이들끼리 서로 상호작용하도록 만드는 프로그래밍 언어입니다. 먼저 객체를 예를 들자면, 컴퓨터에 쓰이는 모든 부품(모니터, 키보드, 스피커 등)과 컴퓨터가 제공하는 모든 기능 (화면이 켜짐, 소리가 남 등)이 전부 객체입니다. 각 컴퓨터의 모든 부품 (객체)를 적절히 연결하고 조립해서 컴퓨터가 제대로 작동하도록 만드는 것이라고 볼 수 있습니다.
우리가 익히 들어 알고 있는 자바, c++, 파이썬 이외에도 최초의 객체지향언어인 시뮬라67, 비주얼 베이직 닷넷, 액션스크립트, 스위프트 등 그 종류는 다양합니다.
Chat GPT는 이렇게 설명합니다. 절차지향 언어:
절차/함수 중심: 프로그램은 함수의 집합으로 구성되며, 각 함수는 일련의 연산을 수행합니다.
순차적 실행: 프로그램은 코드가 작성된 순서대로 위에서 아래로 실행됩니다.
효율성: 일반적으로 시스템 자원을 효율적으로 사용하며, 실시간 시스템이나 하드웨어에 가까운 프로그래밍에 적합합니다.
예시 언어: C, Fortran, Pascal
(아주 간단히 아래 그림으로 대충 이해하시고 읽어주시기 바랍니다)
그렇다면 대표적으로 추려본 각 프로그래밍 언어의 특징은 무엇이며 스타일에 따른 언어 선택은 어떻게 해야 할지 매칭해 보았습니다.
프로그래밍 언어
패러다임
개발자 성향
스타일
Java
객체지향
객체지향적 사고를 선호하는 개발자, 강한 타입 시스템과 긴밀한 메모리 관리를 중시하는 개발자
크로스 플랫폼 애플리케이션 개발, 대형 엔터프라이즈 시스템, 안드로이드 앱 개발
JavaScript
주로 객체지향, 일부 절차지향
유연하고 동적인 언어에 적응력이 있는 개발자, 프론트엔드 및 백엔드 모두에서 작업하기를 원하는 개발자 (Full-Stack)
웹 개발, Node.js를 이용한 서버 사이드 프로그래밍, 인터랙티브 웹 인터페이스
C
절차지향
저수준 프로그래밍에 관심 있는 개발자, 시스템 수준의 이해와 세밀한 제어를 추구하는 개발자
시스템 프로그래밍, 임베디드 시스템, 성능이 중요한 애플리케이션
C#
객체지향
객체지향 프로그래밍을 선호하는 개발자, 마이크로소프트 기술 스택과 통합된 개발 환경을 선호하는 개발자
.NET 프레임워크를 이용한 애플리케이션 개발, 게임 개발 (Unity), 윈도우 기반 애플리케이션
C++
객체지향 및 절차지향
객체지향과 절차지향의 혼합을 선호하는 개발자, 복잡하고 성능 중심적인 시스템을 개발하는 개발자
고성능 컴퓨팅, 게임 개발, 시스템/애플리케이션 소프트웨어 개발
Python
주로 객체지향, 일부 절차지향
가독성과 간결함을 중시하는 개발자, 다양한 영역에 적용 가능한 스크립트 언어를 선호하는 개발자
웹 개발, 데이터 과학과 인공지능, 간단한 스크립트 작성에서부터 복잡한 애플리케이션 개발까지
이번에는 개발 자니까 직접 코드가 어떤 형태로 되어있는지 보면서 비교 한번 해볼까요? 아래는 대표적인 다른 언어 딱 두 가지 C언어와 Python입니다.