2014년 1월 27일 월요일

UNIX 계열 OS에서 자주 사용하는 명령어

cal [[month] year]
달력을 출력

date [MMDDHHmm[[yy] | ccyy]]
컴퓨터의 시간을 알 수 있음

df [-lt][-f][{}]
슈퍼블록에서 카운트하고 있는 마운트된 파일 시스템, 디렉토리에서 사용가능한
디스크블록과 freeinode수를 알려줌

du
사용자 자신의 디스크 사용 상황을 블록 단위로 출력해줌

grep [option] limited regular expression [file]
파일에서 특정한 패턴을 찾는데 사용되며, 그 패턴을 포함하고 있는 모든 행을 출력함

kill [-sihno] PID
지정한 프로세서에게 종료신호를 보내는 명령어

ps
컴퓨터 시스템에서 활동중인 프로세서의 상태를 알려주는 명령

touch [-amc][MMddhhmm[yy]]files
지정된 파일에 접근하여 최종적으로 수정된 시간을 갱신

tr [-option][string1[string2]]
표준 입력의 특정 문자들을 삭제하거나 치환하여 표준 출력으로 내보내는 명령어

tty
컴퓨터 시스템에 연결하여 사용하고 있는 터미널의 이름을 알려줌

umask [###]
파일이 만들어질 때 적용되는 파일접근 허용모드를 설정

cd
현재 디렉토리를 바꿈

ls [-option][file/directory]
디렉토리의 내용을 화면에 출력

mkdir [-m]mode[-p]<경로><디렉토리 이름>
새로운 디렉토리를 만듬

rmdir [-ps]<디렉토리이름>
지정된 디렉토리를 제거

pwd
현재의 작업디렉토리를 화면에 출력

cat
파일의 내용을 표준 출력 장치로 내보내는 명령어

cmp [-l][-s]file1 file2
두개의 파일을 비교하여 차이점을 화면에 출력

comm [-[123]]file1 file2
지정된 두개의 파일을 비교하여 공통부분을 삭제 혹은 선택할 때 사용

cp file1 [file2] target
지정된 파일을 다른 이름으로 복사

cut -clist[files]
파일의 각 행에서 선택된 필드를 절단

dd[option=value]
파일을 변환 혹은 복사

diff
지정된 두개의 파일간의 차이를 비교하여 두개의 파일이 일치되기 위해 필요한
정보를 제공

fgrep [option] string[file]
문자열에 따라 파일을 검색

find path list expression
어떤 파일이 어느 디렉토리에 있는지를 찾아줌

join [option]file1 file2
관계형 데이터베이스 조작 명령으로 지정된 파일의 관계를 결합하여 결과를
표준 출력장치로 출력

ln [-f][-n][-s]file1[file2] target
두개의 파일을 연결하여 사용

mknod name b/c major-No minor-No
특수 파일을 위한 디렉토리 항목과 이에 대응하는 i-node를 생성

mv <현재 이름> <변경될 이름>
디렉토리 또는 파일의 이름을 변경

paste file1 file2
여러 개의 파일에 있는 같은 행의 내용을 병합

pr -option files
파일을 표준출력으로 보여주고 현재의 시각, 파일명, 페이지 등을 같이 보여줌

rm [-f][i]file
파일 혹은 디렉토리를 삭제

sort [option]files
파일을 정렬 혹은 병합

tail
지정된 파일의 끝 부분을 출력

tar [-]{txruc}[vwfblm][0-7[lmh]][tapefile][blocksize]file1 file2
파일들을 자기 테이프에 저장 또는 불러오기 위한 명령어

ulimit
v 사용자 범위의 출력, 설정, 프로세서의 보통 파일 크기 범위를 출력

umask[xxx]
v 파일 생성 마스크의 설정과 출력을 위해 사용

uniq [-udc [+n][-n]][input[output]]
중복되는 행을 삭제하는 명령

wc file
텍스트 파일에 담겨져 있는 문자 수, 단어 수 및 라인 수를 화면에 출력하는 명령

bc
간단한 산술 계산을 할 수 있게 함

enable, disable
프린터의 사용을 허용 혹은 불가능하도록 설정

factor [integer]
지정된 정수를 소인수 분해하여 화면에 출력

mesg [-n][-y]
다른 사용자가 메세지를 보낼 때 수신여부를 결정

mount [-v | -p]
이미 만들어져 있는 파일 시스템을 연결하는 명령

passwd
자신의 암호를 등록하거나 변경할 때 사용

stty [-a][-g][option]
현재 단말기나 콘솔의 입/출력 선택 항목을 설정

tee [-l][-a][file]
파이프를 접속

tr [-option][string1[string2]]
표준 입력의 특정 문자들을 삭제하거나 치환하여 표준 출력으로 내보내는 명령

wall
모든 사용자에게 동일한 메세지를 전송

write user[terminal]
다른 사용자에게 1대1 메시지를 전송

chgrp group file
지정된 파일의 소유권자 그룹을 바꾸는 명령

chmod mode file
지정된 파일에 대한 사용 권한을 변경하고자 할 때 사용

chown owner file
지정된 파일에 대한 소유 권한을 변경하고자 할 때 사용

2014년 1월 24일 금요일

SQL Injection 해킹 보안


1. Auditing and Logging

보안로그를 남기도록 구성하고, 특히 로그인 실패와 관련된 중요파일(예: Metabase.bin)은 Audit이 가능하도록 설정한다.


2. Sites and Virtual Directories
IIS 설정에서 상위 경로 이용을 해제한다. 참고로 윈도우 2000은 enable, 윈도우 2003은 disable이 기본값이다. 윈도우 2000 IIS의 기본 웹사이트를 삭제하더라도 이후 생성한 웹사이트에 기본 웹사이트가 생성한 가상 디렉토리(IISSamples, IISAdmin, IISHelp, MSADC 등)가 존재하게 된다. 이들을 삭제하고, include 파일이 위치한 디렉토리의 IIS설정에서 읽기 권한을 없앤다.

3. Script Mappings
불필요한 응용 프로그램 매핑(.idq, .htw, .ida, .shtml, .shtm, .stm, .idc, .htr, .printer)을 없애고, 역시 필요없는 ASP.NET 파일 확장은 Machine.config에서 HttpForbidden Handler로 매핑한다.


4. ISAPI Filters
불필요한 ISAPI 필터를 제거한다.


5. IIS Metabase

IIS banner 정보를 제한한다. 윈도우 2000의 경우 metaedit를 설치해 변경할 수 있다.


6. Machine.config

이용하지 않는 HttpModules은 제거한다. 다음과 같이 Tracing을 disable로 설정하고, 디버그 컴파일 역시 이용하지 않는 편이 좋다.

trace enable="flase"
compilation debug="false" explicit="true" defaultLanguage="vb"

이처럼 웹서버 보안을 위해서는 전용 서버 현태로 운영해야 한다. Domain Controller에 IIS를 설치해 운영하거나 IIS 웹서버에서 인터넷 연결을 시도하지 말아야 한다. 또한 Administrator 외에는 로컬 로그온을 허용치 않고, 물리적인 서버 역시 보안 영역에 존재해야만 안전한 웹서비스를 제공할 수 있다.


참고문헌 : 마이크로소프트웨어 2006년 4월호

2014년 1월 10일 금요일

[Linux] Ubuntu terminal에서 Wiresss Netowork Setup

1. ifconfig 명령으로 네트워크 디바이스 검색

2. wlan0 존재 여부 확인

3. ifconfig wlan0 up 명령으로 무선네트워크 디바이스 켜기

4. iwlist wlan0 scanning 으로 주변 AP 검색

5. 암호키가 없는 무선네트워크의 경우, iwconfig wlan0 essid “AP의 SSID” mode managed

6. WPA방식 encryption이 on 되어있는 경우,
wpa_supplicant -d -i wlan0 -c /etc/wpa_supplicant.conf 실행

8. wpa_supplicant.conf 가 설정되어 있지 않을 경우 다음과 같은 방법으로 작성 후 저장

우선 psk 키가 포함된 
wpa_supplicant.conf 생성
$ wpa_passphrase ssid_name > /etc/wpa_supplicant/wpa_supplicant.conf
password 입력 후 enter
입력한 password가 psk로 저장된 것을 확인
$ cat /etc/wpa_supplicant/wpa_supplicant.conf
# reading passphrase from stdin
network={
ssid=”ssid_name”
#psk=”입력한 password”
psk=”생성된 psk”
}
생성된 wpa_supplicant.conf 파일에 추가 정보를 입력
# reading passphrase from stdin
network={
ssid=”ssid_name”

scan_ssid=1 
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
psk=”생성된 psk”
}
  1. /etc/network/interfaces 파일에서 다음과 같은 설정도 가능하다

  1. # vi /etc/network/interfaces

  2. auto lo eth0

    iface lo inet loopback
    iface eth0 inet dhcp

    auto wlan0
    allow-hotplug wlan0
    iface wlan0 inet dhcp
       wpa-scan-ssid 1
       wpa-ap-scan 1
       wpa-key-mgmt WPA-PSK
       wpa-proto RSN WPA
       wpa-pairwise CCMP TKIP
       wpa-group CCMP TKIP
       wpa-ssid "<Your Wifi SSID>"
       wpa-psk <Your PSK Value>

9. 보통 유동 IP 주소를 받는게 일반적이니, dhclient wlan0 명령으로 IP주소 받기

10. /etc/network/interfaces IP 할당 여부 확인, IP 할당되었으면 무선네트워크 구성 완료

11. 고정 IP를 지정할 경우, /etc/network/interfaces 에 네트워크 정보 입력

12. sudo service network-manager restart 네트워크 관리 서비스 재시작

Reentrancy Attack: 블록체인 스마트 컨트랙트의 치명적인 취약점

블록체인 기술이 전 세계적으로 주목받으면서 스마트 컨트랙트(Smart Contract)의 사용이 급격히 증가하고 있습니다. 하지만 그만큼 보안 취약점도 함께 늘어나고 있는데, 그 중에서도 Reentrancy Attack(재진입 공격)은 매우 치명적이고...