Шлюз на базе дебиан для домашней сети.


Настройка файрволла с помощью конфигуратора arno-iptables-firewall




Для организации файрволла в GNU/Linux используется программа iptables, которая, как правило, сразу инсталлируется при установке большинства дистрибутивов. В Debian GNU/Linux проверить это можно, запустив с правами администратора aptitude. При необходимости - устанавливаем iptables.


Однако ручное конфигурирование iptables является нетривиальной задачей и под силу только специалистам в области системного администрирования. Поэтому для настройки правил, по которым будет действовать файрволл, лучше воспользоваться специальным конфигуратором. В Debian GNU/Linux это - программа arno-iptables-firewall. Будучи запущенной, она задает ряд вопросов, на основании которых генерирует правила для функционирования файрволла iptables.


Набираем в консоли с правами суперпользователя: #aptitude install arno-iptables-firewall


В начале инсталляции программа спросит, действительно ли мы желаем с ее помощью настроить файрволл iptables:


[imgg]http://www.bible-mda.ru/soft/debian-4.0-firewall/debian-firewall-01.png[/imgg]


Вначале надо указать внешний интерфейс - "смотрящий" в интернет, т.е. подключенный к модему. Настройки интерфейсов определяются в конфигурационном файле /etc/network/interfaces. Он может иметь, например, такой вид:


Code:
# Это интерфейс lo - указывает на саму нашу машину. 


auto lo
iface lo inet loopback
	address 127.0.0.1
	netmask 255.0.0.0


# Это интерфейс eth0, который подключен к интернету (ADSL-модему)
# Его особенностью является то, что IP-адрес ему назначается провайдером динамически,
# поэтому выставлена опция dhcp


auto eth0
iface eth0 inet dhcp


# Это интерфейс, который обращен в локальную сеть
# Адрес локальной сети будет 192.168.2.0/24
# В целях безопасности в локальной сети шлюз имеет статический IP-адрес - 192.168.2.1,
# поэтому выставлена опция static
# Маска сети - 255.255.255.0
# Широковещательный адрес сети в таком случае будет 192.168.2.255


auto eth1
iface eth1 inet static
	address 192.168.2.1
	netmask 255.255.255.0
	broadcast 192.168.2.255
Итак, заглянув в настройки /etc/network/interfaces, указываем конфигуратору файрволла, что у нас внешним является интерфейс eth0:


[imgg]http://www.bible-mda.ru/soft/debian-4.0-firewall/debian-firewall-02.png[/imgg]


На вопрос, выдается ли нам от провайдера IP-адрес динамически (с помощью протокола DHCP), отвечаем утвердительно:


[imgg]http://www.bible-mda.ru/soft/debian-4.0-firewall/debian-firewall-03.png[/imgg]


Cледует вопрос, какие службы будут предоставлены с нашего компьютера внешним пользователям интернета. У нас - никакие! Мы не занимаемся профессиональным веб-хостингом и не предполагаем раздачу информации вовне. Оставляем строку пустой.


[imgg]http://www.bible-mda.ru/soft/debian-4.0-firewall/debian-firewall-04.png[/imgg]


Затем идет вопрос, будем ли мы предоставлять какие-либо службы по протоколу UDP. Тоже нет - и тоже оставляем стрjку пустой!
Нужно ли, чтобы нас пинговали из внешнего мира (т.е. проверяли, имеется ли связь с компьютером, на котором установлен файрволл)? В нашем случае это вполне допустимо:


[imgg]http://www.bible-mda.ru/soft/debian-4.0-firewall/debian-firewall-06.png[/imgg]


На этом настройка для отдельного компьютера, не являющегося шлюзом локальной сети, будет закончена. Если же мы предполагаем использовать компьютер как шлюз, нужно ответить еще на несколько вопросов. Указываем интерфейс, которым шлюз обращен в локальную сеть - в нашем случае это eth1, как явствует из /etc/network/interfaces (в противном случае, для "одинокого" компьютера, оставляем это поле незаполненным):


[imgg]http://www.bible-mda.ru/soft/debian-4.0-firewall/debian-firewall-07.png[/imgg]
Далее, на основании данных из /etc/network/interfaces, указываем спецификацию локальной сети, к которой подключен наш компьютер: в данном примере это 192.168.2.0/24


[imgg]http://www.bible-mda.ru/soft/debian-4.0-firewall/debian-firewall-08.png[/imgg]


На вопрос позволить ли NAT-трансляцию, т.е. переадресацию траффика из интернета через шлюз в локальную сеть и обратно, отвечаем "да" - это является одной из основных наших задач в данном случае:


[imgg]http://www.bible-mda.ru/soft/debian-4.0-firewall/debian-firewall-09.png[/imgg]


Тогда встает вопрос: а какой сегмент локальной сети может быть допущен через переадресацию к внешним сетям? У нас право доступа в интернет имеют все компьютеры локальной сети; опять указываем значение 192.168.2.0/24


[imgg]http://www.bible-mda.ru/soft/debian-4.0-firewall/debian-firewall-10.png[/img]


Наконец, подтверждаем свое желание запустить iptables без дополнительной проверки с нашей стороны автоматически сформированных конфигуратором правил для файрволла:


[img]http://www.bible-mda.ru/soft/debian-4.0-firewall/debian-firewall-11.png[/imgg]


После этого, если все прошло успешно, выдается сообщение, подобное приведенному ниже. Оно будет появляться теперь при каждой загрузке компьютера-шлюза и информировать об успешном запуске файрволла:


Code:
Arno's Iptables Firewall Script v1.8.8c
-------------------------------------------------------------------------------
Sanity checks passed...OK
Detected IPTABLES module... Loading additional IPTABLES modules:
All IPTABLES modules loaded!
Configuring /proc/.... settings:
 Enabling anti-spoof with rp_filter
 Enabling SYN-flood protection via SYN-cookies
 Disabling the logging of martians
 Disabling the acception of ICMP-redirect messages
 Setting the max. amount of simultaneous connections to 16384
 Enabling protection against source routed packets
 Setting default conntrack timeouts
 Enabling reduction of the DoS'ing ability
 Setting Default TTL=64
 Disabling ECN (Explicit Congestion Notification)
 Enabling support for dynamic IP's
 Flushing route table
/proc/ setup done...
Flushing rules in the filter table
Setting default (secure) policies
Using loglevel "info" for syslogd


Setting up firewall rules:
-------------------------------------------------------------------------------
Accepting packets from the local loopback device
Enabling setting the maximum packet size via MSS
Enabling mangling TOS
Logging of stealth scans (nmap probes etc.) enabled
Logging of packets with bad TCP-flags enabled
Logging of INVALID packets disabled
Logging of fragmented packets enabled
Logging of access from reserved addresses enabled
Setting up anti-spoof rules
Reading custom IPTABLES rules from /etc/arno-iptables-firewall/custom-rules
Loading (user) plugins
Setting up INPUT policy for the external net (INET):
Enabling support for a DHCP assigned IP on external interface(s): eth0
Logging of explicitly blocked hosts enabled
Logging of denied local output connections enabled
Packets will NOT be checked for private source addresses
Allowing the whole world to send ICMP-requests(ping)
Logging of dropped ICMP-request(ping) packets enabled
Logging of dropped other ICMP packets enabled
Logging of possible stealth scans enabled
Logging of (other) connection attempts to PRIVILEGED TCP ports enabled
Logging of (other) connection attempts to PRIVILEGED UDP ports enabled
Logging of (other) connection attempts to UNPRIVILEGED TCP ports enabled
Logging of (other) connection attempts to UNPRIVILEGED UDP ports enabled
Logging of other IP protocols (non TCP/UDP/ICMP) connection attempts enabled
Logging of ICMP flooding enabled
Applying INET policy to external (INET) interface: eth0 (without an external subnet specified)
Setting up INPUT policy for internal (LAN) interface(s): eth1
 Allowing ICMP-requests(ping)
 Allowing all (other) protocols
Setting up FORWARD policy for internal (LAN) interface(s): eth1
 Logging of denied LAN->INET FORWARD connections enabled
 Setting up LAN->INET policy:
  Allowing ICMP-requests(ping)
  Allowing all (other) protocols
Enabling masquerading(NAT) via external interface(s): eth0
 Adding (internal) host(s): 192.168.2.0/24
Security is ENFORCED for external interface(s) in the FORWARD chain
Jan 16 23:53:12 All firewall rules applied.

Примечание 1. После установки скрипта и выполнения дейтствий указанных в инструкции выполните в консоли команду
Code:
dpkg-reconfigure arno-iptables-firewall
Все данные введенные при 1 запуске скрита сохраняются. Вам необходимо включить нат т.к при 1 запуске скрипта нат не включается.
Внимание! Если ваш провайдер предоставляет выход в интернет по VPN соединению. То в настройках фаэрвола при вопросе какой сетевой интерфейс является внешним следует указать интерфейс ppp0
инструкция по настройке VPN соединения здесь: Выход в интернет через VPN протокол pptp
Конфиги.
debconf.cfg


Code:
#######################################################################
# Feel free to edit this file.  However, be aware that debconf writes #
# to (and reads from) this file too.  In case of doubt, only use      #
# 'dpkg-reconfigure -plow arno-iptables-firewall' to edit this file.  #
# If you really don't want to use debconf, or if you have specific    #
# needs, you're likely better off using                               #
# /etc/arno-iptables-firewall/custom-rules.  Also see README.Debian.  #
#######################################################################
DC_EXT_IF="ppp0"
DC_EXT_IF_DHCP_IP=1
DC_OPEN_TCP="20 21 22 25 41 80 333 5190 8081 10000 25565 27000:27400"
DC_OPEN_UDP="41 3478 4379 4380 5060 8081 27000:27400"
DC_INT_IF="eth0"
DC_NAT=1
DC_INTERNAL_NET="10.15.10.0/29"
DC_NAT_INTERNAL_NET="10.15.10.0/29"
DC_OPEN_ICMP=1