서버 설정 · 6 min read · Dec 18, 2025

완벽한 서버 - Debian 9 (Stretch)와 Apache, BIND, Dovecot, PureFTPD 및 ISPConfig 3.1 - 페이지 2

10 Apache2, PHP, FCGI, suExec, Pear, phpMyAdmin 및 mcrypt 설치

Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear 및 mcrypt는 다음과 같이 설치할 수 있습니다:

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.0 php7.0-common php7.0-gd php7.0-mysql php7.0-imap phpmyadmin php7.0-cli php7.0-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear php7.0-mcrypt mcrypt imagemagick libruby libapache2-mod-python php7.0-curl php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl memcached php-memcache php-imagick php-gettext php7.0-zip php7.0-mbstring memcached libapache2-mod-passenger php7.0-soap

다음과 같은 질문이 표시됩니다:

Web server to reconfigure automatically: <- apache2  
Configure database for phpmyadmin with dbconfig-common? <- yes  
Enter the phpmyadmin application password? <- Just press enter  

그런 다음 다음 명령을 실행하여 Apache 모듈 suexec, rewrite, ssl, actions 및 include를 활성화합니다(웹DAV를 사용하려면 dav, dav_fs 및 auth_digest도 포함):

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers

서버가 HTTPOXY 취약점을 통해 공격받지 않도록 하기 위해, /etc/apache2/conf-available/httpoxy.conf 구성 파일을 추가하여 HTTP_PROXY 헤더를 전역적으로 비활성화합니다:

nano /etc/apache2/conf-available/httpoxy.conf

파일에 다음 내용을 붙여넣습니다:


    RequestHeader unset Proxy early

그리고 다음 명령을 실행하여 모듈을 활성화합니다:

a2enconf httpoxy  
service apache2 restart

10.1 HHVM (HipHop Virtual Machine) 설치

Debian 9에 사용할 수 있는 HHVM 패키지가 아직 없습니다. HHVM은 선택적 PHP 모드이므로 서버는 HHVM 없이도 작동하지만, 웹사이트에 대해 HHVM PHP 모드를 사용할 수는 없습니다.

10.2 SuPHP

SuPHP는 이제 Debian 9에서 사용할 수 없으며, SuPHP 기능은 구식이며 ISPConfig에서도 제거될 예정입니다. SuPHP 대신 PHP-FPM 또는 PHP-FCGI와 함께 suexec를 사용하십시오.

11 Let’s Encrypt 설치

ISPConfig 3.1은 무료 SSL 인증 기관인 Let’s Encrypt를 지원합니다. Let’s Encrypt 기능을 사용하면 ISPConfig 내에서 웹사이트에 대한 무료 SSL 인증서를 생성할 수 있습니다.

이제 Let’s Encrypt 지원을 추가하겠습니다.

cd /usr/local/bin  
wget https://dl.eff.org/certbot-auto  
chmod a+x certbot-auto  
./certbot-auto --install-only

LE 설치 외에 추가 단계는 필요하지 않습니다. 웹사이트 SSL 인증서는 웹사이트를 추가할 때 ISPConfig에 의해 생성됩니다.

12 PHP-FPM 설치

Apache와 함께 PHP-FPM을 사용하려면 mod_proxy_fcgi Apache 모듈이 필요하며, 이는 기본적으로 설치되어 있으며 활성화하기만 하면 됩니다. PHP-FPM을 다음과 같이 설치할 수 있습니다:

apt-get -y install php7.0-fpm

모듈을 활성화하고 Apache를 재시작해야 합니다:

a2enmod actions proxy_fcgi alias  
service apache2 restart

12.2 PHP Opcode Cache 설치 (선택 사항)

Opcache는 PHP 중간 코드를 캐시하고 최적화하기 위한 무료 PHP opcode 캐시입니다. APCu는 많은 CMS 캐싱 시스템에서 사용되는 Opcache에 대한 APC 호환 기능을 제공하는 호환성 모듈입니다. PHP 페이지 속도를 높이기 위해 이러한 PHP 확장을 설치하는 것이 좋습니다.

APCu는 다음과 같이 설치할 수 있습니다:

apt-get -y install php7.0-opcache php-apcu

이제 Apache를 재시작합니다:

service apache2 restart

13 Mailman 설치

ISPConfig를 사용하면 Mailman 메일링 리스트를 관리(생성/수정/삭제)할 수 있습니다. 이 기능을 사용하려면 다음과 같이 Mailman을 설치하십시오:

apt-get install mailman

최소한 하나의 언어를 선택하십시오. 예:

Languages to support: <-- en (English)  
Missing site list <-- Ok

Mailman을 시작하기 전에 mailman이라는 첫 번째 메일링 리스트를 생성해야 합니다:

newlist mailman
root@server1:~# newlist mailman  
Enter the email of the person running the list: <-- admin email address, e.g. [email protected]  
Initial mailman password: <-- admin password for the mailman list  
To finish creating your mailing list, you must edit your /etc/aliases (or  
equivalent) file by adding the following lines, and possibly running the  
`newaliases' program:  
   
## mailman mailing list  
mailman:              |/var/lib/mailman/mail/mailman post mailman  
mailman-admin:        |/var/lib/mailman/mail/mailman admin mailman  
mailman-bounces:      |/var/lib/mailman/mail/mailman bounces mailman  
mailman-confirm:      |/var/lib/mailman/mail/mailman confirm mailman  
mailman-join:         |/var/lib/mailman/mail/mailman join mailman  
mailman-leave:        |/var/lib/mailman/mail/mailman leave mailman  
mailman-owner:        |/var/lib/mailman/mail/mailman owner mailman  
mailman-request:      |/var/lib/mailman/mail/mailman request mailman  
mailman-subscribe:    |/var/lib/mailman/mail/mailman subscribe mailman  
mailman-unsubscribe:  |/var/lib/mailman/mail/mailman unsubscribe mailman  
   
Hit enter to notify mailman owner... <-- ENTER  
   
root@server1:~#

그 후 /etc/aliases를 엽니다…

nano /etc/aliases

… 그리고 다음 줄을 추가합니다:

[...]  
## mailman mailing list  
mailman:              |/var/lib/mailman/mail/mailman post mailman  
mailman-admin:        |/var/lib/mailman/mail/mailman admin mailman  
mailman-bounces:      |/var/lib/mailman/mail/mailman bounces mailman  
mailman-confirm:      |/var/lib/mailman/mail/mailman confirm mailman  
mailman-join:         |/var/lib/mailman/mail/mailman join mailman  
mailman-leave:        |/var/lib/mailman/mail/mailman leave mailman  
mailman-owner:        |/var/lib/mailman/mail/mailman owner mailman  
mailman-request:      |/var/lib/mailman/mail/mailman request mailman  
mailman-subscribe:    |/var/lib/mailman/mail/mailman subscribe mailman  
mailman-unsubscribe:  |/var/lib/mailman/mail/mailman unsubscribe mailman  

실행:

newaliases

그리고 Postfix를 재시작합니다:

service postfix restart

마지막으로 Mailman Apache 구성을 활성화해야 합니다:

ln -s /etc/mailman/apache.conf /etc/apache2/conf-enabled/mailman.conf

이것은 모든 Apache vhosts에 대해 /cgi-bin/mailman/ 별칭을 정의하며, 이는 http://server1.example.com/cgi-bin/mailman/admin/에서 메일링 리스트의 Mailman 관리 인터페이스에 접근할 수 있음을 의미하며, 메일링 리스트 사용자에 대한 웹 페이지는 http://server1.example.com/cgi-bin/mailman/listinfo/에서 찾을 수 있습니다.

http://server1.example.com/pipermail에서 메일링 리스트 아카이브를 찾을 수 있습니다.

그 후 Apache를 재시작합니다:

service apache2 restart

그런 다음 Mailman 데몬을 시작합니다:

service mailman start

14 PureFTPd 및 Quota 설치

PureFTPd 및 quota는 다음 명령으로 설치할 수 있습니다:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Pure-ftpd를 위한 dhparam 파일을 생성합니다:

openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

파일 /etc/default/pure-ftpd-common을 편집합니다…

nano /etc/default/pure-ftpd-common

… 그리고 시작 모드가 standalone으로 설정되어 있고 VIRTUALCHROOT=true로 설정되어 있는지 확인합니다:

[...]  
STANDALONE_OR_INETD=standalone  
[...]  
VIRTUALCHROOT=true  
[...]  

이제 PureFTPd를 구성하여 FTP 및 TLS 세션을 허용합니다. FTP는 모든 비밀번호와 모든 데이터가 일반 텍스트로 전송되기 때문에 매우 안전하지 않은 프로토콜입니다. TLS를 사용하면 전체 통신을 암호화할 수 있어 FTP를 훨씬 더 안전하게 만들 수 있습니다.

FTP 및 TLS 세션을 허용하려면 다음을 실행합니다:

echo 1 > /etc/pure-ftpd/conf/TLS

TLS를 사용하려면 SSL 인증서를 생성해야 합니다. 나는 /etc/ssl/private/에 생성하므로 먼저 해당 디렉토리를 생성합니다:

mkdir -p /etc/ssl/private/

그 후 다음과 같이 SSL 인증서를 생성할 수 있습니다:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Country Name (2 letter code) [AU]: <-- Enter your Country Name (e.g., "DE").  
State or Province Name (full name) [Some-State]: <-- Enter your State or Province Name.  
Locality Name (eg, city) []: <-- Enter your City.  
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter your Organization Name (e.g., the name of your company).  
Organizational Unit Name (eg, section) []: <-- Enter your Organizational Unit Name (e.g. "IT Department").  
Common Name (eg, YOUR name) []: <-- Enter the Fully Qualified Domain Name of the system (e.g. "server1.example.com").  
Email Address []: <-- Enter your Email Address.

SSL 인증서의 권한을 변경합니다:

chmod 600 /etc/ssl/private/pure-ftpd.pem

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

service pure-ftpd-mysql restart

/etc/fstab을 편집합니다. 내 것은 다음과 같습니다(나는 /에 마운트 지점이 있는 파티션에 usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0를 추가했습니다):

nano /etc/fstab
# /etc/fstab: static file system information.  
#  
# Use 'blkid' to print the universally unique identifier for a  
# device; this may be used with UUID= as a more robust way to name devices  
# that works even if disks are added and removed. See fstab(5).  
#  
#        
# / was on /dev/sda1 during installation  
UUID=f539c5cb-624f-4c27-a149-1446a251a453 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1  
# swap was on /dev/sda5 during installation  
UUID=8d3194e7-edb5-4492-937d-d066b4994baf none swap sw 0 0  
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

쿼터를 활성화하려면 다음 명령을 실행합니다:

mount -o remount /
quotacheck -avugm  
quotaon -avug

15 BIND DNS 서버 설치

BIND는 다음과 같이 설치할 수 있습니다:

apt-get install bind9 dnsutils

서버가 가상 머신인 경우 DNSSEC 서명을 위한 높은 엔트로피를 얻기 위해 haveged 데몬을 설치하는 것이 강력히 권장됩니다. 비가상 서버에서도 haveged를 설치할 수 있으며, 해가 되지 않습니다.

apt-get install haveged

이 주제에 대한 설명은 여기에서 찾을 수 있습니다.

16 Webalizer 및 AWStats 설치

Webalizer 및 AWStats는 다음과 같이 설치할 수 있습니다:

apt-get install webalizer awstats geoip-database libclass-dbi-mysql-perl libtimedate-perl

그 후 /etc/cron.d/awstats를 엽니다…

nano /etc/cron.d/awstats

… 그리고 해당 파일의 모든 내용을 주석 처리합니다:

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

17 Jailkit 설치

Jailkit은 SSH 사용자를 chroot하려는 경우에만 필요합니다. 다음과 같이 설치할 수 있습니다:

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz  
tar xvfz jailkit-2.20.tar.gz  
cd jailkit-2.20  
echo 5 > debian/compat  
./debian/rules binary

이제 Jailkit.deb 패키지를 다음과 같이 설치할 수 있습니다:

cd ..  
dpkg -i jailkit_2.20-1_*.deb  
rm -rf jailkit-2.20*

18 fail2ban 및 UFW 방화벽 설치

이는 선택 사항이지만 권장됩니다. 왜냐하면 ISPConfig 모니터가 로그를 표시하려고 시도하기 때문입니다:

apt-get install fail2ban

PureFTPd 및 Dovecot을 모니터링하도록 fail2ban을 구성하려면 /etc/fail2ban/jail.local 파일을 생성합니다:

nano /etc/fail2ban/jail.local

그리고 다음 구성을 추가합니다.

[pure-ftpd]  
enabled = true  
port = ftp  
filter = pure-ftpd  
logpath = /var/log/syslog  
maxretry = 3  
  
[dovecot]  
enabled = true  
filter = dovecot  
logpath = /var/log/mail.log  
maxretry = 5  
  
[postfix-sasl]  
enabled = true  
port = smtp  
filter = postfix-sasl  
logpath = /var/log/mail.log  
maxretry = 3

그 후 fail2ban을 재시작합니다:

service fail2ban restart

UFW 방화벽을 설치하려면 다음 apt 명령을 실행합니다:

apt-get install ufw
Share: X/Twitter LinkedIn

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

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