iptables: Allow icmp ping Request

Tags: April 30, 2012 1:33 PM
0 comments

Sometimes when debugging network configuration, ping is one of the tools. But many iptables configuration drop all incoming request so here's how to temporary enable it.

iptables -A INPUT -p icmp -j ACCEPT
After all the debugging, it's easy to delete the rule.
iptables -D INPUT -p icmp -j ACCEPT

Share on Facebook Twitter

Compressing mysqldump output with gzip

Tags: April 29, 2012 2:52 PM
0 comments

Compressing mysqldump ouput is a good practice since your sql dump file could be very big. The good thing is the result of the dump is in plain text, so tools such gzip can siginificanly reduce the size.

# mysqldump -u username -ppassword databasename | gzip > dbname.sql.`date +%Y-%m-%d_%H%M%S`.gz
Put it to cron for daily backup. Cron treat '%' as special character so it needs to be escaped.
0 0 * * * mysqldump -u username -ppassword databasename | gzip > dbname.sql.`date +\%Y-\%m-\%d_\%H\%M\%S`.gz

Share on Facebook Twitter

Install Postfix on Ubuntu Server

Tags: 12:02 PM
0 comments

Installing Postfix Mail Transport Agent (MTA) is very simple on ubuntu/debian.

# apt-get install postfix
Common configuration is internet site.

Listen Address

If the server only used by internal application for sending mail, then there is no need to bind to all interfaces. Just bind to loopback interface 127.0.0.1 as is more safe. The configuration located in /etc/postfix/main.cf.
# service postfix restart
# netstat -ntap | grep :25
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      8176/master

Share on Facebook Twitter

MySQL: Updating Table using UPDATE REPLACE Query

Tags: 9:31 AM
0 comments

This query is quite helpful when you moving from development machine to production where your table content is full of dozen 'http://localhost/' links.

Syntax

UPDATE [table] SET [column] = REPLACE(
  [column],
  [old_value],
  [new_value]
) WHERE [column] LIKE [old_value];

Share on Facebook Twitter

Install Comodo PositiveSSL Certificate on Nginx

Tags: 12:23 AM
0 comments

File used when using PositiveSSL are:

  • AddTrustExternalCARoot.crt
  • PositiveSSLCA2.crt
  • the_domain.crt

Concatenate the certificate in reverse order.

cat the_domain.crt > the_domain.pem
cat PositiveSSLCA2.crt >> the_domain.pem
cat AddTrustExternalCARoot.crt >> the_domain.pem

Share on Facebook Twitter

Nginx Redirect www to non-www

Tags: April 28, 2012 10:35 PM
0 comments

Search engine mengenali www.example.com dan example.com sebagai dua website yang berbeda. Oleh karena itu sebaiknya digunakan salah satu saja, dalam contoh yang akan digunakan adalah example.com. Dimana semua URL yang diawali dengan http://www.example.com/apa/saja/ada.html akan diredirect ke http://example.com/apa/saja/ada.html.

Share on Facebook Twitter

Tuning Konfigurasi Apache pada VPS

Tags: 7:29 PM
0 comments

Jika menjalankan website pada VPS yang memorinya terbatas maka proses tuning/optimasi konfigurasi merupakan keharusan. Setiap konfigurasi memiliki dampak yang berbeda-beda tergantung berbagai macam faktor diantaranya hardware dan versi aplikasi yang dijalankan. Jadi tidak ada garansi satu konfigurasi bisa mengatasi semua masalah. Intinya tetap benchmark.

Konfigurasi ini digunakan ketika apache berjalan dibelakang proxy (nginx). Tugas apache hanya menjalankan dynamic content (PHP). Dan versi apache yang dijalankan adalah versi prefork bukan MPM worker.

Share on Facebook Twitter

Memasang RapidSSL Certificate pada Nginx

Tags: 5:37 PM
0 comments

Setelah menggenerate CSR, langkah berikutnya adalah menggabungkan server certificate dan intermediate certificate. Dua-duanya diperoleh setelah proser approval dari CSR. Berikut langkahnya.

Menggabungkan Certificate

Untuk lebih memudahkan, lokasi ssl certificate biasanya dikumpulkan pada direktori /etc/ssl

Share on Facebook Twitter

Generate 2048 bit key CSR OpenSSL

Tags: 4:40 PM
0 comments

Pihak issuer SSL certificate saat ini umumnya meminta Certificate Signing Request (CSR) 2048 bit karena key dengan 1024 sudah dapat "dicrack" dengan kemampuan mesin komputer terbaru. Selain itu dalam proses pembuatan CSR anda diminta untuk tidak memasukkan alamat email dan challenge password.

Share on Facebook Twitter

Konfigurasi Nginx sebagai Reverse Proxy Apache

Tags: 2:49 PM
0 comments

There is no home like Apache mod_php, itu mungkin yang dikatakan PHP. Performa PHP yang berjalan sebagai Fast-CGI process terkadang masih kalah dengan performa mod_php. Keunggulan utama Nginx adalah memory kecil dan sangat cepat dalam memproses static content. Untuk itu kenapa tidak memakai keunggulan dari keduanya sekaligus, mod_php sebagai PHP handler dan Nginx sebagai static content handler. It makes everyone happy :).

Share on Facebook Twitter

Instalasi Apache PHP MySQL pada Ubuntu Server

Tags: 12:13 PM
0 comments

PHP.net merekomendasikan penggunan apache-mpm-prefork karena ada beberapa extension PHP yang masih belum thread safe.

## dengan menginstall libapache2-mod-php5 maka otomatis paket-paket apache ikut terinstall
# apt-get install libapache2-mod-php5

## install PHP APC untuk opcode caching
# apt-get install php-apc

## install ekstensi untuk mysql
# apt-get install php5-mysql

## install mysql server
# apt-get install mysql-server

Share on Facebook Twitter

Instalasi git Pada Ubuntu Linux

Tags: 11:50 AM
0 comments

Proses instalasi berikut menggunakan official repository dari ubuntu bukan kompilasi dari source.

# apt-get install git-core
Setelah instalasi tambahkan user git (tanpa home) dan batasi shell aksesnya.
# useradd -s /usr/bin/git-shell -M git

Share on Facebook Twitter

Add User to a Group in Linux

Tags: 11:31 AM
0 comments

# adduser  

## i.e. we're adding user 'rio' to group 'admin' so he can use sudo command.
# adduser rio admin

Share on Facebook Twitter

Konfigurasi sshd_config Login Tanpa Password

Tags: 11:12 AM
0 comments

Ubah konfingurasi pada /etc/ssh/sshd_config.

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
UsePAM no
Copy-kan dulu public key sebelum direload.

Share on Facebook Twitter

Mengganti Port SSH pada Ubuntu Linux

Tags: 10:50 AM
0 comments

Nomor port yang dapat digunakan pada linux adalah 1-65535. Dalam contoh digunakan port 22222.

# vim /etc/ssh/sshd_config

[-- SNIP --]
# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22222
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
[-- SNIP --]

## Reload kembali service ssh
# service ssh reload

## lihat daftar process yang listen pada port tertentu
# netstat -ntap
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1994/nginx.conf 
tcp        0      0 0.0.0.0:22222           0.0.0.0:*               LISTEN      2026/sshd       
tcp        0    240 106.187.94.18:22        114.79.61.39:38656      ESTABLISHED 2035/0          
tcp6       0      0 :::22222                :::*                    LISTEN      2026/sshd

Share on Facebook Twitter

Flush (reset) iptables rules

Tags: 10:30 AM
0 comments

Sebaiknya dibuat script untuk melakukan flushing iptables agar dapat dieksekusi dilain waktu.

# vim /root/scripts/iptables-flush.sh
[-- SNIP --]
#!/bin/bash

echo "Flushing iptables..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
[-- SNIP --]

# chmod +x /root/scripts/iptables-flush.sh
# /root/scripts/iptables-flush.sh
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Share on Facebook Twitter

Menghapus Satu Baris Rule pada iptables

Tags: 10:04 AM
1 comments

Salah satu cara yang dapat digunakan untuk menghapus sebuah rule di iptables.

## list terlebih dulu daftar rule beserta nomor barisnya
# iptables -L INPUT -n --line-numbers
Chain INPUT (policy DROP)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443 
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22 
5    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED

## hapus rule berdasarkan nomor baris
# iptables -D INPUT 4
# iptables -L -n --line-numbers
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443 
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
Referensi:

Share on Facebook Twitter

Setting iptables pada Ubuntu

Tags: 6:05 AM
0 comments

Setting berikut secara default memblok semua paket yang masuk kecuali pada port 22, 80 dan 443.

# cek dulu apakah sudah ada settingan sebelumnya
# iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

# settingan dapat dihapus dengan opsi flush

Share on Facebook Twitter

Remove Key from SSH known_hosts File

Tags: April 18, 2012 1:55 PM
0 comments

Are you getting message like shown below while trying to connect using SSH?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
bb:cc:6d:a8:a9:cb:47:28:ea:1d:90:5a:aa:zz:yy:xx.
Please contact your system administrator.
Add correct host key in /home/astadev/.ssh/known_hosts to get rid of this message.
Offending key in /home/astadev/.ssh/known_hosts:68
RSA host key for 106.x.y.z has changed and you have requested strict checking.
Host key verification failed.

Solution

To getting rid of the message is easy, just issue simple command below. Remember to replace 127.0.0.1 with your server address.
$ ssh-keygen -R 127.0.0.1

Share on Facebook Twitter

Login SSH tanpa Password

Tags: April 2, 2012 7:43 AM
0 comments

Untuk dapat login tanpa menggunakan password maka diperlukan pembuatan private dan public key terlebih dulu. Selanjutnya copy isi public key (default id_rsa.pub) ke server SSH dan letakkan pada /home/user/.ssh/authorized_keys. Pengcopyan dapat dilakukan secara manual atau menggunakan tools seperti ssh-copy-id.

$ ssh-copy-id <user>@<host>
Selanjutnya proses login SSH dapat dilakukan seperti biasa, hanya saja sekarang tidak muncul prompt password.
$ ssh <user>@<host>

# jika menggunakan private key selain /home/user/id_rsa maka dapat digunakan opsi -i
$ ssh -i /lokasi/ke/private_key <user>@<host>

Share on Facebook Twitter

How to Count String Length using Shell

Tags: 7:14 AM
0 comments

Bash Variable: The POSIX Way

$ MYSTRING="Speed of Light"
$ echo ${#MYSTRING}
14

Using wc

$ echo -n "Speed of Light"
14

Using expr

This is not POSIX complaint.

$ expr length "Speed of Light"
14

Share on Facebook Twitter