Обновлю немного темку. Проблема решена. Свои посты в теме почищу сам, а если модераторы решат, что дело стоящее-подчистят всю темку. Обозвать тему лучше всего shorewall по шагам. Итак, отдельное спасибо VInniPooh'у, приступим:
Предполагается следующая архитектура:
[internet]-[(ххх.ххх.ххх.ххх)ADSL-модем(192.168.1.1)]---------[(192.168.1.93)router(192.168.0.1)]----------[клиентские
машины с разными запросами]
Задача маршрутизатора на базе Ubuntu server 9.04 обеспечить безопасность сети (без фанатизма), учет http-траффика.
Маленькое отступление. На сервере кроме самого маршрутизатора стоят bind9 (DNS-srver), dhcp3 (DHCP-server), - их настройку можно рассмотреть в отдельных темах. Управление всем процессом осуществлялось мною через морду WEBMIN, но привожу специально консольные команды, так как не всегда удобно юзать вебморду.
Установку самого сервера описывать не будем, начнём сразу с shorewall:
1) установка:
>sudo apt-get install shorewall2)настройка сетевых интерфейсов оставляется на совести читателя, результат должен быть примерно такой:
> cat /etc/network/interfaces# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo eth0 eth1
iface lo inet loopback
# The primary network interface
iface eth0 inet static
address 192.168.1.93
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
dns-nameservers 192.168.1.1
gateway 192.168.1.1
up ip route add 192.168.1.0/24 via 192.168.1.1
# dns-* options are implemented by the resolvconf package, if installed
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255
network 192.168.0.0
3)настройка сетевых интерфейсов в shorewall:
>sudo nano /etc/shorewall/intefacesТам пишем следующее:
#флаги взяты из разных источников и работают «как есть», подробности в гугле
local eth1 detect tcpflags,nosmurfs
net eth0 detect routefilter,tcpflags,nosmurfs,logmartians
4)настройка зон в shorewall
>sudo nano /etc/shorewall/zones#комментарии излишни
fw firewall
net ipv4
local ipv4
5)настройки главных политик (у нас будет «запрещено всё,кроме того, что разрешено») - здесь запрещаем всё:
>sudo nano /etc/shorewall/policynet all DROP #все пакеты из интернета даже не обрабатываем
all all REJECT info #прочие пакеты заносим в лог
6)настройки правил файервола — здесь уже ставим разрешения (в моём случае их достаточно много, всегда такое не нужно):
>sudo nano /etc/shorewall/rulesACCEPT fw net tcp 80,110,443 #чтобы был доступ в интернет по http(s)
DNS/ACCEPT fw net #для форвардинга нашего DNS-servera
DNS/ACCEPT local fw #для получения DNS клиентами
SSH/ACCEPT local all #для управления из локали серверами #по SSH (в том числе и нашим роутером через putty)
IMAP/ACCEPT local all #разрешаем
POP3/ACCEPT local all #клиентам
SMTP/ACCEPT local all #их почту
RDP/ACCEPT local net # для управления из локали серверами #по RDP
Ping/ACCEPT all all #разрешено пинговать что угодно
REDIRECT local 3128 tcp 80 #редирект http траффика на squid
7)маскарадинг:
>sudo nano /etc/shorewall/masqтам пишем:
eth0 eth1
8)теперь запуск. Во-первых в
>sudo shorewall checkесли ошибок не обнаружено, то
>sudo shorewall start9)и, наконец
>sudo nano /etc/default/shorewallставим
STARTUP=1
а в
>sudo nano /etc/shorewall/shorewall.confSTARTUP_ENABLED=Yes
-это всё чтобы при старте системы shorewall стартовал.
Маленькое замечание. В настройках сети у клиентов маска должна быть
255.255.0.0