Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Netfilter / iptables
ADOLF
Firewalls
.
(
) .
(
).
Web browser
TCP
IP
Ethernet
Web browser
Application level
TCP
Network protocol
IP
Ethernet
link-level protocol
IP o
Version
IHL
Type of
Service
Identification
Time To Live
Protocol
Total Length
Flags
Fragment Offset
Header Checksum
Source Address
Destination Address
IP o
Destination Port
Sequence Number
Acknowledgment Number
Data
offset
Reserved
Checksum
Packet body
Negotiation
flags
Window
Urgent Pointer
Packet filtering
(ACCEPT)
(DROP)
Stateless
Stateful
http://www.netfilter.org/
Netfilter
plugins/modules
Netfilter
Netfilter
Netfilter
kernel space.
BSD socket interface
(INET).
Netfilter
iptables
iptables
ip_tables / IP tables
Netfilter
hook functions.
register
hooks.
NF_DROP
NF_ACCEPT
NF_STOLEN
NF_REPEAT
NF_QUEUE
Netfilter
Route
4
Route
2
5
1: NF_IP_PRE_ROUTING 4: NF_IP_POST_ROUTING
2: NF_IP_LOCAL_IN
3: NF_IP_FORWARD
5: NF_IP_LOCAL_OUT
Netfilter
Netfilter
Route
4
Route
2
5
1: NF_IP_PRE_ROUTING 4: NF_IP_POST_ROUTING
2: NF_IP_LOCAL_IN
3: NF_IP_FORWARD
5: NF_IP_LOCAL_OUT
Netfilter
NAT: nat
1
Route
4
Route
2
5
1: NF_IP_PRE_ROUTING 4: NF_IP_POST_ROUTING
2: NF_IP_LOCAL_IN
3: NF_IP_FORWARD
5: NF_IP_LOCAL_OUT
Netfilter
Route
4
Route
2
5
1: NF_IP_PRE_ROUTING 4: NF_IP_POST_ROUTING
2: NF_IP_LOCAL_IN
3: NF_IP_FORWARD
5: NF_IP_LOCAL_OUT
Netfilter
Userspace
IP tables management:
pre-2.6.14 ip_queue/libipq
Netfilter
staticstructnf_hook_opshook_in;
/*prototypeisfoundinside<linux/netfilter>*/
unsignedintmy_hook(unsignedinthooknum,struct...
{returnNF_DROP;}
intinit_module()
{
hook_in.hook
= my_hook;
hook_in.pf
= PF_INET;
hook_in.hooknum = NF_IP_PRE_ROUTING;
hook_in.priority = NF_IP_PRI_FIRST;
nf_register_hook(&hook_in);
return0;
}
voidcleanup()
{
nf_unregister_hook(&hook_in);
}
ADesktopOrientedLinuxFirewall
http://rainbow.cs.unipi.gr/projects/adolf
ADOLF
Concept
Linux.
interfaces
.
.
,
,
.
iptables, match, target, userspace, terminal,
configuration GUI wrapper, vi, /etc/init.d/foo ..
, :
ADOLF
() :
(desktop)
.
Linux .
ADOLF
Screenshots
ADOLF
Screenshots
ADOLF
Realtime ,
.
Roaming .
UID
local process.
local process. (!)
Connection tracking aware TCP
UDP.
ADOLF
Unattended , servers.
Heavy load systems (.. peer-to-peer
traffic)
Realtime (..
)
IPv6 .
UPNP.
ADOLF
Kernel module
Daemon
Client applications
Desktop applet
ADOLF
/dev/firewall
UNIX
ADOLF
Kernel module
register Netfilter :
NF_FORWARD
NF_LOCAL_IN
NF_LOCAL_OUT
misc device
userspace.
ADOLF
Daemon
.
,
.
ADOLF
Daemon
clients UNIX
socket.
Thread-safe . (7 threads +
2/client)
clients.
API
. (C/C++)
ADOLF
API.
shell script:
#!/bin/sh
firewallStatus
if[$?eq1];then
firewallEnable
firewallStatus
fi
ADOLF
Desktop application
Qt4.
C++ API.
system tray.
interface
,
,
.
.
ADOLF
Context menu
ADOLF
ADOLF
ADOLF
Counters
ADOLF
Identified roles
ADOLF
Future work
clients
.
documentation .
IPv6.
ADOLF
Credits
To 2005,
.
.
.
,
2007.
ADOLF, open
source project,
.