▣ OS 보안_리눅스/유닉스 로그, traceroute, TTL, ICMP time exceeded, wtmp, utmp, history, setUID, umask, iptables, 시스템보안, nmap
구분 | 로그 | 설명 |
사용자 접속 | wtmp | 사용자 로그인/로그아웃 기록, 세션 지속 시간, 시스템 종료/부팅 정보 |
utmp | 현재 로그인한 사용자 정보 | |
btmp | 실패한 로그인 내역 | |
lastlog | 각 사용자들이 최근 로그인한 시각과 Source host | |
secure | 원격 로그인 정보 기록 | |
관리자 | sulog | su 명령어를 사용한 경우 변경 전/후 사용자 계정 및 시간 |
사용자 행위 | acct/pacct | 사용자가 로그인 후 로그아웃 할 때까지 입력한 명령어와 시간 |
history | 사용자별 실행한 명령어 기록(parameter까지) | |
시스템 | dmesg | 부팅 시 출력되는 모든 메시지 기록, 부팅 오류 점검 시 참조 |
message | 시스템의 가장 기본적 로그 파일, 시스템 운영 전반적 메시지 | |
cron | 시스템 정기적인 작업 로그 |
* current 현재 사용자 utmp, whole 전체 사용자 wtmp
■ traceroute : 최종 host까지 패킷이 거쳐가는 라우터 길 출력
경로 : /usr/bin/traceroute
사용법 : traceroute [옵션] 도메인명 혹은 IP주소 [패킷 크기]
-d 주소를 호스트 이름으로 확인하지 않음
-h maximum_hops 대상 검색을 위한 최대 홉 수
-j host-list host-list에 따라 원본 라우팅을 완화(IPv4에만 해당)
-w timeout 각 응답의 대기 시간 제한(밀리초)
-R 왕복 경로를 추적(IPv6에만 해당)
-S srcaddr 사용할 원본 주소(IPv6에만 해당)
-4 IPv4를 사용
-6 IPv6을 사용
PC1 - R1 - R2 - R3 - PC2
1) PC1에서 TTL(Time to Live)값을 1증가시켜 IP패킷을 R1으로 보냄
2) R1은 수신된 IP 패킷을 다음 라우터로 전달하기 전에 IP헤더의 TTL값을 1 감소
3) TTL값을 1감소시킨 결과가 0이라면 라우터는 그 패킷을 버린 후, 패킷의 송신측 컴퓨터에
time exceed error ICMP패킷을 보냄
4) PC1은 TTL값을 1만큼 증가시킨 TTL=2를 R1에게 보낸 후, R1은 TTL값을 1만큼 감소시킨 후,
TTL 값1이 있기 때문에 다음 라우터인 R2에게 전달
5) R2는 R1에게 받은 IP헤더의 TTL값을 1만큼 감소, TTL=0이기 때문에 다음 라우터인 R3에게 보내지 않고
송신측 컴퓨터에게 time exceed error ICMP패킷을 보냄
■ 리눅스 계정과 권한 체계
구분 | 파일명 | 설명 |
계정 및 그룹 설정파일 | /etc/passwd | 사용자 계정의 아이디, 그룹정보 등 계정정보 |
/etc/shadow | 암호화된 패스워드 및 정책 설정 정보 | |
/etc/group | 사용자 그룹의 기본정보 | |
/etc/gshadow | 사용자 그룹의 암호화된 패스워드 정보 | |
계정 환경설정 파일 | /etc/default/useradd | Useradd명령을 사용할 때 기본 설정 |
/etc/login.defs | 로그인 수행시 기본설정 | |
/etc/skel | 홈 디렉터리 생성시 기본으로 제공할 파일 |
계정 종류
커널이 계정을 식별할 때 사용하는 uid라는 숫자를 보고 구분할 수 있음
* 0 : 관리자(root) 계정
* 1 ~ 100 : 시스템 계정
* 500 ~ : 일반 계정 (시스템 마다 다를수 있으며, 리눅스 시스템은 500번 부터 시작)
특수 퍼미션과 일반 퍼미션
특수 퍼미션 | 소유자 권한 (User) |
소유 그룹 권한 (Group) |
다른 사용자 권한 (Others) |
||||||||
s (SetUID) |
s (SetGID) |
t (Sticky Bit) |
r | w | x | r | w | x | r | w | x |
4000 | 2000 | 1000 | 400 | 200 | 100 | 40 | 20 | 10 | 4 | 2 | 1 |
chmod 4777 [파일명]
chmod ug+s [파일명] #상대 지정 방법으로도 가능
*SetUID(s) : 일반 사용자에게 실행시 소유자 권한 부여
*SetGID(s) : 특정 그룹에 실행 시 소유자 권한 부여
*stickyBit(t) : 디렉토리에 쓰기는 모두 가능, 파일 변경/삭제는 소유자만 가능
* RUID(Real User ID) : 실제 소유자 UID
* EUID(Effective User ID) : 프로세스가 수행할 때 현재 유효한(권한) UID
* SUID(Saved set-user-ID) : SUID는 프로세스의 권한을 낮게 변경했다가 원래대로 복구할 때 사용됨
프로세스의 권한이 낮게 변경될 때, 변경 전의 EUID는 SUID에 저장됨
이후, 낮은 권한이 원래 권한으로 복구될 때, SUID는 EUID에 저장됨
■ umask
umask : 파일이나 디렉터리 생성 시 기본 권한을 설정하는 명령어임
각 기본권한에서 umask 값만큼 권한이 제한됨
umask 022로 설정 할 경우
디렉터리 기본권한 777-022 =755, 파일 기본권한 666-022 = 644
umask 027 의 경우 파일 권한
# umask 027 # touch umask_file # ls –ld umask_file -rw-r-----. 1 root root 0 2016-12-15 21:45 umask_file * 파일에 퍼미션 기본값은 666인데 umask 027을 적용(삭제)하게 되면 666 – 027 = 640이 된다. |
umask 027 의 경우 디렉토리 권한
# umask 027 # touch umask_dir # ls –ld umask_file drwxr-x---. 2 root root 4096 2016-12-15 21:51 umask_dir/ * 디렉터리에 퍼미션 기본값은 777인데 umask 027을 적용(삭제)하게 되면 777 – 027 = 750이 된다. |
■ iptables 규칙
iptables란 넷필터 프로젝트에서 개발했으며 광범위한 프로토콜 상태 추적, 패킷 애플리케이션 계층검사, 속도 제한, 필터링 정책을 명시하기 위한 강력한 매커니즘을 제공
▶ iptables에는 filter 테이블에 미리 정의된 세가지의 체인이 존재
허용(ACCEPT)할 것인지, 거부(REJECT)할 것인지, 버릴(DROP)것인지를 결정
INPUT : 호스트 컴퓨터를 향한 모든 패킷
OUTPUT : 호스트 컴퓨터에서 발생하는 모든 패킷
FORWARD : 호스트 컴퓨터가 목적지가 아닌 모든 패킷, 즉 라우터로 사용되는 호스트 컴퓨터를 통과하는 패킷
▶ iptables에서 패킷을 처리할때 만족해야 하는 조건
--source (-s) : 출발지 IP주소나 네트워크와의 매칭
--destination (-d) : 목적지 ip주소나 네트워크와의 매칭
--protocol (-p) : 특정 프로토콜과의 매칭
--in-interface (i) : 입력 인테페이스
--out-interface (-o) : 출력 인터페이스
--state : 연결 상태와의 매칭
--string : 애플리케이션 계층 데이터 바이트 순서와의 매칭
--comment : 커널 메모리 내의 규칙과 연계되는 최대 256바이트 주석
--syn (-y) : SYN 패킷을 허용하지 않는다.
--fragment (-f) : 두 번째 이후의 조각에 대해서 규칙을 명시한다.
--table (-t) : 처리될 테이블
--jump (-j) : 규칙에 맞는 패킷을 어떻게 처리할 것인가를 명시한다.
--match (-m) : 특정 모듈과의 매치
▶타겟(target)
iptables는 패킷이 규칙과 일치할 때 동작을 취하는 타겟을 지원
ACCEPT : 패킷을 받아들인다.
DROP : 패킷을 버린다(패킷이 전송된 적이 없던 것처럼).
REJECT : 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송한다.
LOG : 패킷을 syslog에 기록한다.
RETURN : 호출 체인 내에서 패킷 처리를 계속한다.
▶명령어(command)
-A (--append) : 새로운 규칙을 추가한다.
-D (--delete) : 규칙을 삭제한다.
-C (--check) : 패킷을 테스트한다.
-R (--replace) : 새로운 규칙으로 교체한다.
-I (--insert) : 새로운 규칙을 삽입한다.
-L (--list) : 규칙을 출력한다.
-F (--flush) : chain으로부터 규칙을 모두 삭제한다.
-Z (--zero) : 모든 chain의 패킷과 바이트 카운터 값을 0으로 만든다.
-N (--new) : 새로운 chain을 만든다.
-X (--delete-chain) : chain을 삭제한다.
-P (--policy) : 기본정책을 변경한다.
$iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
-A INPUT : 외부로부터 입력되는 패킷에 대한 규칙을 설정(INPUT 체인에 추가)
-p icmp : icmp 프로토콜과 관련된 네트워크 공격에 대응하기 위한 rule
--icmp-type echo-request : 확장옵션으로 icmp 프로토콜 중 echo-request(TYPE8)타입을 필터링 조건으로 명시
-j DROP : rule 조건과 일치하는 패킷을 처리하기 위한 옵션으로, icmp 프로토콜 중 echo-request(에코 요청) 패킷을 폐기한다는 의미임
이 rule과 가장 관련된 공격은 ICMP패킷을 조작하여 비정상 동작을 유도하는 Ping of Death임
2019년 107번
정답 : 3번
utmp는 현재 로그인 사용자의 아이디, 사용자 프로세스, 실행 레벨, 로그인 종류 등을 기록
wtmp는 사용자 로그인, 로그아웃 시간, 세션 지속시간, 시스템 종료 시작시간 시간을 기록
history는 명령 창에서 실행한 명령을 기록
2020년 114번
정답 : 1번
traceroute 명령은 TTL(Time to Live) 속성을 1로 설정한 패킷을 ICMP프로포콜로 전송함
TTL은 네트워크 장비를 경유할 때 마다 1씩 감소하므로, 최소 TTL=1로 설정된 패킷은 첫번째 장비에 도착 후 TTL=0이 됨
이 때 네트워크 장비는 출발지로 ICMP Time Exceeded 메시지(Type 11)를 회신함
ICMP Time Exceeded 메시지를 수신하면 이번에는 TTL=2로 하나 증가해서 ICMP 프로토콜을
전송함. 이 과정을 반복하면 목적지까지 몇 개의 장비를 경유하는지, 어떤 경로로 통해 목적지까지
도착하는지 추적할 수 있음
유닉스/리눅스에서는 traceroute명령을 사용하며, 윈도우 운영체제의 경우 tracert 명령을 사용함
2020년 115번
정답 : 4번
1) 리눅스 OS에서 일반 사용자의 UID는 500번부터 부여받음
2) 패스워드는 일방향 암호화하여 /etc/shadow/에 저장됨, /etc/passwd에는 계정 정보 저장
3) 파일 실행시 일반적으로 RUID와 EUID는 동일하지만, setuid()권한에 따라 EUID는 변경될 수 있음
4) 파일접근권한 4755인 경우, 첫 자리 4는 setuid가 설정되어 있음을 의미함
setuid는 실행도중 파일 소유자의 권한을 획득하게 됨
2018년 104번
정답 : 2번
umask : 파일이나 디렉터리 생성 시 기본 권한을 설정하는 명령어임
각 기본권한에서 umask 값만큼 권한이 제한됨
umask 022로 설정 할 경우
디렉터리 기본권한 777-022 =755,
파일 기본권한 666-022 = 644
chmod : 파일 권한을 설정하는 리눅스 명령어
fdisk : 디스크 파티션을 구성하는 명령어
dmesg : 부팅될 때 출력되는 메시지를 기록하는 로그
2018년 110번
정답 : 4번
SetUID : 일반 사용자가 특정 파일 실행시 해당 파일의 소유자 권한을 부여하는 특수 권한 설정
(실행시 사용자 권한이 아닌 그룹의 권한을 부여할 경우 Setgid 설정)
2021년 108번
정답 : 1번
$iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
-A INPUT : 외부로부터 입력되는 패킷에 대한 규칙을 설정(INPUT 체인에 추가)
-p icmp : icmp 프로토콜과 관련된 네트워크 공격에 대응하기 위한 rule
--icmp-type echo-request : 확장옵션으로 icmp 프로토콜 중 echo-request(TYPE8)타입을 필터링 조건으로 명시
-j DROP : rule 조건과 일치하는 패킷을 처리하기 위한 옵션으로, icmp 프로토콜 중 echo-request(에코 요청) 패킷을 폐기한다는 의미임
이 rule과 가장 관련된 공격은 ICMP패킷을 조작하여 비정상 동작을 유도하는 Ping of Death임
2011년 113번
정답 : 1번(모두 정답 처리)
1) 방화벽을 통과하는 모든 패킷을 허용하도록 정책 변경(방화벽 기능 상실)
2) 방화벽을 통과하는 hsi1인터페이스를 통해 hsi2인터페이스를 통과하는 목적지IP가 1.1.1.1인 TCP패킷을 제거(특정 패킷을 필터링)
3) DENY 키워드가 잘못 사용됨(DROP, ACCEPT, REJECT만 올수 있음) / 실제 적용하면 에러 발생함
4) 방화벽에 도달하는 출발지 IP가 1.1.1.1인 패킷을 제거(특정 패킷을 필터링)
iptables는 패킷이 규칙과 일치할 때 동작을 취하는 타겟을 지원
ACCEPT : 패킷을 받아들인다.
DROP : 패킷을 버린다(패킷이 전송된 적이 없던 것처럼).
REJECT : 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송한다.
LOG : 패킷을 syslog에 기록한다.
RETURN : 호출 체인 내에서 패킷 처리를 계속한다.
2014년 111번
정답 : 4번
윈도우의 관리자 계정 Administrator는 알려져 있는 계정 이름이므로 다른 이름으로 변경하는 것이 보안을 강화 할 수 있음
NTFS의 사용권한 상속 관리 : 하위 폴더를 생성하면 상위 폴더에 부여되어 있는 사용권한을 그대로 상속 받음
NTFS 사용권한이 중복되었을 때 특정 사용자에 부여된 NTFS 사용권한이 중복되었을 경우 사용권한들을 조합하여 가장 상위 사용권한이 적용됨
PAM(Pluggable Authentication Module: 착탈형 인증 모듈)
사용자를 인증하고 그 사용자의 서비스에 대한 액세스를 제어하는 모듈화된 방법
PAM은 관리자가 응용프로그램들의 사용자인증방법을 선택할 수 있도록 해줌. 즉 필요한 공유라이브러리의 묶음을 제공하여 PAM을 사용하는 응용프로그램을 재컴파일없이 인증 방법을 변경할 수 있음
1) 계정 모듈(account module)들은 명시된 계정이 현재 조건에서 유효한 인증 목표인지를 검사함. 이것은 계정 유효기간, 시간 그리고 사용자가 요청된 서비스에 접근 가능한지 같은 조건을 포함함
2) 인증 모듈(authentication module)들은 비밀번호를 요청하고 검사하는 것 같이 사용자의 신원을 확인함. 또한 인증 정보를 keyring 같은 다른 시스템들에게 전달함
3) 비밀번호 모듈(password module)들은 비밀번호 갱신을 책임진다. 또한 강력한 비밀번호 강화에도 사용됨
4) 세션 모듈(session module)들은 세션 시작과 끝에 수행되는 행동을 정의함. 그 후 사용자는 성공적으로 인증됨.
▶ 특정계정에 대해 telnet 접속은 막고, ftp접속만 허가 예제
1) /etc/pam.d/login파일을 열어서 아래라인을 추가한다.
auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/logi
nusers onerr=succeed
2) /etc/loginusers 파일을 만들고 telnet 접속을 막을 계정을 적는다.
[root@www root]# cat /etc/loginusers
prehee
=> prehee 이라는 계정은 텔넷은 사용할 수 없고 ftp만 사용가능하다.
2016년 114번
정답 : 3번
대표적인 포트스캔(Port Scan) 도구인 NMAP에 대한 설명임
iptables : 리눅스 S/W방화벽
snort : 오픈소스 네트워크 IDS도구
nmap : 포토스캐닝 도구
tripwire : 파일의 무결성을 검사하는 프로그램
NMAP은 port Scanning 툴로서 호스트나 네트워크를 스캐닝 할 때, 아주 유용한 시스템 보안툴인 동시에, 해커에게는 강력한 해킹툴로 사용될 수 있습니다. 기존의 포트 스캔툴에 비해 다양한 옵션과 방화벽 안쪽의 네트웍도 스캔할 수 있는 강력한 기능이 있습니다.
tripwire는 자신의 시스템 전체에 대해 디지털방식으로 ‘스냅사진’을 찍어 보관해두고, tripwire을 다시 실행시킬 때마다 전에 찍어둔 원본 ‘스냅사진’과 현재의 파일시스템을 비교함으로서 자신의 파일시스템의 변경사항을 알아낼 수 있게 해준다. 시스템의 변경사항이 시스템 관리자에 의한 것이라면 원본 ‘스냅사진’-database file-을 업데이트 해주면 되며, 시스템 관리자 자신에 의한 것이 아닌 불법적인 변경이라면 자신의 시스템이 크래커나 악의적인 내부사용자에 의해 변경되었다는 것을 알게 된다.
'보안' 카테고리의 다른 글
개인정보의 기술적 관리적 보호조치 기준_접속통제, 접속기록의 위변조방지, 내부 관리계획 (0) | 2021.10.04 |
---|---|
개인정보보호법_개인정보 영향평가, 고유식별정보, 수집, 이용, 제공, 유출 통지, 열람 (0) | 2021.10.04 |
무선 네트워크 보안_SSID, WEP, WPA, WPA2, TKIP/MIC, AES-CCMP, PSK, EAP (0) | 2021.10.04 |
위험관리_정량적, 정성적, 델파이법, 시나리오법, 순위 결정법, SLE, ALE, 민감도 분석, RRL, 수행 순서, 절차, 식별, 위험분석, 리스크 관리, 리스크 통제, 리스크 식별, 연관도법 (0) | 2021.10.04 |
사이버 공격_APT(Advanced Persistent Threat) 지능형 지속 공격 (0) | 2021.10.04 |