솔라리스에서 네트워크 관련 커널 파라미터의 확인 및 변경을 위해서는 ndd 명령어를 사용한다. ndd 명령어의 사용법은 다음과 같다.
 // TCP/IP 커널 변수 값 확인 방법
# ndd /dev/<driver> <parameter>
// 각 드라이버(TCP, UDP, IP, ARP) 변수 확인 방법
# ndd /dev/<driver> \?
// 커널 변수 설정 방법
# ndd -set /dev/<driver> <parameter> <value>

○ 보안성 향상을 위한 ARP 커널 파라미터 조정
arp poisoning 또는 arp spoofing 공격의 피해를 조금이라도 줄일 수 있는 방법으로 arp cache의 flush interval을 줄이는 방법이 있다. 하지만 근본적인 해결책은 될 수 없다.
# ndd -set /dev/arp arp_cleanup_interval <time>
<time>은 millisecond 단위로 입력해 준다.

○ 보안성 향상을 위한 IP 커널 파라미터 조정
- IP forwarding 기능 비활성화
  IP forwarding은 시스템에 두 개 이상의 NIC(Network Interface Card)가 설치되어 있을 경우 둘 사아의 IP 패킷을 라
 우팅 하는 것으로 보안을 위해 비활성화 하는 것이 좋다.
#ndd -set /dev/ip ip_forwarding 0
- multihomed server 패킷 포워딩 비활성화
 하나의 네트워크로부터 또 다른 네트워크 인터페이스(multihomed 환경)로 발생되는 모든 패킷을 차단
#ndd -set /dev/ip ip_strict_dst_multihoming 0
- Directed Broadcasting 비활성화
directed broadcasting은 외부 네트워크의 한 시스템으로부터 다른 네트워크의 모든 시스템에 보내지는 패킷들을 말한다. directed broadcasting의 경우 smurf 공격(소스 IP 주소를 공격자의 주소로 변경 후 원격 네트워크로 브로드캐스트 패킷을 보내는 공격)이 가능하게 되므로 비활성화 한다.
#ndd -set /dev/ip ip_forward_directed_broadcasts 0
- Source routing 비활성화
static source routing의 경우 출발지부터 목적지 까지 모든 HOP의 주소를 지정하는 것이 가능하며, loose source routing의 경우 몇몇 HOP의 주소 지정을 하고 나머지 HOP은 자유롭게 도달하는 것이 가능하다. 이런 source routing을 사용할 경우 보안 체계를 우회하는 것이 가능하므로 비활성화 한다.
#ndd -set /dev/IP ip_forward_src_routed 0

○ 보안성 향상을 위한 TCP 커널 파라미터 조정
대표적인 보안과 관련된 TCP 커널 파라미터의 경우 SYN flooding과 관련된 파라미터를 들 수 있다. SYN flooding 공격은 TCP 연결 성립을 위한 3-way handshaking 과정 중에 클라이언트 측에서 서버의 SYN, ACK 패킷에 대하여 ACK 패킷을 보내지 않고 계속적으로 SYN 패킷을 보냄으로써 모든 TCP 소켓 리소스를 고갈시켜 버린다. SYN flooding 공격이 발생했을 경우 시스템의 네트워크 상태를 보면 다음과 같다.
#netstat -an -f inet | grep SYN_RCVD | more

127.0.0.1.80 172.16.10.1.14059 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.33931 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.61628 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.37302 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.27227 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.8350 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.52729 0 0 9112 0 SYN_RCVD

127.0.0.1.80 172.16.10.1.6407 0 0 9112 0 SYN_RCVD

위와 같이 SYN_RCVD 까지만 진행된 TCP 연결을 볼 수 있으며, 시스템이 정상적인 상황에서는 SYN_RECV 상태의 연결이 거의 0에 가깝다. SYN flooding에 대응하기 위해서는 다음과 같은 파라미터 들을 수정해 준다.
- TCP abort timer 단축
tcp_ip_abort_cinterval 커널 파라미터를 이용하여 abort time을 단축시켜 준다. 입력단위는 millisecond이며 기본
값은 180초 이며 아래 예는 60초로 설정할 경우이다.
#ndd -set /dev/tcp tcp_ip_abort_cinterval 60000
- TCP queue의 크기 조정
연결 확립이 되지 않은 패킷에 대한 큐 크기를 지정해 주는 tcp_conn_req_max_q0 의 값과 연결이 성립된 패킷에 대한 tcp_conn_req_max_q(소스 정보가 노출되기 때문에 SYN flooding 공격에서는 잘 사용 안함)에 대한 크기를 조정해 준다.
#ndd -set /dev/tcp tcp_conn_req_max_q0 2048
#ndd -set /dev/tcp tcp_conn_req_max_q <size>

참조 : http://coffeenix.net/doc/security/Solaris_Network_Kernel_Tunning_for_Security.html
                                                                +---------------------------------------+
                                                                | Infinite
Flow..                                       |
                                                                | mail :
geekspark@gmail.com                |
                                                                | Blog : 
http://sinun.tistory.com               |
                                                                | CISSP                                                 |
                                                                +---------------------------------------+
신고
Posted by By. PHR34K

티스토리 툴바