네트워크 서비스 & 보안 관리
####################
제 01장. 네트워크 관리
####################
0. 선수 지식
(용어)
* 장치(Device) : NIC(Network Interface Card), Network Adapter
* 연결(Connection) : 네트워크 설정 모음
# nmcli general permissions
# nmcli networking on
1. 네트워크 관련 파일들
* /etc/hosts
* /etc/host.conf
* /etc/resolv.conf
* /etc/sysconfig/network
* /etc/sysconfig/network-scripts/ifcfg-*
2. 네트워크 관련 명령어
* ethtool
# ethtool ens33
* ip addr
# ip addr
# ip addr show ens33
* ip route
# ip route
* cat /etc/resolv.conf
# cat /etc/resolv.conf
3. 네트워크 설정 툴
* nm-connection-editor
# nm-connection-editor &
# nmcli connetcion up ens33
* nmtui
# nmtui
# nmcli connection up ens33
* nmcli CMD
# nmcli connection show ens33 | grep ipv4
# nmcli connection modify ens33 \
ipv4.method manual \
ipv4.address 192.168.10.20/24 \
ipv4.gateway 192.168.10.2 \
ipv4.search example.com \
ipv4.dns 168.126.63.1
# nmcli connection up ens33
4. 네트워크 시나리오 작업
(1) NIC 추가 작업
* Power OFF
* 새로운 NIC 추가
* Power ON
* root 사용자로 로그인
* 새로 추가된 NIC에 IP 설정
# nmtui
# nmcli connection up ens36
(2) 호스트 이름 변경
* 호스트 이름 변경
# hostnamectl set-hostname server1.example.com
* 적용
# reboot
(3) 티밍(Teming)
* (주의) 설정하는 모든 device는 disconnect 되어 있는 상태
# nmcli device
# nmcli device disconnect ens33
# nmcli device disconnect ens36
# nmcli connection delete ens33
# nmcli connection delete ens33
* 티밍 설정
# nmcli connection add type team ifname team0 con-name team0 config '{"runner": {"name": "activebackup"}}'
# nmcli connection add type team-slave ifname ens33 con-name team0-part1 master team0
# nmcli connection add type team-slave ifname ens36 con-name team0-part2 master team0
# nmcli connection modify team0 \
ipv4.method manual \
ipv4.address 192.168.10.100/24 \
ipv4.gateway 192.168.10.2 \
ipv4.dns 168.126.63.1 \
ipv4.dns-search example.com
# nmcli connection up team0-port1
# nmcli connection up team0-port2
# nmcli connection up team0
# teamdctl team0 state
####################
제 02장 SELinux 관리
####################
1. SELinux Mode
* SELinux? 프로세스 -> 파일, 디렉토리, 포트에 보안 레이블을 설정하여 액세스할 수 보안규칙을 설정하는 기능이다.
* SELinux Mode
* disable : control(x), logging(x)
* permissive : control(x), logging(o)
* enforcing : control(o), logging(o)
* SELinux Mode 변경 방법
(현재) # setenforce Enforcing|Permissive|1|0
(부팅) # vi /etc/selinux/config
SELINUX=enforcing|permissive
2. SELinux 기능
(1) SELinux Context
SELinux Context 정보 확인
# ls -lZ /var/www/html
# semanage fcontext -l
SELinux Context 정보 변경
(임시) # semanage fcontext -a -t http_sys_content_t '/virtual(/.*)?'
(영구) # restorecon -Rv /virtual
(2) SELinux Boolean
SELinux Boolean 정보 확인
# getsebool -a
# semanage boolean -l // 이걸로 확인하는게 좋음
SELinux Boolean 정보 설정
# setsebool -F httpd_enable_homedirs on|off
(3) SELinux Port
3. 트러블 슈팅(Troubleshooting) //port 중요함
semanage fcontext -a -t httpd_sys_content_t '/web(/.*)?'
restorecon -Rv '/web/'
(문제원인)
* SELinux context 이상
* SELinux boolean 이상
* SELinux port 이상
(문제 해결)
* SELinux 문제인가를 판별하기 위해서?
# setenforce 0
* SELinux 어떤 문제인가? // 과정기억하기
* (방법1)
# cat /var/log/messages | grep -i preventing
# sealert -l UUID
* (방법2)
# cat /var/log/audit/audit.log | grep -i denied
# sealert -a /var/log/audit/audit.log
####################
제 03장. 방화벽 관리 //서버 방화벽에 초점
####################
0. 용어
* 영역(zone): 방화벽 규칙 집합
* 서비스(service): 미리 정의 된 "포트/프로토콜"(ex: ssh(22/tcp)
* 포트(port): 포트/프로토콜(ex: 1521/tcp)
방화벽 규칙 적용 순서(어떤 zone 선택되는가?)
* 1) source -> zone
* 2) interface -> zone 선택
* 3) default zone 선택
방화벽 규칙 적용 순서(zone 안에 규칙이 우선순위가 높은가?)
* 1) port forwarding, msquerading
* 2) log, audit
* 3) reject
* 4) accept
1. 방화벽 설정 툴
* (CLI) firewall-cmd CMD
* (GUI) firewall-config 툴
2. 방화벽 설정
* Default zone 설정
# firewall-cmd --get-default
# firewall-cmd --set-default-zone=public // 네트워트는 바뀜 서버는 안바뀜
* 서비스 등록/삭제
# firewall-cmd --get-services | grep http
# firewall-cmd --list-all
# firewall-cmd --permanent -add-service=(http,https)
# firewall-cmd --reload
* 포트 등록/삭제
# firewall-cmd --permanent --add-port=1521/tcp
# firewall-cmd --reload
* 리치 규칙(Rich Rule)
# man rich-language
####################
제 04장. DNS 관리
####################
0. DNS 개요
* APPAnet : 초기 네트워크
* DDNS: Dynamic DNS
* (예1) 공유기 설정 > DNS
* (예2) DHCP <-> DNS 연동
1. DNS 요약
프로그램: bind, bind-utils
데몬 & 포트/프로토콜: named, 53/UDP, 53/TCP
설정 파일: /etc/named.{conf|rfc1912.zones}
하위 설정 파일: /var/named/*
서비스: named.service
2. DNS 구축
(ㄱ) 패키지 설치(# yum -y install bind bind-tuils)
(ㄴ) 서비스 설정(# vi /etc/named.{conf|rfc1912.zones}, /var/named/*}
(ㄷ) 서비스 기동(# systemctl enable --now named)
(ㄹ) 방화벽 등록(# firewall-cmd --permanent --add-service=dns)
(ㅁ) SELinux(?) // 우리 안할거임
3. DNS 실습
[실습] /etc/hosts 파일을 사용한 이전 도메인 관리 방식 실습
[실습] DNS 기본 설정 점검
[실습] Root(.)|/com DNS 서버 구축
[실습] DNS 클라이언트 명령어
[실습] example.com DNS 서버 구축
[실습] test.com DNS 서버 구축
[실습] 도메인 등록
[실습] DNS 웹 부하분산(라운드-로빈 DNS)
[실습] DNS 도메인 위임
[실습] Master DNS / Slave DNS 서버 구축
[실습] DNS Zone transfer(DNS 존 데이터 업데이트)
[실습] rndc CMD 실습
* [실습] allow-update/nsupdate CMD // 2개 실습은 스냅샷 이후
* [실습] allow-transfer // 스냅샷으로 돌려놓기
[보안] DNS 보안 관련
* [ ] DNS 보안 점검
* DNS 보안 점검: https://intodns.com/
* DNSSEC 체크 툴: https://krnic.or.kr/jsp/resources/dns/dnssecInfo/dnssecTool.jsp
* [ ] KISA 보안 공지
* (CVE) https://www.boho.or.kr/kr/bbs/list.do?menuNo=205020&bbsId=B0000133
* [ ] chroot 구성
# yum -y install bind bind-tuils bin-chroot
* [ ] DNS 업데이트/패치
# yum update bind bind-utils
* [ ] DNS 보안 관련 지시자
* allow-update, allow-query, allow-query-on, allow-transfer
* allow-notify, allow-recursion, blackhole, match-clients
* [ ] 최근 보안 버그 확인
* ISC: http://www.isc.org/software/bind/
* KISA 보안공지: https://www.boho.or.kr/kr/bbs/list.do?menuNo=205020&bbsId=B0000133
* [ ] DNSSEC
* DNSSEC 사용하는 기술?
* 구현방법
* [ ] DNS 모니터링 툴
* dnsgrpah
######################
제 05장. WEB 서버 관리
######################
0. WEB 개요
1. WEB 서버 요약
프로그램: httpd, mod_ssl
데몬 & 포트/프로토콜: httpd, 80/tcp, 443/tcp
설정 파일: /etc/httpd/conf/httpd.conf
하위 설정 파일: /etc/httpd/conf.d/*.conf
서비스: httpd.service
2. WEB 서버 구축
(ㄱ) 패키지 설지(# yum -y insatll httpd mod_ssl)
(ㄴ) 서비스 설정(/etc/httpd/conf/httpd.conf, /etc/httpd.conf.d/*.conf)
(ㄷ) 서비스 기동(# systemctl enable --now httpd)
(ㄹ) 방화벽 등록(# firewall-cmd --permanent --add-service={http,https}
(ㅁ) SELinus(?)
3. WEB 서버 실습
[실습] WEB 기본 설정 점검
[실습] WEB 클라이언트 프로그램
* firefox/chrome
* curl
* nc/telnet CMD
[실습] 관리자 웹 페이지 설정
# yum -y install httpd mod_ssl
# vi /var/www/html/index.html
# systemctl enable --now httpd
# firewall-cmd --permanent --add-service={http,https}
# firewall-cmd --reload
[실습] 사용자 웨 페이지 설정
# vi /etc/httpd/conf.d/userdir.conf
UserDir public html
# systemctl restart httpd
[실습] 사용자 웹 페이지 설정 2
# vi /etc/httpd/conf/httpd.conf
Alias /user01 /home/user01/public_html
# systemctl restart httpd
[실습] CGI 설정 -bash 사용
# vi /etc/httpd/conf.d/vhost.conf
ScriptAlias /cgi-bin/ /www1/cgi-bin/
# systemctl restart httpd
* [실습] WSGI 설정 - python 사용
[실습] CGI 설정 - per1 사용
# yum -y install mod_perl
# vi /etc/httpd/conf.d/per1.conf
# systemctl restart httpd
[실습] 웹언어 - php 사용
# yum -y install php
# systemctl restart httpd
[실습] .htaccess 파일을 사용한 웹페이지 보안
# vi /etc/httpd/conf.d/vhost.conf
<Directory /www1>
AllowOverride AuthConfig
</Directory>
# systemctl restart httpd
# vi /www1/cgi-bin/.htaccess
# htpasswd -c /etc/httpd/conf/mypasswd testuser //관리자 홈 폴더 옆에
[실습] 가상 호스트 설정 - Name-Based Virtual Hosting
[실습] 가상 호스트 설정 - IP-based Virtual Hosting
[실습] 가상 호스트 설정 - Port-based Virtual Hosting
[실습] 웹 서버 정보/상태 웹페이지 구성
# cp /usr/share/doc/httpd/httpd-info.conf /etc/httpd/conf.d/info.conf
# systemctl restart httpd
# firefox http://www.example.com/server-info
# firefox http://www.example.com/server-status
[실습] 웹 서버 통계 확인 웹페이지 구성
# yum install epel-release
# yum install webalizer
# webalizer -c /etc/webalizer.conf
# firefox http://localhost/usage
[실습] 웹서버 정보 숨기기
# cp /usr/share/doc/httpd/httpd-default.conf /etc/httpd/conf.d/default.conf
# vi /etc/httpd/conf.d/default.conf.d/default.conf
ServerToken Prod
# systemctl restart httpd\
* [참고] exploit-db.com
[보안] Apache WEB 서버 보안 관련
* [ ] WAF(Web Application Firewall, 웹방화벽)
* 용어:
* 무료 공개용 웹방화벽(mod_security)
* [ ] 무료 웹 취약점 점검
* https://www.krcert.or.kr/kr/apply/list.do?menuNo=205003
[실습] 웹 3-tier 아키텍처
* WEB(apache) - WAS(tomcat) - DB(mariadb)
[실습] nginx 웹서버
######################
제 06장. FTP 서버 관리
######################
0. FTP 개요
ftp -> sftp, scp
1. FTP 서버 요약
프로그램: vsftpd, ftp
데몬 & 포트/프로토콜: vsftpd, 21/tcp, 20/tcp or 1024/tcp(->)
설정 파일: /etc/vsftpd/vsftpd.conf
하위 설정 파일: /etc/csftpd/(user_list,ftpusers)
서비스: vsftpd.service
2. WEB 서버 구축
(ㄱ) 패키지 설지(# yum -y insatll vsftpd)
(ㄴ) 서비스 설정(/etc/vsftpd/(vsftpd.conf,user_list,ftpusers))
(ㄷ) 서비스 기동(# systemctl enable --now vsftpd)
(ㄹ) 방화벽 등록(# firewall-cmd --permanent --add-service=ftp)
(ㅁ) SELinus(?)
3. WEB 서버 실습
[실습] FTP 기본 설정 확인
[실습] 사용자 접근 제어
[실습] FTP 클라이언트 프로그램
* (GUI) FileZilla
* (CLI) ftp CMD
# ftp server1
사용자 인증(ID/PASS)
(ㄱ) 업로드/다운로드 포인터 맞추기(cd/lcd)
(ㄴ) 편리한 기능 설정(bin/bash/prompt)
(ㄷ) 업로드/다운로드(get/mget, put/mput)
(ㄹ) 확인 & 해제(ls/!ls, bye/quit)
[실습] idle time 설정
# vi /etc/vsftpd/vsftpd.conf
idle_session_timeout=9000
data_connection-timeout=9000
# systemctl restart vsftpd
[실습] 배너 메시지 설정
# vi /etc/vsftpd/vsftpd.conf
banner_file=/etc/vsftpd/banner.txt
# banner FTP > /etc/vsftpd/banner.txt
# systemctl restart vsftpd
[실습] 배너 스트림 설정
# vi /etc/vsftpd/vsftpd.conf
ftpd_banner="Greeting Message"
# systemctl restart vsftpd
[실습] FTP 사용자 chroot 구성(root 제외)
# vi /etc/vsftpd/chroot_list
root
# vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
# systemctl restart vsftpd
[실습] FTP 사용자 접근 제어
* oracle, wasuser 사용자만 로그인 가능
# vi /etc/vsftpd/user_list
oracle
wasuser
# vi /etc/vsftpd/vsftpd.conf
userlist_enable=YES
userlist_deny=NO
# systemctl restart vsftpd
[실습] FTP 포트 변경(21 -> 2121)
# vi /etc/vsftpd/vsftpd.conf
listen_port=2121
# systemctl restart vsftpd
[실습] 최대 클라이언트 접속자 수 & IP당 최대 클라이언트 접속 수 제한하기
# vi /etc/vsftpd/vsftpd.conf
max_clients=100
max_per_ip=5
# systemctl resstart vsftpd
[실습] Anonymous_enable=YES
# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
# systemctl restart vsftpd
[실습] 익명 FTP 사용자 업로드 가능 설정
# vi /etc/vsftpd/vsftpd.cof
anon_upload_enable_YES
chown_upload=YES
chown_username=ftpupload
# mkdir -m 603 /var/ftp/pub/incoming
# useradd -d /var/ftp/pub/incoming -r -s /sbin/nologin ftpupload
# systemctl restart vsftpd
[실습] 익명 FTP 사용자 다운로드 보안 설정
# cd /var/ftp/pub
# mkdir -m 751 download
# mkdir -m 751 download/os
# mkdir -m 751 download/os/centos
# cp centos5.img download/os/centos/centos5.img
# ftp localhost
anonymous 로그인
> cd pub/download/os/centos
> get centos5.img
> quit
[보안] FTP 보안
* 접근 제어
* 호스트 접근 제어 -> firewall
* 사용자 접근 제어 -> /etc/vsftpd/vsftpd.conf(userlist_dent=NO)
/etc/vsftpd/(user_list)
* FTP 클라이언트 접속 수 제한
* FTP 서버 최대 접속자 수(max_clients=100)
* IP당 FTP 서버 접속 수(max_per_ip=5)
* FTP 서버 프로그램 업데이트/패치
# yum update vsftpd
* 보안 권고
* http://vsftpd.beasts.org
* /usr/share/doc/vsftpd/SECURITY/*
* 포트 관리
* 포트 변경(/ETC/VSFTPD/VSFTPD.CONF(LIST_PORT=2121))
* FTP 클라이언 접속 모드
* "passive mode" vs "active mode" //특이 케이스, 차이점 알기
* FTP 로그 관리
* /var/log/secure(FTP 인증 실패 기록)
* /var/log/xferlog(FTP 업로드/다운로드 기록)
###########################
제 07장. MAIL 서버 관리 // postfix 따로 공부할 것
###########################
0. MAIL 개요
메일 관련 용어:
* MTA(Mail Transfer Agent): sendmail, postfix
* MUA(Mail User Agaent): Evolution, mail/mailx
메일 관련 프로토콜:
* SMTP/ESMTP
* POP3/IMAP4
메일 서버에 중요한 정보
* MAIL 서버는 DNS 서버에 의존적이다.
* MAIL 서버는 도메인당 한개 구성한다.
* MAIL 서버는 Anti-spam 시스템/소프트웨어와 연동한다.
1. MAIL 서버 요약
MAIL(sendmail) 서버 요약
프로그램: sendmail, mailx
데몬 & 포트/프로토콜: sendmail, 25/tcp, 465/tcp
설정 파일: /etc/mail/sendmail.cf
하위 설정 파일: /etc/mail/*, /etc/aliases
서비스: sendmail.sevice
POP3/IMAP4(dovecot) 서버 요약
프로그램: dovecot
데몬 & 포트/프로토콜: docvecot, 110/tcp, 995/tcp, 143/tcp, 993/tcp
설정 파일: /etc/dovecot/dovecot.conf
하위 설정 파일: /etc/dovecot/conf.d/*.conf
서비스: dovecot.service
2. MAIL 서버 구축
(ㄱ) 패키지 설지(# yum -y insatll sendmail dovecot mailx)
(ㄴ) 서비스 설정(/etc/mail/sendmail.cf, /etc/dovecot/dovecot.conf)
(ㄷ) 서비스 기동(# systemctl enable --now sendmail dovecot)
(ㄹ) 방화벽 등록(# firewall-cmd --permanent --add-service={smpt,smtps,pop3,pop3s,imap,imaps}
(ㅁ) SELinus(?)
3. MAIL 서버 실습
[EX] MAIL 기본 설정 확인
[EX] example.com SMTP/POP3/IMAP4 서버 구성
[EX] test.com SMTP/POP3/IMAP4 서버 구성
[EX] 메일 보내기/받기 테스트
[EX] 메일 포워딩 & 메일링 리스트 실습
[EX] 메일 클라이언트 프로그램 - evolution
[EX] 웹 메일 서버 - squirrelmail
[보안] MAIL 보안
* Anti-Spam(Spam Filter) - spamassassin
* Anti-Virus - ClamAV
###########################
제 08장. NFS 서버 관리
###########################
0. NFS 개요
Storage
* DAS
* SAN
* NAS(NFS/CIFS)
NFS(Network File System)
* [x] NFSv2, [o] NFSv3, [o] NFSv4(NFSv4, NFSv4.1, NFSv4.2)
NFS 서버 데몬
(S) nfsd, idmapd // 기억은 nfsd만 해도됨
(C) statd, lockd
NFS 파일들
(S) /etc/exports, /etc/exports.d/*.exports
(C) /etc/fstab
NFS 명령들
(S) exports CMD
(C) showmount CMD, mount CMD
1. NFS 서버 요약
* NFSv4 서버
프로그램: nfs-tuils
데몬 & 포트/프로토콜: nfsd, 2049/tcp
설정 파일: /etc/nfs.conf
하위 설정 파일: /etc/exports, /etc/exports.d/*.exports
서비스: nfs-server.service
2. NFS 서버 구축
(ㄱ) 패키지 설지(# yum -y insatll nfs-utils)
(ㄴ) 서비스 설정(/etc/exports, /etc/exports.d/*.exports)
(ㄷ) 서비스 기동(# systemctl enable --now nfs-server)
(ㄹ) 방화벽 등록(# firewall-cmd --permanent --add-service=nfs
(ㅁ) SELinux(?)
3. NFS 서버 실습
[EX] NFS 기본 설정 확인
[EX] NFS 서버 공유 옵션 - ro
[EX] NFS 접근 가능 클라이언트 실습 - 192.168.10.0/24
[EX] NFS 서버 자원 공유/마운트 - UID/GID check
[EX] NFS 서버 공유 옵션 - no_root_squash
[EX] MAN Page 서버 구축
[EX] Home Directory 서버 구축
[EX] 원격 CD/DVD 공유 서버 구축
[EX] 원격 백업 서버 구축
[EX] NFSv4-only 서버 구축
[EX] DNS + LB + WEB1/WEB2 + NFS 구축
###########################
제 09장. SAMBA 서버 관리
###########################
0. SAMBA 개요
분산 파일 시스템(네트워크 시스템)
* NFS
* CIFS/SMB
CIFS == SMB + NMB
SAMBA 명령어
* (C) smbclient
# smbclien 1,2정리
* (C) mount.cifs
* (S) smbstatus
* (S) testparm
1. SAMBA 서버 요약
* SAMBA 서버
프로그램: samba, samba-client, cifs-utils
데몬 & 포트/프로토콜: smbd(139/tcp, 445/tcp), nmbd(137/udp, 138/udp)
설정 파일: /etc/samba/smb.conf
하위 설정 파일: /etc/samba/*
서비스: smb.service, nmb.service
2. SAMBA 서버 구축
(ㄱ) 패키지 설지(# yum -y insatll samba smab-client cifs-tuils)
(ㄴ) 서비스 설정(/etc/samba.conf)
(ㄷ) 서비스 기동(# systemctl enable --now smb nmb)
(ㄹ) 방화벽 등록(# firewall-cmd --permanent --add-service=samba)
* samba(139/tcp, 445/tcp)
* samba-client(137/udp, 138/udp)
(ㅁ) SELinux(?)
3. SAMBA 서버 실습
[실습] SAMBA 기본 설정 확인
[실습] Linux 자원 공유 - Windows 자원 마운트(임시적, 영구적)
[실습] Windows 자원 공유 - Linux 자원 마운트(임시적, 영구적)
[실습] Linux 자원 공유 - Linux 자원 마운트
################################
제 10장. 로그(rsyslogd) 서버 관리 // 장애처리와 관련있어서 잘 기억하기
################################
0. 로그 개요
(1) 기본 로그 파일들
1) OS 기본 로그 파일들
* /var/log/messages
* /var/log/secure
* /var/log/boot.log
* /var/log/cron
* /var/log/lastlog
* /var/run/Wtmp
* /var/run/utmp
2) 서비스 로그 파일들
* DNS(bind) : /var/log/messages
* WEB(httpd) : /var/log/httpd/*
* FTP(vsftpd) : /var/log/secure, /var/log/xferlog
* MAIL(sendmail): : /var/log/maillog
* NFS : /var/log/messages
* CIFS(samba) : /var/log/samba/*
....
(2) rsyslogd 체계
/etc/rsyslog.conf (/etc/rsyslogd.d/*.conf)
* selecort : 메시지 종류, 레벨
* action : 메시지 기록 위치
* facility : user, daemon, ....
* level : emerg, alert, error, ...
* action : /var/log/messages, /dev/console, user, @192.168.10.
(3) 로그 파일 관리
* OS 로그 기록 -> logrotate CMD
* 서비스 로그 기록 -> (ㄱ) 각 서비스 의해 관리, (ㄴ) 수동 관리
logrotate 체계
* logrotate CMD
* /etc/logrotate.conf
* /etc/logrotate.d/*
* /etc/cron.daily/logrotate
수동으로 로그 관리
* crontab CMD + find CMD + rm CMD
ex) find /Log -name "*.log" -type f -mtime +30 -exec rm -f {} \;
(4) 로그 파일 분석
* 로그 시간 따른 분석
* 로그 생성 서버 따른 분석
* 로그 생성 주체 따른 분석
* 로그 생성 난이도 따른 분석
* 키워드 따른 분석
(5) 저널링 항목, 시스템 저널 항목 //중요함
* journalctl CMD
* 장애 처리 //이건 잊으면 안됨
# journalctl -f
# journalctl -f -u UNIT
* 로그 레벨에 따른 검색
# journalctl -p warning
* 로그 시간에 따른 검색
# journalctl --since 시간 --until 시간
* 로그 필드에 따른 검색
# journalctl -o verbose // PID=1 보다 이게 더 중요
# journalctl _HOSTNAME=main.example.com
# joutnalctl _COMM=crontab
* 최근 부팅 기록 확인
# journalctl -b 0|-1|-2
* 영구 설정 - /etc/systemd/journald.conf
# vi /etc/systemd/journald.conf
Storage=persistent
# systemctl restart systemd-journald
1. 로그 서버 요약
프로그램: rsyslog
데몬 & 포트/프로토콜: rsyslogd(514/tcp, 514/udp)
설정 파일: /etc/rsyslogd.conf
하위 설정 파일: /etc/rsyslogd.d/*.conf
서비스: rsyslog.service
2. 로그 서버 구축
(ㄱ) 패키지 설지(# yum -y insatll rsyslog)
(ㄴ) 서비스 설정(/etc/rsyslog.conf, /etc/rsyslog.d/*.conf)
(ㄷ) 서비스 기동(# systemctl enable --now rsyslog)
(ㄹ) 방화벽 등록(# firewall-cmd --permanent --add-port={45/tcp,445/udp})
(ㅁ) SELinux(?)
3. 로그 서버 실습
[실습] rsyslog 기본 설정 확인
[실습] OS 기본 로그 파일 - /var/log/secure
[실습] OS 기본 로그 파일 - /var/log/cron
[실습] 서비스 기본 로그 파일 - /var/log/maillog
[실습] 새로운 로그 파일 생성 - /var/log/file.log
[실습] 새로운 로그 파일 생성 - backup.sh 스크립트 파일에 의해 생성(/var/log/backup.log)
[실습] 원격 로그 서버 구축 1/2
[실습] Visual Sysog Server
[실습] Eventlog-to-syslog
[과제] Graylog 서버 구축
* Graylog + Elasticsearch + mongoDB // 꼭 하기, 자원관리 인프라에서
###########################
제 11장. DHCP 서버 관리
###########################
0. DHCP 개요
* DHCP/BOOTP
* 고정 IP vs 유동 IP
* 사설 IP vs 공인 IP
* DHCP 동작원리
* DHCP DORA(Discover, Offer, Request, Ack)
* DHCP Server|DHCP Boot Relay Server/DHCP Client
1. DHCP 서버 요약
* DHCP Server
프로그램: dhcp-server
데몬 & 포트/프로토콜: dhcped(67/udp)
설정 파일: /etc/dhcp/dhcpd.conf
하위 설정 파일:
서비스: dhcpd.service
* DHCP Client
프로그램: dhcp-client
데몬 & 포트/프로토콜: dhclient(68/udp)
설정 파일: /etc/dhcp/dhclient.conf
하위 설정 파일: /etc/dhcp/dhclient.d/*
서비스: /etc/NetworkManager/dispatcher.d/11-dhclient
2. DHCP 서버 구축
(ㄱ) 패키지 설지(# yum -y insatll dhcp-server)
(ㄴ) 서비스 설정(/etc/dhcp/dhcpd.conf)
(ㄷ) 서비스 기동(# systemctl enable --now dhcpd)
(ㄹ) 방화벽 등록(# firewall-cmd --permanent --add-service=dhcp)
(ㅁ) SELinux(?)
3. DHCP 서버 실습
[실습] (main) DHCP 서버 설정
[실습] (server1) DHCP 클라이언트 설정(동적 IP)
[실습] (server2) DHCP 클라이언트 설정(동적 IP) ???
[실습] (server1) DHCP 클라이언트 설정(고정 IP)
###########################
제 12장. SSH 서버 관리
###########################
0. SSH 개요
sCMD vs rCMD, telnet CMD, ftp CMD
1. SSH 서버 요약
프로그램: openssh, openssh-server
데몬 & 포트/프로토콜: sshd(22/tcp)
설정 파일: /etc/ssh/sshd config
하위 설정 파일: /etc/ssh/*
서비스: sshd.service
2. SSH 서버 구축
(ㄱ) 패키지 설지(# yum -y insatll openssh openssh-server)
(ㄴ) 서비스 설정(/etc/ssh/*)
(ㄷ) 서비스 기동(# systemctl enable --now sshd)
(ㄹ) 방화벽 등록(# firewall-cmd --permanent --add-service=ssh)
(ㅁ) SELinux(?)
3. SSH 서버 실습 // 간단하게 기능이 있다 정도만 알기
[실습] SSH 서버 기본 설정 확인
[실습] 패킷 분석기를 사용한 암호화 통신 확인
[실습] 인증키에 대한 실습
[실습] 공개키 인증 방식
[실습] cmd.sh/copy.sh
[실습] 사용자 접근 제어
[실습] SSH 리스너 토프 번호 변경
[실습] Xll Forwarding 기능
[실습] SSH Port Forwarding
[실습] 원격 데스크톱 연결하기
###########################
제 13장. NTP 서버 관리
###########################
0. NTP 개요
* 한국: UTC/GMT + 9
1. NTP 서버 요약
프로그램: chrony
데몬 & 포트/프로토콜: chronyd(123/udp)
설정 파일: /etc/chrony.conf
하위 설정 파일:
서비스: chronyd.service
2. NTP 서버 구축
(ㄱ) 패키지 설지(# yum -y insatll chrony)
(ㄴ) 서비스 설정(/etc/chrony.conf)
(ㄷ) 서비스 기동(# systemctl enable --now chronyd)
(ㄹ) 방화벽 등록(# firewall-cmd --permanent --add-service=ntp)
(ㅁ) SELinux(?)
3. NTP 서버 실습
[실습] NTP 기본 설정 확인
[실습] NTP 서버 구성
[실습] NTP 클라이언트 구성
[실습] Timezone 설정
* tzselect
* timedatectl list-timezones | grep -i seoul
[실습] 시간 동기화
###########################
제 14장. DB 서버 관리
###########################
0. DB 개요
* DB 종류
SQL vs NoSQL
* SQL(Structured Query Language)
명령 종류:
DDL(Data Defintion Language) : create, drop, alter, ...
DML(Data Manipulation Language) : select, insert, update, delete
DCL(Data Control Language) : commit, rollback, grant, revoke, ...
* DB Listener Port
Oracle : 1521/tcp // 상용
MS-SQL : 1433/tcp // 상용
MySQL/MariaDB : 3306/tcp // 4개는 계속 다룰거임
PostgreSQL : 5432/tcp
MongoDB : 27017/tcp
Redis : 6379/tcp
1. DB 서버 요약
프로그램: mariadb-server, mysql
데몬 & 포트/프로토콜: mysqld(3306/tcp)
설정 파일: /etc/my.cnf
하위 설정 파일: /etc/my.cnf.d/*.cnf
서비스: mariadb.service
2. DB 서버 구축
(ㄱ) 패키지 설지(# yum -y insatll mariadb-server)
(ㄴ) 서비스 설정(/etc/my.cnf, /etc/my.cnf.d/*.cnf, mysql_sercure_installation)
(ㄷ) 서비스 기동(# systemctl enable --now mariadb)
(ㄹ) 방화벽 등록(# firewall-cmd --permanent --add-service=mysql)
(ㅁ) SELinux(?)
3. DB 서버 실습
(1) DB 관리
* DB 목록(SHOW databases;)
* DB 선택(USE mysql;)
* DB 생성(CREATE DATABASE testdb;)
* DB 삭제(DROP DATABASE testdb;)
(2) TABLE 관리
* TABLE 목록 확인(SHOW TABLES;)
* TABLE 구조 확인(DESC dbtable;)
* TABLE 생성(CREATE TABLE dbtable (name char(20), password char(50));)
* TABLE 이름 변경(RENAME TABLE old TO new;)
* TABLE 삭제(DROP TABLE dbtable;)
(3) TABLE 내용 관리
* TABLE 내용 확인
> SELECT * FROM users;
> SELECT * FROM users\G
> SELECT name,passwd FROM users WHERE id=3;
* TABLE 내용 입력
> DESC users;
> INSERT INTO users (id, name, passwd) values (1, 'soldesk', 'love');
* TABLE 내용 업데이트(주의)
> SELECT * FROM users WHERE id=3;
> UPDATE users set name='baik',passswd='test4' WHERE id=3; // 복사하기
* TABLE 내용 삭제(주의)
> SELECT * FROM users WHERE id=3;
> DELETE FROM users WHERE id=3;
(4) 사용자/권한 관리
* 사용자 추가(CREATE USER user@localhost IDENTIFIED BY 'password';)
* 사용자 삭제(DROP USER user@localhost;)
* 사용자 확인(SELECT User,Host FROM mysql.user;)
* 사용자 권한 확인(SHOW GRANTS FOR user@localhost;)
* 사용자 권한 부여(GRANT select,update,insert ON *.* TO user@localhost;)
* 사용자 권한 박탈(REVOLKE update,insert ON *.* TO user@localhost;)
(5) 백업/복구
1) 백업
* 백업의 종류:
(ㄱ) 논리적 백업
(ㄴ) 물리적 백업
* 논리적 백업
# mysqldump -u root -p DBNAME > /backup/DBNAME.dump
# mysqldump -u root -p --all-databases > /backup/FullDB.dump
2) 복구
* 논리적 복구
# mysql -u root -p DBNAME < /backup/DBNAME.dump
# mysql -u root -p < /backup/FullDB.dump
3) CMD
* mysql CMD
* mysqladmin CMD
* mysqldump CMD
(6) 키
* PK, UK, FK
[Key의 종류]
슈퍼 키(Super Key):
- 유일성을 만족하는 키.
예를 들면, {학번 + 이름}, {주민등록번호 + 학번}
- 복합 키(Composite Key):
2개 이상의 속성(attribute)를 사용한 키.
- 후보 키(Candidate key):
유일성과 최소성을 만족하는 키.
기본키가 될 수 있는 후보이기 때문에 후보키라고 불린다. 예를 들면, 주민등록번호, 학번 등
- 기본 키(Primary key):
후보 키에서 선택된 키.
NULL값이 들어갈 수 없으며, 기본키로 선택된 속성(Attribute)은 동일한 값이 들어갈 수가 없다.
- 대체 키(Surrogate key):
후보 키 중에 기본 키로 선택되지 않은 키.
- 외래 키(Foreign Key):
어떤 테이블(Relation) 간의 기본 키(Primary key)를 참조하는 속성이다.
테이블(Relation)들 간의 관계를 나타내기 위해서 사용된다.
(7) 이 외에 많음 //강사님은 위에꺼 까지만
###########################
제 15장. iSCSI 서버 관리 // 이론을 강력하게 알아야 됨
###########################
0. iSCSI 개요
* 스토리지 종류
File-based Storage
Block-based Storage
Object-based Storage
* NAS
* File-based Service(NFS/CIFS)
* Block-based Service(iSCSI)
iSCSI 용어
* iSCSI Initiator(iSCSI HBA)
* iSCSI Target(iSCSI IP/Port + Resource(Disk))
* IQN
* iSCSI Portal(IP/Port)
* ACL(LUN Mapping, LUN Masking)
* TPG(Target Portal Group) = ACL + LUN + Portal
* iSCSI Discovery
* iSCSI Login(CHAP)
1. iSCSI 서버 요약
* iSCSI Target
프로그램: targetcli
데몬 & 포트/프로토콜: 3260/tcp
설정 파일: /etc/target/saveconfig.json
하위 설정 파일: /etc/target/*
서비스: target.service
* iSCSI Initator
프로그램: iscsi-initiator-utils
설정 파일: /etc/iscsi/(iscsi.conf,initiatorname.iscsi)
서비스: iscsid.service
2. iSCSI Target/Initator 서버 구축
* iSCSI Target 구축
준비 사항 - 볼륨 준비(partition, LV, file, ...)
(ㄱ) 패키지 설지(# yum -y insatll targetcli)
(ㄴ) 서비스 기동(# systemctl enable --now target)
(ㄷ) 서비스 설정(# targetcli)
(ㄹ) 방화벽 등록(# firewall-cmd --permanent --add-service=iscsi-target)
(ㅁ) SELinux(?) // 거의없음 빼도 됨
* iSCSI Initiator 구축
(ㄱ) 패키지 설지(# yum -y insatll iscsi-initiator-utils)
(ㄴ) 서비스 설정(vi /etc/iscsi/initiatorname.iscsi)
(ㄷ) 서비스 기동(# systemctl enable --now iscsid)
(ㄹ) 자원 요청
* 검색(discovery) # iscsiadm -m discovery -t st -p Portal
* 로그인(login) # iscsiadm -m node -T IQN -p Portal -l
(ㅁ) 자원 사용
* 디스크 작업
3. iSCSI 서버 실습
[실습] iSCSI target Configuration -for Linux
[실습] iSCSI Initiator Configuration - for Linux
[실습] iSCSI target Configuration - for Windows
[실습] iSCSI Initiator Configuration - for Windows
###########################
제 16장. HTTPS 구성 // 핵심: 인증서가 어떻게 만들어지는지
###########################
0. 선수지식
* PKI
* 암호학
비대칭키 기반 암호
* 암호(암호화(pub) --> 복호화(pri))
* 서명(암호화(pri) --> 복호화(pub))
* 인증서
데이터(pub1) --> CSR(pub1) --> 암호화(pri2) --> 인증서
1. 작업 절차
Root CA(인증기관) - CSR 생성, 인증서 생성
Root CA pri key 생성(/etc/pki/tls/private/rootca.key)
Root CA CSR을 위한 rootca_openssl.cnf(/etc/pki/tls/rootca_openssl.cnf)
Root CA CSR 생성(/etc/pki/tls/certs/rootca.csr)
Root CA self-signed 인증서 생성(/etc/pki/tls/certs/rootca.crt)
www.example.com HTTPS 서버 - CSR 생성
example.com pri key 생성(/etc/pki/tls/private/example.com.key) //보관용
pri key 암호 제거(/etc/pki/tls/private/example.com.key)
example.com CSR을 위한 host_openssl.cnf(/etc/pki/tls/host_openssl.cnf)
exmaple.com CSR 생성(/etc/pki/tls/certs/example.com.csr)
CSR에 서명 요청
www.test.com HTTPS 서버 - CSR 생성
test.com pri key 생성(/etc/pki/tls/private/test.com.key)
pri key 암호 제거(/etc/pki/tls/private/test.com.key)
test.com CSR을 위한 host_openssl.cnf(/etc/pki/tls/host_openssl.cnf)
test.con CSR 생성(/etc/pki/tls/certs/test.com.csr)
CSR에 서명 요청
Root CA(인증기관) - 인증서 생성
example.com을 위한 인증서 생성(/etc/pki/tls/CSR/example.com.crt)
test.com을 위한 인증서 생성(/etc/pki/tls/CSR/test.com.crt)
각 인증서 배포
www.example.com HTTPS 서버 - 웹 서버 설정
/etc/httpd/conf.d/ssl/con.f
/etc/httpd/conf.d/vhost.conf
서비스 재기동
www.test.com HTTPS 서버 -HTTPS 웹 서버 설정
/etc/httpd/conf.d/ssl/con.f
/etc/httpd/conf.d/vhost.conf
서비스 재기동
웹 클라이언트 테스트
(Linux) firefox 사용
(Windows) IE 사용
'클라우드보안 > Linux' 카테고리의 다른 글
| 02_리눅스 서버 관리자 (1) | 2023.10.03 |
|---|---|
| 01_리눅스 기초 (1) | 2023.10.02 |