在Linux上安装ISP-fw(防火墙)
ISP-fW是一个防火墙脚本,提供端口转发,包过滤,状态包检测,端口重定向,伪装,SNAT / DNAT,TOS,从不最后它生成带宽管理的htb规则。 使用ISP-fw,您可以将PC转换成具有整形能力的网关。
让我们开始:
我会假设你已经在你的盒子上安装了Linux。 我使用Debian机器,所以本教程将用于Debian Linux,但与其他发行版不同。
要求:
- GNU / Linux发行版
- GCC 3.4.6编译器
- Iproute2(推荐最新版本( http://linux-net.osdl.org/index.php/Iproute2 );
- Linux内核2.4.32或2.6.16( www.kernel.org );
- 对话框( http://invisible-island.net/dialog/的最新版本);
- flex版本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所需)。
为了整形,您必须为您的内核启用QoS; 这个2.4.x和2.6.x的列表:
Linux内核2.4.32( http://www.kernel.org )
----------------------------------------------
如果从源代码编译内核,则需要选择以下选项:
#
# 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内核2.6.16( http://www.kernel.org )
------------------------------------------------
如果从源代码编译内核,则需要选择以下选项:
#
# 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
#
#排队/排程
#
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
#
#分类
#
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.从http://isp-fw.sourceforge.net下载并安装isp-fw
root@htb:~# wget http://kent.dl.sourceforge.net/sourceforge/isp-fw/ispfw-9.5-rc1.deb
root@htb:~# 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@htb:~# 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。 我们去配置。
配置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 - 这里输入黑名单IP
/etc/isp-fw/badports.conf - 这里您输入黑名单的端口
/etc/isp-fw/port.allow - 在此输入您要接受的端口
/etc/isp-fw/ssh.allow - 这里输入要允许ssh的ip(s)
4.将客户端添加到ISP-fW
您可以使用命令isped clienti
添加文件:
root@htb:~# isped clienti
现在,如果您的网络上有NAT,请确保选择masquerade = 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
如果您有自己的类别的来自arin或任何其他注册人的IP,请务必设置伪装=否
。
因为这个例子会假设我们已经分配了类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”意味着汤姆拥有外部带宽最低16 kbps和最大32 kbps; 适用于城域网最小128kbps,最大1024 kbps。
“#”号表示客户端已禁用,因此无法上网。
“#>”表示客户端被重定向到您定制的已暂停网页
现在开始程序只是键入
ispfw start