서버 설정 · 6 min read · Sep 25, 2025

완벽한 서버 - Ubuntu 15.10 (nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD 및 ISPConfig 3)

이 튜토리얼은 Nginx, PHP, MariaDB, Postfix, pure-ftpd, BIND, Dovecot 및 ISPConfig 3가 설치된 Ubuntu 15.10 (Wiley Werewolf) 서버를 설치하는 단계를 보여줍니다. ISPConfig 3는 웹 브라우저를 통해 설치된 서비스를 구성할 수 있는 웹 호스팅 제어판입니다. 이 설정은 웹, 이메일(스팸 및 바이러스 필터 포함), 데이터베이스, FTP 및 DNS 서비스를 갖춘 완전한 호스팅 서버를 제공합니다.

1. 사전 참고

이 튜토리얼에서는 호스트 이름 server1.example.com과 IP 주소 192.168.1.100, 게이트웨이 192.168.1.1을 네트워크 구성에 사용할 것입니다. 이러한 설정은 귀하의 경우 다를 수 있으므로 적절한 곳에서 교체해야 합니다. 진행하기 전에 튜토리얼에 설명된 대로 Ubuntu 15.10의 기본 최소 설치가 필요합니다.

이 튜토리얼의 단계는 루트 사용자로 실행해야 하므로 명령어 앞에 “sudo”를 붙이지 않겠습니다. 진행하기 전에 루트 사용자로 서버에 로그인하거나 다음을 실행하십시오:

sudo su

다른 사용자로 셸에 로그인한 경우 루트가 되기 위해 사용합니다.

파일을 편집하는 명령은 편집기 “nano”를 사용할 것이며, 원하는 편집기로 교체할 수 있습니다. Nano는 셸에서 사용하기 쉬운 파일 편집기입니다. nano를 사용하고 싶지만 아직 설치하지 않았다면 다음을 실행하십시오:

apt-get install nano

2. 리눅스 설치 업데이트

/etc/apt/sources.list를 편집합니다. 파일에서 설치 CD를 주석 처리하거나 제거하고 universe 및 multiverse 저장소가 활성화되어 있는지 확인합니다. 다음과 같아야 합니다:

nano /etc/apt/sources.list
#  
# deb cdrom:[Ubuntu-Server 15.10 _Wily Werewolf_ - Release amd64 (20151021)]/ wily main restricted  
#deb cdrom:[Ubuntu-Server 15.10 _Wily Werewolf_ - Release amd64 (20151021)]/ wily main restricted  
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to  
# newer versions of the distribution.  
deb http://de.archive.ubuntu.com/ubuntu/ wily main restricted  
deb-src http://de.archive.ubuntu.com/ubuntu/ wily main restricted  
  
## Major bug fix updates produced after the final release of the  
## distribution.  
deb http://de.archive.ubuntu.com/ubuntu/ wily-updates main restricted  
deb-src http://de.archive.ubuntu.com/ubuntu/ wily-updates main restricted  
  
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu  
## team. Also, please note that software in universe WILL NOT receive any  
## review or updates from the Ubuntu security team.  
deb http://de.archive.ubuntu.com/ubuntu/ wily universe  
deb-src http://de.archive.ubuntu.com/ubuntu/ wily universe  
deb http://de.archive.ubuntu.com/ubuntu/ wily-updates universe  
deb-src http://de.archive.ubuntu.com/ubuntu/ wily-updates universe  
  
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu  
## team, and may not be under a free licence. Please satisfy yourself as to  
## your rights to use the software. Also, please note that software in  
## multiverse WILL NOT receive any review or updates from the Ubuntu  
## security team.  
deb http://de.archive.ubuntu.com/ubuntu/ wily multiverse  
deb-src http://de.archive.ubuntu.com/ubuntu/ wily multiverse  
deb http://de.archive.ubuntu.com/ubuntu/ wily-updates multiverse  
deb-src http://de.archive.ubuntu.com/ubuntu/ wily-updates multiverse  
  
## N.B. software from this repository may not have been tested as  
## extensively as that contained in the main release, although it includes  
## newer versions of some applications which may provide useful features.  
## Also, please note that software in backports WILL NOT receive any review  
## or updates from the Ubuntu security team.  
deb http://de.archive.ubuntu.com/ubuntu/ wily-backports main restricted universe multiverse  
deb-src http://de.archive.ubuntu.com/ubuntu/ wily-backports main restricted universe multiverse  
  
deb http://security.ubuntu.com/ubuntu wily-security main restricted  
deb-src http://security.ubuntu.com/ubuntu wily-security main restricted  
deb http://security.ubuntu.com/ubuntu wily-security universe  
deb-src http://security.ubuntu.com/ubuntu wily-security universe  
deb http://security.ubuntu.com/ubuntu wily-security multiverse  
deb-src http://security.ubuntu.com/ubuntu wily-security multiverse  
  
## Uncomment the following two lines to add software from Canonical's  
## 'partner' repository.  
## This software is not part of Ubuntu, but is offered by Canonical and the  
## respective vendors as a service to Ubuntu users.  
# deb http://archive.canonical.com/ubuntu wily partner  
# deb-src http://archive.canonical.com/ubuntu wily partner                                                 

그런 다음 실행합니다:

apt-get update

apt 패키지 데이터베이스를 업데이트하고 다음을 실행합니다:

apt-get upgrade

최신 업데이트를 설치합니다(있는 경우). 업데이트의 일환으로 새 커널이 설치되는 경우 시스템을 재부팅해야 합니다:

reboot

3. 기본 셸 변경

/bin/sh는 /bin/dash에 대한 심볼릭 링크이지만, 우리는 /bin/dash가 아닌 /bin/bash가 필요합니다. 따라서 이렇게 합니다:

dpkg-reconfigure dash

Use dash as the default system shell (/bin/sh)? <– 아니요

이 작업을 수행하지 않으면 ISPConfig 설치가 실패합니다.

4. AppArmor 비활성화

AppArmor는 확장된 보안을 제공해야 하는 보안 확장(SELinux와 유사)입니다. 13.10부터 기본적으로 설치되지 않습니다. 설치 여부를 확인하겠습니다. 제 생각에는 안전한 시스템을 구성하는 데 필요하지 않으며, 일반적으로 장점보다 더 많은 문제를 일으킵니다(어떤 서비스가 예상대로 작동하지 않아 문제 해결을 일주일 동안 한 후 모든 것이 괜찮았고, 단지 AppArmor가 문제를 일으켰다는 것을 알게 됩니다). 따라서 비활성화합니다(나중에 ISPConfig를 설치하려면 필수입니다).

다음과 같이 비활성화할 수 있습니다:

service apparmor stop  
update-rc.d -f apparmor remove  
apt-get remove apparmor apparmor-utils

5. 시스템 시계 동기화

시스템 시계를 인터넷을 통한 NTP (network time protocol) 서버와 동기화하는 것이 좋습니다. 간단히 실행하십시오

apt-get install ntp ntpdate

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

6. Postfix, Dovecot, MariaDB, phpMyAdmin, rkhunter, Binutils 설치

Postfix, Dovecot, MariaDB( MySQL 대체), rkhunter 및 binutils를 단일 명령으로 설치할 수 있습니다:

apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve sudo

MariaDB는 원래 MySQL 개발자인 Monty Widenius가 개발한 MySQL 데이터베이스 서버의 포크입니다. 인터넷에서 발견된 테스트에 따르면 MariaDB는 MySQL보다 빠르며 개발이 더 활발하게 진행되고 있습니다. 따라서 대부분의 리눅스 배포판은 기본 “MySQL 유사” 데이터베이스 서버로 MySQL을 MariaDB로 대체했습니다. MySQL을 MariaDB보다 선호하는 경우 위 명령에서 “mariadb-client mariadb-server”를 “mysql-client mysql-server”로 교체하십시오.

다음 질문이 표시됩니다:

General type of mail configuration: <-- Internet Site  
System mail name: <-- server1.example.com

다음으로 Postfix에서 TLS/SSL 및 제출 포트를 엽니다:

nano /etc/postfix/master.cf

제출 및 smtps 섹션의 주석을 제거하고 다음과 같이 -o smtpd_client_restrictions=permit_sasl_authenticated,reject를 두 섹션 모두에 추가하고 그 이후의 모든 것은 주석 처리된 상태로 둡니다:

[...]  
submission inet n       -       -       -       -       smtpd  
  -o syslog_name=postfix/submission  
  -o smtpd_tls_security_level=encrypt  
  -o smtpd_sasl_auth_enable=yes  
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
#  -o smtpd_reject_unlisted_recipient=no  
#  -o smtpd_client_restrictions=$mua_client_restrictions  
#  -o smtpd_helo_restrictions=$mua_helo_restrictions  
#  -o smtpd_sender_restrictions=$mua_sender_restrictions  
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject  
#  -o milter_macro_daemon_name=ORIGINATING  
smtps     inet  n       -       -       -       -       smtpd  
  -o syslog_name=postfix/smtps  
  -o smtpd_tls_wrappermode=yes  
  -o smtpd_sasl_auth_enable=yes  
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
#  -o smtpd_reject_unlisted_recipient=no  
#  -o smtpd_client_restrictions=$mua_client_restrictions  
#  -o smtpd_helo_restrictions=$mua_helo_restrictions  
#  -o smtpd_sender_restrictions=$mua_sender_restrictions  
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject  
#  -o milter_macro_daemon_name=ORIGINATING  
[...]  

그런 다음 Postfix를 재시작합니다:

service postfix restart

MariaDB/MySQL이 localhost뿐만 아니라 모든 인터페이스에서 수신 대기하도록 하려면 /etc/mysql/mariadb.conf.d/mysqld.cnf(또는 MySQL의 경우 /etc/mysql/my.cnf)를 편집하고 bind-address = 127.0.0.1 줄의 주석을 제거합니다:

MariaDB

nano /etc/mysql/mariadb.conf.d/mysqld.cnf
[...]  
# Instead of skip-networking the default is now to listen only on  
# localhost which is more compatible and is not less secure.  
#bind-address           = 127.0.0.1  
[...]  

그런 다음 MariaDB를 재시작합니다:

service mysql restart

MariaDB와 MySQL의 systemd 서비스 이름은 “mysql”이므로 두 데이터베이스 서버 모두에 대해 재시작 명령이 동일합니다.

이제 MariaDB에서 루트 비밀번호를 설정합니다. 실행하십시오:

mysql_secure_installation

다음 질문이 표시됩니다:

Enter current password for root (enter for none): <-- press enter  
Set root password? [Y/n] <-- y  
New password: <-- Enter the new MariaDB root password here  
Re-enter new password: <-- Repeat the password  
Remove anonymous users? [Y/n] <-- y  
Disallow root login remotely? [Y/n] <-- y  
Reload privilege tables now? [Y/n] <-- y

그런 다음 다음 명령을 실행하여 루트 사용자에 대한 UNIX 인증 플러그인을 비활성화합니다:

echo "update user set plugin='' where User='root';flush privileges;" | mysql --defaults-file=/etc/mysql/debian.cnf mysql

PHPMyAdmin에서 비밀번호 기반 인증을 허용합니다.

MySQL

nano /etc/mysql/my.cnf
[...]  
# Instead of skip-networking the default is now to listen only on  
# localhost which is more compatible and is not less secure.  
#bind-address           = 127.0.0.1  
[...]  

그런 다음 MySQL을 재시작합니다:

service mysql restart

MariaDB와 MySQL의 systemd 서비스 이름은 “mysql”이므로 두 데이터베이스 서버 모두에 대해 재시작 명령이 동일합니다.

MySQL 및 MariaDB의 경우:

이제 네트워킹이 활성화되었는지 확인합니다. 실행하십시오:

netstat -tap | grep mysql

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

root@server1:~# netstat -tap | grep mysql  
tcp        0      0 *:mysql                 *:*                     LISTEN      8032/mysqld      
root@server1:~#

7. Amavisd-new, SpamAssassin 및 ClamAV 설치

amavisd-new, SpamAssassin 및 ClamAV를 설치하려면 다음을 실행합니다:

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

ISPConfig 3 설정은 내부적으로 SpamAssassin 필터 라이브러리를 로드하는 amavisd-new를 사용하므로 RAM을 확보하기 위해 SpamAssassin을 중지할 수 있습니다:

service spamassassin stop  
update-rc.d -f spamassassin remove

ClamAV 바이러스 백신 서명을 업데이트하고 Clamd 서비스를 시작합니다. 업데이트 프로세스는 시간이 걸릴 수 있으니 중단하지 마십시오.

freshclam  
service clamav-daemon start
Share: X/Twitter LinkedIn

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

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