Wie ja bereits gesagt wurde, ist es für einen Client/Desktop-Rechner lediglich relevant, dass kein Service an anderen Interfaces lauscht als dem Loopback-Device. Solange kein Port offen ist, findet sich auch kein direkter Angriffspunkt. Da Rootkits bei Angriffen auf Linux-Rechner wesentlich eher Verwendung finden als Viren, Würmer oder Trojaner, sollte man regelmässig/täglich einen Scan mit chkrootkit und rkhunter machen, wenn man Services nach aussen anbietet. Virenscanner sind jedenfalls nur dann notwendig, wenn man Windows-Rechner schützen will, die z.B. auf Freigaben des Linux-Rechners zugreifen o.ä. Für Desktop-Rechner gilt jedenfalls "wo kein Service lauscht, ist auch nichts angreifbar". Wenn man denn doch unbedingt eine Firewall will, weil man z.B. zum Testen o.ä. einen Service nutzt, der automatisch an allen Netzwerkinterfaces lauscht, Netzwerkprogrammierung auf der Kiste macht o.ä., reicht das folgende Skript vollkommen aus:
Code:
#!/bin/bash
echo "Starting firewall"
LOGLIMIT=20
IPTABLES=/sbin/iptables
case "$1" in
start)
# alle alten Regeln entfernen
echo "Loesche alte Regeln"
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -F
# Ketten fuers Logging erstellen
$IPTABLES -N LOGREJECT
$IPTABLES -A LOGREJECT -m limit --limit $LOGLIMIT/minute -j LOG --log-prefix "FIREWALL REJECT " --log-level notice --log-ip-options --log-tcp-options
$IPTABLES -A LOGREJECT -j REJECT --reject-with icmp-port-unreachable
### PROC MANIPULATION ###
# auf Broadcast-Pings nicht antworten
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# halt die Klappe bei komischen ICMP Nachrichten
echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Kicke den ganzen IP Spoofing Shit
# (Source-Validierung anschalten)
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
# Setze Default-TTL auf 61 (Default fuer Linux ist 64)
echo 61 > /proc/sys/net/ipv4/ip_default_ttl
# sende RST-Pakete wenn der Buffer voll ist
echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow
# warte max. 30 secs auf ein FIN/ACK
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
# unterbreche Verbindungsaufbau nach 3 SYN-Paketen
# Default ist 6
echo 3 > /proc/sys/net/ipv4/tcp_syn_retries
# unterbreche Verbindungsaufbau nach 3 SYN/ACK-Paketen
# Default ist 6
echo 3 > /proc/sys/net/ipv4/tcp_synack_retries
### MAIN PART ###
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# im Loopback koennen wir jedem trauen
$IPTABLES -A INPUT -i lo -j ACCEPT
# erlaube Pings
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# Alle TCP Packete, die bis hier hin kommen, werden
# geloggt und rejected
# Der Rest wird eh per Default Policy gedroppt...
$IPTABLES -A INPUT -p tcp -j LOGREJECT
$IPTABLES -A FORWARD -p tcp -j LOGREJECT
;;
*)
echo "Usage: `basename $0` {start}" >&2
exit 64
;;
esac
exit 0
Damit ist definitiv sicher, dass von aussen niemand auf den Rechner zugreifen kann, selbst wenn eine Portbinding-Shell, ein Trojaner oder sonstwas läuft, was theoretisch einen Remote-Zugriff ermöglichen würde. Der Zugriff auf Netzwerkdienste ist damit nur noch über localhost möglich. Das Skript einfach in /etc/init.d/ ablegen, mit dem Runlevel-Editor seiner Wahl aktivieren und fertig.
Bei Servern sieht das dann schon etwas anders aus, da diese wenig Sinn machen, wenn sie keine Services nach aussen anbieten.

Aber soweit ich das verstanden habe, ist das hier ja nicht gefragt.