Tutorial, Internet, Hardware, Software, Os, Linux, Android, Security, Mikrotik

19 August, 2011

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.so

	
	Include /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.conf

	
	DirectoryIndex 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.
Nah klo yg ini gw nemu error pass mw jalanin httpd (sejenis apache) di slackware. Pas ku ketik /etc/rc.d/rc.httpd start keluar gini,...
symbol lookup error: /usr/sbin/httpd: undefined symbol: apr_file_linkSlackware httpd error apr_file_link
Ternyata solusinya gampang, tinggal upgrade aja apr dan apr_util, klo pake slackpkg, gini caranya:
1. buka terminal
2. upgrade
    slackpkg upgrade apr
3. biar slackpkg yang nyari paket apr apa aja yang ada, trus pilih semuanya(ditempat gw sih cuma 2 yang muncul, jadi gw pilih 2)
4. tungguin dah
5. coba browsing k http://localhost/
klo dah keluar "it works" berarti udah berhasil. Mudah2an berhasil :)