Ini adalah step-step instalasi dan konfigurasi sebuah webserver dengan Distribusi
Linux Slackware 13.0 menggunakan Apache, Mysql, PHP. Instalasi ini akan ditambah dengan beberapa service yaitu: FTP server (VSFTP),
SSH Server, Sendmail, IPTABLES, dan juga Webalizer. 1. APACHE Secara default jika kita menginstall seluruh paket di Slackware maka Apache akan
terinstall otomatis. Jika belum terinstall maka kita bisa menginstallnya dengan menggunakan slackpkg
atau installpkg. Slackpkg adalah tool semacam apt-get (Debian based) yang memudahkan seseorang menginstall
sebuah paket dan dependenciesnya. Syaratnya adalah mesin tersebut terkoneksi dengan jaringan internet atau bisa juga
menggunakan repository offline. Sebelum slackpkg bisa digunakan, maka kita harus melakukan sedikit konfigurasi dari
mirror mana paket-paket nanti akan diambil. Berkas konfigurasi slackpkg tersebut berada di file /etc/slackpkg/mirror. # vi /etc/slackpkg/mirror Tambahkan baris berikut kedalam file konfigurasi tersebut. # Kambing http://kambing.ui.ac.id/slackware/slackware-current/ Kemudian lakukan update # slackpkg update # slackpkg install httpd Atau jika Anda hendak menginstall paket Apache menggunakan installpkg maka caranya adalah : Download Apache di mirror-mirror terdekat misalkan kambing.ui.ac.id # wget http://kambing.ui.ac.id/slackware/slackware-current/slackware/n/httpd-2.2.13-i486-1.txz # installpkg httpd-2.2.13-i486-1.txz # /etc/rc.d/rc.httpd start 1a. Mengaktifkan module ssl # vi /etc/httpd/httpd.conf Uncomment baris-baris berikut : LoadModule ssl_module lib/httpd/modules/mod_ssl.so Include /etc/httpd/extra/httpd-ssl.conf Generate kunci ssl. # openssl req -new > new.cert.csr # openssl rsa -in privkey.pem -out new.cert.key # openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 1825 # mkdir /etc/httpd/ssl.crt/ # mkdir /etc/httpd/ssl.key/ # cp new.cert.cert /etc/httpd/ssl.crt/server.crt # cp new.cert.key /etc/httpd/ssl.key/server.key # vi /etc/httpd/extra/httpd-ssl.conf SSLCertificateFile "/etc/httpd/ssl.crt/server.crt" SSLCertificateKeyFile "/etc/httpd/ssl.key/server.key" # /etc/rc.d/rc.httpd restart # netstat -tpan | grep 443 1b. Mengaktifkan modsecurity agar Apache menjadi lebih secure # wget http://www.modsecurity.org/download/modsecurity-apache_2.5.11.tar.gz # tar -xzvf modsecurity-apache_2.5.7.tar.gz # cd modsecurity-apache_2.5.7/apache2 # ./configure # make # make install # vi /etc/httpd/httpd.conf LoadFile /usr/lib/libxml2.so LoadModule security2_module lib/httpd/modules/mod_security2.soInclude /etc/httpd/modrules/*.conf # cd modsecurity-apache_2.5.7/rules # mkdir /etc/httpd/modrules; cp -a * /etc/httpd/modrules # vi /etc/httpd/modrules/modsecurity_crs_10_config.conf SecServerSignature "Apache/2.2.0 (Fedora)" SecAuditLog /var/log/httpd/modsec_audit.log SecDebugLog /var/log/httpd/modsec_debug.log # touch /var/log/httpd/modsec_audit.log # touch /var/log/httpd/modsec_debug.log # /etc/rc.d/rc.httpd restart 2. PHP Setelah Apache terinstall, mod_ssl & modsecurity juga telah terinstall, saatnya kita aktifkan modul php di Apache tersebut. # vim /etc/httpd/httpd.confDirectoryIndex index.html index.php Include /etc/httpd/mod_php.conf # vi /etc/httpd/mod_php.conf AddType application/x-httpd-php .php .php3 .php4 # /etc/rc.d/rc.httpd restart Melakukan testing apakah Apache sudah mendukung modul php. # vi /var/www/htdocs/test.php Jalankan http://localhost/test.php melalui browser favorit Anda. 2a. Pacth PHP menggunakan suhosin # wget http://download.suhosin.org/suhosin-0.9.29.tgz # tar -xzvf suhosin-0.9.29.tgz # cd suhosin-0.9.29 # phpize # ./configure # make # make test # make install # cp suhosin.so /usr/lib/php/extensions # vi /etc/httpd/php.ini extension=suhosin.so # /etc/rc.d/rc.httpd restart 3. MYSQL # slackpkg install mysql # wget http://kambing.ui.ac.id/slackware/slackware-current/slackware/ap/mysql-5.1.39-i486-2.txz # installpkg mysql-5.1.39-i486-2.txz # mysql_install_db --user=mysql # cd /usr ; /usr/bin/mysqld_safe & # /usr/bin/mysql_secure_installation Jawab setiap pertanyaan yang muncul, jika tidak yakin dengan jawaban yang akan diberikan, silahkan jawab dengan jawaban default (ENTER). # chown -R mysql:mysql /var/lib/mysql/mysql # chmod -R 755 /var/lib/mysql/mysql # /etc/rc.d/rc.mysqld stop # /etc/rc.d/rc.mysqld start # mysql -u root -p 4. FTP SERVER (VSFTP) # slackpkg install vsftpd # wget http://kambing.ui.ac.id/slackware/slackware-current/slackware/n/vsftpd-2.1.2-i486-1.txz # installpkg vsftpd-2.1.2-i486-1.txz # vi /etc/inetd.conf ftp stream tcp nowait root /usr/sbin/tcpd vsftpd # /etc/rc.d/rc.inetd restart # netstat -pln | grep 21 # vim /etc/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_list_file=/etc/vsftpd.chroot_list ls_recurse_enable=YES listen=NO Masukkan user-user yang diperbolehkan menggunakan ftp di file /etc/vsftpd.chroot_list # /etc/rc.d/rc.inetd restart 4a. Mengaktikan module ssl di VSFTPD Pastikan vsftpd sudah dicompile dengan mengaktifkan module ssl # ldd /usr/sbin/vsftpd | grep ssl libssl.so.0 => /usr/lib/libssl.so.0 (0xb7f5c000) # mkdir /etc/vsftpd # openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem # vi /etc/vsftpd.conf ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=NO force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO rsa_cert_file=/etc/vsftpd/vsftpd.pem require_ssl_reuse=NO # /etc/rc.d/rc.inetd restart Testing menggunakan ftp client yang support ftps, diantaranya FileZilla dan Smartftp, jangan lupa pilih Servertype nya menggunakan FTPES. 5. SENDMAIL # slackpkg install sendmail mailx procmail # http://kambing.ui.ac.id/slackware/slackware-current/slackware/n/sendmail-8.14.3-i486-2.txz # installpkg sendmail-8.14.3-i486-2.txz # chmod a+x /etc/rc.d/rc.sendmail # /etc/rc.d/rc.sendmail restart Konfigurasi Sendmail # cd /usr/share/sendmail/cf/cf # vi /usr/share/sendmail/cf/cf/sendmail-straw.mc # m4 sendmail-straw.mc > sendmail-straw.cf # cp sendmail-straw.cf /etc/mail/sendmail.cf # /etc/rc.d/rc.sendmail restart # mailx -s "test" root@localhost < Hello # tail -f /var/log/maillog 6. WEBALIZER # wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz # tar -zxf gd-2.0.33.tar.gz # cd /usr/src/gd-2.0.33 # ./configure --prefix=/usr \ --with-png=/usr \ --with-freetype=/usr \ --with-jpeg=/usr \ --with-zlib=/usr # make # make install # make clean # make distclean # wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.21-02-src.tgz # tar -xzvf webalizer-2.21-02-src.tgz # cd webalizer-2.21-02/ # ./configure # make # make install # make clean # make distclean # cp -a /usr/local/etc/webalizer.conf.sample /etc/webalizer-slackware.conf # vi /etc/webalizer-slackware.conf # webalizer -c /etc/webalizer-slackware.conf # crontab -e Isikan baris-baris berikut, yang artinya webalizer akan dijalankan (men-generate report) setiap 10 menit. #Webalizer 10 * * * * /usr/local/bin/webalizer -c /etc/webalizer-slackware.conf 7. SSH Port yang akan digunakan oleh ssh diganti dari port 22 menjadi 23456. # vi /etc/ssh/sshd_config Port 23456 Protocol 2 LogLevel INFO LoginGraceTime 2m PermitRootLogin no StrictModes yes MaxAuthTries 2 MaxSessions 3 Subsystem sftp /usr/libexec/sftp-server # /etc/rc.d/rc.sshd restart 8. IPTABLES (Firewall) # vi root/firewall modprobe ip_conntrack_ftp iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 23456 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT iptables -A INPUT -p TCP -i eth0 --dport 21 -m state --state NEW -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --dport 23456 -j DROP iptables -A INPUT -j DROP iptables -A FORWARD -j DROP # iptables-restore < /root/firewall Agar rule-rule firewall tersebut dijalankan setiap komputer restart maka tamabahkan di /etc/rc.d/rc.local baris berikut: # vi /etc/rc.d/rc.local iptables-restore < /root/firewall Referensi : Beberapa Article yang didapat dari google.