리눅스 시스템의 특성
– 첫 바이트
• "d“ : 디렉토리, “-" : 일반 파일, ”l“ : 심볼릭 링크
– 두 번째 바이트
• 소유자, 그룹, 타계정에 대한 권한
• "r“ : 읽기, "w“ : 쓰기, "x“ : 실행
– Ex)"target" 파일
• 소유자 : 읽기 및 쓰기 권한(rw-) ,그룹과 타계정 : 읽기 권한(r--)
drwxr-xr-x 2 root root 4096 2017-10-06 20:05 Directory
-rw-r--r-- 2 root root 519 2017-10-06 20:04 hard.link
-rw-r--r-- 2 root root 519 2017-10-06 20:04 hard.target
lrwxrwxrwx 1 root root 6 2017-10-06 20:02 symbolic.link -> target
-rw-r--r-- 1 root root 977 2017-10-06 20:00 target
리눅스 환경 설정 파일
1. /etc/passwd
#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
• 시스템의 모든 계정 정의
• 계정명, 그룹, 홈 디렉토리 등의 정보를 저장
• 콜론(:)을 통해 각 항목을 구분
– username:password:uid:gid:gecos:homedir:program
– username : 계정명, 로그인시 사용되는 이름
– password : 패스워드가 암호화되어 저장
• 사용자가 패스워드를 변경시“passwd" 명령 사용
• 쉐도우(shadow) 패스워드 : "x"나 "*"로 표시
– uid : 사용자 ID로 각 사용자에게 시스템이 부여하는 고유한 정수값
• 시스템에서 uid와 username는 1:1 대응
– gid : 사용자가 속해 있는 기본 그룹의 ID
• 그룹의 ID에 따른 이름은 /etc/group에 정의
– gecos : 사용자의 실제 이름이나 사무실, 연락처 등의 부가 정보
• finger 명령이 사용자를 구별하기 위해 이 항목을 이용
– homedir : 각 사용자의 홈 디렉토리
• 홈 디렉토리 : 사용자가 로그인시 최초로 접근하는 디렉토리
– program : 사용자가 로그인한후에 실행되는 프로그램
• 사용자가 지정한 쉘을 실행
2. /etc/shadow
#cat /etc/shadow
root:$6$VyKgjqti$bmyNVaKJWKN4w005.3OM6HaZW5b6irkbCruAY/ktlHfefmEZPEsMcAfMzR.qb07pkX8pX6xTlbFLov6M05Lp5.:17280:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
– 암호화된 패스워드를 별도로 보관하는 파일
– ①:②:③:④:⑤:⑥:⑦:⑧:⑨
• ① : 계정명, /etc/passwd 파일의 계정명과 동일
• ② : 암호화된 패스워드, 공란일 경우 로그인시 패스워드 불필요, "*“ 일경우 사용하지 않는 계정
• ③ : 패스워드를 마지막으로 바꾼 날, UTC 기준일부터 며칠 째인지
• ④ : 며칠이 지난 후 패스워드를 변경 가능한지, 0이면 언제든 패스워드의 변경이 가능
• ⑤ : 패스워드를 바꿔야 하는 날부터 며칠이 지났는지
• ⑥ : 패스워드 만료기간이 되었음을 얼마 동안 사용자에게 알릴지
• ⑦ : 패스워드가 만료되어 사용할 수 없게 된 후 며칠이 지났는지
• ⑧ : 계정 사용을 할 수 없게 된 것이 UTC 기준일부터 며칠 째인지
• ⑨ : 사용하지 않는다.
3. /etc/group
# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
– 그룹과 그룹에 속해있는 사용자에 대해 저장
– 모든 사용자는 최소한 하나의 그룹에 속해 있음
– groupname:password:gid:member1,member2, member3 ···
• groupname : 그룹의 이름
• password : 그룹에 지정된 패스워드,
– 패스워드가 지정된 경우, 그룹의 멤버가 아니어도, 패스워드를 알고 있는 사용자는 그룹의 권한을 획득 가능
• gid : 그룹의 ID로 groupname과 대응
• member1, member2 ··· : 그룹에 속해있는 사용자 목록
4. 파일시스템 설정
– 설정파일 : /etc/fstab, /etc/mtab에 저장
– 파일시스템이 로컬 시스템에 한정되지 않음
– NFS(Network File System)과 같이 원격지 시스템에 대한 마운트 정보 역시 파일 시스템 설정에 기록 가능
– 로컬 파일 시스템에 대한 분석을 수행하기 전에 분석 대상 시스템에 설정되어 있는 파일 시스템 설정을 확인
– /etc/fstab
UUID=bba12670-b26e-41f5-877c-8d02d32bc421 / ext4 defaults 1 1
UUID=97706ac6-40e8-4120-b12c-700dbaa1a1cc /home ext4 defaults 1 2
UUID=786e9ad2-079b-44f0-8039-d1c52c28a1fb swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
• 시스템을 부팅하면서 각 장치를 자동으로 마운트할 때 사용
• "mount“ 명령에서 ”-a" 옵션을 사용할 경우 사용
FileSystem MountPoint Type Option1,Option2··· Dump Pass
– FileSystem : 마운트되는 장치의 이름
• NFS를 마운트하는 경우에는 원격지의 경로
– MountPoint : 마운트 지점
– Type : 파일시스템의 타입
– Option
• ro/rw : 읽기 전용/읽기 쓰기 가능
• suid/nosuid : SUID 사용 가능/불가
• sgid/nosgid : SGID 사용 가능/불가
• exec/noexec : 실행 권한을 가진 파일의 실행 가능/불가
• quota/noquota : 사용자별 사용 용량 제한/제한하지 않음
• auto/noauto : 부팅할 때 자동 마운트 수행/수행하지 않음
• user/nouser : 일반 사용자도 마운트 가능/불가
– Dump : “dump“라는 도구를 이용하여 파일 시스템 백업 가능 여부
– Pass : 마운트시 파일 시스템 검사 여부
• 0 : 검사하지 않음, 1,2 : 파일 시스템 검사. Pass가 1 부터 검사
5. 네임 서버 설정
– 도메인 주소 또는 "WebServer“와 같이 특정 이름을 사용하는 경우 IP 주소로 바꾸는 역할
• 로컬의 네임 서비스 정보를 이용하는 호스트 설정
• 원격의 DNS 서버를 통해 IP 주소를 알아내는 DNS 서비스
– 호스트 설정
• 호스트 설정 파일은 로컬에서 운용되는 네임 서비스
• DNS 서버를 거치지 않고 지정된 IP 주소를 사용
• IP 스푸핑(spoofing) 방지, 특정 호스트에 대한 접근 제어
• 설정 파일 : /etc/hosts.conf, /etc/hosts, /etc/hosts.allow, /etc/hosts.deny
• 잘못된 호스트 파일의 설정은 시스템 사용자가 인식하지 못하는 상태에서 공격자의 사이트로 유도될 수 있다.
/etc/hosts.conf
# cat /etc/host.conf
multi on
• 네임 서비스를 어떻게 동작시킬 것인지를 결정
• order : 네임 서비스가 동작하는 순서를 결정, hosts는 로컬에 저장된 /etc/hosts 파일 참조를,
bind는 DNS 서버를 통한 네임 서비스를, nis는 네트워크 정보 서비스(NIS) 프로토콜
• alert : on/off로 설정, IP 스푸핑이 발생하면 syslog에 기록
• multi : on/off로 설정, 동일한 호스트에 여러 IP 주소를 부여
• nospoof : on/off로 설정
– 주소를 이용하여 IP를 얻어내는 것과 IP를 통해 주소를 얻는 두가지 방법을 모두 수행하여 두 개가 일치할 경우에만 IP 주소를 전달한다.
• trim : 도메인 주소를 파라메터로 설정, hosts 파일을 참조할 때, 도메인을 입력하지 않아도 자동으로 찾을 수 있게 한다.
/etc/hosts
127.0.0.1 localhost
127.0.1.1 ubuntu
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
• 호스트의 이름과 IP 주소의 쌍으로 구성
/etc/hosts.allow, /etc/hosts.deny
ALL: 192.168.0.
ALL: 192.168.1.
ALL: 192.168.3. EXCEPT 192.168.3.100
ALL: .korea.ac.kr EXCEPT malware.korea.ac.kr
• 외부의 접근을 허용 또는 차단하기 위해 사용
DNS 설정
/etc/resolv.conf
nameserver 192.168.80.2
nameserver 192.168.80.3
네트워크 인터페이스 카드(NIC) 설정
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
USERCTL=yes
BOOTPROTO=dhcp
• auto는 부팅시 자동으로 인터페이스를 활성화
• 고정 IP 주소 : "static"로 선언, IP 주소, 넷마스크, 네크워크 주소, 브로드
캐스트 주소, 게이트 웨이 등의 항목을 설정
• 동적 IP 주소 : "static" 대신에 “dhcp"로 지정
자동실행 프로그램
- /etc/initab
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
– 0 - 시스템 중지(halt), 임의로 지정하면 안됨
– 1 - 단일 사용자 모드
– 2 - NFS를 제외한 다중 사용자 모드(네트워크와 연결되어 있지 않으
면 3과 동일)
– 3 - 모든 기능이 동작하는 다중 사용자 모드(default)
– 4 - 사용안함
– 5 - X 윈도우 이용
– 6 - 재부팅, 임의로 지정하면 안됨
/etc 디렉토리
• 실행레벨에 따라 실행할 파일을 정의한 파일
• 실행파일(또는 실행파일에 대한 심볼릭 링크)
• 각 실행파일의 환경설정 파일이 정의
• Redhat 스크립트 파일 저장위치 : /etc/rc.d/rc0~/etc/rc.d/rc6
• Debian 스크립트 파일 저장위치 : /etc/rc0.d~/etc/rc6.d
/etc/rc.d/rc0.d# ll
lrwxrwxrwx. 1 root root 17 2015-03-03 22:46 K99sysstat -> ../init.d/sysstat
lrwxrwxrwx. 1 root root 22 2014-06-16 19:59 K99vmware-tools -> ../init.d/vmware-tools
lrwxrwxrwx 1 root root 17 2017-07-03 10:18 S00killall -> ../init.d/killall
lrwxrwxrwx 1 root root 14 2017-07-03 10:18 S01halt -> ../init.d/halt
자동 실행 스크립트의 이름
• SnnName, KnnName(nn은 00~99의 숫자)로 지정
• S로 시작하는 스크립트는 시스템이 시작할 때 자동으로 실행
• K로 시작하는 스크립트는 시스템이 종료할 때 자동으로 실행
• nn은 디렉토리 내 스크립트의 실행 순서, 숫자가 작은 것부터 먼저 실행
".bashrc", ".bash_profile", “.bash_logout"
– bash 쉘은 동작할 때 자동으로 실행되는 스크립트
– ".bashrc” bash 쉘이 실행할 때 마다 실행
– ".bash_profile” bash 쉘이 로그인 쉘로 이용되었을 때만 동작
“.bash_logout” bash 로그인 쉘이 종료
– /etc/profile, /etc/bash.bashrc 등
– /etc 디렉토리의 파일 : 사용자의 홈 디렉토리에 있는 스크립트가 동작할 때 해당 파일의 유ㆍ무를 검사하여 있으면 실행
• “.kshrc"
– 콘(Korn) 쉘이 실행할 때 자동으로 실행되는 스크립트 파일
• ".vimrc"
– 텍스트 편집기인 vi, vim 에디터를 이용할 경우에 자동으로 실행
• ".xinitrc"
– X 윈도우가 구동될 때 자동으로 실행된다.
작업 스케줄링(crontab)
– crontab은 리눅스 시스템에서 사용하는 작업 스케줄링 데몬
– 작업 스케줄링 정보는 /etc/crontab 파일 내에 정의
• Min : 0~59분
• Hour : 0~23시
• Day : 1~31일
• Month : 1~12 혹은 Jan~Dec
• DayOfWeek : 0 또는 7은 일요일, 1=월요일, 2=화요일··· 혹은 Sun~Sat
• Command : 실행하고자 하는 명령어 또는 스크립트
• syslog 데몬 : 시스템의 로그를 기록
– 운영체제의 동작과정에서 발생하는 로그를 기록
– 다른 데몬 프로그램이 발생시키는 로그 역시 기록
– /var/log 디렉토리에 기록
• bash 쉘에 의해 기록되는 명령어 히스토리가 존재
• utm p 파일, wtmp 파일 : 사용자 접속 기록
• 시스템에서 발생된 사건에 대해 많은 정보를 제공
– 사용자가 입력한 명령어의 히스토리는 각 사용자의 홈 디렉토리에 저장
– bash 쉘 : “.bash_history" 파일에 입력한 명령어를 기록
– $HISTSIZE : 명령어 히스토리 파일에 기록되는 명령어의 수 지정
/var/log/wtmp와 /var/run/utmp, /var/log/lastlog
– /var/log/wtmp 파일
• 로그인 시간과 사용자가 시스템에 연결한 기간과 재부팅할 때의 부팅 기록을 바이너리 파일로 저장
• last 명령이 /var/log/wtmp 파일을 사용
– last : 사용자의 로그인 목록을 생성
• 파일을 보기 위해서 별도의 뷰어 또는 파서가 필요
/var/run/utmp 파일
• 시스템에 현재 로그인되어 있는 사용자의 정보를 저장
• who, w, finger 등의 명령어 사용
– /var/log/lastlog 파일
• 각 계정이 마지막으로 로그인한 시간을 저장
• lastlog 명령어를 사용
– /var/log/dmesg
• 시스템이 부팅할 때 출력하는 메시지를 기록하는 로그 파일
• 시스템의 하드웨어 설정 및 로드된 디바이스 드라이버 등을 확인
– /var/log/messages
• 시스템에서 발생하는 각종 로그를 기록한 파일
• 운영체제가 동작하며 발생하는 하드웨어 및 소프트웨어의 이벤트와 에러를 기록
– /var/log/auth.log
• 관리자 권한으로 실행된 명령에 대해 시간, 계정명, 시도한 작업, 실패 여부 등을 저장
• sudo 명령을 통해 관리자 권한으로 동작한 것 뿐만 아니라 passwd와 같이 SUID, SGID가 설정되어 관리자 권한으로 실행된 명령어도 기록
'정리 > 시스템' 카테고리의 다른 글
Linux 파일 시스템 디렉토리 구조 개요 (0) | 2017.10.06 |
---|---|
MBR vs GPT (0) | 2017.10.06 |
BIOS 대 UEFI (0) | 2017.10.06 |
오픈소스SW 라이선스 (0) | 2017.10.06 |
리눅스의 개요 (2) | 2017.10.05 |
댓글