Wpisy otagowane ‘jail’

Zliczanie ruchu do i z jail’a na FreeBSD

piątek, 27 Czerwiec 2008

Rozwiązanie mało eleganckie. Wersja bardzo wczesna, potrzeba sporych poprawek i warunków (sprawdzanie modułu ipfw(8), sprawdzanie czy ipfw włączone, itp.).

Łata na plik uruchamiający jail’e(8) (/etc/rc.d/jail)

— /etc/rc.d/jail Tue Sep 11 18:44:44 2007
+++ /tmp/jail Tue Jul 1 08:14:11 2008
@@ -37,6 +37,8 @@ init_variables()
eval _exec=\”\$jail_${_j}_exec\”
eval _exec_start=\”\${jail_${_j}_exec_start:-${jail_exec_start}}\”
eval _exec_stop=\”\${jail_${_j}_exec_stop:-${jail_exec_stop}}\”
+ eval _ipfwrulenoin=\”\$jail_${_j}_ipfwrulenoin\”
+ eval _ipfwrulenoout=\”\$jail_${_j}_ipfwrulenoout\”
if [ -n "${_exec}" ]; then
# simple/backward-compatible execution
_exec_start=”${_exec}”
@@ -329,6 +331,14 @@ jail_start()
_jail_id=$(head -1 ${_tmp_jail})
tail +2 ${_tmp_jail} >${_consolelog}
echo ${_jail_id} > /var/run/jail_${_jail}.id
+ if [ -n "${_ipfwrulenoin}" ]; then
+ /sbin/ipfw -q delete ${_ipfwrulenoin}
+ /sbin/ipfw add ${_ipfwrulenoin} count all from any to ${_ip} jail ${_jail_id}
+ fi
+ if [ -n "${_ipfwrulenoout}" ]; then
+ /sbin/ipfw -q delete ${_ipfwrulenoout}
+ /sbin/ipfw add ${_ipfwrulenoout} count all from ${_ip} to any jail ${_jail_id}
+ fi
else
jail_umount_fs
if [ -n "${_interface}" ]; then

Do /etc/rc.conf dodać następujące linie:

jail_example_ipfwrulenoin (int): Numer reguły dla ruchu przychodzącego
jail_example_ipfwrulenoout (int): Numer reguły dla ruchu wychodzącego

…i jeszcze tylko testy. Powyższe, to rozważania czysto teoretyczne ;-)