Skip to main content
  1. Posts/

How to Block IP Targeting Specific Domains

·2 mins·
linux linux
Table of Contents

Selain menggunakan ModSecurity, cara alternatif untuk memblokir pengakses yang membuat permintaan ke domain tertentu adalah dengan menggunakan iptables. IPtables adalah utilitas linux yang memungkinkan Anda mengonfigurasi aturan firewall pada tingkat OS seperti memblokir berdasarkan alamat IP, port dan protokol.

iptables
#

Berikut adalah aturan firewall yang dapat Anda gunakan untuk memblokir IP yang membuat permintaan ke domain tertentu.

iptables -A INPUT -p tcp --match multiport --dport 80,443 \
 -m string --string 'DOMAIN' --algo bm -j DROP

iptables + ipset
#

Buat file index.php lalu tambahkan baris berikut.

<?php
// contents of FORBIDDEN.YourDomain.com/index.php
// spits out one UDP packet at the web visitor's port 911
// the 911 packet is intended to be detected, processed and dropped with firewall rules
$remoteaddr = $_SERVER['REMOTE_ADDR'];
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_sendto($sock, "NOPE", 4, 0, $remoteaddr, 911);
socket_close($sock);

Kemudian buat ipset baru dengan nama ipset_temp_blocklist lalu atur timeout selama 4 jam (14400 detik).

ipset create ipset_temp_blocklist \
    hash:ip \
        family inet \
        hashsize 4096 \
        maxelem 65536 \
        timeout 14400 \
        counters \
        comment

Selanjutnya buat rule iptables dengan chain ADD_TEMP_BAN seperti berikut.

iptables -N ADD_TEMP_BAN
iptables -A ADD_TEMP_BAN -j SET --add-set ipset_temp_blocklist dst
iptables -A ADD_TEMP_BAN -j DROP
iptables -A OUTPUT -p udp --dport 911 -j ADD_TEMP_BAN

Rule iptables tersebut akan membuat IP pengakses skrip PHP dapat dikumpulkan ke dalam ipset ipset_temp_blocklist.

Lalu tambahkan rule berikut untuk memblokir akses masuk ke port 80 (http) dan 443 (https).

iptables -A INPUT -i eth0 -p tcp -m multiport --dports 80,443 -m set --match-set ipset_temp_blocklist src -j DROP

Gunakan perintah berikut untuk melihat list IP yang diblokir.

ipset list ipset_temp_blocklist

Referensi:

Related

Compiling Custom Kernel Modules
·3 mins
linux linux centos
Reinstalling GRUB Bootloader
·1 min
linux linux centos
Troubleshoot grub2-install: error: unknown filesystem
·2 mins
linux linux
Setting Default Kernel in Linux
·2 mins
linux linux centos ubuntu
Use RAM to Store Temporary Data
·2 mins
linux linux
Change User Agent in wget Command
·1 min
linux linux