| Home | | |


Thursday, October 20, 2005

Membangun Firewall dengan Iptables

Firewall digunakan untuk melindungi atau membatasi akses komputer
atau jaringan ke dunia luar, seperti internet.
Salah satu firewall yang sering digunakan adalah iptables yang ada
didalam sistem operasi linux.

Mengenal iptables

Pada distribusi linux yang baru, iptables secara default dudah terinstall.
Pastikan kernel dari sistem linux yang digunakan adalah kernel 2.4 ke atas
dengan iptables(netfilter) aktif. Menjalankan iptables dengan user root.
perintah untuk berpindah ke user root:
# su -
Setelah menjadi root, panggil iptables dengan perintah:
# iptables
atau
#/sbin/iptables
jika iptables sudah aktif akan muncul:
# iptables
----
----
untuk mengetahu parameter apa saja yang digunakan di dalam iptables,
gunakan perintah:
# iptables -h
----
----
atau menggunakan # man iptables

Membangun firewall
catatan: perintah-perintah dilinux bersifat case sensitif oleh sebab itu perhatikan
pemakain huruf kecil maupun besar.

1. reset firewall
Rule yang perlu dibuat adalah mengosongkan semua jalur firewall dengan melakukan flushing.
# iptables -F INPUT
# iptables -F OUTPUT
# iptables -F FORWARD
# iptables -nvL (utk mengecek kondisi rule dari firewall)
2. membatasi semua akses kecuali yang diperbolehkan.
memblokir(DROP) jalur INPUT
# iptables -P INPUT DROP
untuk mengetes lakukan pinging firewall sebelum dan sesudah perintah dieksekusi.
3. membuka akses kelayanan DNS
membuka akses berbasis UDP, yaitu DNS server pada port 53.
# iptables -A INPUT -p UDP -s 0/0 --dport 53 -j ACCEPT
perintah diatas berarti, tambahkan atau append (-A) pada chain INPUT, paket yang berjenis
UDP (-p UDP) dengan alamat source sembarang (-s 0/0) dan destination port adalah 53 (--dport 53),
kemudian perkenankan paket tersebut(-j ACCEPT).
4. membatasi akses dari sebuah alamat
membatasi akses dari sebuah nomor IP
# iptables -I INPUT -s $BAD_IP/32 -j DROP
perintah diatas berarti, kita ingin menyisipkan perintah di input chain, jika source address
berasal dari $BAD_IP(tanda"/32"menyatakan bahwa dia berupa satu host), maka dia langsung di-DROP.
$BAD_IP tersebut dapat kita gantikan dengan nomor IP.
# iptables -A INPUT -s 192.168.4.12 -j DROP
ini berarti alamat IP 192.168.4.12 tidak bisa mengakses firewall, dan jika sebaliknya
komputer yang menjalankan iptables tidak dapat berkomunikasi dengan pemilik IP 192.168.4.12
maka chain yg digunakan adalah OUTPUT dan parameter -s diganti dengan -d(destination) atau tujuan.
# iptables _A OUTPUT -d 192.168.4.12 -j DROP
5. membatasi akses dari sejumlah alamat
# iptables -I INPUT -s $BAD_NET/25 -j LOG
# iptables -I INPUT -s $BAD_NET/25 -j DRop
6. memperbolehkan akses ke web server
web server berada pada port 80
# iptables -A INPUT -P TCP -s 0/0 -dport 80 -j ACCEPT
7. memperbolehkan akses ke layanan TCP yang lebih kompleks
rule yang dibuat: membatasi akses ke server HTTP (port 80) dan FTP (port 21) serta stateful,
yaitu mencatat state paket yang established, related.
# iptables -A goodtcp -p TCP --syn -j ACCEPT
# iptables -A goodtcp -p TCP -m state --state ESTABLISHED, RELATED, -j ACCEPTED
# iptables -A goodtcp -p TCP -j DROP

# iptables -A tcpsrv -p TCP -s 0/0 --dport 80 -j goodtcp
# iptables -A tcpsrv -p TCP -s 0/0 --dport 21 -j goodtcp

a# iptables -A INPUT -p tcp --syn -destination-port 80 -j ACCEPT
b# iptables -A INPUT -p tcp --syn -s 192.168.4.12 --destination-port 22 -j ACCEPT
c# iptables -A INPUT -p tcp --syn -j DROP
a? mengijinkan komputer lain mengakses port 80 (web server)
b? mengijinkan pemilik IP 192.168.4.12 mengakses port 22 (SSH)
c? menutup semua akses lain selain akses dengan paket yg sesuai dengan aturan sebelumnya.

dRop paket yang tcp yang NEW tapi tidak membuat SYN flag
# iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP
# iptables -A INPUT -p TCP -j tcpsrv
d# iptables -A INPUT -p TCP --destination-port telnet -i eth0 -j DROP
d? menutup koneksi telnet pada jaringan internet(-i eth0), tidak pada LAN(eth1).

*untuk melihat aturan yang sudah ada pada chain, gunakan parameter -L;
# iptables -L
parameter -R untuk mengganti sebuah aturan dengan aturan yang baru.
parameter -D untuk menghapus sebuah aturan.
parameter -F untuk menghapus seluruh aturan pada chain.

Read More......

Mematikan Service-service yang tidak Diperlukan

Keamanan server tergantung banyak tidaknya service yang berjalan pada system.
Biasanya didalam installasi default linux menyediakan banyak service seperti
web server(apache), e-mail(exim,postfix,qmail), FTP(proftpd), DNS server(bind9) dan lain-lain.
Padahal belum tentu semua service tersebut diperlukan.

untuk mengetahui proses apa saja yang berjalan pada server,
gunakan perintah:
# ps -aux
atau
# pstree
Dan untuk melihat port yang digunakan oleh masing-masing service, gunakan perintah:
# netstat -atu
------
Beberapa distribusi seperti Red Hat menggunakan perintah chkconfig untuk melihat
service apa saja yang akan dijalankan ketika server dihidupkan. Perintahnya adalah
sebagai berikut:
# chkconfig --list
Perintah diatas akan menampilkan service apa saja yang dihidupkan beserta dengan run
level-nya masing-masing. Untuk mematikan service yang tidak diperlukan, gunakan parameter --del,
perintah:
# chkconfig --del service(nama service)
Untuk mengetes service yang sudah dikurangi tersebut dengan cara me restart server.
------
# shutdown -r now
setelah itu cek dengan menggunakan perintah ps atau pstree dan netstat.

untuk mematikan atau menghidupkan service maupun aplikasi setiap saat;
# /etc/init.d/service

Mematikan layanan atau service standalone
untuk meringankan proses booting dengan mematikan service yang tidak diperlukan.
proses booting;
1.pertama kernel akan berjalan
2.setelah itu program init akan dijalankan
3.program init akan membaca file /etc/inittab untuk melihat run level berapa yang akan
dijalankan, untuk lebih jelasnya lihatlah file tersebut.
4.kemudian program init akan memanggil modul-modul yang diperlukan oleh kernel.
5.setelah itu, program init akan menjalankan layanan-layanan yang diperlukan, sesuai
dengan run level. misalnya jika run level yang digunakan adalah 5, maka semua script yang
ada pada direktori /etc/rc5.d/ akan dijalankan, jika run level yang digunakan
adalah 3, maka script yang dijalankan adalah yang ada di direktori /etc/rc3.d/.
6.Terakhir, program init akan menjalankan sebuah script( biasanya /etc/rc.local)
yang berisi program-program berjalan otomatis ketika komputer dihidupkan.

proses diatas sudah disederhanakan supaya lebih mudah untuk dipahami. Lihatlah direktori
/etc/rc5.d/ (diasumsikan run level yang digunakan adalah 5), setiap script memiliki nama yang
berawalan dengan S (singkatan dari start) atau K (yang artinya kill atau mati) kemudian
diikuti dengan nomor, nomor tersebut menunjukkan urutan script dijalankan.

Cara yang paling mudah untuk mematikan suatu layanan adalah dengan memindahkan script
tersebut ke direktori lain. menggunakan perintah mv, misal;
# mv /etc/rc5.d/S20exim4 /home/denny/backup/
perintah diatas untuk memindahkan script untuk layanan exim4(mail server) ke direktori
/home/denny/backup/. dan jika layanan tersebut dibutuhkan maka kembalikan script tersebut
ketempat semula.

Read More......
 

Home | Blogging Tips | Blogspot HTML | Make Money | Payment | PTC Review

Denoxcyber © Template Design by Herro | Publisher : Templatemu