it-swarm-tr.com

Saldırılardan korunmak için güvenli bir iptables yapılandırması için ipuçları. (müşteri tarafı!)

Kendi örnekleri:

###############
# KERNEL PARAMETER CONFIGURATION

# PREVENT YOU SYSTEM FROM ANSWERING ICMP ECHO REQUESTS
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

# DROP ICMP ECHO-REQUEST MESSAGES SENT TO BROADCAST OR MULTICAST ADDRESSES
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# DONT ACCEPT ICMP REDIRECT MESSAGES
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

# DONT SEND ICMP REDIRECT MESSAGES
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

# DROP SOURCE ROUTED PACKETS
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

# ENABLE TCP SYN COOKIE PROTECTION FROM SYN FLOODS
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# ENABLE SOURCE ADDRESS SPOOFING PROTECTION
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

# LOG PACKETS WITH IMPOSSIBLE ADDRESSES (DUE TO WRONG ROUTES) ON YOUR NETWORK
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

# DISABLE IPV4 FORWARDING
echo 0 > /proc/sys/net/ipv4/ip_forward

###############
# INPUT

# DROP INVALID
$IPTABLES -A INPUT -m state --state INVALID -j DROP

# ALLOW ONLY ESTABLISHED, RELATED
$IPTABLES -A INPUT -p tcp -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p udp -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT

# DROP INVALID SYN PACKETS
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# MAKE SURE NEW INCOMING TCP CONNECTIONS ARE SYN PACKETS; OTHERWISE WE NEED TO DROP THEM 
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# DROP PACKETS WITH INCOMING FRAGMENTS. THIS ATTACK RESULT INTO LINUX SERVER PANIC SUCH DATA LOSS
$IPTABLES -A INPUT -f -j DROP

# DROP INCOMING MALFORMED XMAS PACKETS
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

# DROP INCOMING MALFORMED NULL PACKETS
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

###############
# OUTPUT

# DROP INVALID
$IPTABLES -A OUTPUT -m state --state INVALID -j DROP

# DROP INVALID SYN PACKETS
$IPTABLES -A OUTPUT -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPTABLES -A OUTPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPTABLES -A OUTPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# MAKE SURE NEW OUTGOING TCP CONNECTIONS ARE SYN PACKETS; OTHERWISE WE NEED TO DROP THEM 
$IPTABLES -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

# DROP PACKETS WITH OUTGOING FRAGMENTS. THIS ATTACK RESULT INTO LINUX SERVER PANIC SUCH DATA LOSS
$IPTABLES -A OUTPUT -f -j DROP

# DROP OUTGOING MALFORMED XMAS PACKETS
$IPTABLES -A OUTPUT -p tcp --tcp-flags ALL ALL -j DROP

# DROP OUTGOING MALFORMED NULL PACKETS
$IPTABLES -A OUTPUT -p tcp --tcp-flags ALL NONE -j DROP

Müşterileri saldırılara karşı korumak için iptables ile ilgili daha fazla fikir toplayabilir miyiz? Örn: bir Ubuntu 11.04 Masaüstü Bilgisayarının "saldırılara karşı savun" ~ tür kuralları.

Teşekkür ederim!

p.s .: tabii ki:

$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

s.s.2: hem IPv4 hem de IPv6'da!

p.s.3: Gibi kurallara ihtiyacım yok: sadece UDP'ye izin ver ve TCP), sadece kuralları: örn. portscanning, attack, vb.

s.4: PC bir yönlendiricinin/NAT'ın arkasında ya da "doğrudan internete" bağlı.

16
LanceBaynes

Farklı görüşler olduğunu anlıyorum, ancak ağ ve güvenlik hakkında gerçekten bilen insanların önemli bir tutumu, bu iptables/sysctl kurallarının çoğunun size ve ağınıza zarar vermiyorsa gereksiz olduğu. Bazıları sizi standart davranışlardan kurtulmak için akılsızca eleştirecektir. Bazı örnekler:

  • Standart TCP/IP davranışı, eşlerin neler olup bittiğine dair bir ipucu alması için Reddetmektir. Belki birisi sadece bir URL yanlış yazmış veya yöneticiniz ana bilgisayarları sayıyor veya birisi oyun sunucunuza bağlanmak istiyor, ancak yanlış bağlantı noktasını yazıyor. DROP ile sadece belirsiz ve sinir bozucu zaman aşımlarına uğrarlar.

  • Geçersiz veya hatalı biçimlendirilmiş paketleri düşürmeye gerek yoktur, tüm bu saldırılar on yıllıktır. Linux çekirdek geliştiricileri, hangi paketlerin geçerli olup hangilerinin geçerli olmadığı konusunda sizden çok daha günceldir. "Gelecekteki kusurlar ne olacak", bazıları tartışabilir. Peki, gelecekteki kusurun TCP işleyicisinde olacağını ve iptables TCP ayrıştırıcısında değil) nasıl olduğunu biliyor musunuz?

  • Sysctl ayarlarının çoğu varsayılan değerdir. Eğer değillerse, genellikle bir sebep vardır. Örneğin, yönlendirmeleri göndermeyi neden devre dışı bırakalım? Asla otomatik olarak tepki vermesem bile ("accept_redirects", default = 0) bir akran tarafından yönlendirmemin kötü olduğu konusunda bilgilendirilmeyi çok yararlı buluyorum.

  • Log_martians ve diğer günlük kuralları ile umarım/var/log üzerinde bir kotanız olur, ya da diskinizi uzaktan doldurmak, genellikle hizmetlerinizi/uygulamalarınızı öldürmek çok eğlenceli olacaktır. Buna ek olarak, günlüğe kaydetme için bir ücret sınırı kullanmalısınız; aksi takdirde auth.log veya diğer şeylerde SSH parolası bruteforce girişimlerini görmenizi önlemek için bir kişi kotayı doldurabilir. Bu günlükleri masaüstünde mi okuyorsunuz? Logcheck'i tavsiye ederim.

  • ICMP'yi engelliyor gibi görünüyorsunuz. Bahsedilen DHCP sorununun yanı sıra PMTU keşfini de önler. PMTUD olmadan, sistemi DSL bağlantısı veya diğer ağ ayarları olan yerlerde kullandığınızda garip davranışlar yaşayacaksınız. Bazı paketler bırakılacak ve kimse size nedenini söylemeyecek.

  • Giden paketlerin filtrelenmesi biraz belirsizdir. Kendinize güvenmiyor musunuz? Genellikle güvenemeyeceğiniz programlar çalıştırmamalısınız. Emtia işletim sistemleri çoğunlukla bu programları gizlice dinlemekten ve hatta diğer programın verilerini (örn. Önbellek zamanlama saldırıları) manipüle etmekten soyutlayamaz.

  • SYN'ye sahip olmak için YENİ paketlere ihtiyacınız var. Bu bir TCP bağlantı iptables içindeki ilgili durum zaten zaman aşımına uğradıktan sonra devam ederse kesilecektir. Varsayılan zaman aşımlarının ne olduğundan emin değilim, ancak bazı netfilter adam bunu uyardı.

Peki, bir masaüstünün ne zaman güvenlik duvarı olması gerekir?

  • Haberlerde mevcut işletim sisteminizin veya sunucularınızın savunmasız olduğu belirli bir saldırı varsa ve önerilen hızlı düzeltmelerden biri güvenlik duvarı kuralıdır.

  • Güvenli yapılandırmaya izin vermeyen belirli hizmetleri çalıştırmanız gerekir. Birçoğu yapar ve geri kalanı en iyi yerine güvenli alternatifler alır.

  • Masaüstünüzde birkaç VM ve/veya arayüze sahip daha karmaşık ağlarınız var.

Ağ güvenliğiniz için ilk ve en önemli araç sistem güncellemesidir. İkincisi, hangi hizmetleri kullandığınızı bulmak ve onaylamak için kullanmanız gereken netstat ve nmap vardır. Ardından ihtiyacınız olmayanları devre dışı bırakın veya 127.0.0.1 ile sınırlayın.

Şimdiye kadar okuduğunuzda bonus: Paketler KURULDU, İLGİLİ veya YENİ, bıraktığınız her şey. Yalnızca SYN ayarlanmadığı sürece YENİ bırakabilirsiniz. KURULDU, İLGİLİ bayrakları kontrol gibi görünüyor, bu tüm --tcp bayrakları kurallarını ve -f kuralını gereksiz kılar. ÇIKTI için aynıdır, ancak ÇIKIŞ için hiçbir paket KABUL EDİLMEDİĞİ için, bu muhtemelen önemli değildir.

22
pepe

Güvenilir bir ağ içindeki ve DMZ'deki cihazlar için aynı kural setinin bu bölümünü oluşturmaya dikkat ediyorum. Orada tanımladığınız kuralları kullanarak, bir DHCP sunucusuna yanıt vermeyeceksiniz (IPMP yankı), IP'nizin kullanımda olup olmadığını sorar. Bu, yinelenen bir adres durumuna yol açabilir.

Her senaryoya uygulamak için iki farklı kural kümesi oluşturacağım, yukarıda listelenen gibi bir şey DMZ makine için iyi bir temeldir, ancak tipik bir LAN'da bazı zorluklar yaratır).

Ayrıca kesinlikle martians, giden damlalar, gelen bağlantılar düştü vb. Günlük ekleme eklemenizi tavsiye ederim. Bu sorun giderme için çok önemli olabilir ve SIEM yemek için daha yararlı veriler olabilir.

6
Ori

Doğrudan internete ppp ile bağlı bir istemci bilgisayar için aşağıdaki kural seti iyi bir başlangıçtır:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -p udp -j REJECT
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
ip6tables -A INPUT -j REJECT
  1. Dahili yerel arayüzde her şeye izin verir.
  2. Gönderdiğiniz bir paketin cevabı olan herhangi bir pakete izin verir. Buna bir TCP bağlantısı dahilindeki paketler, küçük DNS sorguları gibi UDP paketlerine verilen yanıtlar da dahildir.) Eski stil şifrelenmemiş FTP protokolü için ip_conntrack_ftp'nin yüklü olduğu varsayılarak veri bağlantısı bulunur
  3. Dışarıdan bir tcp bağlantısı açma girişimlerini reddet
  4. Tüm başlangıç ​​(yanıtsız) udp paketlerini reddet.

Alternatif olarak, son iki kuralda -j DROP kullanabilirsiniz. Bu konuyla ilgili bir tartışma için Bir ICMP hatası olan IP paketlerini reddedin mi, yoksa bırakın?

5

Sorunuzu ayrıntılı bir şekilde açıklamak için burada çalıştığım şey (ve örneklerinizi notlarla kullanacağım, çünkü benimki IPCHAINS'in tüm bu yıllar önce öldüğü için net fliterde yapılan yorumlardan yoksun.)

Bu, dahili bir sistem için işe yarayabilir, ancak iptables'larınızı dikkate alınmayan yeni uygulamalar için yapılandırmak için genellikle zaman harcarsınız. SSH kuralımı da kaldırdım, ancak bu oldukça standart bir kural (ve birçok yapılandırmada girişe izin verdiğinizi göreceksiniz).

###############
# VARIABLE DEFINITIONS
IPTABLES=/sbin/iptables

#Your DHCP Server for input of ICMP packets
DHCPSERVER=127.0.0.1
PUBIF=eth0

# KERNEL PARAMETER CONFIGURATION
#
# DROP ICMP ECHO-REQUEST MESSAGES SENT TO BROADCAST OR MULTICAST ADDRESSES
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#
# DONT ACCEPT ICMP REDIRECT MESSAGES
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
#
# DONT SEND ICMP REDIRECT MESSAGES
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
#
# DROP SOURCE ROUTED PACKETS
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
#
# ENABLE TCP SYN COOKIE PROTECTION FROM SYN FLOODS
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#
# ENABLE SOURCE ADDRESS SPOOFING PROTECTION
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

# LOG PACKETS WITH IMPOSSIBLE ADDRESSES (DUE TO WRONG ROUTES) ON YOUR NETWORK
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

# DISABLE IPV4 FORWARDING
echo 0 > /proc/sys/net/ipv4/ip_forward
###############
$IPTABLES -F
###############
# LOGDROPPER
$IPTABLES -N LOGNDROP > /dev/null 2> /dev/null 
$IPTABLES -F LOGNDROP 
$IPTABLES -A LOGNDROP -j LOG --log-prefix "LOGNDROP: " 
$IPTABLES -A LOGNDROP -j DROP

###############
# LO allowance
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

###############
# Only bring what you need to survive
$IPTABLES -A INPUT -p icmp -s $DHCPSERVER -j ACCEPT
$IPTABLES -A INPUT -i $PUBIF -s $DHCPSERVER -p tcp --sport 68 --dport 67 -j ACCEPT
$IPTABLES -A INPUT -i $PUBIF -s $DHCPSERVER -p udp --sport 68 --dport 67 -j ACCEPT
###############
# INPUT
#
# DROP INVALID
$IPTABLES -A INPUT -m state --state INVALID -j LOGNDROP

# ALLOW ONLY ESTABLISHED, RELATED
$IPTABLES -A INPUT -p tcp -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p udp -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT

# DROP INVALID SYN PACKETS
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j LOGNDROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOGNDROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j LOGNDROP

# MAKE SURE NEW INCOMING TCP CONNECTIONS ARE SYN PACKETS; OTHERWISE WE NEED TO DROP THEM
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j LOGNDROP

# DROP PACKETS WITH INCOMING FRAGMENTS. THIS ATTACK RESULT INTO LINUX SERVER PANIC SUCH DATA LOSS
$IPTABLES -A INPUT -f -j LOGNDROP

# DROP INCOMING MALFORMED XMAS PACKETS
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j LOGNDROP

# DROP INCOMING MALFORMED NULL PACKETS
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j LOGNDROP

###############
# OUTPUT

# DROP INVALID
$IPTABLES -A OUTPUT -m state --state INVALID -j LOGNDROP

# DROP INVALID SYN PACKETS
$IPTABLES -A OUTPUT -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j LOGNDROP
$IPTABLES -A OUTPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOGNDROP
$IPTABLES -A OUTPUT -p tcp --tcp-flags SYN,RST SYN,RST -j LOGNDROP

# DROP PACKETS WITH OUTGOING FRAGMENTS. THIS ATTACK RESULT INTO LINUX SERVER PANIC SUCH DATA LOSS
$IPTABLES -A OUTPUT -f -j LOGNDROP

# DROP OUTGOING MALFORMED XMAS PACKETS
$IPTABLES -A OUTPUT -p tcp --tcp-flags ALL ALL -j LOGNDROP

# DROP OUTGOING MALFORMED NULL PACKETS
$IPTABLES -A OUTPUT -p tcp --tcp-flags ALL NONE -j LOGNDROP

$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -A INPUT -j LOGNDROP
$IPTABLES -A FORWARD -j LOGNDROP

Ağınız parazitliyse veya devam eden çok şey varsa, günlük hacminizi hızla dolduracaktır. Ama paranoyağım ve gereksiz yere gürültülü olan konfigürasyonlar yaratırlarsa insanların pirzolalarını da yıkıyorum.

4
Ori