본문 바로가기

자격증/정보보안기사 - 시스템보안

리눅스 서버 보안 명령어

728x90

ls [ 옵션 ]  

현재 디렉토리에 있는 내용 출력

< 옵션 >

-l : 자세한 내용 출력, mtime( 수정시간 )을 출력

-S : 파일 크기 순으로 정렬하여 출력

-r : 거꺼로 출력( ls 명령어의 기본은 알파벳 순 )

-lu : atime( 접근시간 )을 출력

-lc : ctime( 변경시간 )을 출력

 

history  

사용자가 입력한 명령어들의 기록을 보여주는 것

 

  ln -s [ 기존파일명 ] [ 새파일명 ]  

심볼릭 링크 생성
  ln [ 기존파일명 ] [ 새파일명 ]  

하드링크 생성

 

  ls -il  

파일별로 inod Number 확인

리눅스 파일 시스템 생성

-- 디스크 파티션 --

한 개의 하드 디스크를 여러 개로 분리하여 분리 공간에 따라 다른 용도로 사용하는 것

  fdisk [ 옵션 ] [ 장치명 ]  

하드디스크 초기화 및 파티션 생성

< 옵션 >

-l : 현재 파일 시스템 목록 확인

-v : 버전 정보 확인

-s 장치명 : 입력된 장치의 크기 출력

-d : 파티션 삭제

-n : 파티션 생성

-p : 현재 파티션 설정 상태 확인

 

-- 파일 시스템 생성 --

  mkfs [ 옵션 ] [ 장치이름 ]  

< 옵션 >

-V : 실행되는 파일 시스템의 특정 명령어 등 모든 정보 출력

-t : 파일 시스템 형식 선택

-c : Bad Block 검사, Bad Block 리스트 초기화

-l : 파일로부터 초기 Bad Block을 읽음

-v : 현재 진행사항 출력

 

  mke2fs [ 옵션 ] 장치명  

리눅스에서 사용하는 주된 파일시스템 타입인 ext2, ext3, ext4타입의 리눅스 파일 생성

< 옵션 >

-t ext2 : ext2형식의 포맷

-j : ext3형식으로 포맷

-b 숫자 : 블록크기를 지정

 

-> ext : 초기 리눅스에서 사용되었던 파일 시스템 타입( 현재 사용 X )

-> ext2 : 현재 사용되고 있는 파일 시스템 타입 ( 긴 파일명 지원 )

-> ext3 : 저널링 파일 시스템 ( ext2에 비해 파일 시스템 복구기능과 보안 부분 크게 향상 )

-> ext4 : ext3보다 큰 용량까지 지원 ( 삭제 파일복구, 파일 시스템 점검속도 향상 )

 

-- 파일 시스템 무결성 검사 --

  fsck [ 옵션 ] [ 파일시스템 옵션 ] 파일시스템/디스크 디바이스  

< 옵션 >

-s : 대화형 모드에서 여러 파일 시스템을 점검할 때 유용

-t : 검사를 수행할 파일 시스템을 지정

-A : /etc/fstab 파일에 기술된 파일 시스템을 모두 검사

-N : 검사는 수행하지 않고 수행될 내용을 출력

-P : 병렬처리 수행, 루트 파일 시스템 점검

-R : 루트 파일 시스템은 제외

 

< 파일 시스템 옵션 >

-a : 무결성 검사 후 자동검사 수행

-r : 대화형 모드를 수행하며 오류를 수정

-n : 오류 수정하지 않고 표준 출력으로 출력

-y : 특정 파일 시스템에 대해서 오류를 자동 수정

 

-- 파일 시스템 마운트 --

마운트 : 리눅스에서 특정 디렉토리를 연결할 경우 사용

  mount [ 옵션 ]  

마운트 실행

< 옵션 >

-a : fstab에 있는 모든 파일 시스템을 마운트

-> fstab : mount를 수행할 때 참조하는 파일로 파일 시스템 마운트에 관한 정보를 가지고 있다.

-f : 실제로 마운트하지 않고 마운트 가능한지 확인

-n : /etc/mtab 파일을 쓰기 작업 하지않고 마운트

-r : 읽기만 가능하도록 마운트

-w : 읽기 및 쓰기 모드로 마운트

 

  unmount [ 옵션 ]  

마운트 해제

< 옵션 >

-n : /etc/mtab 파일을 변경하지 않고 마운트 해제

-v : 정보 출력

-a : /etc/mtab 파일에 지정된 파일 시스템을 모두 해제

-t 파일시스템명 : 지정된 파일 시스템 해제

 

리눅스 권한 관리

  umask  

Default 권한 값을 가지고 있는 명령어

umask 값이 0022라면 두 번째 자리부터 0은 소유자, 2는 그룹, 마지막 2는 다른 사용자를 의미하고,

이 값을 full 접근권한에서 빼면 그 권한을 알 수 있다.

 

-- 파일 생성 시 --

666 - 022 = 644

 

-- 디렉토리 생성 시 --

777 - 022 = 755

 

권한부여 및 변경

chmod [ 숫자 ] 파일명

ex. ABC 파일에 유저는 읽기/쓰기/실행 권한을, 그룹은 읽기/쓰기 권한을, 다른사람들은 읽기 권한을 부여할 때

-> chmod 464 ABC

ex. 위의 결과인 ABC 파일에서 유저는 읽기/쓰기 권한을, 그룹과 다른사람들은 실행 권한을 부여할 때

-> chmod u-x, g-rw, o-r, go+x ABC

-> chmod 611 ABC

-> chmod u=rw, go=x ABC

명령기호 u g o a + - r w x
설명 user group other all 추가 삭제 읽기 쓰기 실행

파일에 대한 소유자와 소유그룹을 변경

chown [ 옵션 ] [ UID:GID ] 파일명

< 옵션 >

-R : 하위 디렉토리의 모든 권한 변경

-c : 권한 변경 파일 내용 출력

ex. ABC 파일에 대해 소유자와 소유그룹을 test로 변경할 때

-> chown test: ABC

ex. ABC 파일에 대해 소유그룹을 team로 변경할 때

-> chown :team ABC

ex. ABC 파일에 대해 소유자를 view로 변경할 때

-> chown view ABC

 

파일이나 디렉토리의 소유자그룹을 변경

chgrp [ 옵션 ] 파일명

< 옵션 >

-c : 변경된 파일만 자세하게 보여줌

-R : 경로와 그 하위 파일들을 모두 변경한다.

ex. ABC 파일에 대해 그룹을 test로 변경할 때

-> chgrp test ABC

 

허가권과 소유권

ls -l 명령을 사용시 아래의 그림처럼 나온다.

< 총 8개의 필드로 나눌 수 있다 >

1. - : 파일 유형

2. rw-r--r-- : 파일 허가권

3. 1 : 링크 수

4. root : 파일 소유계정명( 소유자 )

5. root : 파일 소유그룹명( 소유그룹 )

6. 132565 : 파일 크기

7. 3월 14 18:20 : 마지막으로 변경된 날짜, 시간

8. 100_100_100_x.log : 파일명

 

허가권 : 2번 필드 부분

소유권 : 4번, 5번 필드 부분

 

특수 권한 관리

setuid

setuid가 설정된 파일을 실행할 때 일시적으로 파일 소유자( 4번 필드 )의 권한을 얻어 실행할 수 있도록 한다.

허가권에서 소유자의 권한에 s가 있다면 setuid가 설정되어 있다는 것이다.

-- setuid 설정 --

8진수 4000을 더하거나 u+s를 이용

ex. chmod 4744 ABC

-> ABC 파일에 setuid가 설정되고 744권한이 부여된다.

결과 : rwsr--r--

 

-- 소문자 s와 대문자 S --

실행파일에 setuid를 설정하면 소문자 s가 되고 정상적으로 실행 할 수 있게된다.

실행파일이 아닌데 setuid를 설정하면 대문자 S가 되고 정상적으로 실행 할 수 없다.

 

setgid

setuid와 마찬가지로 setgid가 설정된 파일을 실행할 때 일시적으로

파일 소유그룹( 5번 필드 )의 권한을 얻어 실행하도록 한다.

-- setgid 설정 --

8진수 2000을 더한다.

ex. chmod 2544 ABC

-> ABC 파일에 setgid가 설정되고 544권한이 부여된다.

결과 : r-xr-sr--

 

-- 소문자 s와 대문자 S --

실행파일에 setgid를 설정하면 소문자 s가 되고 정상적으로 실행 할 수 있게된다.

실행파일이 아닌데 setgid를 설정하면 대문자 S가 되고 정상적으로 실행 할 수 없다.

 

Sticky bit

Sticky bit가 설정된 디렉토리에 파일을 생성하면 해당 파일은 생성한 사람의 소유가 되며

소유자와 root만이 해당 파일에 대한 삭제 및 수정에 대한 권한을 가질 수 있다.

즉. Sticky bit가 설정된 디렉토리안에 누구나 파일을 생성할 수는 있지만 삭제는 본인과

관리자만 가능하다.

-- Sticky bit 설정 --

8진수 1000을 더한다.

ex. chmod 1644 ABC

-> ABC 파일에 Sticky bit가 적용되고 644권한이 부여된다.

결과 : rw-r--r-t

 

-- 소문자 t와 대문자 T --

실행파일에 setgid를 설정하면 소문자 t가 되고 정상적으로 실행 할 수 있게된다.

실행파일이 아닌데 setgid를 설정하면 대문자 T가 되고 정상적으로 실행 할 수 없다.

 

find [ 경로 ] [ 옵션 ]

조건을 옵션으로 설정 한 후 조건에 맞는 파일을 검색 할 수 있다.

< 옵션 >

-name 파일명 : 파일이름과 일치

-perm 권한 : 권한과 일치

ex. find / -perm -4000

-> 전체에서 최소한 setuid가 걸려있는 모든 파일을 검색

-> -4000에서의 - : 최소한 / -4000에서의 000 : 모든파일

-user 유저 : 유저와 일치

-group 그룹 : 그룹과 일치

-empty : 비어있는 파일이나 디렉토리

-size [ +파일크기/파일크기/-파일크기 ] [bckw중 택1 ] : 파일크기와 일치

 

[ bckw ]

b : 블록단위( 512kb )

c : byte

k : kbyte

w : 2byte

디폴트 : b

 

ex. find / -size 1024k : 1024kbyte 크기의 파일 검색

ex. find / -size +1024k : 1024kbyte 크기 이상의 파일 검색

ex. find / -size -1024k : 1024kbyte 크기 이하의 파일 검색

-[ mtime/ctime/atime ] [ +/ /- ] [ 숫자 ] : 시간을 기준으로 파일 검색

ex. find / -mtime +5

-> 최근 6일 동안 변경되지 않은 파일 찾기

ex. find / -mtime -1

-> 24시간동안 변경된 파일 찾기

 

< 시간 표현 방법 >

who

현재 로그인 한 사용자 정보 확인( 로그인 사용자 ID, 사용 터미널, 로그인 시간 )

-> 현재 로그인한 사용자 정보는 로그인 수행시 /var/run/utmp에 기록된다.

 

stat [ 옵션 ] 파일명

파일이나 파일 시스템의 상태를 보여주는 명령어

확인 가능 : 파일명, 파일 크기, 사용되는 블록 정보, inode 정보, 파일에 부여된 권한, atime, ctime, mtime

< 옵션 >

-l : 링크 파일의 소스 파일 정보를 보여준다.

-f : 파일명이 있는 파일 시스템의 정보를 보여준다.

-t : 간략한 정보를 보여준다.

 

tty

사용자가 연결한 터미널 정보 확인

 

last [ 옵션 ]

로그인과 재부팅 로그를 출력

확인 가능 : 접속 계정명, 접속 장치명, 접속한 IP 주소정보, 접속시간 정보, 접속기간 정보

< 옵션 >

-num : num 만큼의 줄만 출력

-R : Hostname 필드는 출력 안함

-d : 다른 Host에서 접속한 내용만 출력

 

lastb [ 옵션 ]

로그인 실패 기록을 출력

< 옵션 >

-num : num 만큼의 줄만 출력

-R : Hostname 필드는 출력 안함

-d : 다른 Host에서 접속한 내용만 출력

 

cron [ 옵션 ]

일정한 날짜와 시간에 지정된 작업을 실행하는 프로세스( 반복적인 작업을 수행할 때 사용 )

/etc/crontab 파일에 설정된 것을 읽어서 작업 수행

crontab에 대한 로그는 /var/log/cron에 저장된다.

-- 중요한 이유 --

1. 보안 취약점 검사를 수행할 때 매일 반복적으로 점검 가능

2. 공격자가 악성코드를 실행하는 명령을 crontab에 설정해서 반복적으로 악성코드를 실행 가능

 

-- crontab 파일구조 --

분( 0-59 ) / 시( 0-23 ) / 일( 1-31 ) / 월( 1-12 ) / 요일( 0[일]-6[토] ) / 사용자 / 실행명령

ex. 30 * * * * /home/user/limbest

-> 무조건 30분에 맞추어 limbest 실행

ex. */10 2-5 * * * /home/user/limbest

-> 2시부터 5시까지 10분마다 limbest 실행

ex. 30 3 * * 2 /home/clean.sh

-> 매주 화요일 3시 30분에 /home/clean.sh 명령 실행

 

< 옵션 >

-l : 현재 로그인 된 계정에 잡혀있는 작업 스케줄 확인

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

-r : 현재 crontab에 등록된 작업을 삭제

-u User명 : 작업을 실행시킬 유저명 설정

 

at [ 옵션 ]

예약한 명령어를 정해진 시간에 한 번만 실행

< 옵션 >

-l : 현재 실행 대기 중인 명령의 목록 출력

-r : 실행 대기 중인 명령에서 해당 작업번호 삭제

-f : 표준 입력 대신 실행할 명령을 파일로 지정

 

ifconfig

네트워크 인터페이스 정보를 확인하거나 네트워크 인터페이스를 시작, 종료 할 수 있다.( IP확인 )

< 옵션 >

인터페이스명 : 해당 인터페이스만 네트워크 정보 확인

-a : 모든 네트워크 정보를 볼 수 있음

-> lo 인터페이스 : 시스템이 자기자신과의 통신을 하기 위한 가상 이더넷 장치( Loopback )

netmask 주소 : 넷마스크 주소를 설정

broadcast 주소 : 브로드캐스트 주소를 설정