-------------------------------------------------
쿼터 초기 설정하기
-------------------------------------------------
[root@s92 ~]# cat /var/log/dmesg | grep quota
VFS: Disk quotas dquot_6.5.1

[root@s92 ~]# vi /etc/fstab

LABEL=/home /home ext3 defaults,usrquota 1 2

[root@s92 ~]# quota -o remount /home
[root@s92 ~]#

[root@s92 ~]# mount
/dev/sda3 on / type ext3 (rw)
none on /proc type proc (rw)
none on /sys type sysfs (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
usbfs on /proc/bus/usb type usbfs (rw)
none on /dev/shm type tmpfs (rw)
/dev/sda6 on /home type ext3 (rw,usrquota)
/dev/sda8 on /usr type ext3 (rw)
/dev/sda7 on /var type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

[root@s92 ~]# quotacheck -auvgm // aquota.user 생성 및 저장

[root@s92 ~]# quotaon /home
[root@s92 ~]#


-------------------------------------------------
유저별 쿼터 적용하기
-------------------------------------------------
[root@s92 ~]# edquota sist
Disk quotas for user sist (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sda6 6000 5000 6000 248 0 0

:: 설명 
soft : 5000byte 이상 경과하면 경고한다.
hard : 6000byte 이상 경과하면 안된다.
inodes : 파일의 갯수가 지정된 갯수보다 크면 안된다.

:: 유예기간 설정 : edquota -t

:: sist 게정의 쿼터설정 내용을 다른 계정에도 적용하기

[root@s92 pub]# edquota -p sist linux leopit
[root@s92 pub]# repquota -auvg
*** Report for user quotas on device /dev/sda6
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 44284 0 0 9 0 0
sist +- 6000 5000 6000 6days 248 0 0
leopit -- 136 5000 6000 16 0 0
linux -- 120 5000 6000 14 0 0
aaa -- 120 5000 6000 14 0 0
solaris -- 120 5000 6000 14 0 0

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 6
Used average: 6.000000

[root@s92 pub]#

'Server' 카테고리의 다른 글

/etc/hosts 파일을 이용하여 sendmail 설정하기  (0) 2017.01.06
프로세스 죽이기 - kill, killall, pkill  (0) 2016.12.31
xinetd 데몬과 standalone 데몬  (0) 2016.12.31
ftp command  (0) 2016.12.31
netstat  (0) 2016.12.31

- ftp 명령어

ascii : 전송모드를 ASCII모드로 설정한다.(ascii또는 as) 

binary : 전송모드를 BINARY모드로 설정한다.( binary또는 bi) 

bell : 명령어 완료시에 벨소리를 나게한다.(bell) 

bye : ftp접속을 종료하고 빠져나간다.(bye) 

cd : remote시스템의 디렉토리를 변경한다.(cd 디렉토리명) 

cdup : remote시스템에서 한단계 상위디렉토리로 이동한다.(cdup) 

chmod : remote시스템의 파일퍼미션을 변경한다.(chmod 755 index.html) 

close : ftp접속을 종료한다. (close) 

delete : remote시스템의 파일을 삭제한다.(delete index.old) 

dir : remote시스템의 디렉토리 내용을 디스플레이한다.(dir) 

disconnect : ftp접속을 종료한다.(disconnect) 

exit : ftp접속을 종료하고 빠져나간다.(exit) 

get : 지정된 파일하나를 가져온다.(get index.html) 

hash : 파일전송 도중에 "#"표시를 하여 전송중임을 나타낸다.(hash) 

help : ftp명령어 도움말을 볼 수 있다.(help또는 help 명령어) 

lcd : local시스템의 디렉토리를 변경한다.(lcd 디렉토리명) 

ls : remote시스템의 디렉토리 내용을 디스플레이한다. (ls 또는 ls -l) 

mdelete : 여러개의 파일을 한꺼번에 지울 때 사용한다.( mdelete *.old) 

mget : 여러개의 파일을 한꺼번에 가져오려할 때 사용한다. ( mget *.gz) 

mput : 한꺼번에 여러개의 파일을 remote시스템에 올린다.(mput *.html) 

open : ftp접속을 시도한다.(open 168.126.72.51또는 open ftp.kornet.net) 

prompt : 파일전송시에 확인과정을 거친다. on/off 토글 (prompt) 

put : 하나의 파일을 remote시스템에 올린다.(put index.html) 

pwd : remote시스템의 현재 작업디렉토리를 표시한다.(pwd) 

quit : ftp접속을 종료하고 빠져나간다.(quit) 

rstatus : remote시스템의 상황(version, 어디서, 접속ID등)을 표시한다.(rstatus) 

rename : remote시스템의 파일명을 바꾼다.(remote 현재파일명 바꿀파일명) 

rmdir : remote시스템의 디렉토리을 삭제한다.(rmdir 디렉토리명) 

size :remote시스템에 있는 파일의 크기를 byte단위로 표시한다.(size index.html) 

status : 현재 연결된 ftp세션모드에 대한 설정을 보여준다.(status) 

type : 전송모드를 설정한다.(type 또는 type ascii 또는 type binary) 

출처 : koreaphp.co.kr

'Server' 카테고리의 다른 글

/etc/hosts 파일을 이용하여 sendmail 설정하기  (0) 2017.01.06
프로세스 죽이기 - kill, killall, pkill  (0) 2016.12.31
xinetd 데몬과 standalone 데몬  (0) 2016.12.31
Quota 설정하기  (0) 2016.12.31
netstat  (0) 2016.12.31

자신의 컴퓨터와 연결되었거나 연결될 목록을 프로토콜과 함께 보여주는 명령어

유닉스나 윈도우에는 사용자 컴퓨터의 네트워크의 상태를 알려주는 netstat라는 명령어가 있다. 즉 어떤 포트가 열려 있고 어떻게 사용되고 있는지 모두 알 수가 있고 이 명령어를 잘 활용하면 맨손으로도 해킹을 감지해 낼 수 있습니다. 그러나 사용자의 대부분은 netstat란 명령어를 모르고 있는것 같아 이번에는 netstat명령어의 사용법을 익힘으로써 다른 소프트웨어 도움을 받지 않고 해킹을 감지해 내는 능력을 길러봅니다. 

1. netstat로 알아보는 내 컴퓨터의 포트상태 
c:>netstat 
Proto Local Address Foreign Address State 
TCP acy7807:1023 211.233.45.89:80 ESTABLISHED 

필드

 설명

 Proto 

 현재 사용한 프로토콜 

 Local Address

 현재 열려 있는 사용자 컴퓨터의 IP/호스트 네임과 사용중인 포트

 Foreign Address

 현재 사용자의 컴퓨터에 접속되어 있는 IP/호스트 네임과 사용중인 포트 

 State

 연결 상태를 나타내는 것 

- LISTENING : 연결을 위하여 접속을 기다리는 상태 
- TIME_WAIT : 이미 해당 사이트와 연결이 종료되었거나 다음 연결을 위해 기다리는 상태 
- SYN_SENT : 접속하기 위해 패킷을 보냈다는 뜻 


2. netstat 옵션 
c:>netstat ? 

netstat -a : 연결된 혹은 연결을 기다리고 있는 모든 포트를 보여줍니다. -a 옵션이 없으면 연결된 목록만 보여주는데, -a 옵션을 주면 연결되었거나 연결을 기다리는 목록을 모두 보여줍니다.

netstat -n : 통상 연결 목록이 컴퓨터 이름이 나오는데, -n 옵션을 주면 컴퓨터 이름 대신 ip 주소가 뜹니다. 

netstats -an or -na : 컴퓨터와 연결되었던 혹은 연결을 기다리는 목록을 ip 주소로 바꾸어서 보여줍니다.

이제 netstat 명령을 알았으니 가끔씩 실행시켜주면 됩니다. netstat 명령으로 검색했을 때 알 수 없는 포트가 있거나, 포트중에 31337, 12345, 54321과 같이 트로이 목마가 사용하는 포트가 하나 열려 있거나 열려진 포트로 특정 IP가 접속해 있다면 이는 십중팔구 해킹인 것입니다.

 실제 사용 예

netstat -nap (열려 있는 모든 포트)

#netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)
#netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)
#netstat -nap | grep :80 | grep ESTABLISHED | wc -l ( 웹 동시 접속자 수)



'Server' 카테고리의 다른 글

/etc/hosts 파일을 이용하여 sendmail 설정하기  (0) 2017.01.06
프로세스 죽이기 - kill, killall, pkill  (0) 2016.12.31
xinetd 데몬과 standalone 데몬  (0) 2016.12.31
Quota 설정하기  (0) 2016.12.31
ftp command  (0) 2016.12.31
1. awk의 기본 개념
    1) awk란?
    ; awk란 이름은 이 유틸리티를 작성한 A.V.Aho, P.J. Weinberger, B. Kernigham의 머리글자를 따온 것 
    ① awk는 일종의 프로그래밍 언어지만 일반적인 언어라기 보다는 주로 패턴의 검색과 조작을 주목적으로 만들어진 것이다.
    ② 파일의 각 라인에서 필드(field)를 인식할 수 있는 패턴 매칭 기능을 가지고 이들 필드를 자유자재로 조작 가능한 유틸리티를 작성하고자 만든 것이다.

    2) awk의 응용분야
    데이터 프로세싱, 리포트 작성, 간단한 데이터베이스 구축, 등

    3) awk를 이용한 작업
    ① 프로그래머가 자신이 작성한 프로그램의 입력 화일이 특정한 형식에 들어 맞게 이루어져 있는지 검사.
    ② 출력화일을 처리하여 리포트를 만들어 냄.
    ③ 다른 프로그램의 입력 형식에 맞게 변환하는 작업에 이용.

2. awk 프로그램의 구조 및 실행
    (1) awk 프로그램의 구조
      1) awk ' pattern {action}
        pattern {action}
        ' filenames <-----------------입력화일(예제 : students)

      2) awk -f parttern-action-file filenames <----- 입력화일
        awk실행 action을 가진 프로그램 file

    (2) awk의 pattern

    패 턴내 용
    BEGIN입력화일을 읽어들이기 전에 옆에 제시되는 문자을 실행시키도록 한다.
    ENDawk가 모든 입력을 처리한 후, 옆에 제시되는 문장을 실행시키도록 한다.
    expression식을 평가한 후 이 식이 참, 즉 non-zero이거나 non-null인 경우 문장을 실행한다.
    /re/정규식과 일치하는 문자열을 포함하고 있는 라인에서 문장을 실행한다.
    compound-pattern복합패턴이라는 것으로 &&(and), ||(or) , !(not) 그리고 괄호에 의해 연결시킨 것이다. expression의 경우와 마찬가지로 복합 패턴도 참인 경우의 문장을 실행시킨다.
    pattern1, pattern2이러한 패턴을 범위 패턴이라한다. 현재 처리되고 있는 라인이 pattern1과 일치되고, 다음에 따라오 는 라인 중 임의의 라인이 pattern2와 일치할 때, 범위 패턴은 두 라인 사이의 각 라인과 일치한다.


    (3) awk의 연산자 
    연 산 자내용
    = += -= *= /= %=배정(assignment)연산자
    + - * / % ++ --산술 연산자
    || && !논리 연산자(|| = OR, && = AND, ! = NOT)
    > >= < <= == !=비교 연산자
    v ~p변수 V가 패턴 P에 부합되면 참
    v !~p변수 V가 패턴 P에 부합되지 않으면 참

    (4) 액션(Actions)
    액션은 문장(statements)으로 이루어져 있다. 액션은 간단하게 상수 하나로 이루어질 수도 있고, 개행 문자나 세미콜론(;)에 의해 분리된 몇 개의 문장의 연속으로 구성될 수도 있다.

      ① expressions
      ② print expression-list
      ③ printf(format, expression-list)
      ④ if (expression) statement
      ⑤ if (expression) statement else statement
      ⑥ while (expression) statement
      ⑦ for (expression; expression; expression) statement
      ⑧ for (variable in array) statement
      ⑨ do statement while (expression)
      ⑩ break
      ⑪ continue
      ⑫ next
      ⑬ exit
      ⑭ exit expression
      ⑮ {statement}

    (5) awk에서 미리 정의된 몇가지 변수들
    변 수내 용
    FILENAME현재 처리되고 있는 입력 파일의 이름
    FS입력 필드 분리문자
    NR현재 레코드(행)의 번호
    NF현재 레코드(행)의 필드의 갯수
    OFS출력되는 필드의 분리문자


3. awk의 기본예제

    (1) 예제 입력 파일 소개
      ① 입력화일의 이름은 students
      ② 이 파일의 각 라인은 3개의 필드로 구성(학생 성명, 학과명, 나이)
      ③ 각 필드는 공백에 의해서 분리(공백을 필드 분리자로 간주함.)
      < awk는 각 라인에서 필드를 추출해 내는 데 필드 분리자(field separator)를 사용, 필드 분리자는 보통 하나 이상의 공백 문자이다.>

    1) 입력화일 예제 students
      % cat students
      John,P Physics 20
      Rick,L Mechanical 21
      Jack,T electrical 23
      Larry,M Chemical 22
      Phil,R Electrical 21
      Mike,T mechanical 22
      Paul,R Chemical 23
      John,T Chemical 23
      Tony,N Chemical 22
      James,R Electrical 21

    예 1) 식(expression)에 맞는 field 프린트하기
      % awk '$3 > 22 {print $1}' students
      Jack,T
      Paul,R
      John,T

    예 2) if 문을 사용하여 조건에 맞는 line 분리하기(각 파일에 저장)
      step 1 : if문을 사용하는 프로그램을 awkprog1이라는 파일로 만든다.

        % cat awkprog1
        { if ($1 ~ /^J/) printf "%s\n", $0 > "Jfile"
        if ($1 ~ /^P/) printf "%s\n", $0 > "Pfile"}

      step 2 : students 입력화일에 awkpog1 프로그램 화일을 적용한다.

        % awk -f awkprog1 students

      step 3 : 결과 보기
        % cat Jfile
        John,P Physics 20
        Jack,T electrical 23
        John,T Chemical 23
        James,R Electrical 21

        % cat Pfile
        Phil,R Electrical 21
        Paul,R Chemical 23


    예 3) 평균값 구하기

      <프로그램 awkprog2, awkprog3>

      % cat awkprog2
      {sum += $3}
      END {printf "The average of the ages is %.2f\n", sum/NR}

      % cat awkprog3
      {sum += $3 
      ++no}
      END {printf "The average of the ages is %.2f\n", sum/no}

      <결 과>
      % awk -f awkprog3 students
      The average of the ages is 21.80

    예 4) while 과 do문을 이용하여 평균값 구하기
      <프로그램 awkprog4>
      % cat awkprog4
      {if (NF > 0) {
      sum = 0
      n = 1
      while (n <= NF) {
      sum = sum + $n
      n = n+1
      }
      printf "Average is %d\n", sum/NF
      }
      else
      print}

      <예 제>
      % awk -f awkprog4 test
      Average is 17
      Average is 3
      Average is 25
      Average is 0
출처// unix.co.kr

상기 예제를 활용하여 응용해봤다.


bro 로그 검색 (SRC IP가 172.2로 시작하고 DST IP가 10.으로 시작하지 않고 blabla~

# cat conn.log | awk '(($5 ~ /^172.2/)) && (($3 !~ /^10./) && ($3 !~ /^172./)) && ($16 ~ /^S/) && ($6 !~ /^1200/) && ($6 !~ /^60000/) && ($6 !~ /^65101/) && ($6 !~ /^65105/) && ($6 !~ /^65103/)’


uniq url별 카운트가 10 이상인 것들 추출하기

# cat http.log | sort | uniq -c | awk '{ if ($1 >= 10) {print $2$3"\t"$1}}’



'Tip' 카테고리의 다른 글

압축관련  (0) 2016.12.31
cron  (0) 2016.12.31
/etc/shadow 필드 설명  (0) 2016.12.31
사용 불가능한 쉘 지정하기  (0) 2016.12.31
리눅스 서치 커맨트 find, grep, egrep 예제  (0) 2016.12.29

+ Recent posts