Netfilter adalah satu set kait di dalam kernel Linux yang memungkinkan modul kernel untuk mendaftarkan fungsi callback. Sebuah fungsi callback terdaftar kemudian dipanggil kembali untuk setiap paket yang melintasi kail masing-masing dalam tumpukan jaringan.Firewall berbasis linux ini dikendalikan oleh program yang di sebut iptables untuk melakukan pemilteran IPv4 atau IPv6. Beberapa contoh penerapan iptables di bawah ini adalah umum saya kira dan banyak digunakan sebagai pembanding dan sebagainya untuk sisi konfigurasi lebih advance lagi, berikut contoh-contoh aturan iptables :Catatan:
- Tanda # di depan aturan adalah status login root.
- Pada contoh rule aturan iptables yang panjang dan tidak muat dalam 1 baris pada posting di bawah maka hati-hati jika langsung di copy, pastikan rule penulisannya tersambung atau bisa menggunakan "\" untuk menyatukan 2 baris rule iptables .
- Tanda # di depan suatu comment dalam script bukan aturan dan tidak akan di eksekusi
- # iptables -L
lebih detail bisa dengan :
- # iptables -L -n -v
Dimana :-L adalah list aturan-n adalah menampilkan alamat IP dan port dalam format numerik. Jangan gunakan DNS untuk menyelesaikan nama. Hal ini akan mempercepat daftar.
- -v adalah menampilkan rincian informasi. Pilihan ini membuat perintah list untuk menampilkan nama interfaces, opsi aturan, dan mask TOS. Counter paket dan byte juga tercantum, dengan akhiran 'K', 'M' atau 'G' untuk 1000, 1.000.000 dan 1000000000.
- # iptables -n -L -v --line-numbers
-
Dengan cara ini kita bisa menghapus/menambahkan aturan nomor berapa akan di rubah
- # iptables -L OUTPUT -n -v --line-numbers
- # service iptables restart
- # iptables -P FORWARD ACCEPT
Dimana :-F adalah penghapusan (flushing) semua aturan atau rules-X adalah penghapusan chain (rantai)-t nama_tabel adalah pemilihan tabel (di sebut nat atau mangle) dan hapus/flush aturan.
- -P adalah mengatura kebijakan default pada chain/rantai (seperti DROP, REJECT, atauACCEPT)
- Menghapus aturan pada chain, misal INPUT atau OUTPUT
Pertama, lihat list penomoran aturan iptables pada chain INPUT atau OUTPUT# iptables -L INPUT -n --line-numbers
- # iptables -L OUTPUT -n --line-numbers
Kedua, tentukan nomor berapa yang hendak di hapus, dalam contoh misal nomor 4 :
- # iptables -D INPUT 4
- Atau cara manual bisa dengan dari mengetik ulang aturan yang sama namun opsi -A di ganti -D
Dimana:
- -D adalah delete/hapus
- # iptables -L INPUT -n --line-numbers
Misal contoh output di konsol dari hasil command di atas adalah sebagai berikut :Chain INPUT (policy DROP)num target prot opt source destination1 DROP all -- 202.54.1.1 0.0.0.0/0
- 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED
- # iptables -I INPUT 2 -s 202.54.1.2 -j DROP
Cek update terbaru aturan pada chain tersebut :
- # iptables -L INPUT -n --line-numbers
dan output konsolenya sebagai berikut :Chain INPUT (policy DROP)num target prot opt source destination1 DROP all -- 202.54.1.1 0.0.0.0/02 DROP all -- 202.54.1.2 0.0.0.0/0
- 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED
- # service iptables save
Untuk distro keluarga linux lainnya gunakan perintah save yang di sertakan spesifik, misal :
- # iptables-save > /root/firewall.rules
Dimana :
- Penyimpanan semua aturan iptables akan di simpan ke direktori /root dengan nama file firewall.rule
- Untuk alternatif lain melakukan save di keluarga debian/ubuntu dan lainnya silahkan buka lagi posting saya sebelumnya tentang cara save iptables di keluarga debian/ubuntu.
- # iptables-restore < /root/firewall.rules
Kemudian di restart iptablesnya jika di keluarga/turunan RHEL
- # service iptables restart
- # iptables -P INPUT DROP
- # iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
- # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
- # iptables -A INPUT -s 192.168.0.0/24 -j DROP
- Tambahkan -i eth* jika ingin menspesifikan pada interface tertentu
- # iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
Blok dari ip 192.168.0.22 jika merequest port 80 (http) :# iptables -A INPUT -p tcp -s 192.168.0.22 --dport 80 -j DROP
- # iptables -A INPUT -i eth1 -p tcp -s 192.168.0.22/32 --dport 80 -j DROP
- # grep --color 'IP SPOOF' /var/log/messages
- # iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:0F:EA:91:04:07 -j ACCEPT
- # iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
Blok semua traffic masuk protokol jenis icmp pada interfaces eth1
- # iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
- # iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
- # iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:8000 -j ACCEPT
- # iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.168.0.100-192.168.0.200 -j ACCEPT
Contoh pada NAT, dimana proses terjadi setelah routing :
- # iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.0.100-192.168.0.200
- IPTABLES_MODULES_UNLOAD = no
- # iptables -A INPUT -s 1.2.3.4 -p tcp --destination-port 80 -j LOG --log-level crit
Blok atau buka port umum yang terbuka.Sisipkan ACCEPT dengan DROP untuk memblok port (ini di tulis dalam sebuah script) :## buka port ssh tcp port 22 ##iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
- iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
## buka cups (layanan printing) udp/tcp port 631 untuk user di LAN ##iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT
- iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT
## Setujui sinkronisasi waktu via NTP untuk user di LAN (buka udp port 123) ##
- iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT
## buka port tcp 25 (smtp) untuk semua ##
- iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
## buka port dns server untuk semua ##iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
- iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
## buka http/https (apache) server port untuk semua ##iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
- iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
## buka tcp port 110 (pop3) untuk semua ##
- iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT
## open tcp port 143 (imap) for all #### buka tcp port 143 (imap) untuk semua ##
- iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT
## buka akses ke samba file server hanya untuk user LAN saja ##iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPTiptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPTiptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT
- iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT
## buka akses ke proxy server hanya untuk user LAN saja ##
- iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 3128 -j ACCEPT
## buka akses ke mysql server hanya untuk user LAN saja ##
- iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
- Kita dapat menggunakan modul connlimit untuk menempatkan pembatasan tersebut. Untuk memungkinkan hanya 3 koneksi per host ssh klien, masukkan : # iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
Set request HTTP ke 20 :
- # iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP
- # man iptables
- atau
- # iptables -h
Untuk melihat perintah iptables secara lebih spesifik, misal mengenai -j DROP :
- # iptables -j DROP -h
- # netstat -tulpn
Cari tahu apakah tcp port 80 terbuka atau tidak :
- # netstat -tulpn | grep :80
Jika port 80 tidak terbuka, start-kan apache :
- # service httpd start
- atau
- # /etc/init.d/apache2 start
Memastikan iptables mengijinkan akses ke port 80 :
- # iptables -L INPUT -v -n | grep 80
Jika tidak, buka port 80 menggunakan iptables untuk semua pengguna:# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
- # service iptables save
Gunakan perintah telnet untuk melihat apakah firewall memungkinkan untuk terhubung ke port 80:
- # telnet www.ncupisme.blogspot.com 80
Contoh outputnya kurang lebih sebagai berikut :Trying 75.126.153.206...Connected to www.ncupisme.blogspot.com.Escape character is '^]'.^]telnet> quit
- Connection closed.
Kita juga dapat menggunakan nmap untuk menyelidiki server kita sendiri dengan menggunakan sintaks sebagai berikut:
- # nmap -sS -p 80 www.ncupisme.blogspot.com
Contoh output :Starting Nmap 5.00 ( http://nmap.org ) at 2011-12-13 13:19 ISTInteresting ports on www.ncupisme.blogspot.com (75.126.153.206):PORT STATE SERVICE80/tcp open http
- Nmap done: 1 IP address (1 host up) scanned in 1.00 seconds
- Disarankan juga kalian menginstal dan menggunakan sniffer seperti ngrep tcpdupm dan untuk menguji pengaturan firewall.
Tidak ada komentar:
Posting Komentar