서버 설정 · 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 restart10.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-onlyLE 설치 외에 추가 단계는 필요하지 않습니다. 웹사이트 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 restart12.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 restart13 Mailman 설치
ISPConfig를 사용하면 Mailman 메일링 리스트를 관리(생성/수정/삭제)할 수 있습니다. 이 기능을 사용하려면 다음과 같이 Mailman을 설치하십시오:
apt-get install mailman최소한 하나의 언어를 선택하십시오. 예:
Languages to support: <-- en (English)
Missing site list <-- OkMailman을 시작하기 전에 mailman이라는 첫 번째 메일링 리스트를 생성해야 합니다:
newlist mailmanroot@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 start14 PureFTPd 및 Quota 설치
PureFTPd 및 quota는 다음 명령으로 설치할 수 있습니다:
apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatoolPure-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/TLSTLS를 사용하려면 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.pemCountry 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 -avug15 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.sh17 Jailkit 설치
Jailkit은 SSH 사용자를 chroot하려는 경우에만 필요합니다. 다음과 같이 설치할 수 있습니다:
apt-get install build-essential autoconf automake libtool flex bison debhelper binutilscd /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 fail2banPureFTPd 및 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 restartUFW 방화벽을 설치하려면 다음 apt 명령을 실행합니다:
apt-get install ufw새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.