Skip to main content

Konfigurasi iptables linux

Sumber:
https://networklessons.com/uncategorized/iptables-example-configuration


IPTables is a very powerful firewall that allows you to protect your Linux servers. I have been looking for some best practices to protect a server from the Internet and after collecting some examples here and there I came up with the following rules. This will block all the bad stuff, allow inbound SSH and also allows outgoing traffic from the server itself.

Don’t just copy and paste this script as there is always a change to block some legitimate traffic, look at the example and then decide for yourself what you want to use. Having said that, let’s take a look:

*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# ACCEPT LOOPBACK
-A INPUT -i lo -j ACCEPT
# FIRST PACKET HAS TO BE TCP SYN
-A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# DROP FRAGMENTS
-A INPUT -f -j DROP

# DROP XMAS PACKETS
-A INPUT -p tcp --tcp-flags ALL ALL -j DROP

# DROP NULL PACKETS
-A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# DROP EXCESSIVE TCP RST PACKETS
-A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/second --limit-burst 2 -j ACCEPT

# DROP ALL INVALID PACKETS
-A INPUT -m state --state INVALID -j DROP
-A FORWARD -m state --state INVALID -j DROP
-A OUTPUT -m state --state INVALID -j DROP

# DROP RFC1918 PACKETS
-A INPUT -s 10.0.0.0/8 -j DROP
-A INPUT -s 172.16.0.0/12 -j DROP
-A INPUT -s 192.168.0.0/16 -j DROP

# DROP SPOOFED PACKETS
-A INPUT -s 169.254.0.0/16 -j DROP
-A INPUT -s 127.0.0.0/8 -j DROP
-A INPUT -s 224.0.0.0/4 -j DROP
-A INPUT -d 224.0.0.0/4 -j DROP
-A INPUT -s 240.0.0.0/5 -j DROP
-A INPUT -d 240.0.0.0/5 -j DROP
-A INPUT -s 0.0.0.0/8 -j DROP
-A INPUT -d 0.0.0.0/8 -j DROP
-A INPUT -d 239.255.255.0/24 -j DROP
-A INPUT -d 255.255.255.255 -j DROP

# ICMP SMURF ATTACKS + RATE LIMIT THE REST
-A INPUT -p icmp --icmp-type address-mask-request -j DROP
-A INPUT -p icmp --icmp-type timestamp-request -j DROP
-A INPUT -p icmp --icmp-type router-solicitation -j DROP
-A INPUT -p icmp -m limit --limit 2/second -j ACCEPT

# ACCEPT SSH
-A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

# DROP SYN-FLOOD PACKETS
-A INPUT -p tcp -m state --state NEW -m limit --limit 50/second --limit-burst 50 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -j DROP

# ALLOW ESTABLISHED CONNECTIONS
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

COMMIT

Explanation of Rules

Accept Loopback Traffic

-A INPUT -i lo -j ACCEPT

We should permit local traffic on the server.

First TCP segment requires SYN bit

-A INPUT -p tcp ! --syn -m state --state NEW -j DROP

When TCP establishes a connection it will perform a 3 way handshake. The first TCP packet always has the SYN bit set. If it doesn’t have this, we will drop the traffic.

No Fragments allowed

-A INPUT -f -j DROP

We don’t allow fragmented IP Packets.

XMAS Packets

-A INPUT -p tcp --tcp-flags ALL ALL -j DROP

A TCP packet that has all the flags set is called a XMAS packet and should never be accepted.

Null Packets

-A INPUT -p tcp --tcp-flags ALL NONE -j DROP

A Null packet is a TCP packet without any flags. This is never used in legitimate traffic so it should be dropped.

Excessive TCP RST Packets

-A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/second --limit-burst 2 -j ACCEPT

The TCP RST (Reset) is used to abort a TCP connection so we shouldn’t see many of these at the same time. They are accepted but limited to 2 per second with a burst of 2.

Invalid Packets

-A INPUT -m state --state INVALID -j DROP
-A FORWARD -m state --state INVALID -j DROP
-A OUTPUT -m state --state INVALID -j DROP

When using stateful packet inspection, a packet can be new, established or related. When it’s not one of these, it is considered invalid and should be dropped.

RFC 1918 Packets

-A INPUT -s 10.0.0.0/8 -j DROP
-A INPUT -s 172.16.0.0/12 -j DROP
-A INPUT -s 192.168.0.0/16 -j DROP

On the Internet we should never see IP packets from private IP addresses so we’ll drop them.

Spoofed Packets

-A INPUT -s 169.254.0.0/16 -j DROP
-A INPUT -s 127.0.0.0/8 -j DROP
-A INPUT -s 224.0.0.0/4 -j DROP
-A INPUT -d 224.0.0.0/4 -j DROP
-A INPUT -s 240.0.0.0/5 -j DROP
-A INPUT -d 240.0.0.0/5 -j DROP
-A INPUT -s 0.0.0.0/8 -j DROP
-A INPUT -d 0.0.0.0/8 -j DROP
-A INPUT -d 239.255.255.0/24 -j DROP
-A INPUT -d 255.255.255.255 -j DROP

We shouldn’t see the ranges above so when we do, they are considered as spoofed and dropped.

ICMP Smurf Attack and Rate Limit

-A INPUT -p icmp --icmp-type address-mask-request -j DROP
-A INPUT -p icmp --icmp-type timestamp-request -j DROP
-A INPUT -p icmp --icmp-type router-solicitation -j DROP
-A INPUT -p icmp -m limit --limit 2/second -j ACCEPT

We allow most ICMP traffic but it is rate-limited.

SSH Connections

-A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

SSH is allowed for remote access.

SYN Flood Protection

-A INPUT -p tcp -m state --state NEW -m limit --limit 50/second --limit-burst 50 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -j DROP

A SYN flood is a DOS attack where the attacker sends a lot of SYN packets but never completes the 3 way handshake. As a result the server will have a lot of “half open” connections and might not be able to serve new connections. Be careful with this setting as this is a global limit.

Established Connections

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Packets with the “new” state are checked with our first rule, we drop “invalid” packets so at the end we can accept all “related” and “established” packets.

Hopefully this iptables example gives you a template to work on. If you want to protect your device even more you might want to consider looking at the hashlimit module. This allows you to rate-limit traffic based on IP addresses and port numbers, which might be helpful to combat some DOS attacks.

Comments

Popular posts from this blog

Merubah Akun Default SUPERUSER ( telcomadmin dan Support ) Pada Modem Huawei HG8245A Indihome

Tujuan merubah akun default modem huawei hg8245a ini adalah untuk melindungi modem dari tangan-tangan jahil yang mau merubah setingan modem. Klo modem ini digunakan di cafee, tentu yang terjadi adalah ketidaknyamanan menggunakan internet di cafe/warkop tersebut. Ok langsung saja, jadi perlu diketahui bahwasannya modem ini bisa diakses melalui IP 192.168.100.1 dan memiliki akun default yaitu: username: telecomadmin | password: admintelecom atau username: Support | password: theworldinyourhand Nah, coba saja salah satu akun diatas, insyaAllah bisa masuk dan mendapat akses SUPERUSER. Para teknisi telkom menggunakan akun ini untuk menseting modem-modem pelanggan tanpa perlu menanyakan password modem. Kedua akun diatas derajatnya lebih tinggi dibanding akun default yang tertulis di belakang modem, yang biasanya:  username: Admin | password: admin Baik, saya akan mejelaskan cara-cara merubah kedua akun default SUPERUSER tersebut. 1. Masuk ke modem HG8245A melalui web. bi...

Masalah Deassigned assigned hotspot mikrotik

Tiba-tiba dapat masalah user hotspot terputus dari jaringan dan otomatis internet terputus.  kemudian dilakukan pengcekan log dan didapatkan log mencurigakan dhcp1 deassigned .. dhcp1 assigned ... dhcp1 deassigned .. dhcp1 assigned ... dhcp1 deassigned .. dhcp1 assigned ... dan jumlahnya sangat banyak. Identifikasi dhcp1 adalah proses dhcp server meminjamkan (assigned) dan menarik kembali (deassigned) ip address ke perangkat di jaringan. setingnya di /ip dhcp server dengan mengacukan pada /ip pool dhcp_pool0 . TAPI hotspot mikrotik juga mengacu ke pool yang sama di /ip hotspot address-pool . Solusi: disable-kan dhcp server di hotspot. caranya masuk ke  /ip hotspot address-pool seting ke none. Sumber: https://forum.mikrotik.com/viewtopic.php?t=49054 Salam, Arie B. 

Merubah modem ont HG8245a sebagai Access Point

Assalamuallaikum Wr. Wb. Pa kabar semua para pengunjung jambokuphi.blogspot.com, kali ini saya menjelaskan cara memanfaatkan modem ONT Huawei HG8245A menjadi Access Point. Modem Ont ini adalah jenis modem yang biasa digunakan oleh pelanggan indihome. Ok adapun cara menjadi modem ont hg8245a sebagai Access point adalah sebagai berikut: 1. Hubungkan modem ont hg8245a ( port LAN 1 ) ke PC atau laptop ( port Ethernet ) dengan kabel UTP/STP. 2. Rubah IP ethernet pada PC atau laptop secara manual menjadi IP 192.168.100.* tanda * adalah sebuah angka selain dari angka 1 misal 2, 3, 4 atau 100 dan seterusnya. Kenapa tidak boleh angka 1 karena 192.168.100.1 telah dipergunakan sebagai IP default dari modem ont Hg8245a dan kita akan mengakses IP 192.168.100.1 via web browser untuk konfigurasi modem ont hg8245a. 3. Buka web browser seperti chrome atau mozilla dan masukan alamat 192.168.100.1 , jika langkah nomor 2 sudah benar maka akan terbuka web config modem huawei ont Hg8245a s...