CentOS 6 에서 본딩 (bonding) 구성

리눅스/Network|2015. 1. 26. 17:47
반응형

1. 모듈 적재

[root@sysdocu ~]# modprobe bonding

 

확인

[root@sysdocu ~]# lsmod |grep bonding

 

※ 커널에서 bonding 기능을 지원 해야함

 

 

2. 설정

[root@sysdocu ~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
USERCTL=no
BOOTPROTO=none
IPADDR=192.168.10.2
NETMASK=255.255.255.0
GATEWAY=220.90.215.1
GATEWAYDEV=bond0
ONBOOT=yes

 

[root@sysdocu ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

 

[root@sysdocu ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

 

[root@sysdocu ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth2

DEVICE=eth2
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

 

[root@sysdocu ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth3

DEVICE=eth3
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

 

 

3. 구동

[root@sysdocu ~]# /etc/init.d/network restart

 

확인

[root@sysdocu ~]# ifconfig

 

반응형

댓글()

nf_conntrack: table full, dropping packet.

리눅스/Network|2015. 1. 26. 17:47
반응형
[요약]
커널 2.6.x 버전 이상에서...

현재 nf_conntrack 접속량 확인
cat /proc/sys/net/netfilter/nf_conntrack_count

수용 가능한 접속량 확인
# cat /proc/sys/net/nf_conntrack_max

무한정 설정
echo 0 > /proc/sys/net/nf_conntrack_max

> 접속량을 더 수용하기 때문에 cpu load 가 좀더 올라간다.
   connection 이 정상 처리되는것이므로 상황에 따라 약간 올라가는 정도는 무시해도 된다.

========================================



# 시스템에서 처리할수 있는 패킷이 초과되면서 이후 패킷에 대해서 drop처리되는 메세지
   ping 으로 확인시 시스템이 다운된것처럼 체크됨
Jul 31 18:41:00 www kernel: nf_conntrack: table full, dropping packet.
Jul 31 18:41:06 www kernel: nf_conntrack: table full, dropping packet.
Jul 31 18:41:10 www kernel: nf_conntrack: table full, dropping packet.
Jul 31 18:41:15 www kernel: nf_conntrack: table full, dropping packet.
 
# conntrack 모듈이란....
2.6.x 버전이상에는... nf_conntrack 이라는 명칭이며....이하는 ip_conntrack
ESTABLES 관련이 있으며 현접속상태에 대한 정보를 일정시간동안 시스템에서 기억하는 모듈이다.
대게 FTP 접속하고 관련이 있는데....FTP 특성상 접속을 맺는포트 (20번) 데이타 전송포트 (21번)으로
분리되어있다보니... 세션이 이루어지고 데이타 전송되는 SRC IP / DST IP 정보를 담고있어야 된다.
이에 CONNTRACK 테이블에 해당 정보를 가지고 있음....
ex)
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# 임시방편으로는 conntrack 테이블갯수를 늘려준다...
[monawa.com, /proc/net > cat /proc/sys/net/nf_conntrack_max
65536   ==> 기본...
아래와 같이 늘려주면 되나....접속량자체가 많은것이므로 문제해결에 대한방법은아니며 해당 커널변수를
무한정으로 그리고 수치를 크게 늘리게 되면 시스템에 타 기능에 문제가 발생될 소지가 많음
echo 100000 >  /proc/sys/net/nf_conntrack_max
echo 0 > /proc/sys/net/nf_conntrack_max  ==> 무한정
 
# nf_conntrack 관련모듈
lsmod |grep conntrack
nf_conntrack_ipv4      17225  4
nf_conntrack_ftp       16489  0
nf_conntrack           65217  3 nf_conntrack_ipv4,xt_state,nf_conntrack_ftp
nfnetlink              13321  2 nf_conntrack_ipv4,nf_conntrack

# nf_conntrack 현재 접속카운트
watch -d cat /proc/sys/net/netfilter/nf_conntrack_count

# nf_conntrack 접속정보를 담고있는 부분
[monawa.com, /proc/net >pwd
/proc/net
[monawa.com, /proc/net >cat nf_conntrack

#### 시스템 커널변수값 수정사항 ####
[monawa.com, /proc/sys/net/netfilter >cat nf_conntrack_tcp_timeout_established
432000
[monawa.com, /proc/sys/net/netfilter >echo 3600 >  nf_conntrack_tcp_timeout_established
# 초기값 65535
echo 100000 >  /proc/sys/net/nf_conntrack_max
# 초기값 60
echo 30 >  tcp_fin_timeout
##########################################
 
[출처] 구로 가산 디지털 비밀단지 | 던져버려 (http://www.beemil.net/bbs/board.php?bo_table=blog&wr_id=309&page=7)


반응형

댓글()

SYN 숫자 체크후 HOST_IP 차단쉘 / syn flooding

리눅스/Network|2015. 1. 26. 17:46
반응형

# SYN 숫자 체크후 HOST_IP 차단쉘

 

지금 이 쉘을 보면 웃음이 난다.

한참 SYN flooding 공격으로 고생하고 있을때 막을 수 있는 여러가지 고민을 하고 적용을 했지만

처리를 못했다. 서버는 계속 죽고 서비스는 해야겠고 일단 임시적으로 방법을 만들어 놓고 원인을 분석하고

원천적으로 막을 수 있는 방법을 생각할 수 밖에 없었다.

이 쉘을 만들 당시 공격으로 인해 스트레스도 많이 받고 힘들었지만 어느정도 이 쉘이 시간을 벌어 줬고

원인을 찾을 수 있었다.

필요에 따라 수정 해서 사용 할 수 있는 쉘이다.

 

 

#!/bin/sh 
# by ForSpeed | i@minsu.net


TODAY=$(date +%Y%m%d.%H:%M:%S) 
LOGDIR="/root/bin/syn_log" 
LIST="$LOGDIR/syn_list" 
netstat -an |grep SYN |awk '{print $5}' | awk -F : '{print $1}' | sort -n -u | grep -v 59.9.140.34 > $LOGDIR/syn_list

for i in `cat $LIST` 
do 
SYN_NUM=`netstat -an |grep SYN |grep $i|wc -l` 
if [ $SYN_NUM -gt 50 ]; then 
X=`/sbin/iptables -L -n |grep $i |awk '{print $4}' |sort -u ` 
if [ $X = $i ]; then 
echo "$i already insert iptalbes rule" 
else 
echo "$TODAY $i DROP" >> $LOGDIR/drop_list.log 
/sbin/iptables -I INPUT -s $i -j DROP 
fi 
fi 
done 

 

 

[출처] 항상 행복한 사람 | 심민수 (http://blog.minsu.net/130037696585)

반응형

댓글()

SYN Fooding공격을 감지하여 메일로 받기

리눅스/Network|2015. 1. 26. 17:46
반응형

고의가 아닌 클라이언트 컴퓨터의 플러그인 문제등으로 과다 패킷을 생성하여 SYN_Flooding 공격으로 오해할 경우도 있음을 참고해야 한다

#!/usr/bin/perl

$TASK = `netstat -na|grep SYN_RECV`;
$HOSTNAME = `/bin/hostname`;
$TO_MAIL = 'hkbyun@simplexi.com';
$SUBJECT = "$HOSTNAME SYN_FLOODING 공격 감지";
$MAIL_PROGRAM = "/usr/sbin/sendmail";

if ($TASK) {
$TASK_CONFIRM = `netstat -na|grep SYN_RECV|wc -l`;

if ($TASK_CONFIRM > 20) {
`/etc/rc.d/init.d/httpd stop`;
`/etc/rc.d/init.d/httpd start`;
$HTTP_DONE = "httpd was Refreshed!!n";
}

open(MAIL, "|$MAIL_PROGRAM -t");
print MAIL "To: $TO_MAIL n";
print MAIL "Subject: $SUBJECT nn";
print MAIL "$HOSTNAME Server is Attaked  by SYN_Flooding!!!n";
print MAIL "SYN_Flooding Process Number :$TASK_CONFIRM n";
print MAIL "$HTTP_DONEn";
print MAIL "$TASK n";
close(MAIL);

 

 

[출처] SYN_Flooding 공격을 감지|작성자 소룡매냨

반응형

댓글()

ip_conntrack 사용 확인

리눅스/Network|2015. 1. 26. 17:46
반응형

iptables 구문에

 

-m state --state 의 상태 추적 구문을 사용한다면,

 

ip_conntrack 모듈을 사용하게 되고 table에 캐쉬값에 일정시간 그 결과 저장합니다.

 

이를 확인해 볼 수 있는데...

 

[root@localhost bind-9.2.4]# grep ^tcp /proc/net/ip_conntrack | awk '{print $4}' | sort | uniq -c

    1 ESTABLISHED

    6 TIME_WAIT

 

watch를 이용해서 실시간 모니터링으로 사용할 수도 있습니다.

[root@localhost ~]# watch -d -n3 'grep ^tcp /proc/net/ip_conntrack | awk '"'"'{print $4}'"'"' | sort | uniq -c'

 

awk '"'"'{print $4}'"'"' 를 빼면, state, src ip, dst ip, sport, dport, packet, bytes 까지 확인 가능합니다.

[root@localhost ~]# watch -d -n3 'grep ^tcp /proc/net/ip_conntrack | sort | uniq -c'

 

 Every 3.0s: grep ^tcp /proc/net/ip_conntrack | sort | uniq -c

Mon Oct 29 05:06:25 2007

    1 tcp        6 431997 ESTABLISHED src="220.90.215.4 dst=222.122.156.22 sport=2952 dport=22 packets=4451 bytes=292473

src=222.122.156.22 dst=220.90.215.4 sp

ort=22 dport=2952 packets=4251 bytes=489998 [ASSURED] use=1

 

간략하게 나마 서버 모니터링이 가능하게 됩니다...

 

아니면 grep ^tcp /proc/net/ip_conntrack | awk '{print $4}' | sort | uniq -c 구문으로 스크립트를 작성하여,

데몬에 넣고 일정시간마다 리포트를 받게 설정하셔도 모니터링에 유용할 듯...

 

 

[출처] DNS전문가 | 오테 (http://cafe.naver.com/dnspro.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=2839)

반응형

댓글()

TCP TIMEWAIT 값 줄이기

리눅스/Network|2015. 1. 26. 17:46
반응형

원작자는 리눅스원3기 수료생 심민수님 글이며 5기 임태곤군이 쓴글입니다. 

리눅스원 수료생들 홈페이지 http://www.lse.pe.kr 에서 퍼 온 글입니다. 
접속자 별루 없는 서버에서는 상관없지만.. 
접속자가 많은 대형서버에서 TIMEWAIT 세션이 많아지는건.. 
그만큼 서버의 리소스를 사용하는것이기땜시.. 퍼포먼스를 떨어뜨리는 결과를 초래하게 됩니다. 
구래서 TIMEWAIT값을 줄이므로써 서버의 성능을 올릴수 있는 튜닝 팁 하나 가져왔습니다. 
커널소스에서.. /usr/src/linux-2.4/include/net/tcp.h 파일을 열어보시면.. 

#define TCP_TIMEWAIT_LEN (60*HZ) 

(60*HZ) 이 부분을 (1*HZ) 이렇게 바꿔주시면.. 
세션이 금방 끊어지겠지요.

 

 

[출처] http://mediakorea.net/board3/viewbody.php?code=board3&page=4&number=132&keyfield=&key=

 

 

아래파일 수정하면 됩니다.

/usr/src/kernels/2.6.18-194.11.3.el5-i686/include/net/tcp.h

반응형

댓글()

리눅스(CentOS)에서 프록시(Proxy) 서버 구축하기

리눅스/Network|2015. 1. 26. 17:45
반응형

리눅스에서는 squid 라는 프로그램을 통해서 프록시 서버 구축이 가능하다.
먼저 아래의 사이트에 방문하여 squid 파일을 받는다.

squid 사이트 >> http://www.squid-cache.org/

필자가 받은 파일의 명은 squid-3.0.STABLE17.tar.gz 이다.

# tar zxvf squid-3.0.STABLE17.tar.gz

# cd squid-3.0.STABLE17

# ./configure --prefix=/usr/local/squid

# make; make install



위 과정이 오류 없이 끝났다면 /usr/local/squid 에 설치가 된 것이다.

squid 의 설정 파일을 열어서 몇가지 설정을 확인한다.

# vi /usr/local/squid/etc/squid.conf

http_port 3128     # 프록시 서비스 포트. 기본값은 3128.

acl localhost src 127.0.0.1/32       # 127.0.0.1을 localhost 로 지정
acl localnet src 192.168.0.0/24      # 192.168.0.X를 localnet 으로 지정

http_access allow localhost localnet    # localhost, localnet 의 접근을 허용
http_access deny all                          # 그 외에 나머지는 접근을 거부 


설정 파일에서 위의 항목을 본인의 환경에 맞게 설정한다.
필자는 위 항목 이외의 항목은 기본값을 사용하였습니다.

설정 파일에서 캐시나 로그등을 기록하도록 설정된 폴더를 사용할 수 있도록 아래와 같이 입력한다.

# mkdir /usr/local/squid/var/cache

# chmod 777 /usr/local/squid/var/cache

# chmod 777 /usr/local/squid/var/logs


스왑디렉토리(캐쉬용 디렉토리)를 초기화하고 데몬을 실행한다.

# /usr/local/squid/sbin/squid -z

# /usr/local/squid/sbin/squid start



이제 다른 컴퓨터에서 프록시 서버를 통해서 웹에 접속해보자.

윈도우 익스플로러에서 "도구" -> "인터넷 옵션".

"연결" 탭으로 넘어가서 아래에 있는 "LAN 설정" 버튼을 누른다.




프록시 서버에서 체크박스에 체크를 하고 "고급" 버튼을 클릭한다.



붉은 박스 표시 부분에 아까 프록시 설정을 해두었던 리눅스 서버의 주소와 서비스 포트를 입력하고 "확인" 버튼을 누른다.



위의 모든 작업이 끝나면 익스플로러를 띄워 본다. 웹이 정상적으로 뜬다면 성공한 것이다.

만약 웹이 뜨지 않는다면 리눅스 서버에서 방화벽 설정이 되어 있는지 확인하고 3128번 포트를 예외로 빼준 후 다시 시도해 보자.

 

 

[출처] Development & Information Security | Huikyun (http://huikyun.tistory.com/236)

반응형

'리눅스 > Network' 카테고리의 다른 글

ip_conntrack 사용 확인  (0) 2015.01.26
TCP TIMEWAIT 값 줄이기  (0) 2015.01.26
ifconfig 항목 설명  (0) 2015.01.26
특정 port 에 특정 IP만 접근 허용하기  (0) 2015.01.26
ping 명령 옵션  (0) 2015.01.26

댓글()

ifconfig 항목 설명

리눅스/Network|2015. 1. 26. 17:45
반응형

error는 잘못된 패킷의 받은 수를 표시합니다. 그 잘못된 패킷의 구체적인 
원인으로 ifconfig에서 표시해주는 것으로 overruns 과 frame이 있는데 
overrun은 FIFO가 overrun 됬기 때문에 에러가 발생했다는 것을 뜻합니다. 
dropped 는 버퍼가 꽉 찼차서 버린 패킷수를 말해줍니다. 

[출처]http://kltp.kldp.net/~eunjea/hcol-archive/2002/networking/2003-Jun/1588.html

 

 

옵션

설    명

interface

NIC(Network Interface Card)를 말하며, 보통 랜(LAN)카드 또는 이더넷(Ethernet) 카드라 한다. 리눅스에서는 랜카드가 하나인 경우 eth0으로 설정되며, 만약 두개를 장착하면 두번째 랜카드는 eth1이 된다.

address

보통 IP가 부여된다.

up/down

네트워크를 활성화/비활성화 시킨다.

option

netmask, broadcast등을 설정할 수 있다.

 

 

ifconfig의 항목 설명

 

항 목

설    명

Link encap

Ehternet 장치에 사용중인 프로토콜이 Ethernet임을나타낸다.

Hwaddr

이더넷 카드에 있는 고유 하드웨어 주소로, 48비트로 되어 있다. 보통 MAC(Media Address Control)주소라고도 한다.

inet addr

IP주소를 나타낸다.

Bcast

브로드 캐스트 주소를 나타낸다.

Mask

넷마스크(Netmask)값을 나타낸다.

UP

인터페이스가 활성화되어 있음을 나타낸다.

BROADCAST

브로드 캐스트를 사용한다.

RUNNING

동작중임을 뜻한다.

MULTICAST

멀티 캐스트를 사용한다.

MTU

Maximum Transmission Unit의 약자로 한 번에 전송할 수 있는 최대패킷의 크기를 말한다.

Metric

라우팅할 때 참조되는 거리로 로컬인 경우 값이 1이 된다.

RX/TX

받은 패킷/전송한 패킷의 총 개수(packets), 그 중 에러가 발생한패킷의 수는 errors에, 그냥 버린 패킷의 수는 dropped, 손실된패킷의 개수는 overruns에 표시 된다.

collisions

충돌이 발생한 패킷의 수

Interrupt

Ethernet 카드가 현재 사용중인 IRQ

Base address

Ethernet 카드가 현재 사용중인 주소

 

[출처] http://www.linux.co.kr/home/lecture/index.php?cateNo=1&secNo=27&theNo=&leccode=10878

반응형

댓글()

특정 port 에 특정 IP만 접근 허용하기

리눅스/Network|2015. 1. 26. 17:45
반응형

[ 예: 192.168.0.10 만 ftp 접속 허용하기 ]

설정 전 iptables 에 21번 port 가 open 되어있으면 안됩니다.

 

방법 1) 명령어

iptables -A INPUT -s 192.168.0.10 -p tcp --dport 21 -j ACCEPT

 

방법 2) 룰셋 수정

/etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -s 192.168.0.10 -p tcp --dport 21 -j ACCEPT

반응형

'리눅스 > Network' 카테고리의 다른 글

리눅스(CentOS)에서 프록시(Proxy) 서버 구축하기  (0) 2015.01.26
ifconfig 항목 설명  (0) 2015.01.26
ping 명령 옵션  (0) 2015.01.26
[우분투] ip 설정하기  (0) 2015.01.26
IP로 위치 확인 (국가)  (0) 2015.01.26

댓글()

ping 명령 옵션

리눅스/Network|2015. 1. 26. 17:44
반응형

ping -s 1024 -i 2 -c 5 8.8.8.8


* 옵션 설명

-s 1024    // 1024byte 패킷 전송

-i 2           // 2초 간격 실행

-c 5          // ping 을 5회 실행


반응형

댓글()

[우분투] ip 설정하기

리눅스/Network|2015. 1. 26. 17:44
반응형

ip 설정 파일을 수정합니다.
    # 
vi /etc/network/interfaces

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 168.126.63.1 168.126.63.2


저장한 내용을 적용시킵니다.
    # /etc/init.d/networking restart

반응형

댓글()