免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 32928 | 回复: 80
打印 上一主题 下一主题

[OpenBSD] [原创]OpenBSD.Nginx.MySQL.PHP环境搭建手册[第二版] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-12 14:13 |只看该作者 |倒序浏览


前言

=====================================================

感谢ChinaUnix以及ChinaUnix论坛中的众多高手,在这里学到了很多!

本手册是O.N.M.P.系列的第二版,在第一版手册中,只是简单的说明了O.N.M.P.环境的基本搭建方法,并没有过多的考虑到生产系统适用的情况。第二版将作较大的修正,以使得本手册可以对生产环境的搭建起到有益的参考作用。

本人水平有限,手册中出现纰漏在所难免,您若在生产实际中应用时发现有什么问题,或者有什么更好的建议,请移步至ChinaUnix论坛的BSD版,或至偶的个人博客(http://onmp.cublog.cn),跟帖进行指正。希望在大家的共同努力下,能够把本手册尽量做到完美!

本手册以在OpenBSD 4.4环境下搭建Nginx、MySQL、PHP环境为例进行讲解。按照惯例,root权限。

=====================================================

目录

一、OpenBSD的安装及注意事项
二、系统性能调优

Ⅰ、/etc/fstab调优
Ⅱ、/etc/sysctl.conf调优

三、O.N.M.P.软件环境的安装
四、Nginx配置

Ⅰ、Nginx配置文件的修改
Ⅱ、Nginx日志截断

五、MySQL与phpMyAdmin的配置
Ⅰ、MySQL的配置
Ⅱ、phpMyAdmin的配置

六、强化PHP的安全
七、强化SSH的安全

Ⅰ、SSH配置文件的修改
Ⅱ、使用KEY进行验证
Ⅲ、按需启动SSH
Ⅳ、一点安全小常识

八、启用Packet Filter防火墙
九、系统启动脚本的修改


=====================================================

一、OpenBSD的安装及注意事项

OpenBSD的安装这里就不多说了,主要是安装时系统组件的选择、分区和系统服务的部分。对于系统组件部分,作为生产系统来说,偶并不推荐安装comp44.tgz这个组件。因为comp44.tgz实际就是编译器,不装这个,可以在很大程度上避免安装一些非授权的软件,从而提高远程主机的安全性。如果真的需要安装什么软件,也可以在非重要的机器上进行编译,然后使用PSFTP等软件上传到远程主机上使用。关于PSFTP软件的使用,二楼有详细的介绍。

系统分区时,推荐将/usr、/usr/local、/var、/var/mysql、/var/mail、/var/log、/var/nginx等分区单独分出来,也就是说,进行比较细致的分区,防止某个目录中的文件膨胀占满整个分区导致的死锁等问题。假定你有一个80G的硬盘,一个分区示例在下面:

/200M
(swap)1G
/tmp200M
/usr500M
/usr/local200M
/var100M
/var/mysql10G
/var/mail100M
/var/log5G~10G
/home200M
/var/nginx剩余空间


至于系统服务部分,建议所有的服务都选择“n”,亦即不随系统启动。

二、系统性能调优

对于多核的机器,使用bsd.mp这个核心。
  1. mv /bsd /obsd
  2. mv /bsd.mp /bsd
复制代码
Ⅰ、/etc/fstab调优
  1. vi /etc/fstab
复制代码
在文件系统描述符部分,加入"noatime"和"softdep"。示例如下:

/dev/wd0a / ffs rw,noatime,softdep 1 1
/dev/wd0l /home ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0d /tmp ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0e /usr ffs rw,nodev,noatime,softdep 1 2
/dev/wd0f /usr/local ffs rw,nodev,noatime,softdep 1 2
/dev/wd0g /var ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0i /var/log ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0j /var/mail ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0h /var/mysql ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0k /var/nginx ffs rw,nodev,nosuid,noatime,softdep 1 2


友情提醒:softdep是一种非同步的文件系统,意外掉电可能造成数据的遗失/损坏,生产系统请谨慎使用!

改完后保存退出,reboot,看能不能正常启动。

一般情况下是没有问题的,个别机器或虚拟机可能会因为兼容性的缘故,无法启动。那么就把根目录的softdep拿掉,其他目录保留,仍然会有作用。

更多关于OpenBSD环境下磁盘性能调优的内容,请参看偶博客的文章,地址在下面:
http://blog.chinaunix.net/u2/81136/showart_1841280.html

Ⅱ、/etc/sysctl.conf调优
  1. vi /etc/sysctl.conf
复制代码
跳到最后,加入下面的内容:

# 增大文件系统缓存到1M
kern.maxvnodes=131072

# 允许最多65536个进程
kern.maxproc=65536

# 同时最多打开65536个文件
kern.maxfiles=65536

# 并发连接最大65536
kern.somaxconn=65536

# 保留的最少连接数
kern.sominconn=256
kern.maxclusters=32768

# 增大TCP接收/发送缓存到64K
net.inet.tcp.recvspace=65536
net.inet.tcp.sendspace=65536

# 增大UDP接收/发送缓存到64K
net.inet.udp.recvspace=65536
net.inet.udp.sendspace=65536


注意:虚拟机测试只加最上面一行kern.maxvnodes=65536即可,其他的不必加了,否则会有各种问题。独立机器的可以加上。

保存退出,reboot。不能正常启动的就把除kern.maxvnodes以外的数字调小或者禁用再试。

三、OpenBSD.Nginx.MySQL.PHP软件环境的安装

OpenBSD环境下软件的安装是非常简单的,因为在官方的ftp中提供了已经编译好的二进制包,需要安装的软件都在ftp中,从ftp中安装即可。

小提示:如果你机器比较多,你可以把需要安装的软件包都down回来,其他机器再来这里安装,速度会非常快!
  1. export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/

  2. pkg_add mysql-server php5-fastcgi php5-gd-5.2.6-no_x11 phpMyAdmin lighttpd-1.4.19p3 nginx pecl-APC
复制代码
以偶的1M ADSL小水管为例,大约也就二十分钟左右就安装完毕了!真的是非常快!和其他系统的wget源码、./configure && make && make install...所需要的时间相比,效率是非常高!而且,由于OpenBSD默认采用比较高的安全策略,装上的环境安全性也比其他系统要高!

等所需的软件都安装完成后,按提示作链接并创建PHP临时工作目录:

ln -s /var/www/conf/modules.sample/php5.conf /var/www/conf/modules
ln -fs /var/www/conf/php5.sample/apc.ini /var/www/conf/php5/apc.ini
ln -fs /var/www/conf/php5.sample/gd.ini /var/www/conf/php5/gd.ini
ln -fs /var/www/conf/php5.sample/mbstring.ini /var/www/conf/php5/mbstring.ini
ln -fs /var/www/conf/php5.sample/mcrypt.ini /var/www/conf/php5/mcrypt.ini
ln -fs /var/www/conf/php5.sample/mysql.ini /var/www/conf/php5/mysql.ini
mkdir /var/nginx/sesstmp
chmod 0777 /var/nginx/sesstmp


pkg_info检查一下系统中安装了些什么软件包:



可以看到,所需的软件包和依赖的包都安装好了!

四、Nginx配置

Ⅰ、Nginx配置文件的修改

修改nginx的默认配置文件:
  1. vi /etc/nginx/nginx.conf
复制代码


按下面的内容修改Nginx的配置文件。兰色表示需要手动修改的内容红色表示增加的内容

#user  nobody;

# 指定子进程数,酌情修改
worker_processes  4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

# 最多可打开文件数
worker_rlimit_nofile 8196;

events {
    # 最大并发数
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    # 关掉错误日志
    error_log       /dev/null  crit;
    # 如果需要错误日志,就用下面这行替换上面这行
    #error_log     /var/log/nginx/error.log  notice;

    # 定义日志格式,对日志使用缓存,避免频繁的磁盘I/O操作
    access_log   /var/log/nginx/access.log combined buffer=1m;

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;

    keepalive_timeout  10;


    # 对静态文件和可压缩文件启用压缩,以节约网络带宽,提高访问速度
    gzip              on;
    gzip_min_length   1k;
    gzip_buffers      4 8k;
    gzip_http_version 1.1;
    gzip_comp_level   3;
    gzip_types        text/html text/css text/xml text/plain application/x-javascript application/xml application/pdf application/x-perl application/x-tcl application/msword application/rtf application/vnd.ms-excel application/vnd.ms-powerpoint application/vnd.wap.xhtml+xml image/x-ms-bmp;
    gzip_disable      "MSIE [1-6] \.";
    gzip_vary         on;


    # 定义输出缓存大小
    output_buffers   4 32k;

    # 最大允许可上传文件大小
    client_max_body_size 20m;

    # 定义一个叫“myzone”的记录区,总容量为 10M
    # 和下面的limit_conn一起限制单个IP的并发连接数为10
    limit_zone myzone $binary_remote_addr  10m;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /var/nginx/html;
            index  index.php index.html index.htm;
            limit_conn  myzone 10;
        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {
            root   /var/nginx/html;
        }

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }

        # 在浏览器本地暂存图片和静态文件,不记录日志,以节约机器资源
        location ~* \.(gif|png|jpg|jpeg|bmp|css|js|swf)$
        {
            root           /var/nginx/html;
            access_log off;
            expires max;
        }


        # 在浏览器中输入http://xxx.xxx.xxx/status可以看到Nginx的运行信息
        # 需要密码验证,不记录日志,限制IP访问
        location ~ /status
        {
            auth_basic  "O.N.M.P.";
            auth_basic_user_file password;
            stub_status on;
            access_log   off;
            allow 192.168.0.0/24;
            deny all;
        }

    }

}


其他的部分请酌情修改。

运行下面的命令生成查看Nginx运行状态的密码文件:

  1. htpasswd -c /etc/nginx/password webadmin
复制代码


按提示输入两遍密码即可。

在查看status的时候,输入用户名webadmin(见上面这行)和密码就能够看到Nginx的运行数据了。

Nginx能够流行和它的高负载能力是分不开的,在追求性能表现的场合,推荐使用Nginx+PHP-fastcgi的组合以获得强健的性能表现。而对于那些重视安全性的场合来说,可能OpenBSD内核集成的Apache更合适。OpenBSD下搭建Apache、MySQL、PHP环境的详细内容请参见偶的另篇博文,地址在下面:(博客速度可能较慢,四楼有转帖)
http://blog.chinaunix.net/u2/81136/showart_1860332.html

当然,你也可以利用Nginx内置的负载均衡功能,在前端分配访问流量,后端由Apache来运行PHP环境。Nginx负载均衡的配置可以去Nginx的主页参看相关内容,地址:http://wiki.nginx.org/Main

下面为一个Nginx负载均衡的示例:

http {
upstream myproject {
ip_hash;
server 192.168.1.1:80;
server 192.168.1.2:80;
server 192.168.1.3:80;
server 192.168.1.4:80;
}

server {
listen 80;
server_name www.domain.com;
location / {
proxy_pass http://myproject;
}
}
}


网络拓扑示意图如下:



Ⅱ、Nginx日志截断

OpenBSD默认每天00:00会执行/etc/daily.local脚本中的内容,我们只需要把Nginx日志截断的命令加入到这个文件中即可。
  1. vi /etc/daily.local
复制代码
加入下面的内容:

#!/bin/sh
# 对Nginx日志进行截断和压缩,以节约log分区空间
# 在张宴的基础上修改,感谢!
mkdir -p /var/log/nginx/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv /var/log/nginx/access.log /var/log/nginx/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access.$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /var/run/nginx.pid`
sleep 1
gzip /var/log/nginx/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access.$(date -d "yesterday" +"%Y%m%d").log


保存退出,为/etc/daily.local加上执行权限:
  1. chmod 0755 /etc/daily.local
复制代码
其他需要每天运行的命令也都可以加在这个脚本里面,各位自行处理。

五、MySQL与phpMyAdmin的配置

Ⅰ、MySQL的配置

安全起见,MySQL需要运行在自己的daemon下:
  1. vi /etc/login.conf
复制代码
跳到最后,加入MySQL所需的修改:

mysql:\
        :openfiles-cur=2048:\
        :openfiles-max=4096:\
        :tc=daemon:


使修改生效:
  1. cap_mkdb /etc/login.conf
复制代码
初始化MySQL数据库:
  1. /usr/local/bin/mysql_install_db
复制代码
MySQL自带了几个配置文件,在/usr/local/share/mysql目录中,可以拷贝为/etc/my.cnf使用。关于MySQL的配置和优化等内容,可以自行Google,这里不再赘述。
MySQL安全须知
  • 不要用root身份运行数据库或PHP应用。并且,最好是数据库名和数据库用户名不同,以提高安全性。

    例如,域名为example.net,则数据库名设为abcxyz,数据库用户名设为xyzabc。总之,关联度越低越好,数据库名和数据库用户名越复杂越难猜测越好。

  • 控制权限的分配,PHP应用仅给予必要的权限。

    例如,安装/升级Discuz!和PHPWind论坛程序,仅需要下图所示的权限即可:



  • 在安装/升级完毕后,还可以把CREATE、ALTER、DROP权限去掉,不会影响论坛程序的运行,而且提高了安全性!
Ⅱ、phpMyAdmin的配置

由于OpenBSD中的phpMyAdmin默认是安装在/var/www/phpMyAdmin目录中的,直接使用Nginx是无法访问的,我们需要把它拷贝到Nginx目录下,这样就可以通过浏览器来管理MySQL数据库了。
  1. mkdir /var/nginx/html/pma/
  2. cp -rf /var/www/phpMyAdmin/* /var/nginx/html/pma/
复制代码
修改phpMyAdmin的配置文件,使之可用。
  1. vi +17 /var/nginx/html/pma/config.inc.php
复制代码
将下面这行修改成:

$cfg['blowfish_secret'] = 'a'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */


(仅是加入了字母a而已)

保存退出。
小提示:
  • 上面新建了/var/nginx/html/pma目录来保存phpMyAdmin的文件,目录名很简单。你可以用一个更复杂的目录名来代替,例如:pma2YAY5jRpfFfLXQVm这样的目录名,以防止黑客利用字典攻击等方法渗透你的phpMyAdmin!
  • 你还可以在Nginx的配置文件中,将/var/nginx/html/pma配置成某个虚拟主机的根目录,并限定可以访问这个虚拟主机的IP。这样,就可以在很大程度上提高数据库的安全性了!一个配置示例在下面:

    location / {
        allow   192.168.0.0/24;
        deny    all;
    }

  • 假如平时只是偶尔用到phpMyAdmin,你还可以在用完后删除/var/nginx/html/pma目录,需要用的时候再拷贝过去。
  • 你还可以将以上方法结合起来灵活使用,既建立一个无法被猜测的目录名,又限制IP访问,这样你的系统被黑的机会就会小了很多!
六、强化PHP的安全

OpenBSD软件包中的PHP已经自带了suhosin这个补丁,可以在很大程度上提高PHP脚本的安全。本节主要讨论在php.ini文件中进行相关的设置,进一步提升安全性。具体来说,就是禁用某些危险函数和启用PHP安全模式。

偶一般是把对PHP的所有修改都放在一个单独的文件中进行,包括对PHP参数以及扩展模块的修改,都放在这个文件中一并处理,这样查找、修改和管理会方便许多:
  1. vi /var/www/conf/php5/addphp.ini
复制代码
加入下面的内容:

; 禁止动态加载模块
enable_dl = Off

; 隐藏PHP信息
expose_php = Off

; 限定可访问目录
open_basedir = /var/nginx/html/

;设定session暂存目录
session.save_path=/var/nginx/sesstmp

; 设定PHP上传文件的临时目录
upload_tmp_dir=/var/nginx/tmp

; 禁用危险函数(注意下面的内容应该是一行,编排的原因分成了多行)
disable_functions = phpinfo,com,shell,exec,system,passthru,error_log,
stream_socket_server,putenv,ini_alter,ini_restore,ini_set,dl,openlog,
syslog,readlink,symlink,link,leak,fsockopen,pfsockopen,proc_open,
popepassthru,escapeshellcmd,escapeshellarg,chroot,scandir,
chgrp,chown,shell_exec,proc_get_status,popen,shmop_close,
shmop_delete,shmop_open,shmop_read,shmop_size,shmop_write

; 启用PHP的安全模式
; PHP在安全模式下运行是用性能换安全。据简单测试,性能下降到50%左右,各位请酌情使用
; 启用安全模式后,某些程序可能受到影响。例如,Discuz!将无法上传附件
safe_mode = On

; pecl-APC只使用16M的共享内存用以加速PHP程序的运行
apc.shm_size=16M


保存退出。

感谢所有支持的网友!

[ 本帖最后由 young_king 于 2009-4-21 11:13 编辑 ]

评分

参与人数 1可用积分 +5 收起 理由
OraBSD + 5 原创内容

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2009-03-12 14:13 |只看该作者
七、强化SSH的安全
Ⅰ、SSH配置文件的修改

  1. vi /etc/ssh/sshd_config
复制代码


跳到最后,加入下面的部分:
# 使用高位端口,防止黑客扫描22端口。可选范围1024~65535,推荐32768~65535。
Port 58937

# 登录时间控制在30秒内
LoginGraceTime 30

# 不允许root远程直接登录
PermitRootLogin no
StrictModes yes

# 最多允许三次错误
MaxAuthTries 3

# 最多允许三个SSH线程
MaxSessions 3

# 使用SSH协议2
Protocol 2

# 不使用密码认证
PasswordAuthentication no

# 使用KEY的方式认证
PubkeyAuthentication yes

# KEY文件存放位置
AuthorizedKeysFile      .ssh/authorized_keys


Ⅱ、使用KEY进行验证

下面以Windows环境下PuTTY为例讲解使用KEY验证的方法,Linux/UNIX下与此类似。

首先,从下面的网址下载PuTTY的安装包(Windows):

http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe

下完后双击安装,不再赘述。这个软件包自带了下面几个非常实用的软件:

PuTTYgen:生成KEY;

Pageant:管理KEY;

PuTTY:SSH客户端;

PSFTP:使用SSH上传/下载文件。


下面就来实例讲解用PuTTY的这几个软件对远程主机进行KEY认证和管理的方法。假设我们要在192.168.0.132这个远程主机上使用young_king这个用户名进行KEY认证和登录。
1.生成KEY

启动PuTTYgen,如下图:



在密钥长度栏输入想要的密钥长度,越大越安全。这里以最大的2048位为例,然后点“Generate”按钮,会开始生成KEY,生成过程中需要在下面的空白部分移动鼠标来生成随机数。

KEY生成完毕后,你可以输入一些标识信息,如下图:



还可以在下面的passphrase框内输入“保护码”,注意要输入两遍。“保护码”也就是密码的意思,用来保密私钥的,一定要记住这个哦!

都输入完毕后,点击下面的“Save public key”按钮保存公钥,如下图所示:



然后点击“Save private key”按钮保存私钥,如下图:



这个私钥最好不要保存在电脑上,我们把它拷贝到U盘上,随身带着,这就是我们的“KEY盘”。

要养成每月更换“保护码”的好习惯,更换“保护码”仍然要用到PuTTYgen这个软件,启动后点击“Load”,载入私钥,重新输入“保护码”,再确认一遍,然后点击“Save private key”保存即可!

2.启用KEY

上面生成了公钥和私钥,我们需要把公钥上传到远程主机的用户目录中,就要用到PSFTP这个软件了。启动它,如下图:



输入命令:open 192.168.0.132

接下来,PSFTP会列出远程主机上的RSA指纹以供识别,如下图:



这个指纹可以在远程主机上输入下面的命令查看:

  1. ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
复制代码


请把这个指纹记在纸上,随身携带,和远程主机连接的时候就拿出来对比一下(这么做主要是为了防止连接被人劫持和指纹被伪造)。

如果上面PSFTP显示的指纹和远程主机上的不一致,那么毫无疑问是伪造的了,直接回车断开连接。如果相符,你可以输入“y”来保存这个指纹到本地计算机上(不推荐),或输入“n”只是这次连接使用。

随后PSFTP会让你输入登录用户名和密码,并自动进入该用户的根目录,如下图(以root为例):



现在我们要把第一步生成的公钥上传到远程主机上(请把这个公钥复制到C:\Documents and Settings\Administrator目录先,如果你的Windows不是用Administrtor登录的,就替换成你登录用的用户名)。输入命令:put young_king,可以看到,公钥已经上传到/root目录了,见下图:



PuTTY生成的KEY并不能直接使用,需要转换一下。用PuTTY登录(此时上面修改的端口尚未启用,还是默认的22端口),以root身份执行:

  1. ssh-keygen -X -f /root/young_king > /home/young_king/.ssh/authorized_keys
复制代码


这就把公钥成功导入到young_king的目录中了,就可以被young_king这个用户使用了!

导入成功后,要删除多余的公钥:

  1. rm /root/young_king
复制代码


下面介绍几个PSFTP常用的命令:

open xxx.xxx.xxx.xxx:打开远程主机(xxx.xxx.xxx.xxx为IP或域名);

put xxxxxxxx:向远程主机上传文件(该文件需要事先拷贝到C:\Documents and Settings\Administrator目录);

get xxxxxxxx:从远程主机下载文件(下载后保存在C:\Documents and Settings\Administrator目录);

cd xxxxxx:进入远程主机的相应目录;

exit:退出PSFTP(也可以点右上角的叉关闭,不过不推荐这样做)。


更多的命令可以参看PuTTY的帮助文件,这个帮助写得不错。

3.使用KEY登录

我们上面虽然修改了SSH的配置文件(/etc/ssh/sshd_config),但还没有启用。输入下面的命令启用新的SSH配置,以便我们用KEY登录:

  1. kill -HUP `cat /var/run/sshd.pid`
复制代码


PuTTY提供了一个KEY的管理程序,上面已经提到,是Pageant,我们使用这个程序来进行KEY登录。

启动Pageant,它会自动缩小到任务栏的通知区域,右键单击,选择“Add key”,会弹出个对话框让我们选择。插入上面制作好的“KEY盘”,并选择保存的私钥,会弹出个对话框让我们输入“保护码”,如下图:

如果安装PuTTY时选择了让Pageant关联.ppk文件,则双击私钥可以自动启动Pageant。



输入在生成KEY时输入的“保护码”,私钥就被导入到Pageant中了。再右键单击任务栏通知区的Pageant图标,选择第一项“New session”,Pageant会自动启动PuTTY,等待输入远程主机的相关信息,如下图:



输入IP(或域名)和端口号,点击最下面的“Open”按钮,PuTTY就会登录远程主机了。和PSFTP类似,会弹出个对话框让你确认远程主机的RSA指纹,如下图。同理,指纹不同就表示连接被劫持或指纹被伪造,点“取消”断开连接;指纹相同就点“否”,不保存主机公钥到本地计算机。



随后会让你输入用户名,输入“young_king”,看看,自动就登录上去了!





前面更改SSH配置的时候,已经禁用了root远程登录和使用密码登录,只能使用KEY才能登录进系统。想要维护系统的时候,就用这个KEY登录,再su成root。而且,需要上传/下载文件的时候,就用PSFTP,所有的操作都在SSH连接下进行,还有KEY的保护,安全性不知道提升了多少倍!黑客想要破解真是难于上青天!
Ⅲ、按需启动SSH

我们只在必要的时候启动sshd服务,用完即停止,不给黑客扫描的机会。输入下面的命令:

  1. crontab -e
复制代码


跳到最后,输入下面的内容(中间的空白部分为Tab):

# 每天的10:30启动sshd服务
30      10      *       *       *       /usr/sbin/sshd

# 10:35即停止sshd服务,也就是说,你只有五分钟的时间可以登录进系统
35      10      *       *       *       kill `cat /var/run/sshd.pid`


保存退出。

上面的时间请酌情修改。sshd服务启动的时间尽量不要太长,5~10分钟应该够了!

Ⅳ、一点安全小常识
  • 私钥请一定保存在安全的地方,不要保存在本地计算机上,并加上足够强度的“保护码”;
  • 本地计算机不要保存远程主机的“指纹”,用一次确认一次(远程主机的指纹保存在注册表的HKEY_CURRENT_USER\Software\SimonTatham\PuTTY项下,可以手动删除);
  • 不要使用DSA密钥,据说有漏洞的;
  • 不要在公用计算机上连接远程主机,有键盘记录器、木马什么的就麻烦了;
  • 多个远程主机不要使用相同的公钥,最好是使用各自的公钥、私钥;
  • 少用,最好是不用无线网络,加密强度太差,容易被破解;
  • M$系统下的病毒、木马太多了,推荐客户端转换到Linux/UNIX环境,安全性更高,而且仍然有PuTTY及工具可用;
  • 注意清除本地机器上不必要保留的文件(例如私钥、公钥、主机RSA指纹、C:\Documents and Settings\Administrator目录下的文件等等)。

八、启用Packet Filter防火墙

Packet Filter是非常优秀的包过滤防火墙,OpenBSD核心已经集成了Packet Filter防火墙,不过默认并没有启用,下面我们来启用Packet Filter的强大功能!

  1. vi /etc/pf.conf
复制代码


跳到最后,加入下面的内容:

# 宏定义
# 请把下面的fxp0换成你自己用的外网网卡,不知道的可以输入ifconfig查看
ext_if="fxp0"

# 指定可以使用SSH登录的IP,支持CIDR
admin_add="192.168.0.0/24"

# 指定SSH端口。
# 注意,如果在/etc/ssh/sshd_config文件中更改了SSH端口号,这里的也需要同样修改。否则连不上了不要怪偶没有提醒!
ssh_port="58937"

# 维持一个持久的表,里面存放的是对本机发动DDoS攻击的IP
table <badhosts> persist

# 选项设定
set require-order yes
set block-policy drop
set optimization aggressive
set loginterface none
set skip on lo0

# TCP参数设定
set timeout {interval 3,frag 10}
set timeout {tcp.first 10,tcp.opening 2,tcp.established 600,tcp.closing 20,tcp.finwait 10,tcp.closed 10}

# UDP、ICMP及其它参数设定
set timeout {udp.first 20,udp.single 10,udp.multiple 10}
set timeout {icmp.first 10,icmp.error 5}
set timeout {other.first 20,other.single 10,other.multiple 20}
set timeout {adaptive.start 0,adaptive.end 0}

# 允许最多有65536个连接
set limit { states 65535, frags 200, src-nodes 65536, tables 65536, table-entries 1048576 }

# 包整形
scrub in all
scrub out all

# 阻止所有不匹配的包和从DDoS主机来的包
block quick from <badhosts>
block return
block in all
block out all

# 防止IP欺骗
antispoof quick for {lo0,$ext_if}

# 允许本机访问其他机器
pass out quick on $ext_if inet from $ext_if to any flags S/SA keep state

# 允许IPv4地址的客户机访问本地80(www)端口,发起过快连接(DDoS)的主机加入阻止列表。注意是一行,下同
pass in quick on $ext_if inet proto tcp from any to $ext_if port 80 flags S/SA synproxy state (source-track rule,max-src-nodes 200,max-src-states 100,max-src-conn 100,max-src-conn-rate 1000/10,overload <badhosts> flush global )

# 允许IPv6地址的客户机访问本地80(www)端口,发起过快连接(DDoS)的主机加入阻止列表
pass in quick on $ext_if inet6 proto tcp from any to $ext_if port 80 flags S/SA synproxy state (source-track rule,max-src-nodes 200,max-src-states 100,max-src-conn 100,max-src-conn-rate 1000/10,overload <badhosts> flush global )

# 允许管理IP远程连接本机SSH端口
pass in quick on $ext_if inet proto tcp from $admin_add to $ext_if port $ssh_port flags S/SA synproxy state


保存退出。

修改系统配置,使得开机启用PF防火墙:

  1. vi /etc/rc.conf.local
复制代码


跳到最后,加入下面这行:

pf=YES


保存退出。

九、系统启动脚本的修改

修改系统启动脚本,使得MySQL、PHP(fastcgi)、Nginx可以在系统启动的时候自动启动,免去手动启动的麻烦。

  1. vi /etc/rc.local
复制代码


跳到最后,加入下面的内容:

# 启动时校时。这行也可以加在/etc/daily.local文件的最前面,每天零点自动校时
rdate -n 210.72.145.44
# Start MySQL
if [ -x /usr/local/bin/mysqld_safe ] ; then
   echo -n 'Starting MySQL...'
   su -c mysql root -c '/usr/local/bin/mysqld_safe >/dev/null 2>&1 &'
   echo "DONE"
fi
# Start php-fastcgi
if [ -x /usr/local/bin/spawn-fcgi ] ; then
   echo -n 'Starting php-fastcgi...'
   /usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 6 -u www -f /usr/local/bin/php-fastcgi > /var/run/fcgi.pid
   echo "DONE"
fi
# Start nginx
if [ -x /usr/local/sbin/nginx ] ; then
   echo -n 'Starting nginx...'
   /usr/local/sbin/nginx
   echo "DONE"
fi


保存退出。

reboot重启,启动后输入top看看,O.N.M.P.环境已经搭建好了!



系统启动后,还要把MySQL自带的测试数据库和匿名用户删除,防止被黑客利用。

默认情况下,新安装的MySQL数据库,root密码为空!同样需要第一时间进行设置,方法见下图:



好了,至此,O.N.M.P.环境的搭建已经结束,剩下的就看各位自行发挥了!

写在最后

其实,系统的安全是个整体工程,并不是用上了OpenBSD这个最安全的操作系统就算万事OK,还有很多事情要做。

更多的是需要在日常工作中积累经验,多分析系统整体的运行情况,多关注网络安全方面的内容,这样才能尽可能的打造安全的运维环境。

本手册只是起到抛砖引玉的作用,希望能吸引更多的人来关注系统安全,希望有更多的人能用上OpenBSD这个主动安全的操作系统,希望能推动OpenBSD在国内的更多普及。如此,则幸甚!

相关博文



O.N.M.P.第三版预告

1.snort ips
2.......

对部分网友问题的回复:
====================================
18楼:
[quote]原帖由 Kronos 于 2009-3-14 18:54 发表
很不错.不过我在VirtualBox里安装OB44后无法访问网络,不知为何.


关掉宿主机的防火墙即可。[/quote]

====================================
19楼:
[quote]原帖由 winlinker 于 2009-3-14 19:22 发表
不错的,呵呵,收藏了……,准备近期按照这个配置来搞下……


若在搭建过程中有什么问题,请及时反馈!

同时请反馈O.N.M.P.环境应用的情况,谢谢![/quote]

====================================
27楼:
[quote]原帖由 czjin 于 2009-3-16 20:31 发表
向楼主学习,顶。
另问一下,安装ONMP就不用更新安装eAccelerator0.9.5.3和ZendOptimizer3.3.0a了吧?


这个要看你的PHP环境要求。

如果要求必须支持Zend Optimizer,那么就在开始安装的时候不要安装pecl-APC,整个O.N.M.P.安装完成后再按照偶公布的方法安装eAccelerator和Zend Optimizer即可,参见下面的博文连接:
http://blog.chinaunix.net/u2/81136/showart_1848482.html

如果PHP环境没有对Zend Optimizer的要求,那么直接按照本手册的步骤安装即可。[/quote]

====================================
41楼:
[quote]原帖由 apexy 于 2009-3-18 20:01 发表
这个对FreeBSD是否同样适用?


某些原理是适用的,只是具体的操作会略有不同。

偶对FreeBSD不熟,请自行研判。[/quote]

====================================
54楼:
[quote]原帖由 czjin 于 2009-3-23 09:33 发表
按照楼主的博文我在我的VM虚拟机上搭建了onmp。并在上面配置了moodle,phpwind,php168,discuz,dvbbs,phpcms,很好挺顺利。就是无法测试性能及并发连接数等数据。不过已经很好了。感谢楼主的奉献,谢谢。


你可以在客户机上安装Microsoft Web Application Stress Tool这个软件来进行压力测试。

具体下载地址和使用方法请自行Google,很多的。[/quote]

====================================
56楼:
[quote]原帖由 czjin 于 2009-3-31 10:57 发表
我的机器在启动fastcgi时出现如下字样,是什么意思?是正常吗?
starting php-fastcgi...spawn-fcgi.c.197: child spawned successfully: PID 22496 DONE


是正常的。

这行的意思是说spawn-fcgi成功启动php-fastcgi进程,父进程号为22496。

如果你需要修改PHP参数,重启php-fastcgi,你就可以用下面的命令杀掉所有的php-fastcgi子进程。

  1. kill 22496
复制代码
[/quote]

====================================
59楼:
[quote]原帖由 czjin 于 2009-4-17 09:01 发表
感谢楼主指领,我在客户机上安装了Microsoft Web Application Stress Tool这个软件来进行了压力测试,onmp感觉很好(是在测试机上进行)。我在主机用top命令可以查看主机的CPU等状态,浏览web页也能看到网页打开的情况。就是不知如何看测试统计结果或有什么问题。另我想问一下楼主,用命令行或其他软件能看到测试时连接登录时的状况,我在网上曾看到过一个帖子抓图,是黑屏下连接登录的,我现在找不到了,楼主能否给我指引一下,谢谢。


以Microsoft Web Application Stress Tool为例说明吧,运行测试前要设定下先:



如上图,指定IP地址和要测试的文件(可以是多个)。

然后,指定测试用的线程数(数量越大压力越大):



如图,threads是指线程数,下面的sockets per是指子进程数。受到XP系统的限制,这两个相乘最好不要超过200,server版的系统无此限制。

再下面是指测试用的时间,你可以指定个比较长的时间(例如一天:wink: )。

设定好后,再回到前面的窗口,点上面那个右三角即可开始测试。

测试完成后,点击菜单栏的View>Reports,如下图:



即可看到测试结果了。

一般而言,只需要看下图中的几项即可:



解释一下这几个数据的含义:

Number of hits:测试过程中一共应答了多少次;

Requests per Second:每秒应答数(越高越好,依赖机器性能);

Result Codes:返回的代码
200:表示完美返回正确内容,后面是次数。
其他代码:表示服务器端未能返回正确内容,后面是次数。


这里有个对Microsoft Web Application Stress Tool的介绍:
http://publish.it168.com/2006/0614/20060614006901.shtml

通常来说,最理想的情况是100%的返回200代码。但是,O.N.M.P.环境在偶的测试中,总是有1%~3%的500(或502)错误,反而O.A.M.P.环境是100%的200。所以,现在知道为什么Apache雄倨Web Server第一位的原因了吧。

至于测试中了解服务器的状态,你可以试下top、netstat、systat、vmstat等命令行下的工具。

[/quote]

====================================
62楼:
[quote]原帖由 dooros 于 2009-4-21 09:21 发表

nginx配置完毕了,在虚拟机中怎样才能使用http://xxx.xxx.xxx/status访问?我在宿主机中用
http://ip/status http://openbsd.localdomain/status http://localdomain/status都不能访问?


假设你的虚拟机IP为192.168.0.101,则在宿主机(或其他内网机器)浏览器中输入:http://192.168.0.101/status即可看到Nginx运行状态。

另注意:
  • 如果是按本手册操作,可能还需要输入验证密码;
  • 可能需要修改/etc/nginx.conf文件中关于status进行IP限制的部分:

        location ~ /status
        {
            auth_basic  "O.N.M.P.";
            auth_basic_user_file password;
            stub_status on;
            access_log   off;
            allow 192.168.0.0/24;
            deny all;
        }


[/quote]

====================================
65楼:
[quote]原帖由 dooros 于 2009-4-21 12:55 发表

IP地址用的是BSD下ifconfig出来的IP地址,还是用VMnet的IP地址?
还有那个IP限制如何改?可不可以不设限制?如何做?谢谢!


1.命令行下输入ifconfig即可看到IP地址和MAC地址:



2.这个限制支持CIDR表示法,举例说明:

192.168.1.1/255.255.255.255=192.168.1.1/32

192.168.1.1/255.255.255.0=192.168.1.1/24

192.168.1.1/255.255.0.0=192.168.1.1/16

192.168.1.1/255.0.0.0=192.168.1.1/8

清楚?

另外,这个限制可以不要,只需要把allow和deny两行删除即可!

        location ~ /status
        {
            auth_basic  "O.N.M.P.";
            auth_basic_user_file password;
            stub_status on;
            access_log   off;
            allow 192.168.0.0/24;
            deny all;

        }


加限制只是为了安全,防止任何人都可以看到服务器的运行状态。[/quote]

[ 本帖最后由 young_king 于 2009-4-21 16:51 编辑 ]

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
3 [报告]
发表于 2009-03-12 14:49 |只看该作者
坐好板凳,认真听讲!

论坛徽章:
0
4 [报告]
发表于 2009-03-12 14:57 |只看该作者
OpenBSD.Apache.MySQL.PHP环境搭建手册[第一版]

一、OpenBSD.Apache.MySQL.PHP软件环境的安装

OpenBSD内核中已经集成了Apache,而且内置了对PHP的支持,所以安装MySQL、PHP环境非常的简单。

需要注意的是,在系统安装分区的时候,请按下面的示例进行分区(80G硬盘):

/200M
(swap)1G
/tmp200M
/usr500M
/usr/local200M
/var100M
/var/mysql10G
/var/mail100M
/var/log5G~10G
/home200M
/var/www剩余空间

在安装程序询问要安装的组件时,最好不要选择comp44.tgz这个包,系统安装到最后询问是否默认启动服务时,一律回答“No”。

halt重启后执行下面的命令安装必须的软件,以OpenBSD4.4为例进行讲解,root权限。
  1. export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/
  2. pkg_add wget mysql-server php5-gd-5.2.6-no_x11 phpMyAdmin pecl-APC
复制代码
等所需的软件都安装完成后,按提示作链接并创建PHP临时目录:

ln -s /var/www/conf/modules.sample/php5.conf /var/www/conf/modules
ln -fs /var/www/conf/php5.sample/apc.ini /var/www/conf/php5/apc.ini
ln -fs /var/www/conf/php5.sample/gd.ini /var/www/conf/php5/gd.ini
ln -fs /var/www/conf/php5.sample/mbstring.ini /var/www/conf/php5/mbstring.ini
ln -fs /var/www/conf/php5.sample/mcrypt.ini /var/www/conf/php5/mcrypt.ini
ln -fs /var/www/conf/php5.sample/mysql.ini /var/www/conf/php5/mysql.ini
mkdir /var/www/tmp
chmod 0777 /var/www/tmp


二、使MySQL适应chroot环境

由于OpenBSD中的Apache默认工作于chroot环境下,无法直接与MySQL通信,所以需要修改下MySQL的配置文件,使之适应chroot环境。

执行下面的命令:
  1. mkdir -p /var/www/var/run/mysql
  2. chown _mysql:_mysql /var/www/var/run/mysql
复制代码
等到上面的命令都执行完成后,还需要修改MySQL的配置文件。
  1. vi /etc/my.cnf
复制代码
将[client]段的socket修改成:

socket          = /var/www/var/run/mysql/mysql.sock

将[mysqld]段的socket修改成:

socket          = /var/www/var/run/mysql/mysql.sock

在[mysqld]段增加:

skip-networking

其他的请酌情修改。

改完后保存退出。

三、phpMyAdmin的配置

在上面pkg_add phpMyAdmin以后,提示ln做个连接就可以用phpMyAdmin了。不过偶试了,是不行的,404错误。所以,我们需要把phpMyAdmin拷贝到/var/www/htdocs目录下面使用。
  1. mkdir /var/www/htdocs/pma
  2. cp -rf /var/www/phpMyAdmin/* /var/www/htdocs/pma/
复制代码
同样需要修改pma目录下的config.inc.php文件,加个字母即可。

其他关于PHP的强化、SSH强化、PF防火墙以及系统其他部分的安全强化,可以参照一楼和二楼的相关内容,这里就不罗嗦了。

另外,由于Apache已经是chroot,所以PHP的强化设置会略有不同,如下:

# 禁止动态加载模块
enable_dl = Off

# 隐藏PHP信息
expose_php = Off

# 限定可访问目录
# 注意此时的根目录实际是/var/www目录
open_basedir = /

# 设定PHP上传文件的临时目录
# 同理,此时的/tmp目录实际是/var/www/tmp目录
upload_tmp_dir=/tmp

# 禁用危险函数(注意下面的内容应该是一行,编排的原因分成了多行)
disable_functions = phpinfo,com,shell,exec,system,passthru,error_log,
stream_socket_server,putenv,ini_alter,ini_restore,ini_set,dl,openlog,
syslog,readlink,symlink,link,leak,fsockopen,pfsockopen,proc_open,
popepassthru,escapeshellcmd,escapeshellarg,chroot,scandir,
chgrp,chown,shell_exec,proc_get_status,popen,shmop_close,
shmop_delete,shmop_open,shmop_read,shmop_size,shmop_write

# 启用PHP的安全模式
safe_mode = On

# pecl-APC只使用16M的共享内存用以加速PHP程序的运行
apc.shm_size=16M


四、O.A.M.P.的启动

对于Apache来说,系统虽然提供了自动启动的方法,但是因为考虑到MySQL需要先启动,因此仍然在/etc/rc.local文件中解决。
  1. vi /etc/rc.local
复制代码
跳到最后,加入:

rdate -n 210.72.145.44
# Start MySQL
if [ -x /usr/local/bin/mysqld_safe ] ; then
   echo -n 'Starting MySQL...'
   su -c mysql root -c '/usr/local/bin/mysqld_safe >/dev/null 2>&1 &'
   echo "DONE"
fi
# Start Apache
apachectl start


五、提高O.A.M.P.环境的安全性

在O.A.M.P.环境下,除了可以和O.N.M.P.环境下一样设置提高安全性以外,在Apache环境下,还可以安装mod_security这个模块来提高web程序的安全性。
  1. export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/
  2. pkg_add modsecurity-apache
复制代码
安装完成后使用下面的命令启用mod_security:
  1. /usr/local/sbin/mod_security-enable
复制代码
mod_security可以用来抵御XSS和SQL注入等攻击,我们需要把一些“防御”指令加到mod_security的配置文件中:
  1. vi /var/www/conf/modules/modsecurity.conf
复制代码
输入下面的内容:
# 启用mod_security过滤
SecFilterEngine On

# 分析URL请求
SecFilterCheckURLEncoding On

# 检查字节长度以避免栈溢出攻击(数字请酌情修改)
SecFilterForceByteRange 32 126

# 有效记录日志信息
SecAuditEngine RelevantOnly

# 定义日志文件
SecAuditLog logs/audit_log

# 定义DEBUG文件
SecFilterDebugLog logs/modsec_debug_log
SecFilterDebugLevel 0

# 检查POST请求(某些POST请求可能会和这个冲突)
# 使用phpMyAdmin管理数据库时,某些操作会被这个拦截(例如新建数据库和用户时)
# 遇此情况,则把此行注释掉,重启Apache
# 操作完后记得恢复,以提高数据库的安全性
SecFilterScanPOST On

# 阻止返回406错误
SecFilterDefaultAction "deny,log,status:406"

# 阻止返回500错误
SecFilterDefaultAction "deny,log,status:500"

# 当攻击者使用chmod,chgrp,wget等命令的時候,重定向到特殊的页面(请自行酌情增减)
SecFilter chmod redirect:http://www.google.com
SecFilter chgrp redirect:http://www.google.com
SecFilter wget redirect:http://www.google.com

# 防止操作系统关键词攻击
SecFilter /bin
SecFilter /sbin
SecFilter /etc
SecFilter /bsd
SecFilter /usr
SecFilter /var

# 只接受知道如何处理的请求
# GET请求是个例外,是因为某些客户端把text/html当做请求内容的一部分
SecFilterSelective REQUEST_METHOD "!^(GET|HEAD)$" chain
SecFilterSelective HTTP_Content-Type "!(^application/x-www-form-urlencoded$|^multipart/form-data;)"

# 不接受仅有GET和HEAD头的请求
SecFilterSelective REQUEST_METHOD "^(GET|HEAD)$" chain
SecFilterSelective HTTP_Content-Length "!^$"

# 要求每个POST请求提供长度
SecFilterSelective REQUEST_METHOD "^POST$" chain
SecFilterSelective HTTP_Content-Length "^$"

# 不接受无法处理的转换
SecFilterSelective HTTP_Transfer-Encoding "!^$"

# 防止目录遍历攻击
SecFilter "\.\./"

# 防止跨站(XSS)攻击(HTML/Javascript注入)
SecFilter "<( |\n)*script"
SecFilter "<(.|\n)+>"

# 防止SQL注入攻击(简单示例,请自行完善)
SecFilter "delete[[:space:]]+from"
SecFilter "insert[[:space:]]+into"
SecFilter "select.+from"
SecFilter "union[[:space:]]+from"  
SecFilter "drop[[:space:]]"

# 需要HTTP头确认
SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$"

# 呵呵~~~把服务器伪装成M$机器
ServerTokens Full
SecServerSignature "Microsoft-IIS/6.0"

# 限制upload.php文件只能用来上传jpeg,bmp和gif的文件(仅为示例,请酌情修改)
#<Location /upload.php>
#SecFilterInheritance Off
#SecFilterSelective POST_PAYLOAD "!image/(jpeg|bmp|gif)"
#</Location>


在/usr/local/share/doc/mod_security目录下有pdf版本的使用手册,可以用PSFTP down下来仔细研究。自带的配置示例:
/usr/local/share/examples/mod_security/httpd.conf.example-minimal。

记住把mod_security的配置文件保存在/var/www/conf/modules目录,例如上面的:/var/www/conf/modules/modsecurity.conf

mod_security的配置按需修改好后,保存退出,重启Apache即可!

注意:上面的配置仅为示例,未必适合你的环境,请结合环境情况酌情修改!个别参数调整不当可能造成无法访问的后果!

写在最后

现在mod_security已经出到2.5.9版了,更多新特性,防护更全面,但是需要在Apache 2.0.x以上的环境下才能安装使用。而OpenBSD软件包中的Apache 2.2.8竟然不是chroot,安全起见,只能暂时作罢。

mod_security新版的过滤规则貌似和旧版有很大的变化,迟些日子看看能不能把新版的mod_security规则“翻译”到旧版下使用,届时再出O.A.M.P.手册第二版吧!  ^_^

对部分网友回复的解答:

====================================
67、68楼:
[quote]原帖由 dooros 于 2009-4-22 08:41 发表
运行下面的命令生成查看Nginx运行状态的密码文件:

[Copy to clipboard] [ - ]CODE:
htpasswd -c /etc/nginx/password webadmin

按提示输入两遍密码即可。

在查看status的时候,输入用户名webadmin(见上面这行)和密码就能够看到Nginx的运行数据了。

我只完成到这一步,怎么不能看到nginx运行?
已经删除IP限制,已经重启系统。

在bsd下lynx http://192.168.175.130/status也不能连接上。貌似nginx没启动?

原帖由 dooros 于 2009-4-22 09:09 发表
nginx -t -c /etc/nginx/nginx.conf
后,显示失败:
2009/04/21 12:42:12 [emerg] 21716#0: unknow directive "work_rlimit_nofile" in /etc/nginx/nginx.conf :11
2009/04/21 12:42:12 [emerg] 21716#0: t ...


  • 命令行下输入top看看,是否有nginx进程,即可判断nginx是否已启动(二楼的帖子最后有截图)。

    nginx正常启动后,在浏览器中输入:http://192.168.175.130/status即可看到nginx的运行状态。
  • 出现上面的提示,是因为你输入的参数有误。仔细看下,应该是worker,而不是work。

    其实你可以在PuTTY中使用复制、粘贴的方法把这些命令啊、配置文件啊等东东都搞定的,无须手动输入(复制好后,在PuTTY中鼠标右键粘贴即可)。

    某些虚拟机软件也有复制、粘贴的功能,就不会出现拼写的错误了,请自行查一下。
[/quote]

====================================
73楼:
[quote]原帖由 dooros 于 2009-4-24 13:57 发表
新问题,如果我要安装一个Discuz如何像使用虚拟空间那样,把文件上传上去,然后开始安装呢?是不是要自己设置开启ftp服务?(关键是不知道怎么才可以使上传的文件正好在/var/nginx/html文件夹里)


无须开启FTP服务,简单点说。
  1. export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/
  2. pkg_add unzip
  3. cd /tmp
  4. wget http://download.comsenz.com/UCenter/1.5.0/UCenter_1.5.0_SC_UTF8.zip
  5. mkdir /var/nginx/html/uc
  6. unzip UCenter_1.5.0_SC_UTF8.zip
  7. cp -rf /tmp/upload/* /var/nginx/html/uc
  8. rm -rf /tmp/*
  9. ...
  10. ...
  11. wget http://download.comsenz.com/Discuz/7.0.0/Discuz_7.0.0_SC_UTF8.zip
  12. mkdir /var/nginx/html/bbs
  13. unzip Discuz_7.0.0_SC_UTF8.zip
  14. cp -rf /tmp/upload/* /var/nginx/html/bbs
  15. rm -rf /tmp/*
  16. ...
  17. ...
复制代码
明白?

如果是本机上的文件,需要传到服务器上,记得二楼曾经说过的PSFTP?仍然无须开启FTP服务。[/quote]

====================================
77楼:
[quote]原帖由 czjin 于 2009-5-10 20:49 发表
openbsd4.5已出来了,不知在安装Nginx Mysql PHP eAccelerator Zend Optimizer 等方面会与openbsd4.4有什么不同?我准备在VM机上测试,碰到问题再请教楼主。




[/quote]

[ 本帖最后由 young_king 于 2009-5-11 09:53 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-03-12 16:26 |只看该作者
接近赶上直播了

论坛徽章:
0
6 [报告]
发表于 2009-03-12 16:29 |只看该作者
1.snort ips

呵呵

[ 本帖最后由 wosl2001 于 2009-3-12 16:32 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2009-03-12 17:17 |只看该作者
今天不错,来的挺早

论坛徽章:
0
8 [报告]
发表于 2009-03-12 17:28 |只看该作者
顶一下!

论坛徽章:
0
9 [报告]
发表于 2009-03-12 17:54 |只看该作者
顶两下!

论坛徽章:
0
10 [报告]
发表于 2009-03-12 20:09 |只看该作者
精闢入裡,真是開了眼界
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP