[转] Linux企业上网解决方案

由 quanliking 在 12-01-2002 13:13 发表:

[转] Linux企业上网解决方案

http://www.powerleader.com.cn/settle/settle_13.htm

Linux企业上网解决方案

下面配置文件都为实际在运行中的,在红旗linux环境下。

一、文件服务器(samba-2.0.6-9)

配置文件:/etc/smb.conf

#=================== Global Settings =============================

[global]

workgroup = shenzhennt

client code page = 936

解决中文文件名

server string = File Server

log file = /var/log/samba/log.%m

Put a capping on the size of the log files (in Kb).

max log size = 50

Security mode. Most people will want user level security. See

security_level.txt for details.

security = user

encrypt passwords = no

Most people will find that this option gives better performance.

See speed.txt and the manual pages for details

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

WINS Server - Tells the NMBD components of Samba to be a WINS Client

Note: Samba can be either a WINS Server, or a WINS Client, but NOT both

wins server = 10.100.100.109

dns proxy = no

#========================== Share Definitions ===========================

[homes]

comment = Home Directories

browseable = no

writable = yes

[public]

comment = Public Folder

path = /home/public

public = yes

writable = yes

#共享目录,每个人都可读写

[it]

comment = It Folder

path = /home/it

public = yes

write list = @it

产生一个it组,维护public/it目录,该目录放安装软件,driver........,非IT组用户只能读。

还可以按照此方法产生部门级共享目录等。

注意:

1. Smb.conf其它参数用缺省即可。由于Linux的权限管理没有NT全面,在权限分配较复杂情况下,

可以通过两种方式:a。对一个目录产生多个共享目录,每个目录对相应的用户组分配不同权限

b。可以和Linux上文件权限相结合。比如:samba共享目录可以给每个人写权限,

但Linux上文件权限为只给特定组写权限,则其它人只能读。

2. 用户及密码管理:

A:如果encrypt passwords = yes,用户会有两个密码(Linux,smbpasswd),用户改密码会麻烦,所以我

设置为no,samba会用/etc/passwd做用户验证,用户也只维护一个密码,比较方便但不足够安全,好象

unix password sync = Yes可以既方便又安全,但我没成功。

B:修改/etc/passwd,使用户的shell为/usr/bin/passwd,这样用户想改密码时,telnet到samba服务器

即可,其它如sendmail服务器也可以用这种方法。

C:如不想用户的目录出现/GNUstep目录,运行mv /etc/skel /etc/skel.backup即可。

3. windows98客户端:改注册表。在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP中增加一DWORD值:值名:EnablePlainTextPassword 数值:0x01。改\windows\hosts文件,ipaddree samba server name

4. 过网关:如客户端和samba server之间有路由器,确保客户端和samba server在同一workgroup, 客

户端编辑\windows\lmhosts文件,a.b.c.d samba server的netbios名或主机名。 我现在的做法为:给

分公司IT设一个帐号在总部,让他们通过CUTEFTP再通过public目录实现总部和分公司的文件传输。这

样可以避免分公司一定要跟总公司在一个域(他们还有NT)。

5. 磁盘限额:参见文章荟萃‘如何在Linux中设置磁盘限额’, 为了快速地为系统上的一群使用者,例

如一百名,设定和 bob 相同的 quota 值,首先以手动编辑 bob 的 quota 信息,然后执行: #csh #edquota -p bob awk -F: '$3 499 {print $1}' /etc/passwd这是假设你的使用者 UID 从 500 开

始.

更具体可以参考linuxforum文章。

二、打印服务器(samba-2.0.6-9)

配置文件:/etc/smb.conf

[global]

workgroup = NT-Domain-Name or Workgroup-Name workgroup = shenzhennt map to guest = Bad User

#很重要,这样每个用户都可以打印而不会被要求密码。

server string is the equivalent of the NT Description field server string = Printer In

OP

if you want to automatically load your printer list rather

than setting them up individually then you'll need this printcap name = /etc/printcap

load printers = yes log file = /var/log/samba/log.%m

Put a capping on the size of the log files (in Kb).

max log size = 50

security = user

socket options = TCP_NODELAY

dns proxy = no

#========================== Share Definitions ===========================

[homes]

comment = Home Directories

browseable = no

writable = yes

[printers]

comment = Printer in OP

path = /var/spool/samba

browseable = no

guest ok = yes

writable = no

printable = yes

其它参数用缺省即可.

另:samba_2.0.3-8有bug.

三、DNS(bind-8.2.2_P5-9)、FTP(wu-ftpd-2.4.2vr17-3)、 WWWFTP, WWW由于没有特殊应用, 所以只用了缺省值.

下面介绍DNS配置文件。

A. /etc/named.conf

// generated by named-bootconf.pl

options {

directory "/var/named";

/*

  • If there is a firewall between you and nameservers you want

  • to talk to, you might need to uncomment the query-source

  • directive below. Previous versions of BIND always asked

  • questions using port 53, but BIND 8.1 uses an unprivileged

  • port by default.

*/

// query-source address * port 53;

};

//

// a caching only nameserver config

//

zone "." in {

type hint;

file "named.ca";

};

zone "0.0.127.in-addr.arpa" in {

type master;

file "named.local";

};

zone "domain.com" in {

type master;

file "domain.com";

};

zone "c.b.a.in-addr.arpa" in {

type master;

file "abc";

};

zone "200.100.10.in-addr.arpa" in {

type master;

file "200";

};

B. /var/named/domain.com

@ IN SOA domain.com. yzy.domain.com. (

1999122105 28800 14400 3600000 86400 );

NS dns.domain.com.

MX 10 firewall.domain.com.

localhost A 127.0.0.1

dns A a.b.c.dns

domain.com. A a.b.c.dns

firewall A a.b.c.fw

firewall1 A 10.100.200.2

www cname dns.domain.com.

ftp cname dns.domain.com.

mail cname firewall.domain.com.

C. /var/named/abc

@ IN SOA domain.com. yzy.domain.com. (

1999122101 28800 14400 3600000 86400 )

NS dns.domain.com.

177 PTR dns.domain.com.

188 PTR mail.domain.com.

177 PTR www.domain.com.

177 PTR ftp.domain.com.

D. /var/named/200

@ IN SOA domain.com. yzy.domain.com. (

1999122101 28800 14400 3600000 86400 )

NS dns.domain.com.

2 PTR firewall1.domain.com.

注意:

DNS对SENDMAIL非常重要,上面firewall1主要是为全公司的sendmail服务器服务的,

作为email网关.

四、代理服务器(squid-2.3.STABLE1-5)

配置文件:/etc/squid/squid.conf

http_port 8080

icp_port 8080

hierarchy_stoplist cgi-bin ?

cache_mem 8 MB

cache_swap_low 90

cache_swap_high 95

maximum_object_size 2048 KB

cache_dir ufs /var/spool/squid 150 16 256

cache_access_log /var/log/squid/access.log

cache_log /var/log/squid/cache.log

cache_store_log /var/log/squid/store.log

debug_options ALL,1

refresh_pattern ^ftp: 1440 20% 10080

refresh_pattern ^gopher: 1440 0% 1440

refresh_pattern . 0 20% 4320

ACCESS CONTROLS

-----------------------------------------------------------------------------

#Defaults:

acl all src 0.0.0.0/0.0.0.0

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255

acl SSL_ports port 443 563

acl Safe_ports port 80 21 443 563 70 210 1025-65535

acl Safe_ports port 280 # http-mgmt

acl Safe_ports port 488 # gss-http

acl Safe_ports port 591 # filemaker

acl Safe_ports port 777 # multiling http

acl CONNECT method CONNECT

TAG: http_access

acl hq src 10.100.100.29/32 10.100.100.2/32 10.100.100.40/32 10.100.100.75/32 10.100.100.6/32 10.100.100.87/32

#总部

acl gz src 10.100.101.61/32 10.100.101.98/32 10.100.101.72/32 10.100.101.62/32 10.100.101.73/32 10.100.101.166/32 10.100.101.15/32

#分部

http_access allow hq

http_access allow gz

http_access allow manager localhost

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost

http_access deny all

icp_access allow all

miss_access allow all

五、防火墙+端口转发(ipchains-1.3.9-5, ipmasqadm-0.4.2-3)

先介绍网络拓扑结构:

a.b.c.xxx为Internet真实地址。防火墙带DMZ区。除了可以进行包过滤以外,还进行端口转发,

使分公司用户可以通过总部唯一Internet连接收发他们当地Email。同时它还是Email网关,

凡是从Internet来或到Internet上的邮件都经过它。为了防止spammer攻击,

防火墙上的Sendmail不允许RELAY,但是为了让出差的用户可以发Email,

设置了一个可以进行RELAY的服务器Mail2以保护Firewall(现在Sendmail可以通过授权smtp方式允许在Linux上用户发Email而又不受到攻击),对外不公布,

在Mail2上安装拨号服务器,设置一个公共的帐号和密码,再对Mail2设置安全规则,

只允许通过它收发Email,这样既简化管理又实现拨号服务器功能。

配置文件:/etc/rc.d/fire。在/etc/rc.d/rc.local文件最后加一行:sh /etc/rc.d/fire, 这样系统每次启动都会自动设置防火墙。

echo ""

echo "Starting ipchains rules..."

#Refresh all Chains

/sbin/ipchains -F

echo 1 /proc/sys/net/ipv4/ip_forward

/sbin/ipchains -A forward -j MASQ -s 10.100.100.102/32

/sbin/ipchains -A forward -j MASQ -s 10.100.101.252/32

/sbin/ipchains -A forward -j MASQ -s 10.100.102.252/32

/sbin/ipchains -A forward -j MASQ -s 10.100.103.252/32

/sbin/ipchains -A forward -j MASQ -s 10.100.104.252/32

/sbin/ipchains -A forward -j MASQ -s 10.100.105.252/32

/sbin/ipchains -A forward -j MASQ -s 10.100.109.252/32

/sbin/ipchains -A forward -j MASQ -s 10.100.110.252/32

#以上为IP伪装,如果是通过防火墙访问Internet,则可以通过伪装,把整个局域网透明代理出去。/usr/sbin/ipmasqadm portfw -a -P tcp -L a.b.c.fw 110 -R 10.100.100.252 110

#为总部用户收email, 当用户对a.b.c.fw:110请求时,转发到mssz的110口,这样即可收email,以下雷

同。

/usr/sbin/ipmasqadm portfw -a -P tcp -L a.b.c.fw 60101 -R 10.100.101.252 110 /usr/sbin/ipmasqadm portfw -a -P tcp -L a.b.c.fw 60102 -R 10.100.102.252 110

/usr/sbin/ipmasqadm portfw -a -P tcp -L a.b.c.fw 60103 -R 10.100.103.252 110 /usr/sbin/ipmasqadm portfw -a -P tcp -L a.b.c.fw 60104 -R 10.100.104.252 110 /usr/sbin/ipmasqadm portfw -a -P tcp -L a.b.c.fw 60105 -R 10.100.105.252 110 /usr/sbin/ipmasqadm portfw -a -P tcp -L a.b.c.fw 60109 -R 10.100.109.252 110 /usr/sbin/ipmasqadm portfw -a -P tcp -L a.b.c.fw 60110 -R 10.100.110.252 110

#IP spoof protection

if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then

echo ""

echo -n "Setting up IP spoofing protection..."

for f in /proc/sys/net/ipv4/conf/*/rp_filter;

do

echo 1 $f

done

echo "done."

Else

Echo "PROBLEMS SETTING UP IP SPOOFING PROTECTION. BE WORRIED."

Echo "CONTROL-D will exit from this shell and continue system startup."

echo

#STart a single user shell on the console

/sbin/sulogin $CONSOLE

fi

#refuse broadcast address source packets

/sbin/ipchains -A input -j DENY -s 255.255.255.255

/sbin/ipchains -A input -j DENY -d 0.0.0.0

############################################

echo ""

echo "STarting http ............"

#from Internet & Intranet

/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 1024: -d a.b.c.dns/32 www -j ACCEPT /sbin/ipchains -A input -p udp -s 0.0.0.0/0 1024: -d a.b.c.dns/32 www -j ACCEPT

#Response

/sbin/ipchains -A input -p tcp -s a.b.c.dns www -d 0.0.0.0/0 1024: -i eth2 -j ACCEPT /sbin/ipchains -A input -p udp -s a.b.c.dns www -d 0.0.0.0/0 1024: -i eth2 -j ACCEPT ############################################

echo ""

echo "Starting FTP......................"

#From Internet & Intranet

/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 1024: -d a.b.c.dns/32 ftp -j ACCEPT

#Response

/sbin/ipchains -A input -p tcp -s a.b.c.dns/32 ftp -d 0.0.0.0/0 1024: -i eth2 -j ACCEPT ##################################################

echo ""

echo "Starting Domain ............."

From Internet & intranet

/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 -d a.b.c.dns/32 domain -j ACCEPT

/sbin/ipchains -A input -p udp -s 0.0.0.0/0 -d a.b.c.dns/32 domain -j ACCEPT

Response

/sbin/ipchains -A input -p tcp -s a.b.c.dns/32 domain -d 0.0.0.0/0 -j ACCEPT

/sbin/ipchains -A input -p udp -s a.b.c.dns/32 domain -d 0.0.0.0/0 -j ACCEPT

#To Internet query

/sbin/ipchains -A input -p tcp -s a.b.c.dns/32 -d 0.0.0.0/0 domain -i eth2 -j ACCEPT /sbin/ipchains -A input -p udp -s a.b.c.dns/32 -d 0.0.0.0/0 domain -i eth2 -j ACCEPT

#response

/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 domain -d a.b.c.dns/32 -i eth0 -j ACCEPT /sbin/ipchains -A input -p udp -s 0.0.0.0/0 domain -d a.b.c.dns/32 -i eth0 -j ACCEPT ####################################################'

echo ""

echo "Starting Telnet................"

#From Intranet

/sbin/ipchains -A input -p tcp -s 10.100.100.0/24 1024: -d a.b.c.dns/32 telnet -i eth1 -j ACCEPT

/sbin/ipchains -A input -p tcp -s a.b.c.fw/32 1024: -d a.b.c.m2/32 telnet -i eth0 -j ACCEPT

/sbin/ipchains -A input -p tcp -s 10.100.100.0/24 1024: -d 10.100.200.2/32 telnet -i eth1 -j ACCEPT

#以上允许总部主机对DMZ,FIREWALL进行维护,允许FIREWALL对MAIL2维护,当然最好不用TELNET, 通过SSH维护。

#Response

/sbin/ipchains -A input -p tcp -s a.b.c.dns/32 telnet -d 10.100.100.0/24 1024: -i eth2 -j ACCEPT

/sbin/ipchains -A input -p tcp -s a.b.c.m2/32 telnet -d a.b.c.fw/32 1024: -i eth0 -j ACCEPT

/sbin/ipchains -A input -p tcp -s 10.100.200.2/32 telnet -d 10.100.100.0/24 1024: -i eth1 -j ACCEPT

####################################################

echo ""

echo "Starting smtp ....................."

From Internet

/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 -d a.b.c.fw/32 smtp -j ACCEPT

/sbin/ipchains -A input -p tcp -s a.b.c.fw/32 smtp -d 0.0.0.0/0 -j ACCEPT

To Internet

/sbin/ipchains -A input -p tcp -s a.b.c.fw/32 -d 0.0.0.0/0 smtp -j ACCEPT

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus