Username: Password:

怎样实现Linux防火墙让远程办公更安全
来源:作者: 发布时间:2007-11-21 13:26:00

现在,通过VPN来实现远程办公是比较常见的方法。该方法的不足之处主要有两点:第一,若要确保VPN用户随时访问内网,内网的电脑必须长时间保持开机状态,造成大量资源的浪费;第二,用户连入VPN之后,只能把远程电脑当成网络邻居中的一员来互传资料。

  利用Linux实现远程办公能够弥补VPN方式的以上两点不足:能够实现按需开机;能够直接控制和监测远程电脑,连同远程电脑的桌面。此方法中Linux服务器必须是连接在公网上的一台机器,他“扮演”了网关和防火墙的角色,并且负责唤醒内网的电脑。

  环境配置

  1.安装wakelan软件

  wakelan是Linux下的一款远程唤醒程式,能唤醒和Linux服务器相连的电脑,并且其网卡MAC地址为指定地址。命令格式是“wakelan MAC地址”。

  wakelan的安装方法如下:

  #tar wakelan-1.1.tar.gz
  #cd wakelan-1.1
  #./configure
  #make
  #make install

  2.添加广播路由

  在此实际工作环境中,局域网内的机器都通过交换机连在Linux服务器的eth1网卡上。Linux服务器要对整个局域网进行广播,需要添加以下一条路由:

  #route add -host 255.255.255.255 -dev eth1

  把上面这条路由添加到/etc/rc.local中,即使Linux服务器重新启动,也能够自动添加该路由。

  3.配置DHCP

  在DHCP的配置文档/etc/dhcpd.conf中指定内网Windows机器的IP地址、域服务器地址、域名、网关、DNS服务器等信息,使其启动后能够自动获取指定的IP。当然,假如每台电脑上都有固定的IP地址,则配置DHCP服务的过程能够忽略。

  /etc/dhcpd.conf中配置的内容如下:

  ddns-update-style ad-hoc;
  max-lease-time -1;
  default-lease-time -1;
  option subnet-mask 255.255.255.0;
  option broadcast-address 255.255.255.255;
  option routers 192.168.0.1;
  option domain-name-servers 192.168.0.1;
  option domain-name "home.net.cn";
  subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.11 192.168.0.100;
  host platinum {
  hardware ethernet 00:0a:e6:a9:64:a2;
  fixed-address 192.168.0.2;
  }
  }

  上面的配置中,对名为“platinum”的PC做了指定MAC的IP分配,固定platinum的IP地址为192.168.0.2,如有其他机器,也做类似配置即可。

  用命令“/etc/rc.d/init.dhcpd start”启动DHCP服务,使DHCP能够正常运行。

  4.配置iptables,配置DNAT功能

  DNAT功能能够将访问Linux网关特定端口的任何连接请求都转到内网指定机器的相应端口上(内网用户的连接请求除外)。

  举例如下:

  #iptables -A PREROUTING -t nat -p tcp -s ! 192.168.0.0/24 --dport 4899

  -j DNAT --to 192.168.0.2:4899

  上例这条命令中,把访问Linux网关4899端口的任何连接请求都转到IP为192.168.0.2的机器的4899端口上。4899是远程控制程式Radmin的默认服务端口。能够把这条命令添加到文档/etc/rc.local里,使Linux启动就自带这个功能。用户也能够写一个实现同样功能的Firewall脚本,放在/etc/rc.local里执行。

  5.在内网Windows上安装远程控制软件

  常用的远程控制软件有pcAnywhere、Radmin等,用户能够根据自己的喜好安装其中一个,本人使用的是Radmin。用来远程办公的电脑和受控制的电脑都必须安装这个软件,不同的是被控端除了安装这个软件以外,还需要启动服务端程式。

  6.远程唤醒内网机器

  远程启动的前提是Windows机器支持网卡唤醒,并且BIOS的配置要符合网卡唤醒标准。在任何能上网的地方用SSH方式登录到Linux机器,执行远程唤醒命令:

  #wakelan 00:0a:e6:a9:64:a2

  假如电脑启动了,则证实前面的配置成功。要远程登录,用户还必须记住一堆难记的MAC地址,这是很麻烦的,而且不安全。我们能够通过Web服务来改进这个功能。

  安全、便捷的Web启动方式

  假如Linux中已安装了Apache和PHP,就能够通过配置Apache和编写PHP脚本来实现更安全地远程启动。

  1.编写PHP脚本

  在Apache的DocumentRoot下面建立一个wakeup目录,在这个目录下建立index.php文档,内容如下:

    passthru("/usr/local/bin/wakelan 00:0a:e6:a9:64:a2");
  echo "电脑platinum正在启动 . . .";
  ?>

  现在,只要在浏览器中输入一个网址(事先在Apache中配置好的),比如,http://platinum.3322.org/wakup,就能够实现远程启动了。这样虽然很方便,但是任何人都能够访问,还是不安全,需要添加Apache认证来解决这个问题。

  2.添加Apache认证

  修改Apache的配置文档/usr/local/apache2/conf/httpd.conf,添加如下代码:

  
  AllowOverride AuthConfig
  


  在wakeup目录中建立.htaccess文档,并编辑:

  #vi /usr/local/apache2/htdocs/wakeup/.htaccess
  AuthName "电脑platinum启动器"
  AuthType Basic
  AuthUserFile /usr/local/apache2/apache.users
  require user platinum

  3.创建密码文档

  接下来,就是创建一个专门用来存放密码的文档apache.users:

  root@server# htpasswd -c /usr/local/apache2/apache.users platinum
  New password:
  Re-type new password:
  Adding password for user platinum

  apache.users文档内的密码被加密,修改密码时,还是使用htpasswd命令,不带“-c”参数即可。
要使配置生效,必须重启Apache服务。这样,再用http://platinum.3322.org/wakeup访问,就会需要密码认证了(见图1)。不知道密码的人是无法进入系统开启指定电脑的。

图1 启动远程电脑的认证画面

  开始远程控制

  通过以上方法远程启动电脑后,启动事先装好的远程控制软件,输入Linux服务器的地址,就能够操作远程的电脑platinum了。操作完成后,假如不再需要电脑继续工作,能够通过远程控制软件关闭远程的电脑,避免了资源浪费。

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅