Chapter 6. 시스템 보안 및 관리
rsyslog : 로그 관리를 위한 패키지
/etc/rsyslog.conf : rsyslogd 데몬의 환경설정 파일
/etc/sysconfig/rsyslog : rsyslogd 데몬 실행 관련 옵션 설정
/sbin/rsyslogd : 실제 rsyslogd 데몬 실행 명령
/etc/rc.d/init.d/rsyslog : rsyslogd 데몬을 동작 시키는 스크립트. start, stop, restart 등의 인자값 사용
ex) /etc/rc.d/init.d/rsyslog stop
ex) service rsyslog restart
rsyslog.conf 구성
ㆍfacility : 메시지를 발생시키는 프로그램의 유형
ㆍpriority : 위험의 정도
ㆍaction : 메시지를 보낼 목적지
facility
ㆍcron : 스케줄링 프로그램
ㆍauth / security : 로그인 등의 인증 프로그램
ㆍauthpriv : ssh와 같은 인증이 필요한 프로그램
ㆍdaemon : 텔넷, FTP와 같은 여러 데몬
ㆍkern : 커널
ㆍlpr : 프린트 유형의 프로그램
ㆍmail : 메일 시스템
ㆍmark : syslogd에 의해 만들어지는 날짜 유형
ㆍnews : 뉴스 프로그램
ㆍsyslog : syslog 프로그램
ㆍuser : 사용자 프로세스
ㆍuucp : UNIX to UNIX Copy Protocol 시스템
ㆍlocal0 ~ local7 : 여분의 유형
ㆍ* : 모든 faclity
priority
ㆍnone : 지정한 faclity를 제외
ㆍdebug : 프로그램을 디버깅 할 때 발생하는 메시지
ㆍinfo : 통계, 기본정보
ㆍnotice : 특별한 주의는 필요하나 에러는 아닌 메시지
ㆍwarning / warn : 주의가 필요한 메시지
ㆍerror / err : 에러발생
ㆍcrit : 급하지 않지만 시스템에 문제가 생기는 단계의 메시지
ㆍalert : 즉각적인 조정이 필요한 상황
ㆍemerg / panic : 모든 사용자들에게 전달해야할 위험한 상황
action
ㆍfile : 지정한 파일에 로그 기록 (절대경로)
ㆍ@host : UDP 기반으로 지정한 호스트에 전달
ㆍ@@host : TCP 기반으로 지정한 호스트에 전달
ㆍuser : 지정한 사용자가 로그인을 한 경우 해당 사용자의 터미널로 전달
ㆍ* : 현재 로그인 되어있는 모든 사용자의 화면으로 전달
ex) mail.*;mail.!=info /var/log/maillog : info수준을 제외한 메일 관련 정보 기록
logrotate [option] config_file : 끝없이 커지는 로그 파일을 분할 하거나 압축하는 등의 관리
-f : 강제로 환경설정 파일을 읽어 실행 (--force)
/etc/logrotate.conf
ㆍdaily / weekly / monthly / yearly : 로그파일 로테이트 주기
ㆍrotate n : 로테이트 최대 횟수
ㆍcreate : 로테이트 후 비어있는 로그 파일 생성
ㆍdateext : 로테이트 후 생성된 로그파일 제목에 해당 날짜 기록 여부
ㆍcompress : 로테이트 후 생성된 로그파일에 대해 압축
ㆍinclude /etc/logrotate.d : /etc/logrotate.d 디렉터리 내 설정된 파일에 대해서도 로테이트를 적용
ㆍnomissingok : 로그파일이 존재하지 않는 경우 에러 메시지 출력
ㆍmissingok : 로그파일이 존재하지 않아도 메시지 미출력
ex)
/var/log/wtmp {
monthly
create 0644 root utmp
minsize 1M
rotate 1
}
ex)
/var/log/httpd/access.log {
rotate 5
mail posein@gmail.com
size 100k
missingok
dateext
postrotate # 로그파일 로테이트 이후 실행할 명령어
/usr/bin/killall –HUP httpd
endscript
}
/var/lib/logrotate.status : 각 로그별 로테이션된 날짜가 기록된 파일
/var/log/messages : 시스템에서 발생하는 표준 메시지가 기록되는 파일
/var/log/secure : 인증 기반 접속 관련 로그 기록 파일
/var/log/dmesg : 커널 부트 메시지 로그
/var/log/maillog : 메일 관련 작업 기록 로그
/var/log/xferlog : FTP 접속 관련 로그
/var/log/cron : cron 관련 정보
/var/log/boot.log : 부팅시 발생되는 메시지 기록 로그
/var/log/lastlog : telnet이나 ssh를 통한 마지막 접속 기록 (lastlog)
/var/log/wtmp : 콘솔, telnet, ftp 등을 이용한 접속 기록, 시스템을 재부팅한 기록등의 로그 (last)
/var/log/btmp : 접속이 실패했을 경우의 로그 (lastb)
last [option] [사용자명] [tty n] : /var/log/wtmp 확인. 사용자의 로그인 정보 및 재부팅 정보 확인
-f 파일명 : 기본 로그 파일 외 다른 로그파일 기록 확인
-n 숫자 / -숫자 : 최근부터 숫자번 전까지의 로그
-t YYYMMDDHHMMSS : 지정한 시간 이전의 기록
-R : IP나 호스트명 미출력
-a : IP나 호스트명 맨 마지막 필드에 출력
-d : IP를 호스트명으로 변환하여 출력
-F : 로그인 및 로그아웃 시간 출력
-i : 접속한 호스트의 IP주소로만 출력
-w : 사용자의 전체 이름이나 전체 도메인 이름을 전부 출력
reboot : 재부팅 정보 출력
lastlog [option] : /var/log/lastlog 확인. 각 사용자가 마지막으로 로그인한 정보 확인
-u 사용자명 : 특정 사용자에 대한 정보 (--user)
-t 날짜수 : 지정한 날짜수 만큼의 기록 (--time)
-b 날짜수 : 지정한 날짜수 이전에 최종적으로 로그인한 사용자 정보 (--before)
lastb [option] [사용자명] : /var/log/btmp 확인. 로그인 실패 정보 확인
last 옵션과 동일
dmesg [option] : 커널 링 버퍼의 내용 출력 및 제어
-c : 메시지 출력 후 저장된 메시지 삭제
logger [option] [message] : /var/log/message에 기록. 명령행에서 로그 시스템에 메시지 전송.
-i : PID 기록
-f : 저장되는 파일명 지정
-t : 지정한 태그 기록
-s : 표준출력(모니터)에도 메시지 출력
sysctl [option] 변수
sysctl [option] 변수=값 : /proc/sys 내 리눅스 커널 제어 매개변수 제어.
-a / -A : 커널 매개변수와 값 모두 출력
-p : 환경변수 파일에 설정된 값 출력. 파일명 미지정시 /etc/sysctl.conf 내용 출력
-n : 특정 매개변수에 대한 값 출력
-w 변수=값 : 매개변수에 값 설정
ex) sysctl –n net.ipov4.icmp_echo_ignore_all : /proc/sys/net/ipv4/icmp_echo_ignore_all 값 출력
/proc/sys/net/ipv4/의 설정 항목
icmp_echo_ignore_all : ping과 같은 ICMP vo킷에 대한 응답 여부 결정. 0=응답, 1=불응답
tcp_syncookies : SYN Flooding 방지. SYN 패킷의 도착빈도가 일정횟수보다 많을 때 거부
tcp_max_syn_backlog : SYN 요청의 처리한계(backlog) 설정
icmp_echo_ignore_broadcasts : 스머프 공격을 막기 위한 설정. 1=차단
tcp_fin_timeout : TCP 세션 종료 후 유지 시간 설정. 기본 60초
tcp_keepalive_time : TCP 연결 상태 유지를 위한 시간 설정. 기본 7200초
ip_forward : 하나에 서버에서 IP를 공유하는 포워딩 가능 여부. 1=포워딩 가능
ip_local_port_range : TCP 및 UDP를 이용한 클라이언트 포트로 사용가능한 포트 범위 설정
tcp_timestamps : 외부 서버에서 날짜정보 확인 가능 여부. 0=불가능
conf/all/accept_source_route : 라우팅 정보 노출 방지를 위한 설정. 0=차단
conf/all/rp_filter : 출발지 IP주소에 대한 조작 방지. 1=패킷에 대한 검사
conf/all/log_martians : 스푸핑 패킷과 리다이렉트된 패킷에 대한 기록 여부. 1=패킷기록
conf/all/accept_redirects : 라우팅 경로를 확인하는 redirect 관련 패킷 허가 여부. 0=불가능
conf/all/send_redirects : 서버에서 나가는 ICMP redirect패킷 허가 여부. 0=차단
/proc/sys/fs/file-max : 커널에서 최대로 사용가능한 파일 수 지정
openssh : openssh 서버와 클라이언트에 필요한 핵심 패키지. ssh-keygen 명령 포함
openssh-server : openssh 서버 관련 패키지. sshd, sftp서버 등 포함
openssh-client : openssh 클라이언트 관련 패키지. ssh, scp, sftp 등 포함
/etc/ssh/sshd_config 주요항목
Port 22 # ssh서버가 사용할 포트
#AddressFamily any # 접속하는 IP주소버전. inet=v4 / inet6=v6
#ListenAddress 0.0.0.0
#ListenAddress :: # sshd 데몬이 허가하는 주소를 설정하는 영역.
Protocol 2 # ssh 프로토콜의 버전 지정
HostKey /etc/ssh/ssh_host_key # SSH1의 호스트키 위치 지정
HostKey /etc/ssh/ssh_host_rsa_key # SSH2의 암호화 방식 (RSA, DSA 등 가능)
KeyRegenerationInterval 1h # 서버키 재생성 시간
ServerKeyBits 1024 # 서버키의 비트 수
SyslogFacility AUTHPRIV # syslog의 facility 기록 설정
LogLevel INFO # 로그레벨. QUIET=무기록, FATAL=치명적, ERROE, VERBOSE 등
LoginGraceTime 2m # 유저가 로그인에 실패했을 경우 연결을 끊는 시간
PermitRootLogin yes # root 로그인 허용 여부
StrictModes yes # 로그인 허용 전 파일모드, 소유권 등 원격호스트 파일 체크 여부
MaxAuthTries 6 # 접속 재시도 최대 횟수
MaxSessions 10 # 네트워크 주소 당 최대 연결 가능 세션 수
RSAAuthentication yes # RSA 인증 사용 여부
PubkeyAuthentication yes # 공개키를 통한 인증 허가 여부
AuthorizedKeysFile .ssh/authorized_keys # 클라이언트에서 생성한 공개키를 저장할 파일경로
RhostsRSAAuthentication no # RSA 사용시 rhost나 /etc/hosts.equiv가 있을 경우 인증 가능 여부
HostbasedAuthentication no # rhost나 /etc/hosts.equiv를 이용한 접속시 공개키를 이용한 접속 허가
IgnoreUserKnownHosts yes # rhost나 hostbased 인증시 각 사용자의 .ssh/knownhost 무시 여부
IgnoreRhosts yes # rhost나 hostbased 인증시 .rhosts 파일 무시 여부
PasswordAuthentication yes # 패스워드를 이용한 인증 허용 여부
PermitEmptyPasswords no # 패스워드 인증시 비어있는 패스워드 허용 여부
#ChallengeResponseAuthentication no # ChallengeResponse 관련 인증 설정
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes # kerberos 인증 관려 ㄴ설정
GSSAPIAuthenticiation yes
GSSAPICleanupCredentials yes # GSSAPI 인증 관련 설정
UsePAM yes # PAM을 통한 제어 설정 여부
#AllowTcpForwarding yes # TCP를 통한 포워딩 허가 여부
#GatewayPorts no # 포워딩된 포트에 대한 클라이언트 접속 허가 여부
X11Forwarding yes # 원격에서 X11 포워딩 허용 여부. yes시 xhost보다 안전하게 접속
#X11DisplayOffset 10 # X11포워딩 시 디스플레이 번호
#X11UseLocalhost yes # X11 포워딩시 localhost 관련 설정
#PrintMotd yes # SSH 로그인시 /etc/motf 파일 내용 출력 여부
#PrintLastLog yes # 로그인시 지난번 로그인 기록 출력 여부
#TCPKeepAlive yes # 클라이언트 접속 체크 설정
#UseLogin no # 로그인 세션 사용 여부
#UsePrivilegeSeparation # 네트워크 트래픽 발생시 자식 프로세스에 의한 권한 분리 여부
#PermitUserEnvironment no # 사용자 홈 디렉터리의 environment= 옵션 사용 여부
#Compression delayed # 압축허가 여부
#ClientAliveInterval 0 # 클라이언트로부터 수신되는 데이터가 없을시 서버가 보내는 시간
#ClientAliveCountMax 3 # 클라이언트에게 전달하는 메시지 횟수
#UseDNS yes # 클라이언트의 호스트 주소를 IP주소로 해석 여부
#PidFile /var/run/sshd.pid # ssh 데몬의 PID 기록
#Banner none # 로그인전 출력하는 메시지
Subsystem sftp /usr/libexec/openssh/sftp-server # sftp 사용설정
ssh [option] 호스트명or주소
ssh 계정명@호스트명
ssh 호스트명 명령
-l : 다른 계정으로 접속시 사용
-p : ssh 포트가 22번이 아닐 경우
ssh-keygen [option] : SSH 접속시 인증키를 이용한 접속. 클라이언트에서 비밀키와 공개키 생성 후 서버로 전송
-t : 사용할 압호화 알고리즘 지정. RSA, DSA 등 사용 가능
→ 인증키 생성시 id_rsa와 id_rsa_pub 파일이 생성. 서버의 .ssh/authorized_keys에 공개키 파일 복사
→ 원격지에 .ssh 디렉터리 생성후 scp를 이용해 공개키 복사
PAM (Pluggable Authentication Module)
: 사용자 인증 및 서비스에 대한 모듈화된 접근 제어 방법
: 소프트웨어 개발과 안전한 권한 부여 및 인증체계를 분리하기 위한 목적
: 특정 서비스에 대한 사용자들의 허가 목록 파일, 거부 목록 파일, 사용자의 패스워드 길이 제한 등
ㆍ/lib/security : PAM 위치파일. 동적 로드를 위해 .so 파일형태로 존재
ㆍ/etc/pam.d : PAM을 이용하는 서비스들이 설정된 파일
ㆍ/etc/pam.d/other : 특별히 지정되지 않는 서비스에 대한 인증
PAM 설정 파일 구성
ㆍtype : PAM에 어떤 타입의 인증이 사용될 것인지 알려주는 항목
ㆍcontrol : PAM에 대한 통제를 담당
ㆍmodule_name : 사용하는 모듈명에 대한 명기
ㆍmodule-arguments : 지정한 모듈이 사용하는 인수 기입
PAM type
ㆍaccount : 해당 서비스에 대한 사용자의 접근 허용 여부. 패스워드 기간 만료 여부 검사
ㆍauth : 기본적인 패스워드 인증 외 생체인증과 같은 다른 인증 방식
ㆍpassword : 인증방법 변경시 패스워드 인증후 변경
ㆍsession : 사용자가 인증받기 전후의 해야할 것에 대한 정의
PAM control
ㆍrequisite : 모듈 인증 실패시 즉시 거부
ㆍrequired : 인증 거부 전 다른 모듈들을 요구하고 실패할 경우 인증 거부
ㆍsufficient : 이전 요청의 인증 실패라도 이 모듈에 의한 인증 성공시 승인
ㆍoptional : 인증 성공 여부 보다 모듈이 응용프로그램에게 주는 결과로 결정
ㆍinclude : 모듈명 대신 다른 PAM 관련 서비스를 통한 인증이 성공해야 승인
PAM 주요 모듈
ㆍpam_securetty.so : root으로 접속할 경우 /etc/securetty 파일에 기록된 터미널에서만 허용. /etc/pam.d/login, /etc/pam.d/remote
ㆍpam_lisfile.so : 임의의 파일에 대한 서비스 허가 및 거부 방법 제공. /etc/pam.d/vsftpd
ㆍpam_nologin.so : /etc/nologin 파일 존재시 root만 로그인 가능. 대부분의 로그인 관련 서비스에 설정
ㆍpam_deny.so : 접근을 무조건 거부. other, system-auth에 사용
ㆍpam_cracklib.so : 패스워드를 설정한 정책과 비교 및 검사. password-auth, system-auth에서 사용
ㆍpam_wheel.so : root 권한을 얻을 수 있는 사용자를 wheel이라는 그룹으로 묶어서 사용하도록 지원. su관련
ㆍpam_rootok.so : root이 암호 입력없이 해당 서비스에 대한 접근 허용. su, chsh 등에 사용
visudo : /etc/sudoers 편집 명령어
sudo : 일반 사용자가 root 권한 획득을 위해 사용. /etc/sudoers에 설정된 유저만 사용가능
/etc/sudoers : sudo의 환경설정 파일. 사용자에게 부여할 root 권한 명령 지정
ㆍ사용자 접속한_곳=명령어_경로
ex) posein localhost=/usr/sbin/useradd, /user/bin/passwd
lsattr [option] [파일명] : 파일에 설정된 속성 확인
-R : 하위 디렉터리까지 확인
-a : .으로 시작되는 숨김 파일과 디렉터리까지 확인
chattr [option] mode 파일명 : 파일의 속성 변경. root 사용자만 가능
-R : 하위 디렉터리까지 변경
chattr mode : +와 –, =을 사용하여 속성 부여
A : 파일 수정시 atime은 수정하지 않음
a : 해당 파일에 추가만 가능 하도록 설정
d : dump로 백업 불가
i : 해당 파일의 변경, 삭제, 파일 추가, 링크파일 생성 등 불가
S : 파일 변경 시 디스크 동기화 발생
e : 디스크 블록에 매핑하기 위해 확장된 파일임을 표시
ex) chattr +a /ver/log/messages : /var/log/messages파일을 삭제 불가능하고 추가만 가능 하도록 설정
acl (Access Control List) : 파일이나 디렉터리에 대한 접근 권한을 제어하는 시스템
getfacl [option] [파일명] : 파일이나 디렉터리에 설정된 접근 권한 리스트 확인
-d : 접근권한 리스트의 기본 값 출력
setfacl [option] [파일명] : 파일이나 디렉터리에 접근 권한 리스트를 설정. root 권한 필요
-m : 권한 지정 및 수정 (--modify)
-x : 권한 삭제 (--remove)
-R : 하위 디렉터리 및 파일까지 변경 (--recursive)
-b : 권한 및 mask 등 모든 권한 삭제 (--remove-all)
ex) setfacl –m u:posein hi.txt : posein 유저에 대한 권한 삭제
ex) setfacl –R –m g:terran:rwx terran/ : terran 그룹에 속한 사용자들의 terran 디렉터리에 대한 rwx 권한을 하위까지 부여
nmap (network mapper) : 네트워크 탐지 도구 및 보안 스캐너. 서비스 중인 포트를 스캔하여 출력
ex) nmap –O –p 1-65535 localhost : 로컬 호스트의 운영체제와 포트번호 1번부터 65535번까지 열린 포트 점검
전체백업 : 특정 디스크나 파티션에 대한 전체적인 백업
증분백업 : 정해진 시간을 기준으로 그 이후 변경된 데이터만 백업
차등백업 : 마지막 백업 이후 변경된 모든 데이터 백업
전체백업/복원
ㆍtar cvfp home.tar /home : home디렉터리에 대한 퍼미션을 유지하면서 .tar로 백업
ㆍtar xvf home.tar : 복원
증분백업/복원
ㆍtar –g list –cvfp home1.tar /home : -g(증분백업). list라는 파일의 내용을 토대로 증분백업 시도
ㆍtar xvf home1.tar –C
※ 증분/차분 백업 참조 : https://m.blog.naver.com/PostView.nhn?blogId=baraem2005&logNo=20169325640&proxyReferer=https:%2F%2Fwww.google.com%2F
cpio (copy input to output)
: 대량의 백업 및 장치파일이나 네트워크 파일등에 대한 백업 가능. 손상된 부분을 제외한 백업 가능.
: 백업본의 크기가 작으나, 증분백업 불가
[셸 명령어 | ] cpio option > 파일명
cpio option < 파일명
-o : 표준 출력으로 보내어 사용 (--create)
-i : 표준 입력으로 백업 자료를 불러올 때 (--extract)
-v : 과정 출력 (--verbose)
-c : 아카이브 포맷 형식을 new SVR4 ~~로 지정
-d : 필요할 경우 디렉터리 생성 (--make-directories)
-t : 내용만 확인할 때 사용 (--list)
-F : 표준 입출력 전환 기호 대신 파일명 지정 (--file=파일명)
-B : 입출력 블록 사이즈 조절 (512~5120byte)
-H 포맷 : 아카이브 폼맷 형식 지정. bin, newc, crc등 (--format 포맷)
dump / restore
: 파일들이 아닌 파일 시스템 전체를 백업
: 전체백업과 증분 백업 지원
: 0~9단계 (0=전체백업 / 나머지=부분백업)
: /etc/fstab 파일을 참조하여 백업
: yum install dump를를 통한 설치 필요
: ext 파일 시스템 계열만 지원
dump option 파일명 백업대상
-0~9 : 레벨
-f : 백업할 매체나 파일명 기재
-u : dump 작업 후 /etc/dumpdates 파일에 관련 정보 기록
ex) dump –0u –f backup.dump /dev/sda7
restore option 백업파일명
-i : 대화식으로 복구할 파일 선택 후 복원
-f : 백업할 매체나 파일명 기재
-r : 전체 복원시 사용. 파일 시스템의 및 마운트 필요
dd(data dumper) : 파티션이나 디스크 단위 백업. 간편하나 시간소요
ex) dd if=/dev/sda1 of=/dev/sdb1 bs=1k : 블록사이즈를 1kb 단위로 하여 /dev/sda1을 /dev/sdb1으로 백업
rsync(remote synchronous)
: 네트워크로 연결된 원격지의 파일들 동기화
: 링크된 파일이나 디바이스 파일 복사 가능.
: 그룹을 포함한 소유권 및 허가권 유지한 복사 가능
: GNU tar과 유사한 옵션 사용. 특정 부분만 백업 가능
: ssh나 rsh를 이용한 전송가능. root권한 불필요
: 익명 사용자 및 인증된 사용자 지원. 미러링에 이상적
: 내부 파이프 라인을 통한 빠른 전송
: 로컬 시스템 백업시 별다른 서버 설정 없이 사용가능
rsync [option] 출발지 목적지
-r : 하위 디렉터리까지 (--recursive)
-l : 심볼릭 링크 보존 (--links)
-L : 심볼릭 링크가 참조하는 파일 복사 (--copy-links)
-p : 퍼미션 보존 (--perms)
-t : 타임스탬프 보존 (--times)
-g : 그룹 소유권 보존 (--group)
-o : 소유권 보존 (root만, --owner)
-D : 디바이스 파일 보존 (root만)
-H : 하드링크 보존 (--hard-links)
-a : 모든 옵션 사용 (-rlptgoD, --archive)
-v : 진행상황 출력 (--verbose)
-u : 업데이트된 내용만 전송 (--update)
-z : 전송할 때 압축 (--compress)
-b : 동일한 백업파일 존재시 ~을 붙이고 생성 (--backup)
-e : 원격지에서 사용할 셸 명령어 기재 (--rsh=명령어)
--progress : 명령이 실행되는 동안의 전송상황 정보 출력
--delete : 송신측에 없는 파일이 수신측에 존재할 경우 삭제
'Certification > 리눅스마스터' 카테고리의 다른 글
리눅스 마스터 1급 2차 정리 9 - NIS / LDAP (네트워크 사용자 인증 서비스) (0) | 2021.11.02 |
---|---|
리눅스 마스터 1급 2차 정리 8 - HTTP / Apache (0) | 2021.11.02 |
리눅스 마스터 1급 2차 정리 6 - 장치 관리 (0) | 2021.11.02 |
리눅스 마스터 1급 2차 정리 5 - 패키지 관리 (0) | 2021.11.02 |
리눅스 마스터 1급 2차 정리 4 - 프로세스 관리 (0) | 2021.11.02 |