In MacOS X, at boot time, <pre>/usr/libexec/FirewallTool</pre> runs, which re

+

In MacOS X, at boot time, <pre>/usr/libexec/FirewallTool</pre> runs, which reads the file <pre>/Library/Preferences/com.apple.sharing.firewall.plist</pre>

−

5A8

−

ads the file <pr

−

5A8

−

e>/Library/Preferences/com.apple.sharing.firewall.plist</pre>

Neither the binary nor the plist are distributed with the AppleTV OS, and it is therefore not surprising that in a default OS install, the ipfw kext has a single 'allow any' default rule:

Neither the binary nor the plist are distributed with the AppleTV OS, and it is therefore not surprising that in a default OS install, the ipfw kext has a single 'allow any' default rule:

Line 16:

Line 12:

65535 allow ip from any to any

65535 allow ip from any to any

</pre>

</pre>

−

−

== Enabling the Firewall ==

== Enabling the Firewall ==

Line 25:

Line 19:

* Copy one you like from an Intel Mac

* Copy one you like from an Intel Mac

* Copy one, then edit as you like with the Property List Editor that comes with Xcode. (see: [http://www.macosxhints.com/article.php?story=20060427124349687 MacOS Hints article])

* Copy one, then edit as you like with the Property List Editor that comes with Xcode. (see: [http://www.macosxhints.com/article.php?story=20060427124349687 MacOS Hints article])

−

* [http://wiki.awkwardtv.org/wiki/Install_System_Preferences Install System Preferences] from an Intel Mac and configure as usual.

+

* [[Install System Preferences]] from an Intel Mac and configure as usual.

+

+

== Enabling the Firewall without an Intel Mac ==

+

+

It's possible to set up the firewall without using any GUI, and this appears to work (tested on a v2.1 AppleTV) without copying the plist or any other files from an Intel Mac. '''Be warned''' - using this method it's quite likely that your machine will be un-firewalled for a short time during boot-up, before the firewall rules script takes effect.

+

+

Create the following file as firewall_config.sh in /Users/frontrow. It can serve as a base set of firewall rules to get you started - if you want more google for "ipfw". Don't forget you must change the IP address under the comment 'Allow anything from LAN' depending on your own LAN's ip address range.

+

#!/bin/sh

+

sudo ipfw -f flush

+

#sudo ipfw -f list

+

+

#exclude loopback traffic

+

sudo ipfw add 00003 allow all from any to any via lo0

+

+

#Deny any spoofed loopback/multicast traffic

+

sudo ipfw add 02010 deny log ip from 127.0.0.0/8 to any in

+

sudo ipfw add 02020 deny log ip from any to 127.0.0.0/8 in

+

sudo ipfw add 2030 deny log ip from 224.0.0.0/3 to any in

+

sudo ipfw add 2040 deny log tcp from any to 224.0.0.0/3 in

+

+

#Allow outgoing/established

+

sudo ipfw add 02050 allow tcp from any to any out

+

sudo ipfw add 02060 allow tcp from any to any established

+

+

#Allow anything from LAN

+

sudo ipfw add 02070 allow ip from 192.168.0.0/24 to any

+

+

#Block everything else

+

sudo ipfw add 12190 deny log tcp from any to any

+

sudo ipfw add 65535 allow ip from any to any

+

+

Make sure this script is executable

+

chmod 755 firewall_config.sh

+

+

Add the following to the top line of /etc/rc.local (it should be at the top so the firewall rules kick in as soon as possible - your AppleTV is effectively unfirewalled until this script has executed!):

+

/Users/frontrow/firewall_config.sh

[[Category:How-to]]

[[Category:How-to]]

Latest revision as of 03:22, 11 January 2009

Note

The AppleTV seems to ship with no firewall rules configured.There is no need to hack up a way to disable the firewall.

In MacOS X, at boot time,

/usr/libexec/FirewallTool

runs, which reads the file

/Library/Preferences/com.apple.sharing.firewall.plist

Neither the binary nor the plist are distributed with the AppleTV OS, and it is therefore not surprising that in a default OS install, the ipfw kext has a single 'allow any' default rule:

-bash-2.05b$ sudo ipfw list
65535 allow ip from any to any

Enabling the Firewall

It is likely that copying over FirewallTool from an Intel Mac will enable MacOS firewall configuration at boot time.
In addition, it is neccesary to create /Library/Preferences/com.apple.sharing.firewall.plist. If the prefs plist file does not exist, FirewallTool will not configure ipfw. There are several ways to create this file:

Copy one you like from an Intel Mac

Copy one, then edit as you like with the Property List Editor that comes with Xcode. (see: MacOS Hints article)

Enabling the Firewall without an Intel Mac

It's possible to set up the firewall without using any GUI, and this appears to work (tested on a v2.1 AppleTV) without copying the plist or any other files from an Intel Mac. Be warned - using this method it's quite likely that your machine will be un-firewalled for a short time during boot-up, before the firewall rules script takes effect.

Create the following file as firewall_config.sh in /Users/frontrow. It can serve as a base set of firewall rules to get you started - if you want more google for "ipfw". Don't forget you must change the IP address under the comment 'Allow anything from LAN' depending on your own LAN's ip address range.

#!/bin/sh
sudo ipfw -f flush
#sudo ipfw -f list
#exclude loopback traffic
sudo ipfw add 00003 allow all from any to any via lo0
#Deny any spoofed loopback/multicast traffic
sudo ipfw add 02010 deny log ip from 127.0.0.0/8 to any in
sudo ipfw add 02020 deny log ip from any to 127.0.0.0/8 in
sudo ipfw add 2030 deny log ip from 224.0.0.0/3 to any in
sudo ipfw add 2040 deny log tcp from any to 224.0.0.0/3 in
#Allow outgoing/established
sudo ipfw add 02050 allow tcp from any to any out
sudo ipfw add 02060 allow tcp from any to any established
#Allow anything from LAN
sudo ipfw add 02070 allow ip from 192.168.0.0/24 to any
#Block everything else
sudo ipfw add 12190 deny log tcp from any to any
sudo ipfw add 65535 allow ip from any to any

Make sure this script is executable

chmod 755 firewall_config.sh

Add the following to the top line of /etc/rc.local (it should be at the top so the firewall rules kick in as soon as possible - your AppleTV is effectively unfirewalled until this script has executed!):