17 Aralık 2019 Salı

iptables INPUT Modülü

Giriş
Akış şöyledir.
prerouting -> input -> local process
iptables tarafından drop edilmesini beklediğimiz bir broadcast paketi wireshark ile görmeye devam edebiliriz. Açıklaması şöyle
Wireshark uses libpcap to fetch data from the NIC before it is handled by the OS.
-A - add işlemi
Add anlamına gelir.

-D - delete işlemi
Add ile eklenen kuralı siler

-j seçeneği
Kurala uyan pakete ne işlem yapılacağını belirtir. ACCEPT, REJECT, DROP, LOG olabilir.

Örnek
Loglama için şöyle yaparız.
$ iptables -A INPUT -p ICMP --icmp-type 8 -j LOG --log-prefix "Iptables: Ping detected: "
Açıklaması şöyle
That command asks the kernel to log ICMP type 8 packets. The target file will consist of the following records for every packet received:

kernel: [122972.300408] Iptables: Ping detected: IN=eth0 OUT= 
MAC=00:64:d9:36:7b:d7:00:24:2d:a6:e2:43:08:91 SRC=xxx.xxx.xxx.xxx 
DST=xxx.xxx.xxx.xxx LEN=60 TOS=0x00 PREC=0x00 TTL=124 ID=23020 PROTO=ICMP
TYPE=8 CODE=0 ID=33602 SEQ=2462

A technique such as this is resource-heavy as it dumps all packet metadata to a file.
Örnek
Şöyle yaparız.
# iptables -I INPUT -p tcp --dport 3001 -j REJECT
# iptables -I INPUT -p tcp --dport 3002 -j DROP

$ nc -v 127.0.0.1 3000
nc: connect to 127.0.0.1 port 3000 (tcp) failed: Connection refused

$ nc -v 127.0.0.1 3001
nc: connect to 127.0.0.1 port 3001 (tcp) failed: Connection refused

$ nc -v 127.0.0.1 3002
-i seçeneği - interface
Açıklaması şöyle.
iptables doesn't use the interface's index but is doing a string comparison with the current interface's name when evaluating the -i/--in-interface parameter.
Örnek
Şöyle yaparız.
iptables -A INPUT -i ovpn -p tcp --dport 3306 -j ACCEPT
-I - insert işlemi
Insert anlamına gelir. Şöyle yaparız.
iptables -I INPUT 1 -p tcp --dport 8443 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
--dport seçeneği - destination port
Şöyle yaparız.
iptables -A INPUT -s SOMEIP -p tcp --dport 32400 -j DROP
-p seçeneği - protocol
Örnek
Şöyle yaparız.
iptables -A INPUT -p tcp --dport 445 -j DROP
-s seçeneği - source
Örnek
Şöyle yaparız.
iptabşes -A INPUT -s <remote_ip_addresses_range> -j DROP
Örnek
Şöyle yaparız.
## Block every IP address in ~/blocking.txt
## DROP incoming packets to avoid information leak about your hosts firewall
## (HT to Conor Mancone) REJECT outgoing packets to avoid browser wait
for i in $(cat ~/blocking.txt); do
  echo "Blocking all traffic to and from $i"    
  /sbin/iptables -I INPUT -s $i -j DROP
  /sbin/iptables -I OUTPUT -d $i -j REJECT
done
--state seçeneği
Örnek - rate limiting
Şöyle yaparız. 4 dakikada 4 taneye ssh bağlantısına izin verir.
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update
--seconds 240 --hitcount 4 --name ssh-v4 --mask 255.255.255.255 --rsource -j REJECT
--reject-with tcp-reset

iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set
--name ssh-v4 --mask 255.255.255.255 --rsource -j ACCEPT

Hiç yorum yok:

Yorum Gönder