2021년 7월 13일 badugi.kr 설치
OS : CentOS 7.9 – 업데이트 가능한 마지막 버전?
설치환경 : Nvme SSD 256G (intel), Nvme 500G(samsung)
메모리 : 16G
swap 8G
/
/boot
/EFI
/var
/var/lib/mysql
/home
설치시 사용자 wheel 그룹추가
SSD 트림지원 및 수동 트림을 위해 EXT4 형식으로 포맷 (요즘은 XFS 파일시스템도 된다카더라는 설?)
파티션은 /home. /var/lib/mysql 만 따로 잡아 준다. – OS파일의 연관성으로 /usr파티션등은 / 에 함께 묶는 것이 경험상 유리.
설치 후
- 네트워크 본딩 mode6 로드 밸런싱 확인
새로운 이슈 : 내장 랜에서 존 설정이 풀림과 활성 비활성 반복 ETHTOOL_OPTS=”autoneg off” 해서 일단 해결
~]# vi /etc/sysconfig/network # Created by anaconda NETWORKING=yes NETWORKING_IPV6=no GATEWAY=xxx.xxx.xxx.xxx GATEWAYDEV=bond0 ~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0 BONDING_OPTS="downdelay=0 miimon=1 mode=balance-alb updelay=0" TYPE=Bond BONDING_MASTER=yes PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none IPADDR=xxx.xxx.xxx.xxx PREFIX=xx #GATEWAY=xxx.xxx.xxx.xxx DNS1=168.126.63.1 DNS2=168.126.63.2 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no NAME=bond0 UUID=b22addaa-d069-4f76-af1d-efff1b1a5523 DEVICE=bond0 ONBOOT=yes ZONE=public ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp2s0f0 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp2s0f0 UUID=2cf12e1c-6b76-4a1e-bb14-b1f6845112eb DEVICE=enp2s0f0 ONBOOT=no ETHTOOL_OPTS="autoneg on" IPV6_PRIVACY=no ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp2s0f1 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp2s0f1 UUID=5d975c87-bea0-4ba2-9646-701b99cfc3fe DEVICE=enp2s0f1 ONBOOT=no ETHTOOL_OPTS="autoneg on" IPV6_PRIVACY=no ~]# systemctl restart network
- nVme SSD TRIM 적용 커널 3.3 이상 가능
- ssh 접속설정
~]# vi /etc/ssh/sshd_config /* 주석 처리 된 PermitRootLogin 옵션의 주석을 풀고 yes에서 no로 값을 변경합니다. */ PermitRootLogin no /* UseDNS no 를 추가해 준다. 기존 설정에 UseDNS yes 가 없거나 주석 처리 되어 있어도 기본 설정이 yes 이므로 명시적으로 no로 설정해 주어야 한다. */ UseDNS no /* keroberos DNS 질의에 의한 접속 지연 GSSAPIAuthentication 설정으로 예방 */ GSSAPIAuthentication no /* pam.d 사용 */ UsePAM yes /* 동시접속제한 */ ~]# vi /etc/security/limits.conf @user_id hard maxlogins 1 # <- 내용 추가 ~]# vi /etc/pam.d/login # ADD MyRules session required pam_limits.so ~]# vi /etc/pam.d/su /*주석 해제 시 해당 그룹 사용자는 패스워드 확인 후 신뢰*/ # auth required pam_wheel.so use_uid /* LDAP이나 AD, NIS등으로 인증 통합을 했을 경우, login이 필요없는 account가 대부분. 또는 서버마다 경우가 틀릴 수 있음. login 가능한 account 제한 */ ~]# vi /etc/pam.d/password-auth-ac /* 반드시 account 섹션 상단에 추가 */ account required pam_access.so ~]# vi /etc/security/access.conf /* 아래에 - 루트와 휠그룹만 제한 나머지 Deny */ +:root wheel:ALL -:ALL:ALL ~]# systemctl restart sshd
- 스왑크기 활용도 조절
vm.swappiness = 0 스왑 사용안함
vm.swappiness = 1 스왑 사용 최소화
vm.swappiness = 60 기본값
vm.swappiness = 100 적극적으로 스왑 사용
메모리 여유가 충분할 때 성능향상을 위해 vm.swappiness = 10 정도를 권고하는 경우가 있음
확인 ~]# sysctl vm.swappiness 영구 설정을 위해 /etc/sysctl.conf에 등록 ~]# vi /etc/sysctl.conf vm.swappiness = 40
- 방화벽체크
* 방화벽 상태 확인
# firewall-cmd –state
* 활성화된 zone 목록
# firewall-cmd –get-active-zones
* 허용한 포트 목록
# firewall-cmd –list-ports
* 현재 존재하는 서비스 목록
# firewall-cmd –get-service
* public zone에 있는 서비스 목록
# firewall-cmd –zone=public –list-services
존에서비스등록
firewall-cmd –permanent –zone=public –add-service=ssh
firewall-cmd –permanent –zone=public –remove-service=ssh
존에 포트등록
# firewall-cmd –permanent –zone=public –add-port=11211/tcp
룰 적용 상황 확인
# firewall-cmd –permanent –list-all
–permanent 옵션 넣었다면 방화벽 재로드
# firewall-cmd –reload
/* public에서 ssh제거 */ ~]# firewall-cmd --permanent --zone=public --remove-service=ssh ~]# firewall-cmd --zone=public --list-services dhcpv6-client ssh /* --permanent 옵션 넣었다면 방화벽 재로드 */ ~]# firewall-cmd --reload success /* 확인 */ ~]# firewall-cmd --zone=public --list-services dhcpv6-client
특정아이피차단 리치룰
# firewall-cmd –permanent –zone=public –add-rich-rule=”rule family=ipv4 source address=183.3.202.171 service name=ssh reject”
특정아이피만 허용
59.19.93.128
# firewall-cmd –permanent –zone=public –add-rich-rule=”rule family=ipv4 source address=”59.19.93.128/24″ service name=ssh accept”
리치룰 해제
firewall-cmd –permanent –zone=public –remove-rich-rule=” [룰] ”
- yum update 및 주요 패키지 설치
~]# yum check-update ~]# yum update ~]# yum install man man-pages kernel-doc ~]# yum install bind-utils wget elinks ~]# yum install yum-utils sysstat lsof ~]# yum install vim-enhanced zsh bash-completion unzip bzip2 xz /* 색상 vim alias */ ~]# vi .bashrc # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias vi='vim' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi ~]# source ~/.bashrc ~]# vi .vimrc /* 생성 */
=> NTP는 영구적으로 유지되는 시스템 또는 브로드 캐스트이나 멀티캐스트 IP를 사용하거나 오토키 프로토콜로 패킷 인증을 수행해야하는 시스템에 사용합니다.
=> Chrony는 네트워크 (모바일 및 가상 서버 등)에서 자주 중단되거나 간헐적으로 연결이 끊어지는 시스템에 가장 적합합니다.
/* 시간 서버 맞추기 */ ~]# yum install ntp ~]# vi /etc/ntp.conf # 기존서버 주석 후 국내서버 등록 server kr.pool.ntp.org iburst server time.bora.net iburst server time.nuri.net iburst // 파이어월 등록 ~]# firewall-cmd --permanent --zone=internal --add-service=ntp ~]# firewall-cmd --reload // ntpdate 시간 맞추기 ~]# ntpdate kr.pool.ntp.org ~]# ntpq -p ~]# ntpstat 시간동기화 수동 ~]# systemctl stop ntpd (ntpd 동작 시 ntpdate 안됨) ~]# ntpdate [시간동기화 서버 IP] ~]# hwclock -w (현재 시간으로 하드웨어 시간 설정) ~]# systemctl start ntpd (ntpd 서비스 다시 시작) // OS 시간으로 BIOS 시간 맞추기 ~]# clock -w // BIOS 시간확인 ~]# clock -r // 시스템 서비스등록 ~]# systemctl enable ntpd ~]# systemctl start ntpd // NTP 서버와의 싱크를 활성화 ~]# timedatectl set-ntp yes // 서버싱크확인 ~]# timedatectl status => NTP synchronized:yes # 확인 // NTP 서버와의 상태를 확인 ~]# ntpq -p
- logrotate 설정 확인
/etc/logrotate.conf // 설정파일 /etc/logrotate.d/ // 각 프로세스 설정파일 /etc/cron.daily/logrotate // 작업 실행 스크립트