linux master
시스템 관리 실무
사용자 및 그룹 계정 관리
- 로그인 관련 명령어
w: 로그인 한 사용자가 하고있는 행위 확인(로그인시간, 원격 IP주소 …)who: 로그인한 사용자 확인users: 로그인한 사용자명만 출력 (로그인한 사용자들이 누구인지 빠르게 확인)lslogins: 시스템의 모든 계정정보 출력
- 사용자 관리 명령어
usermod: 사용자 수정(사용자명, 사용자홈 …)passwd: 사용자 비밀번호 변경-l: lock > 잠금-d: delete > 비밀번호를 삭제-u: unlock > 잠겼던 해제
- 권한 관리 명령어
sudo(superuser do): 특정 사용자에게 관리자권한을 임시 부여. sudo가 허용된 명령어만 실행 가능(기록은 root로 남는게 아닌, 명령을 실행한 사용자명으로 남음)su: 관리자 계정으로 로그인(보안 취약)
- 계정 관리 설정 파일
/etc/login.defs: 계정 관리 및 정책(최소 길이, 최대 길이, 유효기간 …) 설정/etc/passwd: 계정 정보/etc/skel: 사용자가 생성될 때 복사되는 사용자 홈 디렉토리의 템플릿 파일/etc/default/useradd: 사용자 생성시 디폴트값을 설정하는 파일 (홈 디렉토리, 기본 그룹 …)/etc/group: 시스템의 그룹 정보를 저장
- 인증 관리 시스템
PAM(Pluggable Authentication Modules): 인증 방법(비밀번호, 지문, 스마트카드) 및 정책 설정
파일 및 디렉터리 관리
- 백업 명령어
dump: 시스템 백업, 복원 (증분 백업 0~9단계 지원)dd: 데이터 변환 및 복사cpio: 파일 압축 해 시스템을 백업, 복원. 손상된 부분을 제외하고 복구 가능.rsync(remote sync): 원격 파일 동기화
- 파일 권한 관리 명령어
setfacl(Access Control List): 파일에 대해 세밀한 접근 권한을 부여하기 위한 명령어 > 보안 강화umask: 파일, 디렉토리가 생성될 때 기본 권한을 설정하는데 사용되는 값chmod(change mode): 파일, 디렉토리의 권한을 변경하는데 사용되는 명령어- 옵션: u(user), g(group), o(other), a(all), r(read), w(write), e(execute), +, -, =
- 파일 시스템
quota: 사용자, 그룹이 사용할 수 있는 자원을 관리하는 매커니즘edquota: 쿼터 수정 in 에디터setquota: 쿼터 수정 in clixfs_quota: XFS 파일 시스템용 쿼터 관리
XFS: Rhel 계열에서 사용되는 파일시스템Set-UID: 파일 실행시 그 파일에 소유자 권한으로 실행
- 설정 파일
/etc/fstab: 시스템이 부팅될 때 자동으로 마운트할 파일 시스템의 정보를 설정하는 파일
장치 및 프로세스 관리
- 디스크 관리 명령어
mount: 볼륨을 시스템에 연결 ($ mount /dev/sdb1 /mnt)umount: 볼륨을 시스템에서 연결 해제fdisk: 디스크, 파티션 정보 조회 및 생성
- 디스크 관리 시스템
LVM(Logic Volumn Manageer): pvcreate, vgcreate, lvcreate, lvextend 명령을 통해 물리, 논리 볼륨 생성 및 그룹핑, 논리 볼륨 확장 기능 수행 가능 ($ lvcreate -L 20G -n backup lvm0)RAID: 여러 물리적 디스크를 논리적으로 묶어 마치 한개인것처럼 관리하는 기술
- 프로세스 스케쥴링
NI (nice value): 프로세스 우선순위 조정 by 사용자 (범위: -20 ~ 19)PRI (Priority): 커널 프로세스의 실행 우선순위
- 스케쥴링 명령어
crontab: 주기적인 작업 예약 (-e: 편집,-l: 목록,-r: 삭제)at: 1회성 작업 예약atq: 예약된 작업 목록atrm: 예약된 작업 삭제
- 프린터 관리 명령어
lp: 프린터 작업요청 (System V)lpc: 프린터 대기열 제어 (BSD)lpstat: 프린터 대기열 상태 출력 (System V)cancel: 프린터 작업 취소 (System V)lpr: 시스템에서 프린터로 파일을 보내는 명령
- 스캐너 명령어
XSANE(XScanner Access Now Easy): 스캐너 인터페이스 명령어xcam: 카메라 장치에서 이미지를 캡처scanadf: 자동 문서 공급기(ADF)를 사용하여 여러장 연속 스캔scanimage: 이미지를 캡처하는 명령어sane-fine-scanner: 시스템에서 스캐너를 검색하고 연결 확인
- 시스템 관리 명령어
uname: 시스템 정보를 출력(커널버전, OS…) (-u: 호스트명,-o: OS명,-r: 커널버전,-s: 커널명)
- 기타 시스템
CUPS(Common Unix Printing System): 인쇄 시스템 (프린터 설정, 대기열 관리)ALSA(Advanced Linux Sound Architecture): 오디오 장치 관리cgroups: 리눅스 자원제한 커널 기능
부팅 및 종료 관리
- 프로세스 운영 방식
standalone: 부팅시 서비스가 메모리에 상주하며 클라이언트의 요청을 처리하는 방식inetd(xinetd): 요청이 있을때, 필요한 서비스를 실행하는 서버 관리 프로세스. 메모리 사용량을 줄일 수 있으나 속도가 느릴 수 있음.
- 커널 관리
dmesg: 커널 링 버퍼의 내용을 출력 (부팅 메세지, 하드웨어 오류 등)sysctl: 커널 런타임 파라미터를 조회, 수정 (-w옵션으로 값 변경)ldd(List Dynamic Dependencies): 실행 파일이 필요로하는 의존성 출력ldconfig(Dynamic Linker Runtime Binding): 공유 의존성 캐시를 갱신ld.so.conf: 의존성 설정파일
- 커널 컴파일
make mrproper: 소스 디렉토리 초기화 (clean)make menuconfig: 커널 옵션 설정 도구..config파일 생성.make modules: 커널 소스 컴파일(빌드)make modules_install: 커널을 부팅하기위해 설치modprobe: 커널 모듈을 로딩/언로딩 (-r옵션으로 제거)lsmod: 로딩된 모듈 목록insmod: 커널 모듈 로딩(modprobe보다 저수준)
- 커널 아키텍처
단일(monolithic): 리눅스에서 사용마이크로(micro): 미닉스에서 사용혼합(hybrid): 윈도우에서 사용
- X 윈도우 시스템 (GUI)
startx: X윈도 실행 스크립트systemctl set-default multi-user: 부팅시 CLI 모드로 설정systemctl set-default graphical: 부팅시 GUI 모드로 설정xhost: X서버에 대한 엑세스 제어xauth: X서버 연결 인증
네트워크 및 서비스 관리 실무
TCP/IP 설정
- 프로토콜
ARP (Address Resolution Protocol): 로컬 네트워크의 다른 호스트의 Mac주소를 확인RPC (Remote Procedure Call): 원격 호스트의 프로시져를 호출NTP (Network Time Protocol): 네트워크로 서버시간을 동기화하는 프로토콜BOOTP(Bootsrap Protocol): 부팅시 IP주소와 네트워크 설정 정보를 자동으로 할당 > DHCP가 이를 대신함RIP(Routing Information Protocol): 단거리 경로 탐색 프로토콜RTP(Realtime Trasnport Protocl): 오디오, 비디오같은 실시간 데이터 전송을 위해 사용되는 프로토콜
- PDU(Protocol Data Unit)
segment> Transfer Layer(4)packet> Network Layer(3)frame> DataLink Layer(2)bit> Physical Layer(1)
- 통신 명령어
ss: 소켓 분석, 네트워크 커넥션에 대한 정보를 표출
- 네트워크 장치
docker0: Docker가 설치될 때 생성되는 가상 브릿지 네트워크 장치
- IPv4 대역 클래스
- Class A: 10.0.0.0/8
- Class B: 172.16.0.0/12
- Class C: 192.168.0.0/16
- TCP 상태
SYN_RECV: 3-way handshake 과정에서 SYN-ACK 단계를 지난 후 서버의 대기상태ESTABLISHED: 3-way handshake 과정에서 클라이언트로부터 ACK 패킷을 수신한 상태
- 기타
Jumboframe: 1500바이트 이상 크기의 이더넷 프레임
네임 서비스(DNS)
- DNS 서버 (BIND)
호스트존: 특정 도메인의 모든 DNS정보를 관리 (A, AAAA 레코드)포워드존: 특정 도메인에 대해 다른 DNS서버로 조회를 위임 (MX, CNAME 레코드)리버스존: IP를 이용해 Domain을 찾기위한 DB (PTR 레코드)
- 설정 파일
/etc/named.conf: DNS 서버의 주요 설정 파일/etc/resolv.conf: 사용할 DNS 서버의 IP 주소를 설정
- 관련 개념
acl(Acess Control List): BIND DNS 서버에서 특정 네트워크에 대한 접근 권한을 설정
웹 서비스(Apache, Nginx)
- Apache
mod_userdir.so: 사용자가 자신의 홈 디렉토리에서 웹 콘텐츠를 제공할 수 있도록 하는 아파치 모듈htpasswd: 아파치 사용자 인증 파일을 생성/관리하는 명령어ServerRoot,ServerAdmin,ServerName: httpd.conf의 주요 지시어
메일 서비스(Postfix, Sendmail 등)
- 메일 시스템 구성요소
MTA(Mail Transfer Agent): 메일 전송 (qmail, postfix, sendmail)MDA(Mail Delivery Agent): 도착한 메일을 사용자 메일박스에 전달 (dovecot)MUA(Mail User Agent): 사용자가 메일을 확인하는 클라이언트 (evolution, Outlook)
- 메일 관련 명령어
mail: 메일 전송 명령어
- 설정 파일
sendmail.cf: Sendmail의 주 설정 파일 (Cw,Fw,Dj,O등의 지시어 사용)/etc/mail/local-host-names: 메일 서버에서 로컬로 처리할 도메인 지정/etc/mail/access: 특정 호스트나 도메인의 접근 제어/etc/mail/virtusertable: 가상 도메인 및 사용자 매핑/etc/aliases: 특정 계정으로 들어오는 메일을 다른 계정으로 전달
데이터베이스 연동(MySQL 등)
(현재 내용 없음)
기타 서비스
- 파일 공유
SMB(Server Message Block): 파일, 프린터 공유 프로토콜CIFS(Common Internet File System): SMB의 확장 버전samba: Windows와 Linux/Unix 시스템 간 파일 및 프린터 공유를 위한 소프트웨어NFS(Network File System): 네트워크를 통해 파일을 공유/etc/exports: NFS 서버에서 공유할 디렉토리 설정root_squash,no_root_squash,all_squash,no_all_squash: NFS 권한 매핑 옵션
- 원격 접속
sshd(secure shell daemon): SSH 서버 데몬in.telnetd: 텔넷 서버 데몬VNC (Virtual Network Computing): 원격 데스크톱 프로토콜
- 디렉터리 서비스
LDAP (Lightweight Directory Access Protocol)
- 중앙 계정 관리
NIS(Network Information System): 사용자 계정, 호스트명 등 시스템 정보를 중앙에서 관리/etc/yp.conf: NIS 클라이언트 설정 파일ypbind: NIS 클라이언트 데몬ypserv: NIS 서버 데몬
- 파일 전송
vsftpd(very secure FTP daemon): FTP 서버 데몬/etc/vsftpd/ftpusers: FTP 접근 불가 사용자 목록 (블랙리스트)
시스템 보안 및 최적화
보안 계정 관리
- 가상화
VT-x: Intel의 하드웨어 가상화 기술SVM: AMD의 하드웨어 가상화 기술
- 가상화 관리 도구
libvirt: 가상화 관리 API 라이브러리virt-manager: GUI 기반 가상 머신 관리 도구virsh: CLI 기반 가상 머신 제어 명령어
방화벽 설정(iptables, firewalld)
- 보안 명령어 및 도구
Tripwire: 시스템 파일의 변조 여부 확인iptables: 리눅스 커널 방화벽(Netfilter)을 제어하는 도구- 테이블:
filter,nat,mangle,raw - 체인:
INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
- 테이블:
nftables: iptables를 대체하는 최신 패킷 필터링 프레임워크Suricata: 오픈 소스 침입 탐지 시스템(IDS)
- 네트워크 보안 시스템
TCP Wrapper: 특정 서비스에 대한 접근을 호스트 기반으로 제어
로그 분석 및 모니터링
- 로그 파일 종류
/var/log/secure: 보안 및 인증 관련 로그 (텍스트)/var/log/lastlog: 각 사용자의 마지막 로그인 정보 (바이너리,lastlog명령어로 확인)/var/log/wtmp: 시스템 부팅, 종료, 로그인, 로그아웃 정보 (바이너리,last명령어로 확인)/var/log/btmp: 실패한 로그인 시도 (바이너리,lastb명령어로 확인)/var/log/xferlog: FTP 파일 전송 로그/var/log/boot.log: 부팅 과정 이벤트 로깅
- 로그 우선순위 (Priority)
- Emergency
- Alert
- Critical
- Error
- Warning
- Notice
- Information
- Debug
시스템 공격 유형
- DDoS(Distributed Denial of Service)
Boink: 대량의 SYN 패킷을 이용한 공격Trinoo: UDP Flooding 분산 서비스 거부 공격TFN 2K: 대규모 봇넷을 활용한 공격
- DoS(Denial of Service)
I-node 공격: 파일을 대량 생성해 I-node를 모두 소모시켜 파일 생성을 불가능하게 하는 공격TearDrop: 패킷의 시퀀스 번호를 조작하여 재조합 과정에서 시스템에 혼란을 유도하는 공격Smurf: ICMP와 브로드캐스트 주소를 이용해 다수의 시스템에 패킷을 보내는 공격