SASA DESIGN

Open Your mind, Open Your Source Code!

Инсталиране ISP-fw Firewall (Защитна стена) в Debian

28 октомври, 2008 – 8:37 pm
Debian
ISP-fW е скрипт, който предвижда port forwarding, packet filtering, port redirection, masquerading, SNAT/ DNAT, TOS и не на последно място тя генерира htb правила за bandwidth management. С ISP-fw можете да превърнете един компютър на gateway с shaping способности.

Нека да започнем:

Ще приемем, че имате инсталиран Linux на вашата машина. Аз използвам Debian на машината си така че тази документация ще бъде за Debian Linux, но не би трябва да се различава много от останалите дистрибуции.

1 Изисквания
  • GNU/Linux дистрибуция;
  • GCC 3.4.6 compiler;
  • Iproute2 (най-новата версия е препоръчително (http://linux-net.osdl.org/index.php/Iproute2);
  • Linux Kernel 2.4.32 или 2.6.16 (www.kernel.org);
  • dialog (последната версия от http://invisible-island.net/dialog/);
  • flex version 2.5.4a; (не по-висока)
  • iptables v1.2.11 или по-нова версия;
  • DHCP (последната версия от ftp://ftp.isc.org/isc/dhcp/);
  • Apache и php (изисква се за webISP);
  • ZendOptimizer 3.x (изисква се за webISP);
  • mySQL 4.x (изисква се за webISP);
  • MRTG (изисква се за webISP);
  • IPFM (изисква се за webISP).
За шейпване (shaping) трябва да е активиран (enable) QoS в ядрото (kernel); това е за 2.4.x и 2.6.x:

Linux Kernel 2.4.32 ( http://www.kernel.org )

Ако сте компилирали ядрото от source ще трябва да изберете следните опции:
#
# QoS and/or fair queuing
#
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_CSZ=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_SCH_DSMARK=m
CONFIG_NET_SCH_INGRESS=m
CONFIG_NET_QOS=y
CONFIG_NET_ESTIMATOR=y
CONFIG_NET_CLS=y
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_POLICE=y

Linux Kernel 2.6.16 ( http://www.kernel.org )

Ако сте компилирали ядрото от source ще трябва да изберете следните опции:

#
# QoS and/or fair queuing
#
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CLK_JIFFIES=y
# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
# CONFIG_NET_SCH_CLK_CPU is not set

#
# Queuing/Scheduling
#
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_DSMARK=m
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_SCH_INGRESS=m
#
# Classification
#
CONFIG_NET_CLS=y
CONFIG_NET_CLS_BASIC=m
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=y
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_CLS_U32_PERF=y
CONFIG_CLS_U32_MARK=y
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
CONFIG_NET_EMATCH_NBYTE=m
CONFIG_NET_EMATCH_U32=m
CONFIG_NET_EMATCH_META=m
CONFIG_NET_EMATCH_TEXT=m
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=m
CONFIG_NET_ACT_GACT=y
CONFIG_GACT_PROB=y
CONFIG_NET_ACT_MIRRED=m
CONFIG_NET_ACT_IPT=m
CONFIG_NET_ACT_PEDIT=m
CONFIG_NET_ACT_SIMP=m
CONFIG_NET_CLS_IND=y
CONFIG_NET_ESTIMATOR=y

Забележка

За успешното използване mark_in_u32 трябва да използвате най-малко ядрото 2.6.16

2 Теглене и инсталиране на isp-fw от http://isp-fw.sourceforge.net

root@sasa:~# wget http://kent.dl.sourceforge.net/sourceforge/isp-fw/ispfw-9.5-rc1.deb

и

root@sasa:~# mysql -u user -p password
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> create database ispfw;
Query OK, 1 row affected (0.00 sec)

mysql> quit
Bye

и

root@sasa:~# dpkg -i ispfw-9.5-rc1.deb

и

SQL host [localhost]:
SQL user [root]: ispfw
SQL pass [changeme]: ****
SQL db [ispfw]: ispfw
Admin user for webpage [admin]: admin
Admin password for webpage [changeme]: ****
Installation successful.
Edit /var/www/webisp/include/config.php.
Change in php.ini session.auto_start to 1
Note that you need to install zendOptimizer http://www.zend.com/free_download/optimizer

Вече сме готови с инсталацията на ISP-FW. Сега да го конфигурираме.

3 Конфигуриране на ISP-FW

Редактирайте /etc/isp-fw/firewall.conf за вашите нужди (можете да използвате isped fireconfig от конзолата).

http://isp-fw.wiki.sourceforge.net/Config-Examples

#generated by setup, see docs/cfg/
network_name = Example
domain = example.com
default_editor = vi
default_ipt_policy = ACCEPT
net_interface = eth0
lan_interface = eth1
net_ip = 45.93.203.4
clone_mac = no
gateway = 45.93.203.1
subnet = 255.255.255.0
fake_mac = 00:0D:A1:D9:D2:DA
download = start
upload = start
bandwith = 2048 kbps
burst = 0
qdisc = sfq
bgp_file = none
htb_mode = none
ssh_all = no
#I set ssh_all to no, if so you have to enter a list of ips in /etc/isp-fw/ssh.allow
ssh_port = 22
use_squid = no
squid_port = 3128
load_custom = no
masquerade = yes
update_hosts = yes
optimize = yes
opt_conntrack = auto
mac_filter = no
auto_redirect = no
my_web = 1234
block_traceroute = no
flood = no
no_port_scan = no
ping_protection = yes
max_conn_per_port =
use_dhcp = yes

#DHCP section
class = 10.10.10.0/255.255.255.0
router = 10.10.10.1
range = 10.10.10.1 10.10.10.254
broadcast = 10.10.10.255
dns = 10.10.10.1, 10.10.10.2
wins = 10.10.10.2

/etc/isp-fw/spam.conf - тук са blacklisted IP-та
/etc/isp-fw/badports.conf – тук са blacklisted портове
/etc/isp-fw/port.allow – тук са портове, които искате да разрешите (accept)
/etc/isp-fw/ssh.allow – тук са IP-та, които искате да разрешите за ssh връзка

4 Добавянето на клиенти на ISP-FW

Можете да добавяте файлове с помощта на командата isped clienti:

root@sasa:~# isped clienti

Сега, ако имате NAT в вашата мрежа, уверете се, че опцията masquerade = yes да е (yes), ето как изглежда файла:

#CAUTION dont leave blank fields! See docs/cfg/clienti.* for more info
#MAC              IP-LAN      IP-NET  MINE/MAXE/MINM/MAXM NAME
00:0E:2E:1F:E7:FA 10.10.10.2 0.0.0.0 16/128/1024/1024      Tom
00:0E:2E:1F:E1:AA 10.10.10.3 0.0.0.0 16/512/1024/1024      Britney
#00:01:1A:1A:AA:AA 10.10.10.4 0.0.0.0 16/512/1024/1024     Alice
#END

Ако имате собствен IP клас, уверете се че masquerade = no, да е (no)
За този пример ще приемем, че имаме класа 9.10.11.0/24 разпределени.

#CAUTION dont leave blank fields! See docs/cfg/clienti.* for more info
00:0E:2E:1F:E7:FA 0.0.0.0 9.10.11.2 16/32/128/1024 Tom
00:02:AA:11:B2:AC 0.0.0.0 9.10.11.3 16/32/256/2048 Britney
#00:01:AA:03:04:05 0.0.0.0 9.10.11.4 16/32/256/2048 Alice
#END

Съвети

„16/32/128/1024″ означава, че е за external bandwidth, 16 kbps е минималната гарантирана скорост и 32 kbps е максималното. А за МАН (metropolitan network area) 128 kbps е минимум, а 1024 kbps е максимум скорост.

  • Знака „#“ – означава, че клиентът е изключен и поради това няма интернет достъп.
  • Знака „#>“ – знак означава, че клиентът е пренасочен към вашата уеб страница.

Сега, за да стартирате програмата, просто въведете

ispfw start

5 Връзки

  • Основен: htb

Напиши коментар