웹사이트 검색

완벽한 서버 - 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. 서문

이 가이드에서는 네트워크 구성을 위해 IP 주소가 192.168.1.100이고 게이트웨이가 192.168.1.1인 호스트 이름 server1.example.com을 사용합니다. 이러한 설정은 사용자에 따라 다를 수 있으므로 적절하게 교체해야 합니다. 계속 진행하기 전에 자습서에서 설명한 대로 Ubuntu 15.10의 기본 최소 설치가 필요합니다.

이 자습서의 단계는 루트 사용자로 실행해야 하므로 명령 앞에 \sudo\를 추가하지 않습니다. 진행하기 전에 루트 사용자로 서버에 로그인하거나 다음을 실행하십시오.

sudo su

쉘에서 다른 사용자로 로그인한 경우 루트가 됩니다.

파일 편집 명령은 \nano\ 편집기를 사용하며 원하는 편집기로 교체할 수 있습니다. Nano는 사용하기 쉬운 쉘용 파일 편집기입니다. nano를 사용하고 싶지만 아직 설치하지 않은 경우 다음을 실행하십시오.

apt-get install nano

2. Linux 설치 업데이트

/etc/apt/sources.list를 편집합니다. 파일에서 설치 CD를 주석 처리하거나 제거하고 유니버스 및 다중 우주 리포지토리가 활성화되어 있는지 확인하십시오. 다음과 같아야 합니다.

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

대시를 기본 시스템 셸(/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(nnetwork ttime 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보다 빠르며 개발이 더 빠르게 진행되고 있으므로 대부분의 Linux 배포판은 MySQL을 기본 \MySQL 유사\ 데이터베이스 서버로 MariaDB로 대체했습니다. MariaDB보다 MySQL을 선호하는 경우 위 명령에서 \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(MariaDB의 경우 또는 /etc/mysql/my.cnf(MySQL의 경우)를 편집하고 bind-address=127.0.0.1 줄을 주석 처리합니다.

마리아DB

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의 시스템 서비스 이름은 \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의 시스템 서비스 이름은 \mysql\이므로 재시작 명령은 두 데이터베이스 서버에서 동일합니다.

MySQL 및 MariaDB의 경우:

이제 네트워킹이 활성화되었는지 확인하십시오. 달리다:

netstat -tap | grep mysql

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

:~#

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를 사용하므로 SpamAssassin을 중지하여 RAM을 확보할 수 있습니다.

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

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

freshclam
service clamav-daemon start