CentOS 8 설치 후 기본 설정하는 방법에 대해서 알아보겠습니다.

크게 아래 적어놓은 내용에 대해서 설정 하겠습니다.(자세한 설명은 패스하겠습니다.)

  • 네트워크 설정
  • EPEL 레포지토리 등록
  • 필요 패키지 설치
  • selinux 비활성화
  • 쉘 프롬프트 설정
  • 명령어 히스토리에 시간 기록하기
  • vim 에디터 환경 설정
  • 히스토리로그를 syslog로 남기기
  • 시간동기화
  • 오픈파일 갯수 늘리기
  • SSH 보안 설정
  • SFTP 로그 설정
  • cron 보안 설정
  • 핵심 명령어/파일 퍼미션 조정
  • 패키지 업데이트

네트워크 설정

여러가지 방법이 있겠으나 설정파일을 수정하는 방법으로 진행하겠습니다.

설정파일 위치는 /etc/sysconfig/network-scripts/ifcfg-[devicename] 입니다.
제 서버를 기준으로 보면 /etc/sysconfig/network-scripts/ifcfg-ens3 이네요.

저 파일을 다음과 같이 수정해 줍니다.

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=ens3
UUID=747a6adc-304d-41a5-b766-55a161ba5b77
DEVICE=ens3
ONBOOT=yes
IPADDR=192.168.0.10
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=164.124.101.2
USERCTL=no

파일 저장 후 아래 명령어로 적용해 줍니다.

$ systemctl restart NetworkManager

EPEL 레포지토리 등록

$ dnf -y install epel-release

필요 패키지 설치

$ dnf -y install sysstat telnet lrzsz rsync wget gcc vim iptraf bc kernel-devel smartmontools 

selinux 비활성화

$ sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

쉘 프롬프트 설정

$ echo 'export PS1="[\u@\H \W]# "' >> /root/.bashrc
$ echo 'export PS1="[\u@\H \W]$ "' >> /etc/skel/.bashrc

명령어 히스토리에 시간 기록하기

$ echo 'HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "' >> /root/.bashrc
$ echo 'HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "' >> /etc/skel/.bashrc

vim 에디터 환경 설정

$ echo "alias vi='vim'" >> /root/.bashrc
$ echo "alias vi='vim'" >> /etc/skel/.bashrc
$ echo "set ts=4" > /root/.vimrc
$ source /root/.bashrc

히스토리로그를 syslog로 남기기

$ echo 'function logging'  >> /etc/profile.d/cmd_logging.sh
$ echo '{'  >> /etc/profile.d/cmd_logging.sh
$ echo '        stat="$?"'  >> /etc/profile.d/cmd_logging.sh
$ echo '        cmd=$(history|tail -1)'  >> /etc/profile.d/cmd_logging.sh
$ echo '        if [ "$cmd" != "$cmd_old" ]; then'  >> /etc/profile.d/cmd_logging.sh
$ echo '                logger -p local1.notice "[2] STAT=$stat"'  >> /etc/profile.d/cmd_logging.sh
$ echo '                logger -p local1.notice "[1] PID=$$, PWD=$PWD, CMD=$cmd"'  >> /etc/profile.d/cmd_logging.sh
$ echo '        fi'  >> /etc/profile.d/cmd_logging.sh
$ echo '        cmd_old=$cmd'  >> /etc/profile.d/cmd_logging.sh
$ echo '}'  >> /etc/profile.d/cmd_logging.sh
$ echo 'trap logging DEBUG'  >> /etc/profile.d/cmd_logging.sh
$ echo 'local1.*                                                /var/log/cmd.log'  >> /etc/rsyslog.conf
$ sed -i "s/cron.none/cron.none;local1.none/g" /etc/rsyslog.conf
$ systemctl restart rsyslog

시간동기화

$ dnf -y install chrony
sed -i "s/pool 2.centos.pool.ntp.org iburst/server 0.centos.pool.ntp.org iburst\nserver 1.centos.pool.ntp.org iburst\nserver 2.centos.pool.ntp.org iburst\nserver 3.centos.pool.ntp.org iburst/g" /etc/chrony.conf
$ systemctl enable chronyd
$ systemctl restart chronyd

오픈파일 갯수 늘리기

$ echo -e "*               soft    nofile          65536\n*               hard    nofile          65536" >> /etc/security/limits.conf
$ echo -e "fs.file-max = 65536" >> /etc/sysctl.conf
$ sysctl -p

SSH 보안 설정

$ sed -i "s/#UseDNS yes/UseDNS no/g" /etc/ssh/sshd_config
$ sed -i "s/#Port 22/Port 2022/g" /etc/ssh/sshd_config
$ systemctl restart sshd

SFTP 로그 설정

$ sed -i "s/\(.*sftp\)/#\1/g" /etc/ssh/sshd_config 
$ sed -i '/sftp/a Subsystem    sftp    /usr/libexec/openssh/sftp-server -f local2 -l INFO' /etc/ssh/sshd_config 
$ echo -e "\n#sftp logging" >> /etc/rsyslog.conf 
$ echo 'local2.*            /var/log/sftp.log' >> /etc/rsyslog.conf 
$ sed -i '/spooler/a \/var\/log\/sftp.log' /etc/logrotate.d/syslog

$ systemctl restart sshd.service
$ systemctl restart rsyslog.service

cron 보안 설정

$ echo 'daemon' >>  /etc/cron.deny
$ echo 'apache' >>  /etc/cron.deny
$ echo 'nginx' >>  /etc/cron.deny

핵심 명령어/파일 퍼미션 조정

$ chgrp wheel $(which perl)
$ chgrp wheel $(which find)
$ chgrp wheel $(which finger)
$ chgrp wheel $(which nslookup)
$ chgrp wheel $(which gcc)
$ chgrp wheel $(which suidperl)
$ chgrp wheel $(which whereis)
$ chgrp wheel $(which cc)
$ chgrp wheel $(which c++)
$ chgrp wheel $(which make)
$ chgrp wheel $(which pstree)
$ chgrp wheel $(which rlog)
$ chgrp wheel $(which rlogin)
$ chgrp wheel $(which which)
$ chgrp wheel $(which who)
$ chgrp wheel $(which w)
$ chgrp wheel $(which mail)
$ chgrp wheel $(which sendmail)
$ chgrp wheel $(which sendmail)
$ chgrp wheel $(which top)
$ chgrp wheel $(which free)
$ chgrp wheel $(which last)
$ chgrp wheel $(which lynx)
$ chgrp wheel $(which wget)
$ chgrp wheel $(which curl)
$ chgrp wheel $(which ps)
$ chgrp wheel $(which df)
$ chgrp wheel $(which ping)
$ chgrp wheel $(which netstat)
$ chgrp wheel $(which ftp)
$ chgrp wheel $(which ncftp)
$ chgrp wheel $(which suidperl)
$ chgrp wheel $(which rz)
$ chgrp wheel $(which sz)
$ chgrp wheel $(which tar)
$ chgrp wheel /etc/hosts
$ chgrp wheel /etc/hosts.deny
$ chgrp wheel /etc/hosts.allow
$ chgrp wheel /etc/named.conf
$ chmod 750 $(which perl)
$ chmod 750 $(which find)
$ chmod 750 $(which finger)
$ chmod 750 $(which nslookup)
$ chmod 750 $(which gcc)
$ chmod 750 $(which suidperl)
$ chmod 750 $(which whereis)
$ chmod 750 $(which cc)
$ chmod 750 $(which c++)
$ chmod 750 $(which make)
$ chmod 750 $(which pstree)
$ chmod 750 $(which rlog)
$ chmod 750 $(which rlogin)
$ chmod 750 $(which which)
$ chmod 750 $(which who)
$ chmod 750 $(which w)
$ chmod 750 $(which mail)
$ chmod 750 $(which sendmail)
$ chmod 750 $(which sendmail)
$ chmod 750 $(which top)
$ chmod 750 $(which free)
$ chmod 750 $(which last)
$ chmod 750 $(which lynx)
$ chmod 750 $(which wget)
$ chmod 750 $(which curl)
$ chmod 750 $(which ps)
$ chmod 750 $(which df)
$ chmod 750 $(which ping)
$ chmod 750 $(which netstat)
$ chmod 750 $(which ftp)
$ chmod 750 $(which ncftp)
$ chmod 750 $(which suidperl)
$ chmod 750 $(which rz)
$ chmod 750 $(which sz)
$ chmod 750 $(which tar)
$ chmod 750 /etc/hosts
$ chmod 750 /etc/hosts.deny
$ chmod 750 /etc/hosts.allow
$ chmod 750 /etc/named.conf

패키지 업데이트

$ dnf -y update

위 설정들은 대부분 필수로 설정해야 하는 부분이 아니니 자신의 시스템에 적절한 설정만 적용하면 됩니다.

이상입니다.


0개의 댓글

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다