개발2013. 12. 17. 21:06
300x250

usb 드라이버 새로 깔고, sdk 업데이트 찾아보고 .. 이리 저리 해 봤는데.. 

결국은 단순한 곳에 해답이 있었다. 

 

설정 > 시스템 > 개발자옵션 > USB디버깅  

을 체크한 후에 usb 를 연결해야 한다. 

 

위는 안드로이드 버전 4.0.4 ICS 기준이다. 


300x250
Posted by 마스타
그누보드2013. 12. 15. 19:11
300x250


그누보드를 설치한 후 운영하다가, 

메인 폴더명을 변경하였을 경우.. 


폴더명만 변경해 버리면 기존에 노출되었던 검색엔진들에의 url 이 전부 오류가 생기는 경우가 발생할 수 있다. 


이 경우 .htaccess 등 여러가지로 해결을 할 수 있으나, php 자체의 redirect 기능을 이용하여 해결해 보자. 



기존 폴더가 /g4 이고, 신규 폴더가 /gnu 라고 가정하면,

/g4/bbs/board.php 파일을 만들어서


<?php

if(strlen(stristr($_SERVER['REQUEST_URI'], "/g4/bbs/")) > 0) {

header('Location: ' . str_replace("/g4/bbs/", "/gnu/bbs/", $_SERVER['REQUEST_URI']));

exit();

}

?>


이런 식으로 저장하면, 신규 페이지로 redirect 된다. 

물론 adm 폴더 등도 가능하지만, 관리자만 접근하는 페이지이므로 처리하지 않아도 될 듯 하다. 



이 방법은 게시판 테이블 변경시에도 적용 가능하다. 

예를 들어, 게시판 테이블 명이 cm_free 에서 10_free 로 변경하였을 경우, 


<?php

if(strlen(stristr($_SERVER['REQUEST_URI'], "bo_table=cm_free")) > 0) {

header('Location: ' . str_replace("bo_table=cm_free", "bo_table=10_free", $_SERVER['REQUEST_URI']));

exit();

}

?>


이런 식으로 적용할 수 있을 것이다. 




300x250
Posted by 마스타
세상살이2013. 12. 15. 12:05
300x250




ㅁ 방청윤활제의 종류와 올바른 활용법



- WD-40


WD-40 이 워낙 유명하고 많이 사용되고 있기 때문에, 많은 방청윤활제들이 대부분 WD-40 을 대체하는 제품이라고 광고를 한다.


하지만, WD-40 의 가장 큰 작용은 방청제, 즉, 녹과 기름기를 닦아 내는 작용을 한다는 것이 대부분의 의견이다.


물론 약간의 윤활 기능이 있지만, 이는 원래 윤활제가 없어도 되는 정도의 작동부위에 효과가 있다는 것이다. 


그리스가 필요한 곳에 WD-40 만 사용한다면, 장기적으로 윤활제가 씻겨 내려가 작동부위를 손상시키게 될 가능성이 있다.


https://namu.wiki/w/WD-40




- HD-60 


외모로 봐도 WD40 과 비슷하고 기능도 비슷하다.

http://ilsincna.com/ilsin/bbs/bbs/board.php?bo_table=products&wr_id=14

http://ilsincna.com/product/view.php?menunum=B01&key=&uid=106




- ALL606 - 녹과 부식으로부터 보호. 역시 마찬가지로 WD40 과 비슷. 가격 저렴

http://cafe.naver.com/bikecity/1411582


사진은 아래에



- LOCTITE ML-11 - 베어링, 경첩에 사용가능, WD40 을 능가하는 다용도라고 광고함.

http://shop.passo.co.kr/view.html?idx=83097&section=bike



- 뿌리는그리스 - 구리스 기능에 중점을 둔 제품.

http://ilsincna.com/ilsin/bbs/bbs/board.php?bo_table=products&wr_id=13

http://ilsincna.com/product/view.php?menunum=B01&key=&uid=110

http://www.2cpu.co.kr/bbs/board.php?bo_table=freeboard_2011&wr_id=67914

사진은 아래에



- 피니시라인 원스텝 (FINISHLINE 1-Step) - 녹방지에 탁월한 효과가 있어 보인다. 좀 비싸다. 

http://brainage.egloos.com/5746361



- 그외 기타

http://www.db-mall.com/shop/shopdetail.html?branduid=53993




ㅁ 결론


인터넷으로 ALL606 과 뿌리는그리스를 주문했다.^^

녹방지와 부식방지는 조금더 찾아보고 사용해 봐야 할 것 같다. 





* 추가


- BW-100


접점부활제 라고 하는, ECC(Electronic Contact Cleaner, 전기적 접점 세정제) 이다.

WD-40 과는 용도에 조금 차이가 있다. 이 제품은 전기적 접점 부위에 효과가 더 있으며 휘발성도 훨씬 더 강하다.

뿌리자 마자 바로 사라진다. 윤활기능은 없다.

http://liverex.tistory.com/1024



개인적으로, 접점부활제인 BW-100 추천이다. 


스마트폰을 포함한 각종 전자기기들의 버튼들, 잘 눌러지지 않고 눌러도 세게 꾹~ 눌러야 동작하는 버튼들.. 

BW-100 을 뿌리고 스며들도록 버튼을 살짝 살짝 눌러 주면.. ~~ 효과 만점이다. 





ㅁ 참고글들


- WD-40 은 그리스가 아니다.

http://forwinding.tistory.com/373






300x250
Posted by 마스타
서버관리2013. 12. 9. 19:04
300x250

A 서버 : 센토스 5.x 에서 snmp 서비스를 돌리고, 

B 서버 : mrtg 로 A 서버를 모니터링.. 하는 상황.. 


위와 같은 상황에서 A 서버의 /var/log/messages 에

.... snmpd[1521]: Connection from UDP: [xxx.xxx.xxx.xxx]:54907

이런 메시지가 5분 간격으로 주기적으로 쌓여서 로그가 넘쳐나는 경우.


로그의 양을 줄여 보자. 


우선, 원인은 snmp 의 옵션으로 로그 레벨이 너무 낮게 설정되어 있어서 모든 로그가 다 남는 것.. 

로그 레벨을 변경하여 로그를 안남게 해 보자. 


/etc/sysconfig/snmpd.options  파일에 OPTIONS 를 설정해 주자.

OPTIONS="-LS0-5d -Lf /dev/null -p /var/run/snmpd.pid -a"


그리고, snmpd 재시작
# service snmpd restart

5분마다 쌓이는 로그가 없어졌다. 

참고로 로그레벨은
http://cybergav.in/2012/05/27/how-to-disable-redundant-snmp-logging-connection-information-in-rhel-6/






LOG LEVEL DESCRIPTION
0 Emergencies – System is unusable
1 Alerts – Immediate action needed
2 Critical – Critical conditions
3 Errors – Error conditions
4 Warnings – Warning conditions
5 Notifications – Informational messages
6 Informational – Normal but significant conditions
7 Debugging – Debugging messages
- See more at: http://cybergav.in/2012/05/27/how-to-disable-redundant-snmp-logging-connection-information-in-rhel-6/#sthash.A50TrTP8.dpuf


LOG LEVEL DESCRIPTION
0 Emergencies – System is unusable
1 Alerts – Immediate action needed
2 Critical – Critical conditions
3 Errors – Error conditions
4 Warnings – Warning conditions
5 Notifications – Informational messages
6 Informational – Normal but significant conditions
7 Debugging – Debugging messages
- See more at: http://cybergav.in/2012/05/27/how-to-disable-redundant-snmp-logging-connection-information-in-rhel-6/#sthash.A50TrTP8.dpuf


LOG LEVEL DESCRIPTION
0 Emergencies – System is unusable
1 Alerts – Immediate action needed
2 Critical – Critical conditions
3 Errors – Error conditions
4 Warnings – Warning conditions
5 Notifications – Informational messages
6 Informational – Normal but significant conditions
7 Debugging – Debugging messages
- See more at: http://cybergav.in/2012/05/27/how-to-disable-redundant-snmp-logging-connection-information-in-rhel-6/#sthash.A50TrTP8.dpuf


LOG LEVEL DESCRIPTION
0 Emergencies – System is unusable
1 Alerts – Immediate action needed
2 Critical – Critical conditions
3 Errors – Error conditions
4 Warnings – Warning conditions
5 Notifications – Informational messages
6 Informational – Normal but significant conditions
7 Debugging – Debugging messages
- See more at: http://cybergav.in/2012/05/27/how-to-disable-redundant-snmp-logging-connection-information-in-rhel-6/#sthash.A50TrTP8.dpuf



LOG LEVEL DESCRIPTION 0 Emergencies – System is unusable 1 Alerts – Immediate action needed 2 Critical – Critical conditions 3 Errors – Error conditions 4 Warnings – Warning conditions 5 Notifications – Informational messages 6 Informational – Normal but significant conditions 7 Debugging – Debugging messages - See more at: http://cybergav.in/2012/05/27/how-to-disable-redundant-snmp-logging-connection-information-in-rhel-6/#sthash.A50TrTP8.dpuf

LOG LEVEL DESCRIPTION 0 Emergencies – System is unusable 1 Alerts – Immediate action needed 2 Critical – Critical conditions 3 Errors – Error conditions 4 Warnings – Warning conditions 5 Notifications – Informational messages 6 Informational – Normal but significant conditions 7 Debugging – Debugging messages - See more at: http://cybergav.in/2012/05/27/how-to-disable-redundant-snmp-logging-connection-information-in-rhel-6/#sthash.A50TrTP8.dpuf
LOG LEVEL DESCRIPTION 0 Emergencies – System is unusable 1 Alerts – Immediate action needed 2 Critical – Critical conditions 3 Errors – Error conditions 4 Warnings – Warning conditions 5 Notifications – Informational messages 6 Informational – Normal but significant conditions 7 Debugging – Debugging messages - See more at: http://cybergav.in/2012/05/27/how-to-disable-redu
ndant-snmp-logging-connection-information-in-rhel-6/#sthash.A50TrTP8.dpuf


300x250
Posted by 마스타
서버관리2013. 12. 8. 15:32
300x250



센토스 CentOS 5.x 에 snmp 서비스 를 설치해 보자.



ㅁ 일단, yum 으로 패키지 설치


# yum install net-snmp-utils


이렇게 하면 의존성 패키지인 net-snmp 도 같이 설치가 된다. 



ㅁ 설정파일 수정


snmpd 의 설정파일은 /etc/snmp/snmpd.conf 파일인에, 

yum 으로 최초로 설치되는 snmpd.conf 파일 안에는 뭔가가 아주 많이 들어 있다. 


다 삭제하고 read only 로 public 커뮤니티 하나만 세팅해 보자.. 


# cd /etc/snmp

# mv /etc/snmp/snmpd.conf /etc/snmpd.conf.orig

# echo rocommunity public > snmpd.conf


이렇게 해서 /etc/snmp/snmpd.conf 파일을 열어 보면, 

rocommunity public

이렇게 한 줄만 들어가 있다. read only 커뮤니티 public 을 설정한다는 의미일 것이다. 



ㅁ snmpd 재시작


# service snmpd restart



ㅁ 방화벽 오픈 및 다른 곳에서 모니터링하기


snmp 는 UDP 161 포트를 사용하고,

snmp trap 은 UDP 162 포트를 사용한다. 

다른 서버에서 mrtg 로 모니터링을 하기 위해서, mrtg 서버의 IP 에 대해 위 포트를 방화벽에서 열어 주어야 한다.




300x250
Posted by 마스타
서버관리2013. 12. 6. 23:10
300x250


리눅스 유닉스 시스템에서 

현재 폴더가 PATH 환경변수에 들어 있지 않은 이유



리눅스 시스템을 사용하다 보면, 

현재 폴더에 있는 실행파일을 실행시키려고, 


# script.sh 


처럼 파일명만 치면, command not found  뿌려 준다.

물론 실행권한을 준 상태에서 말이다. 



이유는, 다들 알고 있다 시피 현재 디렉토리가 PATH 로 지정이 되어 있지 않기 때문이다. 



그렇다면, 리눅스 유닉스 시스템은 왜 현재 디렉토리가 PATH 환경 변수에 포함되어 있지 않거나 기껏해야 맨 뒤에 걸려 있는 것일까?


한마디로, 보안 때문이다. 


예를 들어 보자. 

어떤 공격자가 자신에게 허용된 폴더에 ls 라는 이름을 가진 악의적은 스크립트를 만들어 놓았고,

root 의 권한을 가진 자가 그 폴더에 들어가서 파일 목록을 보기 위해 ls 명령을 내리는 경우를 가정해 보자.. 


# ls -al


관리자의 의도대로라면, /usr/ 폴더의 /usr/ls 가 실행되기를 기대했을 것이다. 

근데, 현재 폴더가 PATH 의 앞쪽에 자리잡고 있다면, 불행히도 현재 폴더에 있는 악의적인 스크립트인 ls 가 먼저 실행이 되어 버린다. 


이런 이유로, 현재 폴더를 PATH 에 포함시켜 놓지 않거나, 포함시킬 경우 맨 끝에 넣는 이유이다. 



* 참고 : https://kldp.org/node/33916


300x250
Posted by 마스타
서버관리2013. 12. 6. 18:36
300x250


/var/log/messages 에 아래와 같은 로그가 쌓인다.


device eth0 entered promiscuous mode

device eth0 left promiscuous mode



무슨 promiscuous mode 를 들어갔다 나갔다 한다는 것 같은데.. 

이와 같은 로그가 연속적으로 남아 있어서, 찾아 보았다. 



우선, 이 로그는 tcpdump 명령어를 사용할 때 남는 로그다. 


promiscuous mode 라는 것은 해당 인터페이스로 들어오는 네트웍 내의 모든 패킷을 받겠다는 의미이다. 

보통의 경우는 자기에게 오는 패킷만 받는데, tcpdump 시에는 모든 패킷을 받아서 분석하기 위해서 해당 모드로 변경되는 듯하다.

네트웍 상의 패킷 분석이나 스니핑 공격을 위해서는 모든 패킷을 받도록 하는 설정이 필요하다.


해당 인터페이스를 promisc 모드로 설정하려면, 

# ifconfig eth0 promisc

설정 해제 하려면, 

# ifconfig eth0 -promisc


# ifconfig 명령으로 해당 인터페이스에 PROMISC 라고 설정된 것이 보이면, 설정된 것이다.


* 참고 : 

http://kldp.org/node/42206

http://blog.naver.com/wooya510/70007606105



300x250
Posted by 마스타
서버관리2013. 12. 6. 13:50
300x250



ㅁ DHCP Starvation Attack



1. DHCP 의 취약점


(1) 누구나 request를 하면 특별한 확인절차 없이 IP를 다 할당 해준다. 

(2) client가 request을 하면 먼저 reply해준 server에게 특별한 확인 절차 없이 IP를 받아 사용하게 된다.



2. DHCP Starvation Attack


위 (1)의 취약점을 이용한 공격 방법으로 

hacker가 MAC address를 변경해 가면서 계속 IP를 request를 요구해 DHCP server의 IP를 고갈하게 만드는 공격기법이다. 

dhcpx tool을 사용하여서 attack



3. 대응법

L3 switch 이상급에서 port security의 option을 이용하여서 port당 해당 MAC address에게 IP를 할당해 주거나, 
해당 port에 최대로 줄 수 있는 IP 개수를 제한할 수 있다. 



* 참고 : 

http://blog.naver.com/PostView.nhn?blogId=bansanghyeon&logNo=30156683925




300x250
Posted by 마스타
서버관리2013. 12. 6. 13:46
300x250

갑자기 서버 트래픽이 과도하게 발생하여, 

서버를 모니터링을 해 보니 웹서비스 쪽에는 별다를 트래픽이 감지되지 않느다. 귀찮게 되었구만.. 


/var/log/messages 을 열어 보니

named : client xx.xx.xx.xx#xxxxx: view localhost_resolver: error sending response: unexpected error

이런게 엄청 쌓여 있고, 또 쌓이고 있다. ㅡㅡ


일단 뒤져 보니, 

http://corpocrat.com/2009/03/10/dns-attacks-error-sending-response-host-unreachable/

이런게 있어서, option 에다가 넣어 봤다. 

options {
	use-id-pool yes;
};

그리고, 네임서버 재시작.. 


그런데, 네임서버 재시작 로그를 보니.. 

named: option 'use-id-pool' is obsolete

라고 찍힌다. ^^

좀더 찾아 보니.. 

http://docstore.mik.ua/orelly/networking_2ndEd/dns/ch11_02.htm

BIND 8.2 버전에서 쓰던 거란다.. BIND 9 에서는 필요 없는 거란다. ㅡㅡ


서버의 BIND 버전을 보니, 9.3.x 이다.  참고로, 시스템은 CentOS 5.9


다시 구글링.. 


iptables 의 recent 모듈을 이용해 보자.. 

http://www.cryptonizer.com/dnsamp.html


#iptables -A INPUT -i eth1 -p udp --dport 53 -m recent --set

#iptables -A INPUT -i eth1 -p udp --dport 53 -m recent --update --seconds 20 --hitcount 20 -j DROP


효과가 있다.. ^^
/var/log/messages 에 로그도 쌓이지 않고, 서버 트래픽도 줄었다. 



300x250
Posted by 마스타
서버관리2013. 12. 3. 22:46
300x250




리눅스 서버에서 트래픽을 제한하고자 할 때,

웹서비스의 사이트별 트래픽 제어는 mod_cband ( apache 1.x 에서는 mod_throttle ) 등을 많이 사용한다. 

그러나, 이는 웹서비스에 대한 트래픽만 제어가 가능한다. 


서버 시스템 자체의 트래픽을 제한할 필요가 있다.  

ftp 서비스나 백업 트래픽, 시스템 크랙으로 인한 트래픽 과다 발생 등등의 이유에서다. 


tc 라는 명령어로 랜카드( 보통 eth0 )의 트래픽 제어가 가능하다. 

명령어가 생소하여 복잡하게 보일 수 있는데, 아래 스크립트를 이용하면 손쉽게 사용할 수 있다. 


출처 : http://www.topwebhosts.org/tools/traffic-control.php


#!/bin/bash
#
#  tc uses the following units when passed as a parameter.
#  kbps: Kilobytes per second 
#  mbps: Megabytes per second
#  kbit: Kilobits per second
#  mbit: Megabits per second
#  bps: Bytes per second 
#       Amounts of data can be specified in:
#       kb or k: Kilobytes
#       mb or m: Megabytes
#       mbit: Megabits
#       kbit: Kilobits
#  To get the byte figure from bits, divide the number by 8 bit
#

#
# Name of the traffic control command.
TC=/sbin/tc

# The network interface we're planning on limiting bandwidth.
IF=eth0             # Interface

# Download limit (in mega bits)
DNLD=1mbit          # DOWNLOAD Limit

# Upload limit (in mega bits)
UPLD=1mbit          # UPLOAD Limit

# IP address of the machine we are controlling
IP=216.3.128.12     # Host IP

# Filter options for limiting the intended interface.
U32="$TC filter add dev $IF protocol ip parent 1:0 prio 1 u32"

start() {

# We'll use Hierarchical Token Bucket (HTB) to shape bandwidth.
# For detailed configuration options, please consult Linux man
# page.

    $TC qdisc add dev $IF root handle 1: htb default 30
    $TC class add dev $IF parent 1: classid 1:1 htb rate $DNLD
    $TC class add dev $IF parent 1: classid 1:2 htb rate $UPLD
    $U32 match ip dst $IP/32 flowid 1:1
    $U32 match ip src $IP/32 flowid 1:2

# The first line creates the root qdisc, and the next two lines
# create two child qdisc that are to be used to shape download 
# and upload bandwidth.
#
# The 4th and 5th line creates the filter to match the interface.
# The 'dst' IP address is used to limit download speed, and the 
# 'src' IP address is used to limit upload speed.

}

stop() {

# Stop the bandwidth shaping.
    $TC qdisc del dev $IF root

}

restart() {

# Self-explanatory.
    stop
    sleep 1
    start

}

show() {

# Display status of traffic control status.
    $TC -s qdisc ls dev $IF

}

case "$1" in

  start)

    echo -n "Starting bandwidth shaping: "
    start
    echo "done"
    ;;

  stop)

    echo -n "Stopping bandwidth shaping: "
    stop
    echo "done"
    ;;

  restart)

    echo -n "Restarting bandwidth shaping: "
    restart
    echo "done"
    ;;

  show)

    echo "Bandwidth shaping status for $IF:"
    show
    echo ""
    ;;

  *)

    pwd=$(pwd)
    echo "Usage: tc.bash {start|stop|restart|show}"
    ;;

esac

exit 0


주요 설정 부분은

IF : 랜카드 지정 ex) eth0

DNLD : 다운로드 제한 트래픽

UPLD : 업로드 제한 트래픽

IP : IF에 설정된 IP 주소


실행방법 - 위 스크립트를 tc.sh 로 저장하고 실행권한을 준 후에

# tc.sh start

# tc.sh stop

# tc.sh restart


위 스크립트의 자세한 설명과 사용법, 그리고 실제 제한되고 있는 mrtg 그래프 이미지는, 아래 사이트에서 잘 설명되어 있다.

http://www.xelloss.pe.kr/258



** 참고

http://www.topwebhosts.org/tools/traffic-control.php

http://www.xelloss.pe.kr/258



** 추가

잘 몰랐던 것이기도 하고, 한가지 재미있는 것은 .. 

tc 로는 서버에서 나가는 트래픽만 제한이 가능하고 서버로 들어가는 트래픽은 제어하지 않는 다는 것이다. 헐~

https://kldp.org/node/59454


그럼 저 위의 스크립트에 있는 DNLD, UPLD 변수는 무슨 의미일까나? ㅡㅡ


테스트를 해 보니, UPLD 변수 값이 서버에서 나가는 트래픽 제한 값이다.

비트이기 때문에 바이트 값은 8 로 나누면 된다. 



300x250
Posted by 마스타