클라우드보안/Linux

03_리눅스 네트워크 보안관리자

카데트블루 2023. 10. 5. 22:45

네트워크 서비스 & 보안 관리

####################
제 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