지질 개량 호스트
동일한 네트워크 세그먼트에 두 개의 호스트 A 와 B 가 있고 다른 네트워크 세그먼트에 호스트 X 가 있다고 가정합니다. B a 에게 일정한 특권을 부여하다. A 와 동일한 권한을 얻기 위해 X 는 다음과 같은 스푸핑 공격을 가했다. 첫째, X 는 A 를 가장하여 호스트 B 에 임의 일련 번호가 있는 SYN 패킷을 보냈다 ... 호스트 B 응답, A 에게 응답 패킷을 보내는 것은 원래 일련 번호에 1 을 더한 것과 같다. 하지만 이때 호스트 A 는 이미 호스트 X 가 서비스 거부 공격을 이용해' 침수' 하여 호스트 A 의 서비스 실패를 초래했다. 따라서 호스트 A 는 B 가 보낸 패킷을 버립니다 ... 세 번의 핸드셰이크를 완료하려면 X 가 B 가 A 로 보낸 패킷의 일련 번호에 1 을 더한 응답 패킷을 B 에 다시 보내야 합니다. 이때 호스트 X 는 호스트 B 의 패킷 (동일한 네트워크 세그먼트에 있지 않기 때문) 을 감지하지 못하고 TCP 일련 번호 추정 방법만 사용하여 응답 패킷의 일련 번호를 타겟 B 로 보냅니다. 추측이 정확하다면 B 는 수신된 ACK 가 내부 호스트 A 에서 온 것으로 간주합니다. 이제 X 는 호스트 B 에 대한 호스트 A 의 권한을 받고 이러한 서비스를 공격하기 시작합니다.
소스 IP 주소 스푸핑을 방지하기 위해 다음과 같은 조치를 취하여 이러한 공격으로부터 시스템을 최대한 보호할 수 있습니다.
주소 기반 신뢰 정책 포기: 이 공격을 중지하는 매우 쉬운 방법은 주소 기반 인증을 포기하는 것입니다. 클래스 r 원격 호출 명령은 허용되지 않습니다. 삭제; Rhosts 파일; /etc/hosts.equiv 파일을 비웁니다. 이로 인해 모든 사용자는 텔넷, ssh, skey 등과 같은 다른 원격 통신 수단을 사용해야 합니다.
암호화 방법 사용: 네트워크로 전송하기 전에 패킷을 암호화할 수 있습니다. 암호화 프로세스는 현재 네트워크 환경을 적절히 변경해야 하지만 데이터 무결성과 신뢰성을 보장합니다.
패킷 필터링: 네트워크 내부 및 외부에서 동일한 IP 주소를 가진 연결 요청을 거부하도록 라우터를 구성할 수 있습니다. 또한 패킷의 IP 주소가 로컬 네트워크에 없는 경우 라우터는 로컬 네트워크 호스트의 패킷을 보내면 안 됩니다.
한 가지 주의해야 할 점은 라우터가 특정 유형의 패킷이 내부 네트워크에 도달하는 것을 막을 수 있다는 것입니다. 그러나 테스트 소스 주소를 분석하여 작동합니다. 따라서 내부 네트워크에서 온 것으로 주장하는 외부 패킷만 필터링할 수 있습니다. 네트워크에 외부 신뢰할 수 있는 호스트가 있는 경우 라우터는 다른 사람이 해당 호스트를 위조하여 IP 스푸핑을 하는 것을 막을 수 없습니다.
2.2 소스 라우팅 스푸핑 공격
일반적으로 패킷의 시작점에서 끝점까지의 경로는 두 점 사이에 있는 라우터에 의해 결정됩니다. 패킷 자체는 어디로 가야 할지, 어떻게 가야 할지 모른다. 소스 라우팅을 사용하면 패킷 발신자가 패킷이 사용할 경로를 패킷에 쓸 수 있으므로 패킷이 예측할 수 없는 경로를 따라 대상 호스트에 도달할 수 있습니다. 이 공격의 형태는 위에서 언급한 소스 IP 스푸핑의 예시에서 여전히 제공됩니다.
호스트 A 는 호스트 B 의 일부 권한을 누리고, 호스트 X 는 호스트 A 로 가장하여 호스트 B 의 일부 서비스를 받기를 원합니다 (IP 가 aaa.bbb.ccc.ddd 라고 가정). 먼저 공격자는 X 에 가장 가까운 라우터를 수정하여 이 라우터에 도달하는 대상 주소 aaa.bbb.ccc.ddd 가 포함된 패킷이 호스트 X 가 있는 네트워크를 대상으로 하도록 합니다. 그런 다음 공격자 X 는 IP 스푸핑을 사용하여 소스 라우팅 (가장 가까운 라우터 지정) 패킷을 호스트 B 에 보냅니다. B 가 패킷을 반송하면 변경된 라우터로 전송됩니다. 이를 통해 침입자는 호스트 이름으로 특수 경로를 통해 보호된 데이터를 얻을 수 있습니다.
소스 라우팅 스푸핑 공격을 방지하기 위해 일반적으로 다음 두 가지 조치가 사용됩니다.
이러한 공격에 대처하는 가장 좋은 방법은 외부 네트워크에서 내부 호스트라고 주장하는 메시지를 폐기할 수 있도록 라우터를 구성하는 것입니다.
라우터에서 소스 경로를 끕니다. No IP source-route 명령을 사용합니다.
3. 서비스 거부 공격 및 예방 조치
서비스 거부 공격에서 공격자는 너무 많은 서비스를 로드하고 상대방의 모든 자원을 사용하여 다른 사용자가 사용할 수 있는 추가 자원이 없습니다. SYN Flood 공격은 전형적인 서비스 거부 공격이다.
SYN Flood 는 일반적으로 반오픈 접속 공격이라고도 하는 소스 IP 주소에 대한 스푸핑 공격의 전주곡이다. 우리가 표준 TCP 연결을 할 때마다 세 번의 악수 과정이 있다.
SYN Flood 구현은 처음 두 단계뿐입니다. 서버가 요청자의 SYN 을 받고 SYN-ack 확인 메시지를 보내면 소스 주소 스푸핑 등의 수단으로 인해 요청자는 ACK 응답을 받지 못합니다. 이렇게 하면 서버는 일정 기간 동안 요청자로부터 ACK 메시지를 받을 때까지 대기 중이며 서버에 사용할 수 있는 TCP 접속이 제한됩니다. 악의적인 공격자가 이러한 연결 요청을 빠르고 지속적으로 전송하면 서버의 시스템에서 사용할 수 있는 리소스와 네트워크를 사용할 수 있습니다.
서비스 거부 공격을 방지하기 위해 다음과 같은 예방 조치를 취할 수 있습니다.
정보 홍수 공격의 경우, 이러한 공격을 방지하기 위해 무한 시퀀스를 생성할 수 있는 서비스를 종료해야 합니다. 예를 들어 서버측에서 모든 ICMP 패킷을 거부하거나 이 네트워크 세그먼트의 라우터에서 ICMP 패킷의 대역폭을 제한하여 일정 범위 내에서 제어할 수 있습니다.
Syn 데이터 세그먼트 공격을 방지하려면 시스템에 적합한 커널 매개변수를 설정하여 시간 초과 Syn 요청 연결 패킷을 강제로 재설정하도록 하는 동시에 시간 초과 상수를 줄이고 대기 대기열을 늘려 시스템이 잘못된 SYN 요청 패킷을 신속하게 처리할 수 있도록 해야 합니다.
이 네트워크 세그먼트의 라우터에서 Syn 반개방 패킷의 트래픽과 수를 제한하는 등 일부 구성 조정을 수행하는 것이 좋습니다.
라우터 전면에서 필요한 TCP 차단을 수행하는 것이 좋습니다. TCP 3 회 핸드셰이크 프로세스를 완료한 패킷만 네트워크 세그먼트에 들어갈 수 있으므로 해당 세그먼트 내의 서버를 이러한 공격으로부터 효과적으로 보호할 수 있습니다.
결론적으로 서비스 거부 공격을 완전히 근절하려면, 반드시 근원을 추적하여 공격 기계와 공격자를 찾아야 한다. 공격자를 추적하는 것은 쉽지 않다. 일단 공격을 멈추면 그를 찾기가 어렵다. 유일한 실행 가능한 방법은 라우터의 정보와 공격 패킷의 특성에 따라 공격의 출처를 단계별로 추적하는 것입니다. 이럴 때는 각급 부문의 협조가 있어야만 완성할 수 있다.
4. 다른 사이버 공격에 대한 예방 조치.
프로토콜 공격과 서비스 거부 공격은 해커가 자주 사용하는 공격 방식이다. 그러나 컴퓨터 네트워크 기술의 급속한 발전에 따라 사이버 공격 수단이 끊임없이 변화하고 새로운 공격 기술이 속출하고 있다. 다음은 네트워크 스니핑 및 버퍼 오버플로에 대한 공격 원리와 예방 조치에 대해 설명합니다.
4. 1 네트워크 스니핑 예방 조치
네트워크 스니핑은 네트워크 인터페이스가 호스트에 속하지 않는 데이터를 수신하도록 하는 것입니다. 컴퓨터 네트워크는 일반적으로 * * * 공유 채널에 구축되며 이더넷은 * * * 공유 채널이 있는 네트워크입니다. 데이터 헤더에는 대상 호스트의 하드웨어 주소가 포함되어 있으며 하드웨어 주소가 일치하는 시스템만 패킷을 수신할 수 있습니다. 모든 패킷을 수신할 수 있는 시스템을 하이브리드 노드라고 합니다. 일반적으로 계정 및 암호와 같은 정보는 이더넷에서 일반 텍스트로 전송됩니다. 일단 그들이 잘못된 노드에서 해커의 냄새를 맡으면 사용자는 해를 입을 수 있다.
네트워크 스니핑 공격의 경우 다음과 같은 조치를 취하여 이를 방지할 수 있습니다.
네트워크 세그먼트: 네트워크 세그먼트에는 기본 장치와 회선을 공유하는 스위치, 동적 허브, 브리지와 같은 시스템 세트가 포함되어 있어 스니핑을 방지하기 위해 데이터 흐름을 제한할 수 있습니다.
암호화: 데이터 스트림의 일부 중요한 정보는 암호화할 수 있지만 애플리케이션 계층만 암호화할 수 있지만 네트워크 및 운영 체제와 관련된 대부분의 중요한 정보는 보호되지 않습니다. 선택하는 암호화 방법은 정보 보안 수준과 네트워크 보안 수준에 따라 다릅니다.
일회성 비밀번호 기술: 비밀번호는 네트워크를 통해 전송되지 않고 양끝이 일치합니다. 클라이언트는 서버에서 얻은 질문과 자신의 암호를 사용하여 새 문자열을 계산하고 서버에 반환합니다. 서버에서 비교 알고리즘을 사용하여 일치시킵니다. 일치하는 경우 모든 도전과 문자열을 한 번만 사용하여 연결을 설정할 수 있습니다.
오류 노드 비활성화: 오류를 지원하지 않는 네트워크 카드를 설치하면 일반적으로 IBM 호환 시스템의 스니핑을 방지할 수 있습니다.
4.2 버퍼 오버플로 공격 및 예방 조치
버퍼 오버플로 공격은 시스템 공격 수단입니다. 길이를 초과하는 내용을 프로그램 버퍼에 기록하여 버퍼 오버플로를 통해 프로그램 스택을 파괴하고 프로그램이 다른 명령을 수행하도록 하여 공격 목적을 달성합니다. 물론, 단지 버퍼에 물건을 넣는 것만으로는 공격 목적을 달성할 수 없다. 가장 일반적인 방법은 버퍼 오버플로를 만들어 프로그램에서 사용자 셸을 실행한 다음 셸을 통해 다른 명령을 실행하는 것입니다. 프로그램에 루트 권한이 있으면 공격자는 시스템에서 모든 작업을 수행할 수 있습니다.
버퍼 오버플로는 시스템에 큰 피해를 입혔습니다. 이러한 공격을 효과적으로 방지하기 위해서, 우리는 다음과 같은 몇 가지 사항을 해야 한다.
프로그램 포인터 무결성 검사: 참조되기 전에 프로그램 포인터가 변경되었는지 여부를 감지합니다. 공격자가 프로그램의 포인터를 성공적으로 변경하더라도 시스템에서 포인터 변경을 미리 감지했기 때문에 이 포인터는 사용되지 않습니다.
스택 보호: 함수 활동 레코드의 반환 주소를 검사하여 프로그램 포인터 무결성 검사를 제공하는 컴파일러 기술입니다. 스택에서 함수의 반환 주소 뒤에 추가 바이트를 추가합니다. 함수가 반환될 때 먼저 추가 바이트가 변경되었는지 확인합니다. 버퍼 오버플로우 공격이 발생하면 함수가 반환되기 전에 쉽게 감지할 수 있습니다. 그러나 공격자가 이러한 추가 바이트의 존재를 예견하고 오버플로우 과정에서 같은 방식으로 제조할 수 있다면 스택 보호 감지를 성공적으로 건너뛸 수 있습니다.
배열 경계 검사: 배열의 모든 읽기 및 쓰기 작업이 올바른 범위 내에 있는지 확인해야 합니다. 가장 직접적인 방법은 모든 배열 작업을 확인하는 것입니다. 일반적으로 몇 가지 최적화 기술을 사용하여 검사 횟수를 줄일 수 있습니다. 현재 Compaq C 컴파일러, Jones &;; Kelly C 배열 경계 검사, Purify 메모리 액세스 검사 등