Шлюз на базе дебиан для домашней сети.
Настройка файрволла с помощью конфигуратора arno-iptables-firewall
Настройка файрволла с помощью конфигуратора 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
[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
Внимание! Если ваш провайдер предоставляет выход в интернет по 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