어렵당
2. 리눅스/유닉스 기본 본문
프로세스
: 가상메모리에 할당되며 크게 사용자영역과 커널영역으로 구분
: 프로세스가 생성되면 커널은 프로세스별 관리정보(프로세스 ID 등)를 담고 있는 프로세스 제어 블록(PCB)가 생성
Init 프로세스 : 시스템 런 레벨(운영모드)에 따른 시스템 초기화, 대리모 프로세스 역활 수행
( 대리모 프로세스 : 부모 프로세스가 죽어서 고아 프로세스가 된 프로세스의 부모 프로세스가 되어준다 )
런 레벨 0 : (Halt) 시스템 중지
런 레벨 1 : (Single user mode) 단일 사용자 모드
런 레벨 2 : (Multiuser withous NFS) 네트워크를 사용하지 않는 다중 사용자 모드
런 레벨 3 : (Full Multiuser mode) 네트워크를 지원하는 다중 사용자 모드
런 레벨 4 : (Unused) 사용 안함
런 레벨 5 : (X11) X-Windows(GUI 환경)를 사용하는 다중 사용자 모드
런 레벨 6 : (Reboot) 시스템 재부팅
좀비 프로세스 : 프로세스가 수행을 종료했지만 커널오류 또는 부모 프로세스가 자식 프로세스에 대한 종료 상태정보를 처리하지 않은 경우 등으로 소멸하지 않고 남아있는 상태를 좀비 프로세스라고 한다
제거방법 : 좀비 프로세스의 부모 프로세스를 종료하여 init이 부모가 되어주면서 소멸시키거나 시스템을 재기동하여 커널정보를 초기화하여 제거 할 수 있다.(좀비 프로세스는 kill 시그널을 통해서도 소멸하지 않음)
IPC(Inter-Process Communication)
: 프로세스 간 통신
: 프로세스는 운영체제(커널)의 도움 없이는 서로 공간을 공유해서 통신하는건 불가능
: 운영체제(커널)의 도움으로 아래와 같은 방법으로 통신 가능
1. 파이프 : |
: 명령어 실행결과를 다른 명령어의 입력으로 전달하여 처리하도록 하는 기능
ex ) cat /etc/passwd | grep root
2. 공유 메모리
3. 메시지 큐
4. 세마포어
5. 소켓
6. 시그널
: 커널 또는 프로세스가 다른 프로세스에 약속된 신호를 전달하여 통신하는 목적으로 사용
* 주요 시그널
SIGKILL (9) : 시그널을 받은 프로세스는 무조건 종료한다
SIGSTOP (19) : 시그널을 받은 프로세스는 무조건 정지한다
명령어 : kill -kill/stop(또는 번호) 프로세스ID
ex : kill -kill 4552
ex : kill -9 7884
프로세스 실행권한(SUID, SGID)
RUID(Real User ID) : 프로세스를 실행시킨 사용자의 UID
RGID(Real Group ID) : 프로세스를 실행시킨 사용자의 GID
EUID(Effective User ID) : 프로세스가 실행중인 동안 부여되는 UID
EGID(Effective Group ID) : 프로세스가 실행중인 동안 부여되는 GID
SUID : 프로세스가 실행중인 동안 해당 파일의 소유자 권한으로 자원에 접근할 수 있도록 하는 권한(EUID가 변경됨)
SGID : 프로세스가 실행중인 동안 해당 파일의 소유그룹 권한으로 자원에 접근할 수 있도록 하는 권한(GUID가 변경됨)
디렉터리 접근권한(Sticky-bit)
: 일반적으로 공유 디렉터리에 모든 사용자가 이용할 수 있도록 777권한을 부여하는데 다른 사용자가 다른 사용자의 파일을 제거하거나 파일명 변경을 할 수 있는 문제점이 있는데 sticky-bit 설정 시 삭제 및 파일명 변경은 소유자만이 가능하다.
ex) chmod 1777 /tmp or o+t (유닉스는 u+t) 로 설정 가능
심볼릭 링크(Symbolic Link)
: 윈도우의 바로가기와 비슷한 기능, 원본파일이 사라지면 해당 파일에 접근할 수 없다
설정방법) ln -s 원본파일명 심볼릭링크파일명
하드 링크(Hard Link)
: 윈도우의 바로가기와 비슷한 기능, inode가 같고 원본파일이 사라져도 하드 링크된 파일은 유지된다
설정방법) ln 원본파일명 심볼릭링크파일명
-------------------------------------
유닉스 파일 시스템 구성
부트 블록(Boot block) : 운영체제를 부팅하거나 초기화하기 위한 부트스트랩 코드를 담고 있는 블록
슈퍼 블록(Super block) : 해당 파일시스템을 관리하기 위한 정보를 담고 있는 블록
아이노드(inode) 리스트 : 해당 파일시스템의 파일들에 대한 속성 정보를 담고있는 아이노드 구조체 리스트
데이터 블록 : 실제 파일의 내용이 저장되는 블록
* 유닉스 시스템의 세가지 핵심 컴포넌트 : 커널, 쉘, 파일시스템
* 저널링(Journaling) : EXT2 -> EXT3 업데이트 간 추가된 기능, 복구 시간을 fsck보다 빠르고 안정적으로 단축
-------------------------------------
링크(Link)
: 프로그램 내에서 라이브러리에 있는 함수를 호출할 때 호출된 함수와 라이브러리에 있는 함수 코드를 연결해 주는 과정
정적 링크(Static Link)
: 컴파일 시 정적 라이브러리를 사용하여 실행 파일 내에 있는 라이브러리 함수가 모두 포함되도록 링크하는 방식
동적 링크(Dynamic Link)
: 컴파일 시 공유 라이브러리를 사용하여 프로그램 실행 시에 외부 공유 라이브러리 함수를 동적으로 링크하는 방식
: 동적 링크 방식으로 컴파일된 실행파일은 실행 시 외부 공유 라이브러리에 있는 함수 주소를 찾아내는 과정이 필요하며 이때 PLT와 GOT 테이블을 참조한다
* PLT : 외부 공유 라이브러리 함수를 사용할 수 있도록 주소를 연결해 주는 테이블
* GOT : PLT에서 호출하는 resolve()함수를 통해 찾아낸 함수의 실제 주소가 저장되어 있는 테이블
-------------------------------------
입출력 재지정
표준 입력 : 0
표준 출력 : 1
표준 에러 : 2
id 1> id.dat (표준 출력은 기본이라 생략하여 > 라고만 명시해도 됨)
id >> id.dat (id.dat파일에 추가하여 쓰기)
id 2> /dev/null (오류내용은 /dev/null 로 출력-오류는 버린다는 뜻)
batch1.sh 1>/dev/null 2>&1 (표준출력과 표준에러 모두 버린다는 뜻)
-------------------------------------
특수 문자
~ : 홈 디렉터리
. : 현재 디렉터리
.. : 상위 디렉터리
* : 임의의 0개 이상 문자 대체
? : 임의의 1개 문자 대체
# : 주석
& : 백그라운드 모드로 실행
$ : 쉘 변수
; : 쉘 명령 구분자
> : 출력 재지정
< : 입력 재지정
| : 파이프
-------------------------------------
Cron 서비스
: 유닉스/리눅스 작업 스케쥴링 서비스
데몬 : crond
작업 등록 파일 : /etc/crontab
분 시 일 월 요일 계정명 작업
20 6 * * * algisa /work/batch.sh
개별 사용자 작업 등록 파일: /var/spool/cron/사용자 계정명
개별 사용자는 명령어로만 수정 가능 : crontab -u algisa -e
crontab 명령 접근제어 기능 : /etc/cron.allow, /etc/cron.deny (둘다 설정되어있을 경우 cron.allow 적용)
-------------------------------------
/etc/passwd 구조
사용자 계정 : 패스워드 : UID : GID : comment : home 디렉터리 : 로그인 쉘예시) root:x:0:0:root:/root:/bin/bash
/etc/shadow 구조
사용자 계정 : 암호화된 패스워드 : 마지막으로 패스워드를 변경한 날 : 패스워드 최소 사용기간 : 패스워드 최대 사용기간 : 패스워드 만료 이전 경고 일수 : 패스워드 만료 이후 계정이 잠기기 전까지 비활성 일수 : (1970.1.1) 기준 계정 만료일 일수
예시) root:$1$nL6Pk6b$6AWSQj165A1SSs91:16544:1:90:7:::
* 암호화된 패스워드는 $일방향 해시 알고리즘 식별ID $Salt $암호화된 패스워드 형식
전체 패스워드 정책 설정파일 : /etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_DAYS 1
PASS_MIN_LEN 8
PASS_WARN_AGE 7
개별 패스워드 정책 설정
chage -l kiwi99 (kiwi99 계정 패스워드 정책 확인)
chage -M 90 kiwi99 (비밀번호 최대 사용일수)
chage -m 1 kiwi99 (비밀번호 최소 사용일수)
chage -W 7 kiwi99 (만료이전 경고일수)
chage -I 7 kiwi99 (패스워드 만료 이후 계정이 잠기기 전까지 비활성 일수)
패스워드 저장 정책 변경 명령어
pwconv : 일반 패스워드 정책(passwd 파일 내 패스워드 저장) -> shadow 패스워드 정책(shadow 파일에 암호화되어 별도 저장)
pwunconv : shadow 패스워드 정책(shadow 파일에 암호화되어 별도 저장) -> 일반 패스워드 정책(passwd 파일 내 패스워드 저장)
-------------------------------------
inetd.conf
: 개별 서비스별로 서버 프로세스(데몬)가 동작하며 빠르지만 서버자원 많이 점유
설정파일 : /etc/inetd.conf
TCP Wrapper
: TCP Wrapper 서비스를 사용할 경우 해당 서비스 실행경로에 /usr/sbin/tpcd 를 명시: /etc/hosts.allow, /etc/hosts.deny 를 통해서 허용/금지(hosts.allow 우선, allow/deny 설정이 없을경우 default 허용)
/etc/hosts.allow, /etc/hosts.deny 설정 형식 : service list : client list : shell command
xinetd.conf = inetd + TCP Wrapper + a
: 슈퍼 데몬으로 개별 서비스들을 동작시키는 방식으로 상대적으로 느리지만 서버자원 절약 가능
설정 파일
: /etc/xinetd.conf - 모든 서비스에 적용되는 xinetd 설정 파일
: /etc/xinetd.conf/서비스별 설정파일 - 개별 서비스에 적용되는 xinetd 설정 파일
* 설정파일 형식
( 변경 후 xinetd 데몬 재기동이 필요하다 )
( 대역은 192.168.1.0/24 와 같이 입력 )
( 공백을 구분자로 사용 )
disable = yes : 불필요 서비스 비활성화
only_from = 192.168.10.10 : 접근을 허용할 IP
no_access = 192.168.20.0/24 : 접근을 차단할 IP
access_times = 09:00-12:00 13:00-18:00 : 접근을 허용할 시간범위
cps = 50 10 : (connection per second) 초당 최대 연결 개수 설정(10초당 50개 까지만 허용)
instances = 100 : 최대 서비스 개수
per_source = 10 : 출발지 IP별 최대 연결 개수
-------------------------------------
PAM : 장착형 인증 모듈
PAM을 사용한 인증 절차
1. 각 프로그램(login, telnet, ftp 등)은 인증이 필요한 부분에 PAM 라이브러리를 호출
2. PAM 라이브러리가 호출되면 해당 프로그램의 PAM 설정 파일을 참조하여 등록된 여러 PAM 모듈들을 수행하고 그 결과를 프로그램에 반환
3. 프로그램은 반환된 결과를 이용하여 인증 여부를 결정
* PAM 설정 파일 : /etc/pam.d/서비스명
1. type(PAM 모듈 종류)
- account : 계정 유효성 검증
- auth : 계정의 패스워드 검증, 다른 인증모듈과의 연동 등 사용자 신원 확인
- password : 비밀번호 설정 조건, 비밀번호 변경조건
- session : 인증 처리 전후에 수행할 작업을 지정
2. control(모듈 실행 후 성공 또는 실패에 따른 행동 결정)
- requisite : 인증 실패 시 즉시 인증 거부
- required : 인증 실패 시 다음 라인 모듈을 실행하지만 최종 결과는 인증 실패
- sufficient : 이전 모듈이 실패하더라도 여기서 성공하면 PAM 인증 성공(required 성공 시)
3. module-path(PAM에서 사용할 모듈 - /lib/security 에서 해당 모듈을 찾는다)
4. module-arguments(모듈에 전달되는 인수)
(PAM 활용) root 계정 원격 접속 제한
1. /etc/pam.d/remote(또는 login 서비스) 설정파일에
auth required pam_securetty.so
설정
2. /etc/securetty 파일에 'pts/~' 터미널을 모두 제거 또는 주석 처리
(pts - telnet, 터미널등을 통해 접속하는 가상 터미널)
(tty - 키보드,모니터를 통해 콘솔로 직접 로그인)
SSH root 원격 접속 제한(SSH는 PAM으로 설정불가)
/etc/ssh/sshd_config 에 PermitRootLogin no 설정 후 SSH 데몬 재기동
(PAM 활용) 계정 잠금 임계값 설정(권장 5회 이하)
설정 파일 : /etc/pam.d/system-auth
(pam_tally2.so 모듈로, deny-5회 입력 실패 시 unlock_time-120초 잠금)
* no_magic_root : root 계정은 패스워드 잠금 설정을 적용하지 않는다
* rest : 접속 시도 성송 기 실패한 횟수 초기화
(PAM 활용) root 계정 su(switch user) 제한
: pam_wheel.so 모듈을 이용하여 wheel 보조그룹에 su명령어를 사용할 사용자는 추가하여 관리
: usermod -G wheel kiwi99 명령어로 whell 보조그룹 추가(보조그룹은 여러개 설정 가능)
/etc/pam.d/su 설정파일에 아래와 같이 설정
auth required pam_wheel.so use_uid debug
sudo(root 권한으로 명령어를 실행)
sudo 명령 설정 파일 : /etc/sudoers
설정 예시)
kiwi99 ALL=(ALL) ALL( kiwi99 계정에게 모든IP로부터 모든 계정권한으로 모든 명령어를 실행 할 수 있다 )
kiwi99 192.168.10.100=(ALL) NOPASSWD: ALL
( kiwi99 계정에게 192.168.10.100 IP로부터 모든 계정권한으로 비밀번호 입력 없이 모든 명령어를 실행 할 수 있다 )
kiwi99 ALL=(root, kiwi100) /batch/batch_log.sh
( kiwi99 계정에게 모든 IP로부터 root와 kiwi100 계정권한으로 /batch/batch_log.sh 명령어를 실행 할 수 있다 )
명령 사용 예시)
sudo /batch/batch_log.sh (root 권한으로 실행)sudo -u kiwi99 /batch/batch_log.sh (kiwi99 권한으로 실행)
-------------------------------------
root 의외의 UID 0 금지
: root의외의 계정의 UID가 0이되면 root와 동일한 권한으로 시스템 접근이 가능하여 /etc/passwd 점검이 필요하다
cat /etc/passwd | cut -d ":" -f 3 | grep "0"
불필요한/취약한 서비스 비활성화
r계열 서비스(rlogin, rsh, rexec 등..)과 rpc서비스, 기타 불필요한 서비스 비활성화
/etc/inetd.conf 설정파일에서 불필요한 서비스 주석(#)처리
* 불필요한 RPC 서비스 종류
- rstatd : CPU와 가상메모리 사용 통계, 네트워크 가동시간, 하드디스크 정보를 제공(반환)
- walld : 네트워크의 모든 사용자에게 메시지를 전송
- sadmind : 원격에서 시스템 관리/모니터링
- rexd : 원격에서 서버 명령어를 실행
- ruserd : 현재 네트워크에 있는 사용자 리스트를 반환
등등
불필요 계정 점검
로그인이 불필요한 계정(시스템 및 애플리케이션 계정)은 /etc/passwd파일 로그인 쉘을 /sbin/nologin 또는 /bin/false 로 설정
공격자가 root와 동일한 UID=0, GID=0 계정 생성하는 방법
useradd -o -u 0 -g 0 -d /root eve
(UID중복 허용 옵션 : -o )
사용자 계정 UID 변경/제거 방법
(( 리눅스, SOLARIS, HP-UX ))
usermod -u 531 -g 529 -d /home/eve eve
userdel -r eve (eve 계정 제거명령, -r 옵션은 디렉터리같은 해당 계정 잔여파일도 전부 삭제)
(( AIX ))
chuser id=100 eve
rmuser eve
-------------------------------------
패스워드 복잡성 설정 방법
: 영문 대문자 / 영문 소문자 / 숫자 / 특수문자
: 2종류 이상 조합 최소 10자리 이상 / 3종류 이상 조합 최소 8자리 이상
PAM을 이용한 설정방법
pam_cracklib.so 모듈 : 패스워드 설정 시 복잡성 검사를 위해 사용하는 PAM 모듈
설정파일 경로 : /etc/pam.d/system-auth
설정 예시)
password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 icredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=5
(설정 옵션)
lcredit=-1 (lower case)
: 최소 1자 이상의 소문자 요구
ucredit=-1 (upper case)
: 최소 1자 이상의 대문자 요구
dcredit=-1 (digit)
: 최소 1자 이상의 숫자 요구
ocredit=-1 (other character)
: 최소 1자 이상의 특수문자 요구
minlen=8
: 최소 8자리 이상 요구
difok=N
: 새 비밀번호가 이전비밀번호와 달라야 하는 문자 개수
OS별 패스워드 정책 설정(필요성 같은거 생각하지말고 그냥 무조건 무식하게 외우기)
(( 리눅스(Linux) ))
설정파일 : /etc/login.defs
패스워드 최소 길이 설정 : PASS_MIN_LEN 8
패스워드 최소 사용기간 : PASS_MIN_DAYS 1 (일 단위)
패스워드 최대 사용기간 : PASS_MAX_DAYS 90 (일 단위)
(( 솔라리스(SOLARIS) ))
설정파일 : /etc/default/passwd
패스워드 최소 길이 설정 : PASSLENGTH=8
패스워드 최소 사용기간 : MINWEEKS=1 (주 단위)
패스워드 최대 사용기간 : MAXWEEKS=12 (주 단위)
(( HP-UX ))
설정파일 : /etc/default/security
패스워드 최소 길이 설정 : MIN_PASSWORD_LENGTH=8
패스워드 최소 사용기간 : PASSWORD_MINDAYS=1 (일 단위)
패스워드 최대 사용기간 : PASSWORD_MAXDAYS=90 (일 단위)
(( AIX ))
설정파일 : /etc/security/user
패스워드 최소 길이 설정 : minlen=8
패스워드 최소 사용기간 : minage=1 (주 단위)
패스워드 최대 사용기간 : maxage=12 (주 단위)
-------------------------------------
OS별 패스워드 파일/암호화 확인
(( 리눅스 / 솔라리스(SOLARIS) ))
1. /etc/shadow 파일 내 패스워드 암호화 여부 확인
2. /etc/passwd 파일 내 두번째 필드 x여부 확인
일반 패스워드 정책 -> shadow 정책 전환 명령어 : pwconv
shadow 정책 -> 일반 패스워드 정책 전환 명령어: pwunconv
(( AIX ))
1. /etc/security/passwd 파일 내 패스워드 암호화 여부 확인
(( HP-UX ))
1. Trust mode 설정 여부 확인
(Trust mode는 패스워드를 암호화하여 /tcb/files/auth 디렉터리에 저장)
- /tcb 디렉터리 존재 여부 확인
2. /etc/passwd 파일 내 두번째 필드 x여부 확인
일반 패스워드 정책 -> TrustMode 정책 변환 명령어 : /etc/tsconvert
TrustMode 정책 -> 일반 패스워드 정책 변환 명령어 : /etc/tsconvert -r2
-------------------------------------
세션 타임아웃 설정
: 아무 입력없이 일정 시간 경과 시 연결을 종료하는 설정
(( 리눅스 / 솔라리스(SOLARIS) / AIX / HP-UX ))
(( sh, ksh, bash 쉘 사용 시))
환경설정 파일 : /etc/profile
TMOUT=600
export TMOUT
(초단위로 600은 10분을 의미, 쉘 변수는 export명령을 통해 자식쉘까지도 모두 사용할 수 있는 환경변수로 만들어야 함)
( TMOUT=600; export TMOUT 으로도 쓸 수 있음)
( export TMOUT=600 으로도 쓸 수 있음)
* 개별 사용자 설정 시(/etc/profile설정 되어있어도 개별사용자에 설정 시 개별사용자 설정이 우선시 됨)
bash 쉘 : ~/.bash_profile
(( csh 쉘 사용 시))
환경설정 파일 : /etc/csh.login 또는 /etc/csh.cshrc
set autologout=10
-------------------------------------
PATH 환경변수
: 경로없이 명령어나 프로그램을 실행했을때 그 프로그램을 검색하기 위한 경로정보를 담고있는 환경변수
* 환경변수 확인 명령어 : echo $PATH
/etc/profile에 PATH=.:$PATH 와 같이 '.' 가 추가되어있으면 현재 디렉터리에 있는 명령어를 경로 지정없이 실행가능
하지만 /bin 또는 /sbin 등 관리자 명령어들이 있는 디렉터리보다 '.'이 우선하여 PATH환경변수에 있으면 공격자가 악의적으로 현재 디렉터리에 명령어를 삽입하여 관리자가 명령어 입력 시 변조된 명령어가 실행될 수 있는 취약점이 있다.
해결방법 : '.' 를 제거하거나 '.' 순서를 가장 마지막으로 변경해야 한다
-------------------------------------
root 소유 SUID, SGID 실행파일
: root 소유의 SUID, SGID가 설정된 파일은 root권한으로자원에 접근할 수 있기에 악용되지 않도록 점검이 필요하다
SUID, SGID가 설정된 파일 찾는 명령어
find / -user root -type f \( -perm -4000 -o -perm -2000 \) -exec ls -al {} \;
소유자/소유그룹이 존재하지 않는 파일/디렉터리
: 소유자/소유그룹이 존재하지 않는 파일/디렉터리는 UID/GID 가 소유자/소유그룹 대신 표시된다. 공격자가 계정을 해당 파일/디렉터리의 UID/GID로 악의적으로 변경할경우 해당 파일에 접근할 수 있는 위협이 발생할 수 있다.
: 퇴직등의 사유 또는 관리소홀로 인해 생성되었을 가능성이 높다
소유자/소유그룹이 존재하지 않는 파일/디렉터리 찾는 명령어
find / \( -nouser -o -nogroup \) -exec ls -al {} \;
( -o 는 or, -a 또는 없으면 and, ();는 쉘에서 다른용도로 사용하고 있기 때문에 \백슬래시를 앞에 추가해야한다 )
해결방법 : 필요 없는경우 rm/rmdir 명령어를 이용해서 제거, 필요한경우 chown/chgrp 명령으로 소유자/소유그룹을 변경한다
-------------------------------------
World Writable 파일
: 소유자/소유그룹이 아닌 모든 사용자(Others)에 쓰기가 허용된 파일을 의미
: 비인가자에 의해 악의적으로 파일이 변경되는 위협이 발생할 수 있다
World Writable 파일 찾는 명령어
find / -type f -perm -2 -exec ls -la {} \;
(-perm -2 는 -perm -0002와 동일)
해결방법 : 필요 없는경우 rm 명령어를 이용해서 파일 제거, 필요한경우 chmod 명령으로 others 쓰기권한 제거
-------------------------------------
주요 파일 권한 권장설정
/etc/passwd
root 소유의 644 이하 권장
-rw-r--r-- 1 root root 2323 2024-02-02 00:00 /etc/passwd
/etc/shadow
root 소유의 400 이하 권장
-r-------- 1 root root 2323 2024-02-02 00:00 /etc/shadow
/etc/hosts
: IP주소에 대한 호스트명(도메인명) 정보를 저장하고 있는 파일(DNS 이전 참조)
: hosts파일을 변조시켜 악성 사이트로 접속을 유도하는 파밍(Pharming) 공격 등에 악용될 수 있음root 소유의 600 이하 권장-rw------- 1 root root 2323 2024-02-02 00:00 /etc/hosts
/etc/inetd.conf 또는 /etc/xinetd.conf
: inetd/xinetd 슈퍼 데몬 설정 파일
root 소유의 600 이하 권장
-rw------- 1 root root 2323 2024-02-02 00:00 /etc/inetd.conf
/etc/syslog.conf 또는 /etc/rsyslog.conf
: 서비스별 로그파일에 대한 설정 정보
root 소유(또는 시스템 계정)의 640 이하 권장
-rw-r----- 1 root root 2323 2024-02-02 00:00 /etc/syslog.conf
/etc/services
: 서비스 관리정보(서비스별 프로토콜 및 포트 번호 정보)를 담고 있는 파일
root 소유(또는 시스템 계정)의 644 이하 권장
-rw-r--r-- 1 root root 2323 2024-02-02 00:00 /etc/services
-------------------------------------
hosts.equiv / .rhost(rlogin,rsh,rexec 등 r계열 서비스) 관리
: 트러스트 관계 설정파일에 명시된 사용자는 ID/PW없이 접근이 가능하게끔 하는 서비스
대응방법
: 시스템 간 트러스트 설정을 사용하지 않는다(r계열 서비스 사용 X)
: 반드시 사용해야 할 경우 트러스트된 시스템의 MAC주소를 정적(Static)으로 구성하여 IP를 위조한 IP스푸핑을 차단한다.
$HOME/.rhosts, hosts.equiv 사용을 금지해야하나 불가피하게 사용해야 할 경우 적절한 보안조치를 해야함
보안조치
- /etc/hosts.equiv 및 $HOME/.rhost 파일 소유자를 root 계정으로 변경
- /etc/hosts.equiv 및 $HOME/.rhost 파일 권한을 600 이하로 변경
- /etc/hosts.equiv 및 $HOME/.rhost 파일에서 "+"(전체 호스트 또는 전체 IP 설정)를 제거하고 반드시 필요한 호스트 및 계정만 등록
-------------------------------------
명령어
sort : 정렬 (sort -r : 역순 정렬)
uniq : 중복 제거 (uniq -c : 몇개였는지 카운트 후 중복제거)
cut, awk : 원하는 문자열 추출
ex) cut -d ":" -f 3
( :로 구분된 것중 3번째)
ex) awk -F ":" '{print $3}'
( :로 구분된 것중 3번째)
ngrep : 패킷 캡처 도구
ex) ngrep -qtW byline
-q : quiet 모드(quite모드 안넣으면 시간의 경과를 #로 표시)
-t :time stamp 표시
-W : 덤프포맷 (byline 선택-개행 처리를 해준다)
-------------------------------------
'학습 > 알기사 정보보안기사 정리' 카테고리의 다른 글
6. 애플리케이션 보안 (0) | 2024.10.13 |
---|---|
5. 네트워크 보안 (1) | 2024.10.05 |
4. 시스템 보안 (1) | 2024.10.04 |
1. 윈도우 보안 (0) | 2024.10.03 |
3. 리눅스/유닉스 로그파일 (3) | 2024.10.03 |