본문 바로가기
Linux

Linux Baremetal OS 설치 매뉴얼

by 도경다경 2022. 11. 2.
반응형

신규 BM OS 설치

1. OS 설치 세부
   - lvm 구성
     ※ vg name은 vg0으로 설정
     /boot 1G
     /boot_efi 1G
     / 30G
     /var 20G
     /home 10G
     swap 32G
     /sysadmin 15G
     /imsi *
   - minimal os : standard + system tool
   - timezone : seoul

2. hostname 설정
- OS 설치시 세팅 or /etc/hostname 수정

3. bonding 설정

   1) Master (/etc/sysconfig/network-scripts/ifcfg-bond0)
DEVICE=bond0
TYPE=bond
NAME=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=[ip]
PREFIX=24
GATEWAY=[gateway ip]
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100"

nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup, miimon=100"
## mode 는 1로 설정해도 된다.
## nmcli device status 로 상태 확인하면 연결되었다고 보인다
## gateway로 ping도 간다. 하지만 타 서버와 정상적으로 통신하려면 slave 설정 후 nmcli connection up bond0 해줘야 한다.

   2) Slave (/etc/sysconfig/network-scripts/?)
TYPE=Ethernet
BOOTPROTO=static
NAME=[device name]
UUID=[]
DEVICE=[device name]
ONBOOT=yes
MASTER=bond0
SLAVE=yes
ETHTOOL_OPTS="-K ${DEVICE} gso off gro off tso off lro off; -G ${DEVICE} rx4096 tx4096" #RHEL7까지 사용 RHEL8부터 명령어 사용

# nmcli con modify <네트워크인터페이스> ethtool.feature-gso off ethtool.feature-gro off ethtool.feature-tso off ethtool.feature-lro off ethtool.ring-rx 4096 ethtool.ring-tx 4096
# nmcli connection up <네트워크인터페이스>

nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname ens2f0 master bond0
nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname ens4f0 master bond0

3) ip setting
nmcli connection modify bond0 ipv4.addresses 'X.X.X.X/24'
nmcli connection modify bond0 ipv4.gateway 'X.X.X.X'
nmcli connection modify bond0 ipv4.dns 'X.X.X.X'

이 외에 파일을 열어서 BOOTPROTO=static으로 변경하고 IPv6는 삭제하는 게 좋다.

※ 여기부터 관리서버에서 수행
4. 관리 파일 업로드
   # ssh-copy-id -i ~/.ssh/id_rsa.pub root@[ip]
   # scp -r /DATA/sysadmin/* root@[ip]:/sysadmin/
        여기에는 관리용 스크립트, 커널 패치파일, linux image 등이 포함된다.
   # scp /DATA/config/hosts root@[ip]:/etc/hosts
        hosts 파일 복사는 기본적으로 백업서버, ntp서버 IP를 포함한다.
   # scp /DATA/config/chrony.conf root@[ip]:/etc/chrony.conf
        chrony server 추가때문에 복사한다.

5. kdump 설정
   /etc/default/grub 파일 수정
   GRUB/CMDLINE_LINUX="crashkernel=512M rhgb quiet LANG=en_US.UTF-8 nmi_watchdog=0 transparent_hugepage=never elevator=noop ipv6.disable=1 mce=ignore_ce intel_pstate=disable intel_idle.max_cstate=0 processor.max_cstate=1"
   해당 서버에서 grub 재설정
   # grub2-mkconfig -o /boot/grub2/grub.cfg

   # ssh root@[ip] "sed -i 's/save_raw$/#save_raw/g' /usr/bin/kdumpctl"
   # ssh root@[ip] lvcreate -n DUMP -L [memorysize, 128G보다 크면 128G] vg0;
   # ssh root@[ip] lvcreate -n CRASH -L [DUMP SIZE + 1G] vg0;
   # ssh root@[ip] mkfs.xfs -f /dev/vg0/CRASH;
   # ssh root@[ip] mkdir /CRASH
   # ssh root@[ip] 'echo "/dev/vg0/CRASH /CRASH xfs defaults 0 0" >> etc/fstab'
   # ssh root@[ip] mount -a
   # scp /DATA/config/kdump.conf root@[ip]:/etc/kdump.conf
      ※ kdump.conf 에는 딱 두줄만 있으면 된다.
          raw /dev/vg0/DUMP
          core_collector makedumpfile -c -d  31 -F
   # ssh root@[ip] systemctl restart kdump   
      ※ 해당 서버에서 반드시 테스트 필요
          echo c > /proc/sysrq-trigger   # 테스트
          makedumpfile -R /CRASH/vmcore < /dev/vg0/DUMP
          /CRASH/vmcore 파일 사이즈가 0이 아니고 success로 정상적으로 생성된다면 ok
          dd if=/dev/zero of=/dev/vg0/DUMP bs=1b count=1  명령어로 디바이스를 클리어 해주자 안그럼 DUMP가 생성되지 않을 수 있다.

6. kernel patch and firewall, selinux disable
   # ssh root@[ip] 'yum localinstall /sysadmin/kernel/kernel*'
   # ssh root@[ip] systemctl stop firewalld
   # ssh root@[ip] systemctl disable firewalld
   # scp /DATA/config/selinux root@[ip]:/etc/sysconfig/selinux
      ※ SELINUX=disabled 설정 때문에 복사한다. 직접 수정해도 무관
   # ssh root@[ip] reboot

7. OS Image mount
   # scp /DATA/config/rhel.repo root@[ip]:/etc/yum.repos.d/rhel.repo
     ※ repository 설정 때문에 복사한다.
   # ssh root@[ip] mount -o loop /sysadmin/rhel* /media
     ※ loop 는 image를 block i/o 할 수 있게 해주는 가상 디바이스다.(windows의 데몬툴이나 시디스페이스 같은 느낌?) 이미지를 마운트할 때 해당 옵션을 주지 않아도 자동으로 /dev/loop[#] 디바이스를 생성하며, losetup로 조회 가능하다.
   # ssh root@[ip] yum update

8. basic package install
   # ssh root@[ip] yum install -y nfs-utils
   # ssh root@[ip] yum install -y net-tools
   # ssh root@[ip] yum install -y lvm2
   # ssh root@[ip] yum install -y sysstat
   # ssh root@[ip] yum install -y unzip
   # ssh root@[ip] yum install -y psmisc
   # ssh root@[ip] yum install -y perl
   # ssh root@[ip] yum install -y ksh
   # ssh root@[ip] yum install -y tcsh
   # ssh root@[ip] yum install -y gdisk
   # ssh root@[ip] yum install -y createrepo
   # ssh root@[ip] yum install -y pciutils
   # ssh root@[ip] yum install -y traceroute
   # ssh root@[ip] yum install -y device-mapper-multipath
   # ssh root@[ip] yum install -y systemd
   # ssh root@[ip] yum install -y libgudev1
   # ssh root@[ip] yum install -y polkit
   # ssh root@[ip] yum install -y grub2-efi-x64-modules 
   # ssh root@[ip] yum install -y java-1.8.0-openjdk

9. ntp configure
   # ssh root@[ip] systemctl restart chronyd
   # ssh root@[ip] systemctl enable chronyd
   # ssh root@[ip] chronyc sources

10. OS backup configure
   # ssh root@[ip] yum install -y rear genisoimage syslinux
   # scp -r /DATA/config/rear/* root@[ip]:/etc/rear/
     ※ rear 설정을 위해서 복사한다.
   # scp /DATA/config/cron.allow root@[ip]:/etc/cron.allow
   # scp /DATA/config/cron root@[ip]:/var/spool/cron/root
     ※ cron에 OS 백업 수행하는 부분을 넣기 위해서 복사한다.

11. multipath setting
   # ssh root@[ip] mpathconf --enable
   # ssh root@[ip] systemctl start multipathd
   # ssh root@[ip] systemctl enable multipathd
   # scp /DATA/config/multipath.conf root@[ip]:/etc/multipath.conf
   ※ alias 문제로 /etc/multipath.conf 는 수동 설정
   ※ multipath -ll 결과의 wwid 리스트에 입력. alias는 LOCAL(or SHARE)_DATA01_500G 로 표기
    ※ 나중에 한꺼번에 조회해서 관리하기 위해서는 이름이 표준화 되어야 한다. 
   #ssh root@[ip] systemctl restart multipathd

12. Safe Architect Configure
   # ssh root@[ip] ln -sf /dev/null /lib/systemd/system/ctrl-alt-del.target
   # scp /DATA/config/sysctl.conf root@[ip]:/etc/sysctl.conf
      ※ 각종 커널 및 네트워크 세팅이 들어간다.
   # scp /DATA/config/limits.conf root@[ip]:/etc/security/limits.conf
     ※ cat /proc/sys/fs/file-max 명령어 결과에 따라 조절 가능. 기본은 65535로 세팅
   # scp /DATA/config/20-nproc.conf root@[ip]:/etc/security/limits.d/20-nproc.conf
   # scp /DATA/config/logrotate.conf root@[ip]:/etc/logrotate.conf
   # scp /DATA/config/profile root@[ip]:/etc/profile
   # scp /DATA/config/bash_history.sh root@[ip]:/etc/profile.d/bash_history.sh
   # scp /DATA/config/cmd_history.sh root@[ip]:/etc/profile.d/cmd_history.sh

13. Security Configure
   # scp /DATA/config/system-auth root@[ip]:/etc/pam.d/system-auth
   # scp /DATA/config/login.defs root@[ip]:/etc/login.defs
   # scp /DATA/config/issue root@[ip]:/etc/issue
   # scp /DATA/config/issue root@[ip]:/etc/issue.net
   # scp /DATA/config/issue root@[ip]:/etc/motd
   # scp /DATA/config/services root@[ip]:/etc/services
   # scp /DATA/config/sudoers root@[ip]:/etc/sudoers
   # ssh root@[ip] touch /etc/hosts.equiv
   # ssh root@[ip] chmod 000 /etc/hosts.equiv
   # ssh root@[ip] chmod 644 /etc/passwd
   # ssh root@[ip] chmod 644 /etc/group
   # ssh root@[ip] chmod 000 /etc/shadow
   # ssh root@[ip] chmod 400 /etc/security/passwd
   # ssh root@[ip] chmod 644 /etc/hosts
   # ssh root@[ip] chmod 644 /etc/services
   # ssh root@[ip] chmod 700 /usr/bin/last
   # ssh root@[ip] chmod 700 /usr/sbin/ifconfig
   # ssh root@[ip] chmod 644 /etc/profile
   # ssh root@[ip] chmod 600 /etc/xinetd.conf
   # ssh root@[ip] chmod go-w /etc/pam.d/system-auth
   # ssh root@[ip] chmod 644 /etc/rsyslog.conf
   # ssh root@[ip] chmod go-w /etc/exports
   # ssh root@[ip] chmod go-w /etc/dfs/dfstab
   # ssh root@[ip] chmod go-w /etc/cron.allow
   # ssh root@[ip] chmod 640 /etc/cron.deny
   # ssh root@[ip] chmod 640 /etc/at.allow
   # ssh root@[ip] chmod 640 /etc/at.deny
   # ssh root@[ip] chmod o-r /etc/cron.d/*
   # ssh root@[ip] chmod 600 /var/log/wtmp
   # ssh root@[ip] chmod 600 /var/log/utmp
   # ssh root@[ip] chmod 660 /var/log/btmp
   # ssh root@[ip] chmod 600 /var/log/sulog
   # ssh root@[ip] chmod 600 /var/log/messages
   # ssh root@[ip] chmod 640 /var/log/lastlog
   # ssh root@[ip] chmod o-x /usr/bin/cc
   # ssh root@[ip] chmod o-x /usr/bin/gcc
   # ssh root@[ip] chmod 755 /usr/bin/newgrp
   # ssh root@[ip] chmod 755 /usr/sbin/unix_chkpwd
   # ssh root@[ip] chmod 755 /usr/bin/at
   # ssh root@[ip] chmod o-x /usr/bin/su
   # ssh root@[ip] groupdel lp

   /lib/tmpfiles.d/var.conf 파일에서 /var/log 이하 파일 권한 바꿔줄 수 있다. 리붓시 적용 됨. btmp, wtmp 640 이하, lastlog 644 이하로 수정 후 저장. 리붓.

14. Admin User add
?
ssh root@[ip] 'chmod -R o-r /home/*/.b*'
ssh root@[ip] 'chmod -R o-r /home/*/.k*'
ssh root@[ip] 'chmod -R o-r /home/*/.z*'
ssh root@[ip] 'chmod -R o-r /home/*/.c*'
ssh root@[ip] 'chmod -R o-r /home/*/.t*'
ssh root@[ip] 'chmod  o-r /root/.b*'
ssh root@[ip] 'chmod  o-r /root/.k*'
ssh root@[ip] 'chmod  o-r /root/.z*'
ssh root@[ip] 'chmod  o-r /root/.c*'
ssh root@[ip] 'chmod  o-r /root/.t*'

 

15. RTC time 이 Universal time과 다를 경우 RTC in local TZ 는 no 로 설정해야 한다. (어차피 timedatectl 치면 경고가 나온다.)
timedatectl set-local-rtc 0


last. root access deny
   # scp /DATA/config/sshd_config root@[ip]:/etc/ssh/sshd_config

반응형

'Linux' 카테고리의 다른 글

nmap 사용법  (0) 2023.01.02
SAN Usable Port 수 조회 스크립트  (0) 2022.12.05
ssh scp 패스워드 없이 사용하기  (0) 2022.10.13
ssh 이용한 port forwarding (포트 포워딩)  (0) 2022.10.13
Redhat top 명령어 단축키  (0) 2022.10.12

댓글