Proteksi Server dari Scanning Port dan DDoS Dengan IPTABLES
by servindo
Pada tahapan aksi hacking, yang pertama adalah Information Gathering atau mencari informasi korban sebanyak-banyaknya, mulai dari mencari kelemahan sistem, mencari port yang terbuka, versi software yang berjalan, Google hacking, dan lain sebagainya.
Tutorial kali ini akan membahas agar server terjaga dari aksi port scanning, tujuan dari port scanning biasanya untuk mencari port SSH yang sudah diubah, apakah service FTPnya berjalan, apakah port database servernya terbuka untuk melakukan remote database, apakah ada service dari proxy, dan lain sebagainya.
Untuk memproteksi serangan port scanning dapat dilakukan menggukan firewall atau IPTables, sedangkan pada serangan DDoS, firewall akan membatasi koneksi, namun tidak jaminan firewall dapat mencegah serangan DDoS.
Rule dibawah ini hanyak untuk memfilter koneksi INPUT/incomming, dapat dicustomisasi jika ingin memilter OUTPUT/outgoing.
Untuk mempermudah, membuat sebuah script bash
[[email protected] ~]# vim iptables.sh
Isi dengan script:
#!/bin/sh # # # Script is for stoping Portscan and smurf attack ### first flush all the iptables Rules iptables -F # INPUT iptables Rules # Accept loopback input iptables -A INPUT -i lo -p all -j ACCEPT # allow 3 way handshake iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ### DROPspoofing packets iptables -A INPUT -s 10.0.0.0/8 -j DROP iptables -A INPUT -s 169.254.0.0/16 -j DROP iptables -A INPUT -s 172.16.0.0/12 -j DROP iptables -A INPUT -s 127.0.0.0/8 -j DROP iptables -A INPUT -s 192.168.0.0/24 -j DROP iptables -A INPUT -s 224.0.0.0/4 -j DROP iptables -A INPUT -d 224.0.0.0/4 -j DROP iptables -A INPUT -s 240.0.0.0/5 -j DROP iptables -A INPUT -d 240.0.0.0/5 -j DROP iptables -A INPUT -s 0.0.0.0/8 -j DROP iptables -A INPUT -d 0.0.0.0/8 -j DROP iptables -A INPUT -d 239.255.255.0/24 -j DROP iptables -A INPUT -d 255.255.255.255 -j DROP #for SMURF attack protection iptables -A INPUT -p icmp -m icmp --icmp-type address-mask-request -j DROP iptables -A INPUT -p icmp -m icmp --icmp-type timestamp-request -j DROP iptables -A INPUT -p icmp -m icmp -m limit --limit 1/second -j ACCEPT # Droping all invalid packets iptables -A INPUT -m state --state INVALID -j DROP iptables -A FORWARD -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP # flooding of RST packets, smurf attack Rejection iptables -A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/second --limit-burst 2 -j ACCEPT # Protecting portscans # Attacking IP will be locked for 24 hours (3600 x 24 = 86400 Seconds) iptables -A INPUT -m recent --name portscan --rcheck --seconds 86400 -j DROP iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP # Remove attacking IP after 24 hours iptables -A INPUT -m recent --name portscan --remove iptables -A FORWARD -m recent --name portscan --remove # These rules add scanners to the portscan list, and log the attempt. iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "portscan:" iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "portscan:" iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP # Allow the following ports through from outside iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 43 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT # Allow ping means ICMP port is open (If you do not want ping replace ACCEPT with REJECT) iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT # Lastly reject All INPUT traffic iptables -A INPUT -j REJECT # Simpan perubahan iptables-save
Chmod agar executable.
[[email protected] ~]# chmod +x iptables.sh
Kemudian jalankan scriptnya:
[[email protected] ~]# ./iptables.sh
Script diatas akan menbanned IP attacker selama 1hari, dan attacker tidak dapat melakukan koneksi ke server kecuali masih dapat melakukan PING ke server. Perhatikan juga port yang terbuka pada server dan tambahkan jika perlu dan dapat diubah lamanya melakukakan banning IP.
Untuk melihat adanya aksi port scanning, dapat dilihat di log messagenya
[[email protected] ~]# tail /var/log/messages[/codes]
Recommended Posts
Membuat Backup Automatis Database menggunakan Cronjob
November 22, 2017
Konfigurasi Master dan Slave DNS di CentOS
November 22, 2017
Full Backup Databases dan Restore Melalui Command Line
November 21, 2017