You cannot see this page without javascript.

진주성 블로그 방문하기

OS command

2017.11.01 07:48

구피천사 조회 수:957

/etc/passwd 파일 내용

사용자 계정명

x 사용자 패스워드 (x는 /etc/shadow 패스워드를 상용한다는의미)

사용자ID

기본 그룹 ID

기타정보

홈 디렉토리(/home/skqldi125)

로그인쉘(/bin/sn, /bin/bash) - 보안적용시 (/sbin/nologin, /bin/false)

 

/etc/shadow

두번째 필드는 패스워드가 들어가는데 아래와 같이 있을경우에는

* : 패스워드 잠긴상태

!! : 잠긴상태로 로그인이 불가,계정 만들고 패스워드 설정안하면 이상태

빈값 : 패스워드가 설정되지 않음, 패스워드없이 로그인가능 하기때문에 로그인시 패스워드 설정과정이 진행된다

 

필드내용

사용자계정명, 암호화된 패스워드, 마지막으로 패스워드 변경한날, 패스워드 최소 사용기간, 패스워드 최대 사용기간,

패스워드 만료이전 경고일수, 패스웓가 만료된 이후 계정이 잠기기 전까지 비활성일수, 계정 만료일

 

 

사용자 확인

id [id] -사용자 확인

uid, gid, groups 를 확인

 

패스워드 변경

passwd [ id ]

id 를 생략하면 자기 자신의 패스워드를 변경할수 있다

슈퍼 유저는 자신을 포함하여 모든사람을 바꿀수 있다

 

그룹정보

/etc/group

그룹명 : x 패스워드 사용안함 : 기본그룹

유닉스 시스템의 사용자 계정은 하나의 기본 그룹과 복수의 보조 그룹에 소속될수 있다.

 

입출력 재지정

> - 출력 재지정

>> - 출력 추가

who > who.txt

who >> who.txt

 

파이프 |

둘 이상의 명령을 함께 묵어 출력의 결과를 다른 프로그램의 입력으로 전환하는 기능

 

리눅스 파일 시스템 구조

1. 부트블럭 : 운영체제 부팅

2. 슈퍼 블럭 : 파일 시스템 관리하기 위한 정보

3. 아이노드 리스트 : 파일들에 대한 속성정보, 파일명 없음

                           MAC time 보는 명령어 : stat filename

4. 데이타 블럭 : 실제 파일의 내용(데이터)

 

링크파일

하드링크 : 동일 파일시스템 내에서만 하드 링크가능, 디렉터리는 하드링크 불가

              삭제시 링크카운터 1 감소, 0일때 삭제

              ln filename filename2

심볼릭링크 : 파일 경로를 기반으로 하므로 파일 시스템에 제한이 없음 디렉터리도 가능

                 삭제시 심볼릭 링크만 삭제됨

                 ln -s filename filename2

 

디렉터리 내용 출력(ls)

예 ls -la

-l : 목력 형태로 보여줌

파일 종류및 접근권한, 하드 링크수, 소유주, 소유그룹, 크기, 최종수정일, 최종수정시간, 파일명

-a : 숨김 파일 보여줌

-R : 하위 디렉터리에 있는 내용

-F : 파일 종류

-i : i-node 번호를 알ㄹ줌

 

디렉터리 간의 이동 (CD)

cd ~ : 홈 디렉터리로 이동

cd - : 직전 디렉터리로 바꾸

 

새로운 디럭터리 생성 (mkdir)

-m : 생성 권한을 명시적으로 선언

-p : 하위 디럭터리 한꺼번에 생성

mkdir -m 755 -p /home/test/test

 

기존 디렉터리 삭제 (rmdir)

-p : 하위 디럭터리 한꺼번에 삭제

rmdir -p /home/test/test

 

파일 권한 관리 (chmod)

-R : 하위 디렉터리와 파일의 권한까지 변경

chmod -R o-w filename

u,g,o,a(all)

+,-,=

r,w,x

 

소유주 또는 소유그룹 변경(chown/chgrp)

-R

-h : 심볼릭 링크 파일 자체의 소유주나 그룹을 변경한다.

chown root filename

chgrp root filename

 

접근권한 마스크(umask)

file : 666, directory : 777 에서 umask 값을 뺀 값이 권한이 설정된다.

umaks 는 022기본값이며 파일생성은 644, 디렉토리 생성은 755 가 기본이 된다.

umaks 값이 022 아닌경우 (예 000) 보안취약하다

/etc/profile 에 설정한다.

umask=022

 

파일검색(find)

-name file_name  - 파일명을 지정 [], ?, *의 메타 문자사용

-type                 - f:일반파일 d: 디렉터리 b: 블럭장치 c: 문자장치 l: 심볼릭링크 s:소켓 p: 파이프

-user name         - 소유자로 찾기

-group name       - 그룹명으로 찾기

-size [+-]num[단위]   - 파일 크기 지정

-perm mode        - 접근권한 지정하여 찾기

-atime [+-]n        - 접근한 시간

-ctime [+-]n        - 속성이 마지막 변경된 시간

-mtime [+-]n       - 내용이 마지막 변경된시간

 

예)

find / -name *file.php* -print 2> /dev/null
find / -perm +6000 -print
find / -ctime -24 -print
       -mtime
       -atime count : count 수 만틈 접근한 파일
       -size n
       -links n
       -user username
       -group groupname
find / -nouser -o -nogroup -print
find / -mtime -2 -exec rm -f {}\;
find / -name "*.bak" --exec rm -f {} \; 2>/dev/null

프로세서상태(ps -ef)

ps -l

좀비프로세서 : CMD 라인에 <defunt>

                    상태정보가 (S 필드) Z(zombie)

kill -9 PID

 

사용자 계정 추가(useradd)

useradd skdldi125

슈퍼 유저 root만 사용할수 있다.

관련 파일 : /etc/passwd, /etc/group, /etc/shadow

 

사용자 계정삭제 (userdel)

-r : 사용자의 홈 디렉토리까지 지운다

userdel -r skqldi125

 

groupadd

groupdel

 

파일 시스템 연결 / 해재

보조기억장치에 설치된 파일 시스템을 유닉스 시스템이 인식하도록 특정 디렉터리에 논리적으로 연결및 해제

mount [-a] [device | mount_point]

mount [-option] device mount_point

ex: mount /dev/cdrom /mnt/cdrom

umount [-option] device mount_point

umount [-a] [device | mount_point]

 

하드디스크 사용량(du), 파일 시스템 용량정보 (df)

du -sk

du -k

df -k

 

프로세서 스케쥴 관리

crontab

-l : 스케줄 확인

-e : 로그인중인 계정에 작업 등록

-r : 등록된 작업을 삭제

-u User명 : 유저명 설정

 

분, 시, 일, 월, 요일, 명령어

crontab -l

20 6 * * 1-5 /batch

매월 매일 월~금요일 오전 6시 20분에 배치 실행

 

crontab -u skqldi125 -e  : 해당 계정의 크론텝 수정

/etc/cron.allow  root 640

 

lsof : 프로세서가 오픈하고있는 파일과 소켓및 포트정보 확인

-u : 특정 사용자가 사용하는 프로세서 확인
-p : 저정한 프로세스가 오픈한 파일 리스트 확인 
-i : 모든 네트워크에 연결되어 있는 프로세서와 파일 정보를 조회
-c : 지정한 데몬과 연결되어 있는 포르세스와 파일 정보를 조회

 

  • rpm -Va : redhat linux 계열의 팩키지 설치 명령어
S : File Size differs
M : Mode differs
5 : MD5 Sum differs
D : Device major/minor number mis-match
L : readLink path mis-match
U : User Ownership differs
G : Group ownership differs
T : mTime differs

 

  • SNMP 명령어
Get : 장비의 상태 및 구동시간 등의 관리 정보를 읽기
Get-Next :  정보가 계층적 구조를 가지므로 관리자가 장비에 조회를 해서 해당 트리보다 하위층 정보를 읽기
Set : 장비 MIB를 조작하여 장비제어, 관리자는 요청을 보내 초기화 혹은 장비 재구성
Trap : 관리자에게 보고하는 Event, Agent는 경고, 고장통지 등 미리 설정된 유형의 보고서를 생성

 

특수권한

4 = setuid

# chmod 4755 setuid_file

# chmod u+s setuid_file

# find / -perm 4755 -print

 

2 = setgid

# chmod 2755 setgid_file

# chmod g+s setuid_file

# find / -perm 2755 -print

 

6755 -> ug+s

 

1 = sticky bit

# chmod 1755 sticky_bit_file

# find / -perm 1755 -print

 

find / -perm 7755 -print : suid,sgid,sticky 파일 찾기

find / -perm 6755 -print : suid,sgid 파일 찾기

 

Setuid 를 이용한 사용자가 root 권한 획득 방법

user2@raspberrypi:~ $ id
uid=1001(user2) gid=1001(user2) groups=1001(user2)
user2@raspberrypi:~ $ cd /
user2@raspberrypi:/ $ ls -la kit
-rwsr-xr-x 1 root root 5900 11월  4 01:54 kit
user2@raspberrypi:/ $ ./kit
#
# id
uid=0(root) gid=0(root) groups=0(root),1001(user2)
#
# cat kit.c
#include <stdio.h>

void main(void)
{
        setuid(0);
        setgid(0);
        system("/bin/sh");
}

 

특수 권한 제거

chmod -s kit


 

 

 lsattr과 chattr 커맨드 사용법

*lsattr 커맨드 : 파일에 설정된 속성(모드) 보기

*chattr 커맨드 : 파일에 속성을 추가하여 설정하거나 제거 가능

- root도 chattr로 설정한 것을 해제하지 않으면 chattr +i로 설정한파일을 지울 수 없도록 설정가능

- 모드를 추가 할때는‘+모드’, 모드를 제거할 때는‘-모드’를 사용

chattr [옵션] [+=-모드] [파일명]
[ 사용 예 ]

[root@panda webscr_cmd=_login-run]# lsattr suSiadAc----j- ./checking.php

[root@panda webscr_cmd=_login-run]# chattr -i -a checking.php

*모드 i : 파일을 read-only만 가능 a : 파일 수정시 내용을 추가만 가능

*옵션 R : 현 디렉토리의 하위 경로에 있는 파일과 디렉토리까지 모드적용
 

 

윈도우 명령어로 NetBios 검색

nbtstat [ [ -a Remote Name ] [ -A IP Address ] [-c] [-n] [-r] [-R] [-RR] [-s] -[S] [interval] ]

-a : 이름을 지정하여 원격 컴퓨터의 이름 테이블을 나열함

-A : IP 주소를 지정하여 원격 컴퓨터의 이름 테이블을 나열함

-c : 이름과 해당 IP 주소 캐시를 나열함

-n : 로컬 NetBios 이름을 나열함

 

Dos 공격에 취약한 Simple TCP 서비스

echo(7/tcp)

discard(9/tcp)

daytime(13/tcp)

chargen(19/tcp)

rlogin

rsh

rexec

rpc.cmsd

rusersd

finger

tftp

talk

위 서비스는 모두 취약한 서비스 이므로 비활성화 한다

Unix : /etc/inetd.conf 에 주석처리하고 inetd 재시작

Linux : /etc/xinetd.d/ 에 해당 서비스파일 주석처리하고 xinetd 재시작

 

/etc/xinetd.d/telnet 설정파일 내용

service telnet
{
       flags          = REUSE
       socket_type    = stream
       wait           = no
       user           = root
       server         = /usr/sbin/in.telnetd
       log_on_failure += USERID
       disable        = no
       only_from      = 192.168.1.100 127.0.0.1 192.168.1.200
}

설명

nstances = 60 : xinted 데몬에 의해 실행되는 네트워크 서비스 데몬의 최대 동시 접속 허용을
   위한 데몬의 기동 수치로서,여기서는 60으로 설정

log_type = SYSLOG authpriv : 시스템 로그를 "보안 및 승인에 관한 메시지 등급"으로 저장

log_on_success = HOST PID : 접속에 성공했을 때 원격호스트 IP 와 xinetd PID를 로그에 저장

log_on_failure = HOST : 접속에 실패했을 때 원격호스트 IP를 로그에 저장한다는 의미로, 접속 장애의 원인
   을 분석할 수 있는 최소한의 근거를 이력으로 남김

cps = 25 30 : 동시 접속이 25개가 되면 30초 동안 서비스를 비활성화

service telnet : 서비스의 이름으로서, /etc/services 파일에 있는 서비스명으로 선택하는 것을 권장

flags = REUSE : 서비스 포트가 사용 중인 경우 해당 포트의 재사용을 허가

socket_type = stream : TCP/IP 프로토콜을 선택

wait = no: 이미 서비스가 연결된 상태에서 다른 요청이 오면 바로 응답함.
    다르게 표현하면 telnet은 동시에 다수의 접속이 가능하다는 의미.

user = root: 해당 데몬이 root 계정의 권한으로 실행됨

server = /usr/sbin/in.telnetd: xinted에 의해 실행될 데몬 파일

log_on_failure += USERID : 정상적인 기동에 실패한 경우 USERID를 로그에 기록

disable = no: 데몬을 비활성화하지 않음. disable = yes로 설정된 경우에는 해당 서비스를 기동하지 않음 

 

 

 

/etc/xinetd.conf 내용

defaults
{
log_type = SYSLOG daemon info
log_on_failure = HOST
log_on_success = PID HOST DURATION EXIT
# no_access =
# only_from =
# max_load = 0
cps = 50 10
instances = 60
per_source = 10
groups = yes
umask = 002
}
includedir /etc/xinetd.d

설명

instances = 60 : xinted 데몬에 의해 실행되는 네트워크 서비스 데몬의 최대 동시 접속 허용을 
위한 데몬의 기동 수치로서,여기서는 60으로 설정

​log_type = SYSLOG authpriv : 시스템 로그를 "보안 및 승인에 관한 메시지 등급"으로 저장

​log_on_success = HOST PID : 접속에 성공했을 때 원격호스트 IP 와 xinetd PID를 로그에 저장

​log_on_failure = HOST : 접속에 실패했을 때 원격호스트 IP를 로그에 저장한다는 의미로, 접속 장애의 원인을 분석할 수 있는 최소한의 근거를 이력으로 남김

​cps = 25 30 : 동시 접속이 25개가 되면 30초 동안 서비스를 비활성화

 

 

TCP Wrapper

 

/etc/hosts.allow

in.telnetd : 192.168.1.0/255.255.255.0

in.ftpd : 192.168.1.2

sshd : 192.168.1.3

 

/etc/hosts.deny

#sshd : ALL

ALL : ALL

 

PAM

- 리눅스 시스템 내에서 사용되는 각종 어플리케이션 인증을 위해 제공되는 다양한 인증용 라이브러리들

/lib/security

/usr/lib/security

/etc/pam.d/*

 

예) root 계정의 원격 접속 제한

- /etc/security 파일에 터미널을 모두 제거한다( #pts/* )

 

로그저장위치

/var/log/secure

 

예2) 계정잠금 임계값 설정

/etc/pam.d/system-auth 파일에 추가한다

auth required pam_tally2.so deny=5 unlock_time=120 # 5회 입력실패시 계정잠금, 120초 시간 지나면 계정 잠금 해제

account required pam_tally2.so no_magic_root reset   # root 계정은 패스워드 잠금 안함, 접속시도 성공시 실패한횟수 초기화

 

pam_tally2 -u 계정명 : 로그인 실패 횟수 확인

pam_tally2 -u 계정명 -r : 실패 횟수 초기화

 

 

시스템 로그파일

Linux : /var/log/*

UNIX : /var/adm/*

 

utmp : 현재 로그인한 사용자의 상태정보를 담고 있음, w,who,finger 로 확인

wtmp : 성공한 로그인/로그아웃 정보, Boot/Shutdown 정보의 히스토리 저장 , last 로 확인

lastlog : 가장 최근에 성공한 로그인기록, last, finger

btmp : 리눅스의 실패한 로그인 시도에 대한 기록, lastb

loginlog : 유닉스는 5회이상 실패시 남김

sulog : 유닉스에서 su 명령을 사용한 결과 저장, +성공 -실패

secure: 리눅스에서 su 명령을 사용한 결과 저장

acct/pacct : 시스템에 로그인한 모든 사용자가 로그아웃할 때까지 입력한 명령어와 터미널의 종류, 프로세스 지작시간 저장

                lastcomm 명령으로 확인 

                Linux 에서는 accton /var/accont/pacct 실행, UNIX 에서는 /usr/lib/acct/accton /var/adm/pacct 실행

message : 리눅스 시스템의 가장 기본적인 시스템 로그파일, 시스템 운영에 대한 전반적인 메시지를 저장

syslog.log : 유닉스  시스템의 가장 기본적인 시스템 로그파일, 시스템 운영에 대한 전반적인 메시지를 저장

dmesg : 부팅될때 출력되는 모든 메시지를 기록

boot.log : 부팅될때 프로세서 성공/실패여부 저장

xferlog : ftp 업로드 다운로드 로그 ( i - 파일 업로드, o - 파일 다운로드,  d - 삭제 )

cron

maillog

 

 

/etc/(r)syslog.conf - 514/udp , 공백은 tab

facility.priority          action

 

*.*                        @192.168.219.2 # 로그서버에 전체로그 전송

auth,authpriv.*         /var/log/auth.log # 인증관련 로그는 auth.log 에 저장

 

facility : 로그생성 서비스

* - 모든 서비스

auth, authpriv - 인증 및 보안 관련 메시지

cron

daemon

kern

lpr

mail

uucp

user

syslog

local0~local7

 

priority : 로그 수준

* 모든 수준

Emergency(emerg)

alert(alert)

Critical(crit)

Error(err)

Warning(warning)

Notice(notice)

information(info)

debug(debug)

 

action : 로그 남길 파일명 절대경로

 

로그파일 순환관리

/usr/sbin/logrotate - 데몬

/etc/logrotate.d/*

/var/lib/logrotate.status

/etc/cron.daily/logrotate - cron 주기적으로 실행

 

/etc/logrotate.conf 의 내용

daily, monthly, weekly - 일단위, 월단위, 주단위 로그파일 순환

rotate n - 순환 로그파일의 개수를 n 개로 설정

create [퍼미션][소유자][소유그룹] - 순환시 새롭게 로그파일을 생성할때 지정

dateext - 로그파일의 확장자로 날짜를 붙여서 보관

compress, uncompress - 압축보관

size n - 지정한 크기가 되면 로그파일 순환

include /etc/logrotate.d - 해당 디렉터리에 있는 개발 데몬설정

 

/etc/logrotate.d/httpd 내용

/var/log/httpd/*.log {   # 로그파일 위치

missingok                  # 로그파일 없어도 어류를 발생 시키지 않는다

notifempty                 # 로그파일이 비어 있는 경우 순환하지 않음

sharedscripts              # 로그파일이 여러 개 있어도 스크립트를 한번만 실행

delaycompress

postrotate                 # 순환후 스크립트 실행

/bin/kill -HUP 'cat /var/run/httpd/httpd.pid 2>/dev/null` 2>/dev/null || true

endscript

}

 

 

버퍼 오버플로우 공격

- 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에 자료를 읽거나 쓰려고 할때 발생

- 프로그램의 오작동을 유발, 악의적인 코드를 실행시킴, 권한 획득

- 스택 버퍼 오버플로우 : 스택은 함수 처리를 위해 지역변수 및 매개변수가 위치하는 메모리 영역인데 할당된 버퍼들이

                                문자열 계산등에 의해 정의된 버퍼의 한계치를 넘는경우 발생 , 복귀 주소를 변경하고 공격자가

                                임의 코드를 실행한다.

- 힙 버퍼 오버플로우 : 힙은 사용자가 동적으로 할당하는 메모리 영역인데, 힙에 할당된 버퍼들에 문자열 등이 저장되어질때

                              최초 정의된 힙의 메모리 사이즈를 초과하여 문자열 등이 저장되는경우 버퍼 오버플로우가 발생하여

                              데이터와 함수 주소 등을 변경하여 공격자가 원하는 임의 코드를 실행한다.

- 스택 버퍼 오버플로우 대응기술 : 스택 가드, 스택 쉴드, ASLR(Address Space Layout Randomization)

- 스택 가드 : 메모리상에서 프로그램의 복구 주소와 변수 사이에 특정값(카나리 단어)을 설정해 두었다가 그 값이 변경 되었을경우

                 어버플로우로 가정하고 프로그램 실행을 중단하는 기술

- 스택 쉴드 : 함수 시작시 복귀주소를 Global RET 라는 특수 스택에 저장해 두엇다가 함수 종료시 저장된 값과 스택의 RET 값을

                 비교해 다를 경우 오버플로우로 가정하여 프로그램 실행을 중단 시키는 기술

- ASLR : 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화 하는 기법, 실행시 마다 메모리 주소를 변경 시켜

           악성 코드에 의한 특정 주소 호출을 방지한다

 

레이스 컨디션 공격

- 둘 이상의 프로세스나 스레드가 공유자원에 동시에 접근할 때 접근하는 순서에 따라 비정상적인 결과가 발생하는 상황

- 실행되는 프로세스가 임시파일을 만드는경우 악의적인 프로그램을 통해 그 프로세스의 실행 중에 끼어들어 임시파일을

목적파일로 연결하여 악의적인 행위를 할 수 있는 상태

- 프로세스가 setuid 설정되어 root 권한으로 실행 된다면 권한 상승을 통한 모든파일 접근하는 심각한 문제 발생

- 대응 방안

가능하면 임시 파일을 생성하지 않는다

파일 생성 시 이미 동일한 파일이 존재하는 경우 파일 생성 또는 쓰기를 금지

사용하고자 하는 파링에 링크가 걸려 있으면 실행을 중단한다

umask를 최하 022 정도로 유지하여 임시로 생성한 파일이 공격자에 의해 악의적으로 삭제되지 않도록 한다.

 

 

번호 제목 날짜 조회 수
95 국제공통 평가 기준 표준 (CC:Common Criteria) 2017.11.09 247
94 정보통신망법 2017.11.09 97
93 IoT 보안 2017.11.08 87
92 접근통제 참조모델 2017.11.07 142
91 쉘쇼크(Shellshock) 2017.11.07 116
90 악성코드의 종류 2017.11.07 383
89 디지털 포렌직 조사의 일반원칙 2017.11.07 92
88 ftp 보안 취약점및 대책 2017.11.05 538
87 Dos 공격유형 및 차단 2017.11.03 721
» command file 2017.11.01 957
85 ICMP 2017.11.01 1049
84 아파치 웹서버 보안설정 file 2017.11.01 3419
83 HTTP Header 2017.11.01 112
82 IPv4, IPv6 2017.11.01 108
81 OSI 7 Layer 2017.11.01 214
진주성 블로그 방문하기
CLOSE