Iptables

Iptables'da kuralları listelemek için aşağıdaki komut kullanılır:

sudo iptables -L

Çıktı:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Kurallarımızı korumak için iptables-persistent ihtiyacımız var. Bu sunucu açılıp kapanma sırasında kuralların kaybolmamasını sağlıyor.

sudo apt-get update
sudo apt-get install iptables-persistent

Ben daha önceki yazılarımda kuralları tek tek girmeniz için yol izlemiştim fakat böyle bazı adımlar yanlış ve eksik kalıyor. Ben o yüzden bi şablon vereceğim. Doğrudan bunu kullanmanızı öneriyorum ki aşağıdaki blacklist ile test edilmiştir. Öncelikle kuralların saklandığı dosyaya gidelim. Buraya girdiğinizde burada default ayarları göreceksiniz. Burada ne varsa silin.

sudo nano /etc/iptables/rules.v4

Aşağıdakileri ekleyin:

*filter
# Allow all outgoing, but drop incoming and forwarding packets by default
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

# Custom per-protocol chains
:UDP - [0:0]
:TCP - [0:0]
:ICMP - [0:0]

# Acceptable UDP traffic

# Acceptable TCP traffic
-A TCP -p tcp --dport 80 -j ACCEPT
-A TCP -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m set --match-set blacklist src -j DROP

# Acceptable ICMP traffic

# Boilerplate acceptance policy
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT

# Drop invalid packets
-A INPUT -m conntrack --ctstate INVALID -j DROP

# Pass traffic to protocol-specific chains
## Only allow new connections (established and related should already be handled)
## For TCP, additionally only allow new SYN packets since that is the only valid
## method for establishing a new TCP connection
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
-A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP

# Reject anything that's fallen through to this point
## Try to be protocol-specific w/ rejection message
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable

# Commit the changes
COMMIT

*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT

*security
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT

Bir hata olup olmadığını görelim:

sudo iptables-restore -t < /etc/iptables/rules.v4

Son olarak v6 girişlerini tamamen kapatalım:

sudo nano /etc/iptables/rules.v6

Aşağıdakileri ekle:

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

*raw
:PREROUTING DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT

*nat
:PREROUTING DROP [0:0]
:INPUT DROP [0:0]
:OUTPUT DROP [0:0]
:POSTROUTING DROP [0:0]
COMMIT

*security
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT

*mangle
:PREROUTING DROP [0:0]
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:POSTROUTING DROP [0:0]
COMMIT

restore

sudo ip6tables-restore -t /etc/iptables/rules.v6

ve sorun yok ise reload edelim:

sudo service iptables-persistent reload
sudo invoke-rc.d iptables-persistent save

Bu çok basit düzeydir. Ben Çin'i bloklamanızı öneririm. Saldırgan girişler genelde Çin'den yapılmaktadır.

Bir ülkeyi bloklamak için şu yazılara başvurabilirsiniz: