Monday, October 19, 2015

ARP SPOOFING (Layer 2 Security Threat)

          Address Resolution Protokol atau disingkat ARP. Protokol yang bekerja pada layer 2 ini bertanggung jawab mencari tau mac address dari suatu host yang terhubung ke dalam jaringan, jadi bisa dikatakan bahwa ARP ini bertugas sebagai penerjemah alamat logis berupa IP menjadi alamat fisik yaitu MAC address. Nanti nya dalam sebuah jaringan, komunikasi antar host akan berkomunikasi menggunakan MAC address dan tidak menggunakan alamat logis (IP Address). Untuk lebih jelasnya bagaimana cara kerja ARP silahkan baca pada link berikut ini: http://www.pintarkomputer.com/2014/10/apa-fungsi-dan-peran-protokol-arp-dalam-jaringan-komputer-networking-berikut-penjelasannya.html
          Sekarang kita tau bahwa nantinya komunikasi antar host pada sebuah jaringan akan menggunakan mac address. Apa yang terjadi jika komputer yang akan di tuju mac address nya kita rubah menjadi mac address komputer kita?, jawabannya adalah pesan atau paket data yang dikirim akan sampai ke komputer kita, kemudian barulah pesan atau paket data yang dikirim sampai ke tujuan.
          Jadi apa itu ARP SPOOFING?,  ARP SPOOFING adalah salah satu teknik sniffing atau penyadapan, ARP SPOOFING termasuk serangan Man in The Middle.  Seperti yang saya jelaskan di atas, ARP SPOOFING bekerja dengan mengganti mac address komputer target menjadi mac address komputer kita. Berikut langkah – langkah melakukan ARP SPOOFING. Disini saya menggunakan ubuntu 14.04 sebagai attacker, dan wireshark untuk melihat paket data yang lewat.
Topologi yang digunakan :

  • install arpspoof (dsniff) di ubuntu : sudo apt-get install dsniff
  • setelah itu kita lakukan ping ke target 1 dan 2 agar tau mac address dari kedua target tersebut gunakan perintah arp -a untuk melihat hasilnya. 
  • Arp dari client sebelum di lakukan ARP SPOOFING
  • pada artikel ini saya hanya akan memperlihatkan ping dari target 1 ke target 2 maupun sebaliknya yang seharusnya diterima oleh target 1 dan 2 malah akan diterima dulu oleh ubuntu (attacker).
  • Di ubuntu aktifkan ip forward  dengan perintah : sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
  • Saatnya melakukan ARP SPOOFING menggunakan arpspoof dengan perintah : sudo arpspoof -i namaInterface -t ipTarget ipTarget. Contoh :
    • sudo arpspoof -i tap1 -t 192.168.1.2 192.168.1.3
    • sudo arpspoof -i tap1 -t 192.168.1.3 192.168.1.2

  • untuk melihat hasilnya, cek dengan perintah arp di masing” target
  • terlihat pada gambar di atas bahwa mac address untuk masing” target sudah berubah. Nantinya ketika target 1 melakukan ping ke target 2, ping tersebut akan mampir dulu ke komputer ubuntu (attacker) kemudian dari komputer attacker dilanjutkan ke tujuan yang sebenarnya. Berikut penampakannya dengan bantuan wireshark



Terima kasih telah mengunjungi blog saya. Mohon maaf apabila ada kesalahan pada tulisan kali ini, sampai ketemu pada tulisan berikutnya ....

REFERENSI :
  • http://www.pintarkomputer.com/2014/10/apa-fungsi-dan-peran-protokol-arp-dalam-jaringan-komputer-networking-berikut-penjelasannya.html
  • http://solutionsatexperts.com/arp-spoofing-attack-kali-linux/
  • http://www.hacking-tutorial.com/hacking-tutorial/kali-linux-man-middle-attack/#sthash.ohsZakDK.osb8V4Xj.dpbs




Saturday, October 17, 2015

WIFI Jamming


      Wifi jamming adalah salah satu teknik penyerangan pada radio wireless yang menurut buku “Linux Firewalls and Qos” termasuk dalam penyerangan pada layer 1 di osi layer (cable and connector) dikarenakan kita langsung menyerang fisik yang dalam hal ini adalah radio wireless. Wifi jamming juga termasuk kedalam serangan DOS (Denial Of Service), artinya tujuan dari serangan ini adalah menghentikan service, dalam hal ini memutukan koneksi antara client dengan akses poin / radio wireless yang dijadikan target.
      Wifi jamming bekerja dengan cara membanjiri Radio Wireless dengan packet data dan dengan jumlah koneksi yang berlebihan, serangan langsung tertuju pada Radio Wireless (Akses Point) dengan identitas MAC Address, sehingga semua user yang terkoneksi pada Radio Wireless tersebut menjadi terputus (diassosiated). Berikut ini adalah cara melakukan wifi jamming dengan OS Linux. Saya menggunakan linux ubuntu 14.04 :
  • install aircrack-ng : sudo apt-get install aircrak-ng
  • setelah terinstall, kita harus membuat interface wlan kita menjadi mode monitoring ( saya menggunakan interface wlan0) dengan cara : sudo airmon-ng start wlan0
  • terlihat bahwa monitoring mode sudah aktif pada ethernet mon0, untuk mematikan monitoring mode gunakan perintah : sudo airmon-ng stop mon0
  • setalah itu, untuk melakukan wifi jamming kita harus tau mac address akses point tersebut. Untuk melihatnya  gunakan perintah : sudo airodump-ng mon0 atau sudo airodump-ng mon0 -c 2 (untuk channel lain, -c 2 artinya channel 2)
  • terlihat BSSID disana yang artinya itu adalah mac address dari akses point. STATION adalah mac address dari setiap station yang mencari sebuah AP untuk terkoneksi.
  • Setelah kita mengetaui mac address dari AP tersebut saatnya melakukan wifi jamming. Berikut perintahnya : sudo aireplay-ng -0 0 -a BSSID -c STATION mon0 - -ignore-negative-one. Ganti BSSID dengan mac address akses point yang akan dijadikan target, ganti STATION menjadi mac address dari mana station mana paket data akan dikirim, mon0 adalah interface yang sedang dalam mode monitoring. Jadi nantinya paket data yang dirkim dalam jumlah banyak tersebut seolah olah dirikim dari STATION dan bukan dari kita (meniru mac address).  Berikut screen shoot yang saya ambil dari https://medium.com/@jackmahoney/hacking-and-jamming-wifi-networks-d2a6ec51f0c2
CATATAN : KITA TIDAK HARUS TERHUBUNG DENGAN AKSES POINT YANG AKAN DIJADIKAN TARGET

Terimakasih telah mengunjungi blog saya. Mohon maaf apabila ada kesalahan, sampai ketemu pada artikel selanjutnya 

referensi : 
https://medium.com/@jackmahoney/hacking-and-jamming-wifi-networks-d2a6ec51f0c2
http://www.aircrack-ng.org/documentation.html
http://ezine.echo.or.id/issue25/010.txt









Sunday, August 9, 2015

DNS Server menggunakan powerDNS

DNS singkatan dari  Domain Name System, intinya DNS ini digunakan untuk mentranslate/menterjemahkan ip address ke nama domain, baik IPv4 maupun IPv6. Contoh ip 31.13.79.246 di translatekan oleh dns menjadi www.facebook.com.

Pada tutorial ini kita akan membuat DNS server menggunakan powerDNS dengan mysql sebagai back end nya. Disini kita akan mentraslatekan ip 192.168.1.1 menjadi www.rizal.org

Yang dibutuhkan :
  • server ubuntu, saya menggunakan versi 12.04 32 bit dengan ip 192.168.1.1
Install mysql-server dan mysql-client
apt-get install mysql-server mysql-client
saya menggunakan password root untuk user root

Konfigure mysql 
vi /etc/mysql/my.cnf
beri tanda pagar di depan bind-address=127.0.0.1

Install powerdns 
apt-get install pdns-server pnds-backend-mysql

Configure Database yang akan digunakan oleh powerdns
mysql -u root -proot
masukan sql script berikut :

CREATE DATABASE powerdns;
GRANT ALL ON powerdns.* TO 'poweruser'@'%' IDENTIFIED BY 'ubuntu';
FLUSH PRIVILEGES;
USE powerdns;

CREATE TABLE domains (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255) NOT NULL,
  master                VARCHAR(128) DEFAULT NULL,
  last_check            INT DEFAULT NULL,
  type                  VARCHAR(6) NOT NULL,
  notified_serial       INT DEFAULT NULL,
  account               VARCHAR(40) DEFAULT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE UNIQUE INDEX name_index ON domains(name);


CREATE TABLE records (
  id                    INT AUTO_INCREMENT,
  domain_id             INT DEFAULT NULL,
  name                  VARCHAR(255) DEFAULT NULL,
  type                  VARCHAR(10) DEFAULT NULL,
  content               VARCHAR(64000) DEFAULT NULL,
  ttl                   INT DEFAULT NULL,
  prio                  INT DEFAULT NULL,
  change_date           INT DEFAULT NULL,
  disabled              TINYINT(1) DEFAULT 0,
  ordername             VARCHAR(255) BINARY DEFAULT NULL,
  auth                  TINYINT(1) DEFAULT 1,
  PRIMARY KEY (id)
);

CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX recordorder ON records (domain_id, ordername); 


CREATE TABLE supermasters (
  ip                    VARCHAR(64) NOT NULL,
  nameserver            VARCHAR(255) NOT NULL,
  account               VARCHAR(40) NOT NULL,
  PRIMARY KEY (ip, nameserver)
);


CREATE TABLE comments (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  name                  VARCHAR(255) NOT NULL,
  type                  VARCHAR(10) NOT NULL,
  modified_at           INT NOT NULL,
  account               VARCHAR(40) NOT NULL,
  comment               VARCHAR(64000) NOT NULL,
  PRIMARY KEY (id)
);

CREATE INDEX comments_domain_id_idx ON comments (domain_id);
CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
 

CREATE TABLE domainmetadata (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  kind                  VARCHAR(32),
  content               TEXT,
  PRIMARY KEY (id)
);

CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
 

CREATE TABLE cryptokeys (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  flags                 INT NOT NULL,
  active                BOOL,
  content               TEXT,
  PRIMARY KEY(id)
);

CREATE INDEX domainidindex ON cryptokeys(domain_id);
 

CREATE TABLE tsigkeys (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255),
  algorithm             VARCHAR(50),
  secret                VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);

quit;

dapat dilihat bahwa untuk database powerdns user yang digunakan adalah 'poweruser' dengan password 'ubuntu'


Konfigurasi powerDNS
rm /etc/powerdns/pdns.d/*
vi /etc/powerdns/pdns.d/pdns.local.gmysql.conf
isi

# MySQL Configuration
#
# Launch gmysql backend
launch=gmysql

# gmysql parameters
gmysql-host=localhost
gmysql-dbname=powerdns
gmysql-user=poweruser
gmysql-password=ubuntu


vi /etc/powerdns/pdns.conf, pastika configurasi nya seperti ini. Jika tidak ada, tambahkan ...

allow-recursion=0.0.0.0/0
config-dir=/etc/powerdns
daemon=yes
guardian=yes
include=/etc/powerdns/pdns.d
launch=
setgid=pdns
setuid=pdns
version-string=powerdns
local-address=192.168.0.100
local-port=53

log-dns-details=yes
log-dns-queries=yes
logging-facility=0
loglevel=6

recursor=8.8.8.8

bisa dilihat pada konfigurasi di atas, bahwa "recursor=8.8.8.8". Seperti yang kita ketahui bahwa 8.8.8.8 adalah ip dns nya google, artinya apa? artinya saya mememinta bantuan dns google jika ada user yang mengakses domain yang tidak diketahui oleh dns server yang saya buat. contoh :
dns server milik saya hanya bisa mentranslate ip 192.168.1.1 menjadi www.rizal.org, jika user ingin mengakses www.facebook.com ip dns saya akan meminta bantuan dns google untuk mencari ip www.facebook.com tersebut.

dns google tersebut bisa dibilang dns recursor yang fungsinya melakukan pencarian melalui DNS sebagai tanggapan permintaan dari resolver yaitu client.

Restart powerDNS
/etc/init.d/pdns restart

untuk cek apakah powerDNS sudah berfungsi dapat menggunakan perintah :
netstat -tap | grep pdns



Cek dns server
dig www.facebook.com @192.168.1.1



Install poweradmin, yang berfungsi untuk memenej powerdns :
apt-get install apache2-mpm-prefork php5-mysql libapache2-mod-php5 php-pear php-mdb2 php-mdb2-driver-mysql
cd /var/www
wget http://nchc.dl.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
tar zxvf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7 poweradmin
chown www-data.www-data -R poweradmin
cp /var/www/poweradmin/inc/config-me.inc.php /var/www/poweradmin/inc/config.inc.php

selanjutnya install poweradmin dari browser : 192.168.1.1/poweradmin/install
password nya = ubuntu


setelah itu delete/rename folder install agar tidak kembali pada proses install :
rm -rf /var/www/poweradmin/install

buka kembali di browser : 192.168.1.1/poweradmin, jika mengalami error seperti berikut, install php5-mycrypt : apt-get install php5-mcrypt

restart apache : /etc/init.d/apache2 restart, akses kembali poweradmin
jika mengalami error seperti ini :


configurasi file /var/www/poweradmin/inc/config.inc.php

session key didapat dengan cara :
ketik di terminal echo -n poweradmin | md5sum

jika sudah akses kembali poweradmin, username root password ubuntu :
jika sudah, sekarang kita akan membuat ip 192.168.1.1 dikenal sebagai www.rizal.org,
klik add master zone, isikan seperti berikut kemudia add zone :
setalah itu untuk melihat, klik list zone :
klik gambar "note", isikan sebagai berikut. Option A artinya memperkenalkan kan www.rizal.org menjadi ip 192.168.1.1 :


tes dengan cara : dig www.rizal.org @192.168.1.1


sekian tutorial kali ini, semoga bermanfaat. Mohon maaf apabila ada yang salah/kurang tepat dalam tutorial kali ini ...

referensi :
http://cyberlearning.web.id/wiki/index.php/PowerDNS:_Instalasi_Server_%26_Recursor_di_satu_mesin




Wednesday, July 22, 2015

Load Balancing Web Server dengan Haproxy Layer 4

Load Balance dalam jaringan komputer adalah teknik untuk membagi beban (load) ke dalam beberapa jalur atau link. Tujuan dari load balance ini agar tidak ada link yang mendapat beban yang lebih besar dari pada link lainnya. Diharapkan dengan membagi beban ke dalam beberapa link tersebut, maka akan tercapai keseimbangan (balance) pada link-link tersebut.
Ada beberapa macam implmentasi load balance yang sering dijumpai di lampangan. Pada artikel ini, saya akan menjelaskan load balance pada web server yang dimana haproxy sebagai load balancer nya (yang membagi jalur). Ada 2 macam load balance pada web server, yaitu Layer 4 (transport layer) dan Layer 7 (application layer). Disini kita hanya akan membahas load balancer pada layer 4 saja.
Disebut load balancing layer 4 (transport layer) dikarenakan pembagian traffic nya berdasarkan ip address dan port. Berikut adalah topologinya :
Bisa dilihat bahwa user mengakses load balancer nya yang dalam hal ini kita menggunakan haproxy kemudian load balancer akan melanjutkannya ke web server berdasarkan ip address dan port menggunakan algoritma tertentu. Pada artikel ini saya menggunakan ALGORITMA ROUND ROBIN. Algoritma round robin termasuk algoritma pre-emptive, round robin memilih server secara bergilir. Yang kita butuhkan pada artikel ini adalah sebagai berikut (saya menggunakan ubuntu server) 12.04 32 bit :
  • 1 Load Balancer = ubuntu server 12.04 dengan haproxy (192.168.56.1)
  • 2 web server = apache/nginx
    • web sever1 = 192.168.56.2
    • web server2 =192.168.56.3
  • 1 database server = percona server/mysql/mariaDB (192.168.56.4)
  • client = saya menggunakan linux ubuntu 14.04 (192.168.56.11)
Konfigurasi ubuntu server sebagai load balancer :

Install haproxy :
apt-get install haproxy

Enable haproxy :
rubah option ENABLE menjadi 1 di  /etc/default/haproxy

Konfigurai haproxy :
letak file konfigurasi haproxy /etc/haproxy/haproxy.cfg. Isikan konfigurasi berikut

global
        log /dev/log   local0 #lelak log akan ditulis
        log 127.0.0.1   local1 notice
        maxconn 4096 #jumlah koneksi yang diijinkan pada front-end (load balancer)
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3 #menetapkan jumlah retries
        option redispatch #memungkinkan redistribusi jika terjadi kegagalan koneksi
        maxconn 2000
        contimeout     5000
        clitimeout     50000
        srvtimeout     50000

listen webfarm 0.0.0.0:80
    mode http
    stats enable
    stats uri /haproxy?stats
    balance roundrobin #algoritma yang digunakan
    option httpclose #jika layer option ini akan menjadi mode http
    option forwardfor
    server webserver01 192.168.56.2:80 check #webServer1
    server webserver02 192.168.56.3:80 check #webServer2

Konfigurasi ubuntu server untuk web server dengan NGINX

Install nginx :
apt-get install nginx

Install php5
apt-get install php5-fpm php5-mysql

Install mysql/percona client

untuk mysql client :
apt-get install mysql-client

untuk percona client (secara default tidak tersedia pada repository ubuntu) :
apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

repository percona server (replace VERSION dengan versi ubuntu) :
deb http://repo.percona.com/apt VERSION main
deb-src http://repo.percona.com/apt VERSION main

install percona client :
apt-get update
apt-get install percona-server-client-5.5

Pada tahap ini kita sudah bisa mengetest apakah haproxy sudah dapat bekerja atau belum dengan cara mengakses haproxy dari client. Berikut adalah screen shoot nya :


Perhatikan ip yang di akses adalah ip load balancer (192.168.56.1), bukan ip web server.

Konfigurasi nginx 

konfigurasi ini dilakukan agar nginx mengeksekusi file .php, jika tidak dilakukan maka nginx akan mendownload file .php ketika dibuka.

Edit file /etc/nginx/sites-enable/default
uncoment bagian ini 

server {
        listen   80; ## listen for ipv4; this line is default and implied
        listen   [::]:80 default ipv6only=on; ## listen for ipv6
}

tambahkan index.php pada bagian ini 
root /usr/share/nginx/www;
index index.html index.htm index.php;

selanjutnya nya pass the PHP scripts to FastCGI server
location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass 127.0.0.1:9000; 
                fastcgi_index index.php;
                include fastcgi_params;
        }
Edit file /etc/php5/fpm/php.ini
cari tulisan cgi.fix_pathinfo, rubah menjadi cgi.fix_pathinfo=0

Edit file /etc/php5/fpm/pool.d/www.conf
kata listen=, harus berisi listen = 127.0.0.1:9000

Restart nginx dan php5-fpm 
/etc/init.d/nginx restart
/etc/init.d/php5-fpm restart

UNTUK UBUNTU 12.10 KE ATAS :
REPLACE  127.0.0.1:9000  MENJADI  unix:/var/run/php5-fpm.sock

Upload script php ke folder /usr/share/nginx/www/
saya sudah buat contoh script php nya, bisa download di sini

Konfigurasi ubuntu server menjadi database server dengan PERCONA SERVER

Install percona server 

add key 
apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

add repository di /etc/apt/sources.list (replace VERSION dengan versi ubuntu)
deb http://repo.percona.com/apt VERSION main
deb-src http://repo.percona.com/apt VERSION main

apt-get update
apt-get install percona-server-server-5.5 percona-server-client-5.5


Konfigurasi percona database agar bisa diakses dari luar

Buat user untuk webServer1 dan webServer2

create user 'webServer1'@'192.168.56.2' identified by 'root';
grant all privileges on *.* to 'webServer1'@'192.168.56.2';

create user 'webServer2'@'192.168.56.3' identified by 'root';
grant all privileges on *.* to 'webServer2'@'192.168.56.3';

Jika kalian menggunakan contoh script yang saya kasih, lakukan perintah sql ini

Buat database
create database webserver;

Buat table
use webserver;
create table mahasiswa(
NPM int(10) not null primary key,
Nama varchar(20) not null,
Alamat varchar(30) not null);

NOTE : LIHAT SCRIPT, JIKA ADA SESUAIKAN HOSTNAME, DBNAME, USERNAME, PASSWORD YANG DIGUNAKAN

Tes Load Balancing, berikut adalah screen shoot nya. Konten dari web server akan sama karna keduanya mengakses database server yang sama.






Selesai, terima kasih sudah membaca artikel saya. Mohon maaf apabila ada kesalahan, mohon dikoreksi jika berkenan.

referensi :

  • mikrotik kungfu kitab 2
  • https://www.howtoforge.com/tutorial/ubuntu-load-balancer-haproxy/
  • https://www.digitalocean.com/community/tutorials/an-introduction-to-haproxy-and-load-balancing-concepts
  • http://stackoverflow.com/questions/25591040/nginx-serves-php-files-as-downloads-instead-of-executing-them
  • https://www.percona.com/doc/percona-server/5.5/installation/apt_repo.html
                                            






Wednesday, June 17, 2015

STREAMING DENGAN FFMPEG DAN NGINX

Oke gan, sebelum mulai membuat streaming server dengan ffmpeg dan nginx ada yang harus dijelaskan terlebih dahulu, diantaranya :
  • Bit rate : besar data sebuah file video, audio atau integrasi audio dan video dalam satu detik.
  • Frame rate : jumlah gambar (frame) sebuah video dalam satu detik.
  • Bitrate berpengaruh pada kualitas gambar, yang berbanding luru dengan jenis codecnya.
  • Codec adalah sebuah coding (bahasa pemrograman) yang membentuk sebuah file video
  • misalnya, pada sebuah video DV PAL, dengan codec Microsoft DV, bit rate nya 25Mbps. Saat video tersebut di convert ke codec MPEG 2, hanya membutuhkan 6Mbps untuk kualitas yang menyerupai (tidak sama persis) dengan kualitas DV. Karena setiap codec memiliki karakteristik kualitas gambar sendiri" (tergantung cara codingnya), maka kita tidak bisa bilang sama persis kualitasnya.
  • Sementara frame rate pada awalnya tergantung media dan lokasinya, dimana :
  • Film : 24 fps 
  • PAL : 25 fps, sistem televisi yang digunakan di Eropa dan daerah bekas jajahanya(Indonesia, Australia, dsb)
  • NTSC : 29,978 fps, sistem televisi yang digunakan oleh Amerika dan negara konsianya (Jepang, dsb)

Selanjutnya kita akan menginstall ffmpeg dan paket" yang dibutuhkan.


Update paket compiler :

sudo apt-get install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev

Buat direktori agar mempermudah proses penginstallan :
sudo mkdir ~/souceffmpeg

Compile library video dan audio yang dibutuhkan :

YASM library :
cd ~/sourceffmpeg
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar xzvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure
make
sudo make install
sudo make distclean

LIBX264 UNTUK VIDEO CODEC H264
cd ~/sourceffmpeg
wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar xjvf last_x264.tar.bz2
cd x264-snapshot*
./configure --enable-static
make
sudo make install
sudo make distclean

LIBFDK-AAC UNTUK CODEC AUDIO AAC
cd ~/sourceffmpeg
wget -O fdk-aac.zip https://github.com/mstorsjo/fdk-aac/zipball/master unzip fdk-aac.zip
cd mstorsjo-fdk-aac*
autoreconf -fiv
./configure --disable-shared
make
sudo make install
sudo make distclean

LIBMP3LAME UNTUK CODEC AUDIO MP3
Install terlebih dahulu aplikasi nasm
sudo apt-get install nasm
cd ~/sourceffmpeg
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar xzvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --enable-nasm --disable-shared
make
sudo make install
sudo make distclean

LIBOPUS UNTUK CODEC AUDIO OPUS
cd ~/sourceffmpeg
wget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz
tar xzvf opus-1.1.tar.gz
cd opus-1.1
./configure --disable-shared
make
sudo make install
sudo make distclean

LIBVPX UNTUK CODEC VIDEO WEBM (VP8/VP9)
cd ~/sourceffmpeg
wget http://webm.googlecode.com/files/libvpx-v1.3.0.tar.bz2
tar xjvf libvpx-v1.3.0.tar.bz2
cd libvpx-v1.3.0
./configure --disable-examples
make
sudo make install
sudo make clean

COMPILE FFMPEG
cd ~/sourceffmpeg
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
./configure --extra-libs="-ldl" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab
make
sudo make install
sudo make distclean
hash -r 

Jika sudah, ketik ffmpeg di terminal. Hasilnya akan seperti ini jika berhasil :

Selanjutnya install nginx dan paket pendukung  :

Install paket pendukung :
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

Download dan ekstrak Source nginx :
wget http://nginx.org/download/nginx-1.4.2.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
tar -zxvf nginx-1.4.2.tar.gzunzip master.zip

Masuk direktorik nginx :
cd nginx-1.4.2

Compile nginx :
./configure --add-module=../nginx-rtmp-module-master

$ make
$ sudo make install

Konfiguras nginx :

Edit file /etc/usr/local/nginx/conf/nginx.conf menjadi seperti ini :
worker_processes  1;
events {
    worker_connections  1024;
}
#Konfigurasi Untuk Live Streaming HLS dan Ondemand File pergunakan video format mp4
http {
    server {
        listen      8080;
        location /hls {
            # HLS Live Streaming sumber dari RTMP
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /var/live;
            add_header Cache-Control no-cache;
        }
    location /ond {
            # HLS untuk ondemand Streaming
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp4 ts;
            }
            alias /var/video;
            add_header Cache-Control no-cache;
        }
    }
}
#Streaming Live  RTMP
rtmp {
    server {
        listen 1935;
        chunk_size 4000;
     #Untuk Live Streaming RTMP
      application hls {
            live on;
            hls on;
            hls_path /var/live/hls;
        }
      #Untuk Ondemand Live Streaming RTMP
       application ond {
            play /var/www;
        }
    }
}

Jalankan nginx :
sudo /usr/local/nginx/sbin/nginx
untuk memastikan apakah port 1935 pada nginx berfungsi , ketik
netstat -nltp

Berikut ini sedikit option dari perintah ffmpeg :
  • -acodec aac sets the audio codec (internal AAC encoder)
  • -strict experimental allows use of some experimental codecs (the internal AAC encoder is experimental)
  • -ar 44100 set the audio sample rate
  • -ac 2 specifies two channels of audio
  • -b:a 96k sets the audio bit rate
  • -vcodec libx264 sets the video codec
  • -r 25 set the frame rate
  • -b:v 500k set the video bit rate
  • -f flv says to deliver the output stream in an flv wrapper
Sekarang saatnya kita tes ffmpeg heheheheh 

Pertama saya akan menampilkan sebuah film yaitu "Hello Ghost", dengan format mkv menjadi mp4 :

ffmpeg -i HELLO_GHOST.mkv -vcodec libx264 -s 600x480 -b:v 200k -acodec libfdk_aac -ar 22050 -ac 1 -b:a 16k -f flv rtmp://localhost/hls/testing.mp4

Tampilkan dengan ffplay :
ffplay rtmp://localhost:1935/hls/testing.mp4



Selanjutnya saya akan mencoba input video dari android menggunakan aplikasi "arutcam"


Berikut ini adalah settingan yang saya gunakan di arutcam. Pastikan server dan hp android terubung, 192.168.43.45 adalah ip server, tes adalah nama video/file yang akan di kirim






Tampilkan dengan ffplay :
ffplay rtmp://localhost/hls/tes -> saya mencoba di server jadi localhost



gunakan perintah berikut untuk mengurangi delay :
ffplay rtmp://localhost/hls/tes -analyzeduration 1000

Selanjutnya saya akan mencoba untuk menambahkan logo, logo.png adalah nama logo yg saya gunakan.

input dari android --> ffmpeg --> output. 

rtmp://localhost/hls/tes adalah input
rtmp://localhost/hls/tes1 adalah output yang sudah ditambahkan logo.png

ffmpeg -i rtmp://localhost/hls/tes -i logo.png -vcodec libx264 -acodec libfdk_aac -filter_complex overlay -f flv rtmp://localhost/hls/tes1



Tampilkan dengan ffplay :
ffplay rtmp://localhost/hls/tes1


selesai, mohon maaf apabila ada kesalahan dalam penulisan maupun penjelasan pada postingan saya kali ini

referensi :
http://andrijohandri.blogspot.com/2014/08/konfigurasi-live-streaming-mobile-hls.html
http://andrijohandri.blogspot.com/2014/05/encoder-live-rtmp-dengan-ffmpeg-di.html
http://andrijohandri.blogspot.com/2014/05/streaming-server-rtmp-dengan-nginx.html
https://trac.ffmpeg.org/wiki/StreamingGuide#Latency





Thursday, June 4, 2015

ModSecurity


Apa itu ModSecurity ?, ModSecurity adalah Web Application Firewall (WAF) yang bekerja untuk Apache, Nginx dan IIS. Dengan manambahkan WAF pada web server kita, tentu akan meningkatkan keamanan web server dari serangan cracker yang tidak bertanggung jawab. Di sini saya menggunakan sitem operasi ubuntu server 14.04 LTS 64 bit dan menggunakan apache2 untuk web server nya.

Install apache webserver dan paket pendukung :

sudo apt-get install apache2 php5 php5-xmlrpc php5-mysql php5-gd php5-cli \
php5-curl mysql-client mysql-server

Install dependensi yang dibutuhkan ModSecurity :

sudo apt-get install libxml2 libxml2-dev libxml2-utils \
libaprutil1 libaprutil1-dev

Untuk mengguna 64bit, perlu menambahkan link berikut :

ln -s /usr/lib/x86_64-linux-gnu/libxml2.so /usr/lib/libxml2.so
ln -s /usr/lib/x86_64-linux-gnu/libxml2.so.2 /usr/lib/libxml2.so.2
ln -s /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1 /usr/lib/libxml2.so.2.9.1

Tes webserver dengan php script yang sudah saya buat (tugas kampus gan hehe), teman" bisa mendownload nya di :


Taruh di /var/www/html/ :

cp rizal.zip /var/www/html

ektrack file zip :

cd /var/www/html/
unzip rizal.zip --> lakukan apt-get install unzip, jika unzip belum terinstall
mv rizal chat --> rename file

Rubah kepemilikan folder :

chown www-data.www-data chat/*

Siapkan database :

mysql -u root -proot mysql < chat/DATABASE/SQL_SCRIPT.sql

Tampilan webserver apache2 :

 Tampilan Login form :


Tampilan login menggunakan user 'rizal' :


Login dengan sql-injection : ' or true --


Install ModSecurity :

apt-get install libapache2-modsecurity

Periksa modul ModSecurity :

apachectl -M | grep --color security

Rename modsecurity.conf :

mv /etc/modsecurity/modsecurity.conf{-recommended,}

restart apache2 :

/etc/init.d/apache2 restart

cek direktorik log apache :

ls -l /var/log/apache2/modsec_audit.log

konfigurasi modsecurity.conf :

vim /etc/modsecurity/modsecurity.conf
temukan SecRuleEngine DetectionOnly menjadi SecRuleEngine On.

Pada SecRuleEngine DetectionOnly ModSecurity hanya mencatat permintaan yang sesuai dengan aturan yang cocok tapi tidak memblokir apa-apa.

Hapus folder /usr/share/modsecurity-crs/ : rm -rf /usr/share/modesecurity-src/

Install OWASP Rule terbaru :

cd /tmp
tar zxvf modsecurity-crs_2.2.5.tar.gz -C /usr/share/modsecurity-crs/
cd /usr/share/modsecurity-crs/
mv modsecurity-crs_2.2.5 modsecurity-crs

Membuat symlinks di dalam directory activated_rules untuk mengaktifkan aturan :

cd /usr/share/modsecurity-crs/activated_rules/
ln -s /usr/share/modsecurity-crs/base_rules/* . --> mengaktifkan semua aturan di base_rules

Load aturan yang berada di activated_rules :

vim /etc/apache2/mods-enabled/security2.conf

Tambahkan aturan berikut di dalam <IfModule security2_module> </IfModule> :

Include "/usr/share/modsecurity-crs/*.conf"
Include "/usr/share/modsecurity-crs/activated_rules/*.conf"

Restart apache2 :

/etc/init.d/apache2 restart

Tes web server : http://192.168.56.1/chat :

Tampilan di atas terjadi karena ada rules/aturan ModSecurity yang aktif, lihat di log :

more /var/log/apache2/modsec_audit.log

hasil :

--c71a265e-H--
Message: Access denied with code 403 (phase 2). Pattern match "^[\\d.:]+$" at REQUEST_HEADERS:Host. [file "/usr/share/modsecurity-crs/activated_rules/m
odsecurity_crs_21_protocol_anomalies.conf"] [line "98"] [id "960017"] [rev "2.2.5"] [msg "Host header is a numeric IP address"] [severity "CRITICAL"] [
tag "PROTOCOL_VIOLATION/IP_HOST"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] [tag "http://technet.microsoft.com/en-us/magazine/2
005.01.hackerbasher.aspx"]
Action: Intercepted (phase 2)
Apache-Handler: application/x-httpd-php
Stopwatch: 1433394271606134 4710 (- - -)
Stopwatch2: 1433394271606134 4710; combined=1353, p1=812, p2=389, p3=0, p4=0, p5=151, sr=120, sw=1, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.7.7 (http://www.modsecurity.org/); OWASP_CRS/2.2.5.
Server: Apache/2.4.7 (Ubuntu)
Engine-Mode: "ENABLED"

usr/share/modsecurity-crs/activated_rules/modsecurity_crs_21_protocol_anomalies.conf --> adalah rules yang sedang aktif karena kita langsung mengakses host header dengan IP address

Hapus rules :

rm usr/share/modsecurity-crs/activated_rules/modsecurity_crs_21_protocol_anomalies.conf

Restart apache :

/etc/init.d/apache2 restart

Tes webserver :


ModSecurity log : vim /var/log/apache2/modsec_audit.log 


Selesai, mohon maaf jika ada kekurangan pada tutorial kali ini ...
referensi :
http://www.root25.com/2012/11/how-to-install-modsecurity-on-apache-ubuntu12-stepbystep-tutorial.html

http://cyberlearning.web.id/wiki/index.php/ModSecurity:_Instalasi