서버 설정 · 4 min read · Oct 08, 2025

완벽한 서버 - CentOS 6.3 x86_64 (nginx, Dovecot, ISPConfig 3) - 페이지 3

4 /etc/hosts 조정

다음으로 /etc/hosts를 편집합니다. 다음과 같이 만드세요:

vi /etc/hosts

| 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 192.168.0.100 server1.example.com server1 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 |

5 방화벽 구성

(기본 시스템 설치가 끝난 후 방화벽을 이미 비활성화했다면 이 장을 건너뛸 수 있습니다.)

이 튜토리얼의 끝에서 ISPConfig를 설치하고 싶습니다. ISPConfig는 자체 방화벽을 가지고 있습니다. 그래서 지금 기본 CentOS 방화벽을 비활성화합니다. 물론 방화벽을 켜두고 필요에 맞게 구성할 수 있습니다(하지만 그러면 나중에 다른 방화벽을 사용하지 않아야 합니다. 왜냐하면 그것이 CentOS 방화벽과 간섭할 가능성이 높기 때문입니다).

다음 명령어를 실행하세요:

system-config-firewall

그리고 방화벽을 비활성화합니다.

방화벽이 정말로 비활성화되었는지 확인하려면 다음을 실행할 수 있습니다:

iptables -L 

출력은 다음과 같아야 합니다:

[root@server1 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@server1 ~]#

6 SELinux 비활성화

SELinux는 CentOS의 보안 확장으로, 확장된 보안을 제공해야 합니다. 제 생각에는 안전한 시스템을 구성하는 데 필요하지 않으며, 일반적으로 장점보다 더 많은 문제를 일으킵니다(어떤 서비스가 예상대로 작동하지 않아 일주일 동안 문제를 해결한 후, 모든 것이 괜찮았고 오직 SELinux가 문제를 일으켰다는 것을 알게 될 때를 생각해 보세요). 따라서 저는 그것을 비활성화합니다(나중에 ISPConfig를 설치하려면 필수입니다).

/etc/selinux/config를 편집하고 SELINUX=disabled로 설정합니다:

vi /etc/selinux/config

| # 이 파일은 시스템에서 SELinux의 상태를 제어합니다. # SELINUX=은 다음 세 가지 값 중 하나를 가질 수 있습니다: # enforcing - SELinux 보안 정책이 시행됩니다. # permissive - SELinux가 시행하는 대신 경고를 출력합니다. # disabled - SELinux 정책이 로드되지 않습니다. SELINUX=disabled # SELINUXTYPE=은 다음 두 가지 값 중 하나를 가질 수 있습니다: # targeted - 대상 프로세스가 보호됩니다, # mls - 다중 수준 보안 보호. SELINUXTYPE=targeted |

그 후 시스템을 재부팅해야 합니다:

reboot

7 추가 리포지토리 활성화 및 소프트웨어 설치

먼저 소프트웨어 패키지의 GPG 키를 가져옵니다:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

그런 다음 CentOS 시스템에서 RPMforge 및 EPEL 리포지토리를 활성화합니다. 이 튜토리얼에서 설치할 많은 패키지가 공식 CentOS 6.3 리포지토리에서 사용할 수 없기 때문입니다:

rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

cd /tmp
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

(위 링크가 더 이상 작동하지 않으면 현재 버전의 rpmforge-release를 여기에서 찾을 수 있습니다: http://packages.sw.be/rpmforge-release/)

rpm –import https://fedoraproject.org/static/0608B895.txt
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
rpm -ivh epel-release-6-7.noarch.rpm

우리는 나중에 설치할 php-fpm 패키지를 포함하는 Remi RPM 리포지토리도 활성화해야 합니다: rpm –import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

yum install yum-priorities

/etc/yum.repos.d/epel.repo를 편집합니다…

vi /etc/yum.repos.d/epel.repo

… 그리고 [epel] 섹션에 priority=10을 추가합니다:

| [epel] name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [...] |

그런 다음 /etc/yum.repos.d/remi.repo의 [remi] 섹션에 대해서도 동일하게 하고, enabled를 1로 변경합니다:

vi /etc/yum.repos.d/remi.repo

| [remi] name=Les RPM de remi pour Enterprise Linux $releasever - $basearch #baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/ mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority [remi-test] name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch #baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/ mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi |

그런 다음 시스템의 기존 패키지를 업데이트합니다:

yum update

이제 나중에 필요할 소프트웨어 패키지를 설치합니다:

yum groupinstall 'Development Tools'

8 쿼터

(제가 선택한 파티션 구성 방식과 다른 방식으로 선택했다면, 쿼터가 필요한 파티션에 적용되도록 이 장을 조정해야 합니다.)

쿼트를 설치하려면 다음 명령어를 실행합니다:

yum install quota

/etc/fstab을 편집하고, / 파티션에 usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0를 추가합니다 ( /dev/mapper/vg_server1-lv_root):

vi /etc/fstab

| # # /etc/fstab # 2012년 7월 11일 수요일 17:52:57에 anaconda에 의해 생성됨 # # 참조에 의해 접근 가능한 파일 시스템은 '/dev/disk' 아래에서 유지됩니다. # 자세한 정보는 man 페이지 fstab(5), findfs(8), mount(8) 및/또는 blkid(8)를 참조하세요. # /dev/mapper/vg_server1-lv_root / ext4 defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 1 1 UUID=806910a1-dbdf-4746-bd94-cbe73ce81493 /boot ext4 defaults 1 2 /dev/mapper/vg_server1-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 |

그런 다음 실행합니다:

mount -o remount /

quotacheck -avugm
quotaon -avug

쿼트를 활성화합니다.

9 시스템 시계 동기화

시스템 시계를 인터넷의 NTP (network time protocol) 서버와 동기화하는 것은 좋은 생각입니다. 다음 명령어를 실행하세요:

yum install ntp

그러면 시스템 시간이 항상 동기화됩니다.

10 MySQL 설치

MySQL을 다음과 같이 설치합니다:

yum install mysql mysql-server

그런 다음 MySQL의 시스템 시작 링크를 생성하고 시작합니다:

chkconfig –levels 235 mysqld on
/etc/init.d/mysqld start

MySQL 루트 계정의 비밀번호를 설정합니다:

mysql_secure_installation

[root@server1 tmp]# mysql_secure_installation

NOTE: 이 스크립트의 모든 부분을 실행하는 것이 모든 MySQL 서버에서 권장됩니다. 프로덕션 환경에서 사용 중인 경우! 각 단계를 주의 깊게 읽어주세요!

MySQL에 로그인하여 보안을 설정하려면 현재 루트 사용자 비밀번호가 필요합니다. MySQL을 방금 설치했으며, 루트 비밀번호를 아직 설정하지 않았다면 비밀번호는 비어 있으므로 여기서 그냥 Enter를 누르세요.

현재 비밀번호를 입력하세요 (없으면 Enter):
OK, 비밀번호를 성공적으로 사용했습니다. 계속 진행합니다…

루트 비밀번호를 설정하면 아무도 적절한 권한 없이 MySQL 루트 사용자로 로그인할 수 없게 됩니다.

루트 비밀번호를 설정하시겠습니까? [Y/n] <– ENTER
새 비밀번호: <– yourrootsqlpassword
새 비밀번호를 다시 입력하세요: <– yourrootsqlpassword
비밀번호가 성공적으로 업데이트되었습니다!
권한 테이블을 다시 로드하는 중..
… 성공!

기본적으로 MySQL 설치에는 익명 사용자가 있어 누구나 사용자 계정을 생성하지 않고도 MySQL에 로그인할 수 있습니다. 이는 테스트 용도로만 의도되며 설치를 조금 더 원활하게 진행하기 위한 것입니다. 프로덕션 환경으로 이동하기 전에 이를 제거해야 합니다.

익명 사용자를 제거하시겠습니까? [Y/n] <– ENTER
… 성공!

일반적으로 루트는 ‘localhost’에서만 연결할 수 있어야 합니다. 이는 누군가가 네트워크에서 루트 비밀번호를 추측할 수 없도록 보장합니다.

원격으로 루트 로그인을 허용하지 않으시겠습니까? [Y/n] <– ENTER
… 성공!

기본적으로 MySQL에는 누구나 접근할 수 있는 ‘test’라는 데이터베이스가 있습니다. 이는 테스트 용도로만 의도되며 프로덕션 환경으로 이동하기 전에 제거해야 합니다.

테스트 데이터베이스 및 접근을 제거하시겠습니까? [Y/n] <– ENTER

  • 테스트 데이터베이스를 삭제하는 중…
    … 성공!
  • 테스트 데이터베이스에 대한 권한을 제거하는 중…
    … 성공!

권한 테이블을 다시 로드하면 지금까지의 모든 변경 사항이 즉시 적용됩니다.

권한 테이블을 지금 다시 로드하시겠습니까? [Y/n] <– ENTER
… 성공!

정리 중…

모든 작업이 완료되었습니다! 위의 모든 단계를 완료했다면 MySQL 설치가 이제 안전해야 합니다.

MySQL을 사용해 주셔서 감사합니다!

[root@server1 tmp]#

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.