Satu lagi artikel untuk para admin jaringan nih, kali ini saya akan mencoba menjelaskan langkah demi langkah untuk melakukan filter MAC address dengan menggunakan iptables. Pertanyaannya buat apa sih kita pake filter-filter segala?? jawabannya adalah sebagai langkah pengamanan jaringan komputer yang kita kelola. Dengan menerapkan filtering MAC address, kita dapat memastikan komputer mana saja yang dapat terhubung dan menggunakan jaringan komputer. Pertama-tama mari kita lihat definisi dari MAC address. MAC Address (Media Access Control Address) adalah sebuah alamat jaringan yang diimplementasikan pada lapisan data-link dalam OSI Reference Model tujuh lapisan model OSI, yang merepresentasikan sebuah node tertentu dalam jaringan. Dalam sebuah jaringan berbasis Ethernet, MAC address merupakan alamat yang unik yang memiliki panjang 48-bit (6 byte) yang mengidentifikasikan sebuah komputer, interface dalam sebuah router, atau node lainnya dalam jaringan. MAC Address juga sering disebut sebagai Ethernet address, physical address, atau hardware address. from : (http://id.wikipedia.org/wiki/mac_address) Lumayan berat kan bahasanya :p, sederhananya sih mac address itu adalah nama/alamat dari interface jaringan yang kita miliki. Mau itu ethernet,wireless ethernet,modem, pasti semuanya punya MAC address :). Cara untuk melihat mac address adalah dengan mengetikan perintah ifconfig. Ayo kita coba : 1 / 26
ifconfig maka akan muncul informasi sebagai berikut : Informasi MAC address dapat dilihat pada pada tulisan Hwaddr yang biasanya ditulis dengan format 2 digit angka yang dipisahkan titik dua (:). Contohnya seperti 00:19:21:c5:29:83 Mari kita beranjak ke teknis cara filtering Pertama-tama kita harus membuat skrip iptables yang akan disimpan di direktori /etc/init.d/ : nano /etc/init.d/iptables 2 / 26
Isi skripnya adalah sebagai berikut : #!/bin/sh # Start/stop/restart firewall # Minimal ip.tables for router.45 iptables="/sbin/iptables" modprobe="/sbin/modprobe" 3 / 26
SERVIS="/etc/iptables/servis" MACFILE="/etc/iptables/macfile" # Start firewall firewall_start() { # enable ip_conntrack $modprobe ip_conntrack 4 / 26
$modprobe ip_conntrack_ftp # tcp properties echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo "Starting firewall.. " # flush rules 5 / 26
$iptables -F $iptables -X $iptables -Z #$iptables -t nat -F #$iptables -t nat -X #$iptables -t nat -Z 6 / 26
# default policy $iptables -P INPUT ACCEPT $iptables -P FORWARD DROP $iptables -P OUTPUT ACCEPT # Aktifkan service sesuai dengan list yang di ijinkan # Service dibatasi hanya untuk lingkungan / Segmen Tertentu 7 / 26
# if [ -e $SERVIS ]; then # while read line # do # servis="$(echo $line cut -d " " -f1)" # protokol="$(echo $line cut -d " " -f2)" # alamat="$(echo $line cut -d " " -f3)" 8 / 26
# # Servis yang di ijinkan # #$iptables -A INPUT -p $protokol -m $protokol -s $alamat --dport $servis -j ACCEPT # $iptables -A INPUT -p $protokol -m $protokol -s! $alamat --dport $servis -j DROP # done # fi ## ATURAN FORWARD 9 / 26
$iptables -A FORWARD -p tcp --dport 135:139 -j DROP $iptables -A FORWARD -p udp --dport 135:139 -j DROP $iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ## Filter registered MAC & IP if [ -e $MACFILE ]; then while read line 10 / 26
do macaddr="$(echo $line cut -d " " -f1)" #ipaddr="$(echo $line cut -d " " -f2)" # Allow registered MAC & IP $iptables -A FORWARD -m mac --mac-source $macaddr -j ACCEPT done 11 / 26
fi # $iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #$iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 8080 #$iptables -t nat -A PREROUTING -i br0 -p tcp --dport 3128 -j REDIRECT --to-port 8080 #$iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128 } 12 / 26
firewall_stop() { echo "Shutting down firewall.. " # disable tcp syncookies echo 0 > /proc/sys/net/ipv4/tcp_syncookies # accept default policy $iptables -F 13 / 26
$iptables -X $iptables -Z $iptables -P INPUT ACCEPT $iptables -P OUTPUT ACCEPT $iptables -P FORWARD DROP } 14 / 26
firewall_restart() { firewall_stop firewall_start } firewall_status() { $iptables -n -L 15 / 26
} case "$1" in 'start' ) firewall_start ;; 'stop' ) 16 / 26
firewall_stop ;; 'restart' ) firewall_restart ;; 'status' ) 17 / 26
firewall_status ;; *) echo "usage $0 start stop restart status" esac Kalo sudah selesai jangan lupa menyimpan file dan ubah mode-nya menjadi 755 18 / 26
cd /etc/init.d/ sudo chmod 755 iptables Langkah kedua adalah membuat aturan Service dan Macfile sesuai dengan yang ada di baris skrip iptables yang sebelumnya kita buat (SERVIS="/etc/iptables/servis" MACFILE="/etc/iptables/macfile") cd /etc sudo mkdir iptables cd iptables 19 / 26
Membuat file macfile untuk list filter MAC address nano macfile Isi file macfile : 00:1f:29:bd:1e:a2 nama-komputer #20101025 00:00:00:00:00:00 #DUMMY, MASUKAN MAC ADDRESS SEBELUM BARIS INI + TGL 20 / 26
Formatnya adalah MAC address,nama komputer,dan tanggal modifikasi Setelah selesai save file dan buatlah file servis nano servis Isi filenya sebagai berikut : 137 udp 192.168.1.0/26 netbios-ns 138 udp 192.168.1.0/26 netbios-dgm 21 / 26
139 tcp 192.168.1.0/26 netbios-ssn 445 tcp 192.168.1.0/26 microsoft-ds 3306 tcp 192.168.1.0/26 mysql 3306 udp 192.168.1.0/26 mysql Isi dari file servis memungkinkan kita untuk melakukan filter terhadap port yang diperbolehkan bekerja pada iptables. Setelah disimpan Selanjutnya ubahlah mode file macfile dan servis 22 / 26
cd /etc/iptables sudo chmod 755 macfile sudo chmod 755 servis kita lakukan restart pada iptables. sudo /etc/init.d/iptables restart Jika berhasil dan tidak ada error akan muncul tampilan sebagai berikut : 23 / 26
Done,, filtering MAC addressnya sudah berfungsi, itu artinya MAC address yang tidak didaftarkan di file /etc/iptables/macfile tidak akan dapat menggunakan service server :) From [1] Command Description # iptables -t filter -L show all chains of filtering table # iptables -t nat -L show all chains of nat table # iptables -t filter -F clear all rules from filtering table 24 / 26
# iptables -t nat -F clear all rules from table nat # iptables -t filter -X delete any chains created by user # iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT allow telnet connections to input # iptables -t filter -A OUTPUT -p tcp --dport http -j DROP block HTTP connections to output # iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT allow POP3 connections to forward chain # iptables -t filter -A INPUT -j LOG --log-prefix Logging on input chain 25 / 26
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE configure a PAT (Port Address Traslation) on eth0 masking outbound packets # iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22 redirect packets addressed to a host to another host Kontributor: Dwiharyanto, Estiyand Sumber : http://saung.igoscenter.org 26 / 26