Server Security | Apache

Posted by Abonk on Wed, 08/01/2012 - 13:26

apache dan webserver lain adalah service pertama yang pelu diamankan,
karna kracker paling banyak memanfaatkan kelemahan ini untukmelakukan penetrasi ke server.
umumnya file konfigurasi httpd ada di

/etc/httpd/conf/httpd.conf)

.

berikut ini beberapa hal yang secara dasar (IMO) perlu diperhatikan oleh sysadmin :

User dan Group
Direktif User dan Group adalah direktif yang menyatakan user dan group efektif yang menjalankan
daemon httpd nantinya. untuk keamanan buatlah service httpd dijalankan oleh user non root. Contoh:
User apache
Group apache
(biasanya langsung ada ketika kita install httpd/apache)

Jika user dan group apache belum ada maka Anda dapat membuatnya dengan perintah berikut ini:
 

# groupadd apache
# useradd apache -c "Apache User" -d /dev/null -g apache -s /sbin/nologin

Menyembunyikan versi apache
para kracker junior akan nyari versi dulu, buat menyesuaikan exploit yang mereka dapat dari forum heker hehe
kalau versi exploit ga cocok mereka akan cari yang lain karna mereka belum bisa bikin sploit sendiri :Peace: .
Untuk itu ada baiknya jika kita menyembunyikan versi dari engine
web server apache yang kita gunakan, dengan cara mengkonfigurasi  ServerTokens
dalam file konfigurasi apache. Nilai default dari direktif ServerTokens ini untuk tiap distro bisa jadi
berbeda, misalnya pada distro CentOS secara default nilai direktif ini adalah sebagai berikut :

ServerTokens OS

Ubahlah menjadi berikut:

ServerTokens Prod

atau

ServerTokens ProductOnly

ServerTokens OS = info produk, versi, distro OS (jenis OS) akan ditampilkan.
ServerTokens Prod = hanya nama produk yang ditampilkan.
ServerTokens yang lainnya adalah Minimal dan Full

Resource Limiting
konfigurasi berikut ini berkaitan dengan pembatasan resource.

MaxClients <number>: #ini untuk membatasi jumlah maksimum request simultan yang dapat
diterima Apache, (berperan untuk mencegah upaya DoS Attack). nilai dafaulnya 150, rekomendasinya 100 - 200.
Jika request melebih nilai dari ini maka client akan mendapati halaman dengan pesan Connection Refused.

RLimitCPU <soft> [hard]: ini berguna untuk menseting batasan penggunaan CPU dari server. Nilai
yang bisa diberikan pada direktif ini dapat berupa angka (dalam detik) atau max.

RLimitMEM <soft> [hard]: ini berguna untuk Soft dan hard limits untuk penggunaan memori maksimum dari server, dalam satuan byte.

LimitRequestBody <n bytes>: berguna untuk menentukan ukuran maksimum yang diijinkan untuk
request HTTP dari client.. Nilai yang mungkin untuk direktif ini 0 (unlimited) sampai
2,147,483,647 (2 GB). Jika nilai ini dilampaui , sebuah error akan dikembalikan ke client. Ingatlah
bahwa jika Anda menggunakan CGI scripts, yang mengijinkan users untuk menupload file, dimana
requestnya bisa jadi beberapa megabyte.

LimitRequestFields <n>: Jumlah maksimum dari header fields yang muncul dalam sebuah
request. Nilai yang valid adalah antara 0 (unlimited) sampai 32,767.

LimitRequestFieldSize <n bytes>: batas teratas dari ukuran header field, dalam bytes. Nilai yang
Valid adalah antara 0 (unlimited) sampai 8,190 (+8 KB).

LimitRequestLine <n>: Ukuran maksimum baris dari request HTTP yang diijinkan. Jangan diset terlalu kecil hehe,
karena CGI scripts menggunakan methode request GET untuk menggenerate baris-baris
request yang panjang. Nilai direktif ini antara 0(unlimited) sampai 8,190

Access Control
Direktif Access control digunakan didalam scope direktif <File> dan <Directory>.
Strategi yang umum yang digunakan adalah mendeny semua akses dari manapun dan kemudian meng-Allow akses dari klien tertentu.
Alternatifnya (biasa jarang digunakan), Anda
memutuskan untuk mengijinkan semua, tetapi kemudian mendeny klien tertentu.

Contoh berikut ini akan membatasi akses ke file private.html, yang hanya membolehkan akses dari
network 10.x.x.x:


<Files private.html>
Order Deny,Allow
Deny from All
Allow from 10.0.0.0/255.0.0.0
</Files>

Authentication

Cara pertama:
Tambahkan baris berikut ini kedalam file konfigurasi apache (httpd.conf) , sebagai contoh Anda
akan memproteksi direktori DocumentRoot (/var/www/html), maka pada section directory
/var/www/html yang ditandai dengan tanda “<Directory /var/www/html>”, sbb:
 


AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/httpd/passwd
require validuser

Kemudian buatlah File database text, dengan menggunakan tool htpasswd sbb:
#htpasswd -c /etc/httpd/passwd abonk
atau
#htpasswd /etc/httpd/passwd farouk

dan hasilnya akan dibutlah sebuah file database text yang berisi username dan password dengan
lokasi di /etc/httpd, dan isi file sbb;
abonk:KDp4desIpaOc.
farouk:RedYva8skPWPY

Kemudian restart apache web servernya agar proses proteksi diterapkan.

Cara kedua:
Cara yang kedua menggunakan htaccess file, dimana kita bisa saja menerapkan autentikasi
tidak harus mendefinisikan parameter autentikasi kedalam file konfigurasi utama apache (httpd.conf).
Untuk menerapkan cara ini kita perlu memmastikan dalam file konfigurasi apache terdapat parameter “AccessFileName” dan parameter ini memiliki
nilai sbb:

AccessFileName .htaccess

juga pastikan user boleh meng overraide option lewat .htaccess, cara ngeceknya :
pastikan terdapat parameter “AllowOverride” tidak benilai “None” , tetapi “AuthConfig”, seperi berikut ini:

[cede]AllowOverride AuthConfig

Kemudian buatlah file dengan nama “.htaccess” dan diletakkan dalam direktori yang akan di
proteksi. Dan isi file .htaccess sama dengan isi yang ditulis kedalam file konfigurasi apache pada
cara yang pertama, sbb:
 


AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/httpd/passwd
require validuser

Selanjutnya restart apache, dan coba Anda akses direktori tersebut lewat web.

semoga bermanfaat, kalau ada salah mohon dimaklumi karna masih nubie gan.. :malu:, yang mau nambahin juga bagus banget deh... :malu:

TAMBAHAN DARI PARA MASTAH :

by DraCoola
waw? sebuah mutu pendidikan yang sedap, mantap, dan terpertjaja!

ikod nambain dikid mas bro gan, untuk file conf apache milik whm/Cpanel, letaknya bakal ada di :
 

/usr/local/apache/conf/httpd.conf

Oby nazkar
mo nambahin sedikit.
selain menggunakan htpasswd, bisa juga gunakan authnz_ldap_module. jika perlu tambahkan opsi SSLRequireSSL.

contohnya:


<IfModule authnz_ldap_module>
<Directory /var/www/html/test>
SSLRequireSSL
AuthName "Authentication"
AuthType Basic
AuthBasicProvider ldap
AuthLDAPURL ldap://x.x.x.x/dc=example,dc=com?uid?sub?(objectClass=*)
Require ldap-filter objectClass=posixAccount
</Directory>
</IfModule>

by asb_kppsi
ikut nambahin gan

- mematikan signature di server untuk menghilangkan versi Apache saat error page


ServerSignature Off

- disable directory browsing. ane make ini supaya user ndak bisa eksplore folder. pas diakses keluar sms mesra Forbidden : you don't have permission to access / on this server
 


Options Indexes FollowSymLinks

menjadi


Options FollowSymLinks atau Options -Indexes FollowSymLinks

- pake mod_security

buat yang rada paranoid sih bisa implementasi lainnya seperti disable symbolic links dan semisalnya

by mangkukmerah

Nambahin papih dikit untuk mod_sec nyo : *gunakan mangmer translator :ngakaks
 


Dongdod rules standar dari GotRoot untuk mod_sec nyao

 

 

Kategory: