乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      OpenBSD.Nginx.MySQL.PHP環(huán)境搭建手冊(v2)

       HiLinz 2010-12-11
      OpenBSD.Nginx.MySQL.PHP環(huán)境搭建手冊(v2)

      ChinaUnix網(wǎng)友:young_king

      前言

      感謝ChinaUnix以及ChinaUnix論壇中的眾多高手,在這里學(xué)到了很多!

      本手冊是O.N.M.P.系列的第二版,在第一版手冊中,只是簡單的說明了O.N.M.P.環(huán)境的基本搭建方法,并沒有過多的考慮到生產(chǎn)系統(tǒng)適用的情況。第二版將作較大的修正,以使得本手冊可以對生產(chǎn)環(huán)境的搭建起到有益的參考作用。

      本人水平有限,手冊中出現(xiàn)紕漏在所難免,您若在生產(chǎn)實際中應(yīng)用時發(fā)現(xiàn)有什么問題,或者有什么更好的建議,請移步至ChinaUnix論壇的BSD版,或至偶的個人博客(http://onmp.),跟帖進(jìn)行指正。希望在大家的共同努力下,能夠把本手冊盡量做到完美!

      本手冊以在OpenBSD 4.4環(huán)境下搭建NginxMySQL、PHP環(huán)境為例進(jìn)行講解。按照慣例,root權(quán)限。

      一、OpenBSD的安裝及注意事項

      OpenBSD
      的安裝這里就不多說了,主要是安裝時系統(tǒng)組件的選擇、分區(qū)和系統(tǒng)服務(wù)的部分。對于系統(tǒng)組件部分,作為生產(chǎn)系統(tǒng)來說,偶并不推薦安裝 comp44.tgz這個組件。因為comp44.tgz實際就是編譯器,不裝這個,可以在很大程度上避免安裝一些非授權(quán)的軟件,從而提高遠(yuǎn)程主機(jī)的安全性。如果真的需要安裝什么軟件,也可以在非重要的機(jī)器上進(jìn)行編譯,然后使用PSFTP等軟件上傳到遠(yuǎn)程主機(jī)上使用。關(guān)于PSFTP軟件的使用,二樓有詳細(xì)的介紹。

      系統(tǒng)分區(qū)時,推薦將/usr/usr/local、/var/var/mysql、/var/mail、/var/log、/var/nginx等分區(qū)單獨(dú)分出來,也就是說,進(jìn)行比較細(xì)致的分區(qū),防止某個目錄中的文件膨脹占滿整個分區(qū)導(dǎo)致的死鎖等問題。假定你有一個80G的硬盤,一個分區(qū)示例在下面:
      /
      200M
      (swap)
      1G
      /tmp
      200M
      /usr
      500M
      /usr/local
      200M
      /var
      100M
      /var/mysql
      10G
      /var/mail
      100M
      /var/log
      5G~10G
      /home
      200M
      /var/nginx
      剩余空間


      至于系統(tǒng)服務(wù)部分,建議所有的服務(wù)都選擇“n”,亦即不隨系統(tǒng)啟動。

      二、系統(tǒng)性能調(diào)優(yōu)

      對于多核的機(jī)器,使用bsd.mp這個核心。
      mv /bsd /obsd
      mv /bsd.mp /bsd


      、/etc/fstab調(diào)優(yōu)
      vi /etc/fstab


      在文件系統(tǒng)描述符部分,加入"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是一種非同步的文件系統(tǒng),意外掉電可能造成數(shù)據(jù)的遺失/損壞,生產(chǎn)系統(tǒng)請謹(jǐn)慎使用!

      改完后保存退出,reboot,看能不能正常啟動。

      一般情況下是沒有問題的,個別機(jī)器或虛擬機(jī)可能會因為兼容性的緣故,無法啟動。那么就把根目錄的softdep拿掉,其他目錄保留,仍然會有作用。

      更多關(guān)于OpenBSD環(huán)境下磁盤性能調(diào)優(yōu)的內(nèi)容,請參看偶博客的文章,地址在下面:
      http://blog./u2/81136/showart_1841280.html

      /etc/sysctl.conf調(diào)優(yōu)
      vi /etc/sysctl.conf


      跳到最后,加入下面的內(nèi)容:
      # 增大文件系統(tǒng)緩存到1M
      kern.maxvnodes=131072

      #
      允許最多65536個進(jìn)程
      kern.maxproc=65536

      #
      同時最多打開65536個文件
      kern.maxfiles=65536

      #
      并發(fā)連接最大65536
      kern.somaxconn=65536

      #
      保留的最少連接數(shù)
      kern.sominconn=256
      kern.maxclusters=32768

      #
      增大TCP接收/發(fā)送緩存到64K
      net.inet.tcp.recvspace=65536
      net.inet.tcp.sendspace=65536

      #
      增大UDP接收/發(fā)送緩存到64K
      net.inet.udp.recvspace=65536
      net.inet.udp.sendspace=65536
      注意:虛擬機(jī)測試只加最上面一行kern.maxvnodes=65536即可,其他的不必加了,否則會有各種問題。獨(dú)立機(jī)器的可以加上。

      保存退出,reboot。不能正常啟動的就把除kern.maxvnodes以外的數(shù)字調(diào)小或者禁用再試。

      三、OpenBSD.Nginx.MySQL.PHP軟件環(huán)境的安裝

      OpenBSD
      環(huán)境下軟件的安裝是非常簡單的,因為在官方的ftp中提供了已經(jīng)編譯好的二進(jìn)制包,需要安裝的軟件都在ftp中,從ftp中安裝即可。

      小提示:如果你機(jī)器比較多,你可以把需要安裝的軟件包都down回來,其他機(jī)器再來這里安裝,速度會非???!
      export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/

      pkg_add mysql-server php5-fastcgi php5-gd-5.2.6-no_x11 phpMyAdmin lighttpd-1.4.19p3 nginx pecl-APC



      以偶的1M ADSL小水管為例,大約也就二十分鐘左右就安裝完畢了!真的是非常快!和其他系統(tǒng)的wget源碼、./configure && make && make install...所需要的時間相比,效率是非常高!而且,由于OpenBSD默認(rèn)采用比較高的安全策略,裝上的環(huán)境安全性也比其他系統(tǒng)要高!

      等所需的軟件都安裝完成后,按提示作鏈接并創(chuàng)建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
      檢查一下系統(tǒng)中安裝了些什么軟件包:



      可以看到,所需的軟件包和依賴的包都安裝好了!

      四、Nginx配置
      、Nginx配置文件的修改

      修改nginx的默認(rèn)配置文件:
      vi /etc/nginx/nginx.conf


      按下面的內(nèi)容修改Nginx的配置文件。蘭色表示需要手動修改的內(nèi)容紅色表示增加的內(nèi)容
      #user  nobody;

      #
      指定子進(jìn)程數(shù),酌情修改
      worker_processes  2;

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

      #pid        logs/nginx.pid;

      #
      最多可打開文件數(shù)
      worker_rlimit_nofile 8196;

      events {
          #
      最大并發(fā)數(shù)
          worker_connections  1024;
      }

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

          #
      關(guān)掉錯誤日志
          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;


          #
      對靜態(tài)文件和可壓縮文件啟用壓縮,以節(jié)約網(wǎng)絡(luò)帶寬,提高訪問速度
          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”的記錄區(qū),總?cè)萘繛?10M
          #
      和下面的limit_conn一起限制單個IP的并發(fā)連接數(shù)為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;
              }

              #
      在瀏覽器本地暫存圖片和靜態(tài)文件,不記錄日志,以節(jié)約機(jī)器資源
              location ~* \.(gif|png|jpg|jpeg|bmp|css|js|swf)$
              {
                  root           /var/nginx/html;
                  access_log     off;
                  expires        max;
              }


              #
      在瀏覽器中輸入http://.xxx/status可以看到Nginx的運(yùn)行信息
              #
      需要密碼認(rèn)證,不記錄日志,限制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;
              }

          }

      }


      其他的部分請酌情修改。

      運(yùn)行下面的命令生成查看Nginx運(yùn)行狀態(tài)的密碼文件:

      htpasswd -c /etc/nginx/password webadmin

      按提示輸入兩遍密碼即可。

      在查看status的時候,輸入用戶名webadmin(見上面這行)和密碼就能夠看到Nginx的運(yùn)行數(shù)據(jù)了。

      Nginx
      能夠流行和它的高負(fù)載能力是分不開的,在追求性能表現(xiàn)的場合,推薦使用Nginx+PHP-fastcgi的組合以獲得強(qiáng)健的性能表現(xiàn)。而對于那些重視安全性的場合來說,可能OpenBSD內(nèi)核集成的Apache更合適。OpenBSD下搭建Apache、MySQLPHP環(huán)境的詳細(xì)內(nèi)容請參見偶的另篇博文,地址在下面:
      http://blog./u2/81136/showart_1860332.html
      當(dāng)然,你也可以利用Nginx內(nèi)置的負(fù)載均衡功能,在前端分配訪問流量,后端由Apache來運(yùn)行PHP環(huán)境。Nginx負(fù)載均衡的配置可以去Nginx的主頁參看相關(guān)內(nèi)容,地址:http://wiki./Main。
      下面為一個Nginx負(fù)載均衡的示例:

      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.;
      location / {
      proxy_pass http://myproject;
      }
      }
      }
      網(wǎng)絡(luò)拓?fù)涫疽鈭D如下:


      、Nginx日志截斷

      OpenBSD
      默認(rèn)每天00:00會執(zhí)行/etc/daily.local腳本中的內(nèi)容,我們只需要把Nginx日志截斷的命令加入到這個文件中即可。

      vi /etc/daily.local


      加入下面的內(nèi)容:
      #!/bin/sh
      #
      Nginx日志進(jìn)行截斷和壓縮,以節(jié)約log分區(qū)空間
      #
      在張宴的基礎(chǔ)上修改,感謝!
      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加上執(zhí)行權(quán)限:
      chmod 0755 /etc/daily.local


      其他需要每天運(yùn)行的命令也都可以加在這個腳本里面,各位自行處理。

      五、MySQLphpMyAdmin的配置
      MySQL的配置

      安全起見,MySQL需要運(yùn)行在自己的daemon下:
      vi /etc/login.conf


      跳到最后,加入MySQL所需的修改:
      mysql:\
              :openfiles-cur=2048:\
              :openfiles-max=4096:\
              :tc=daemon:


      使修改生效:
      cap_mkdb /etc/login.conf
      初始化MySQL數(shù)據(jù)庫:
      /usr/local/bin/mysql_install_db


      MySQL
      自帶了幾個配置文件,在/usr/local/share/mysql目錄中,可以拷貝為/etc/my.cnf使用。關(guān)于MySQL的配置和優(yōu)化等內(nèi)容,可以自行Google,這里不再贅述。
      MySQL安全須知

      1
      、不要用root身份運(yùn)行數(shù)據(jù)庫或PHP應(yīng)用。并且,最好是數(shù)據(jù)庫名和數(shù)據(jù)庫用戶名不同,以提高安全性。

      例如,域名為example.net,則數(shù)據(jù)庫名設(shè)為abcxyz,數(shù)據(jù)庫用戶名設(shè)為xyzabc??傊?,關(guān)聯(lián)度越低越好,數(shù)據(jù)庫名和數(shù)據(jù)庫用戶名越復(fù)雜越難猜測越好。

      2
      、控制權(quán)限的分配,PHP應(yīng)用僅給予必要的權(quán)限。

      例如,安裝/升級Discuz!PHPWind論壇程序,僅需要下圖所示的權(quán)限即可:



      在安裝/升級完畢后,還可以把CREATEALTER、DROP權(quán)限去掉,不會影響論壇程序的運(yùn)行,而且提高了安全性!
      、phpMyAdmin的配置

      由于OpenBSD中的phpMyAdmin默認(rèn)是安裝在/var/www/phpMyAdmin目錄中的,直接使用Nginx是無法訪問的,我們需要把它拷貝到Nginx目錄下,這樣就可以通過瀏覽器來管理MySQL數(shù)據(jù)庫了。
      mkdir /var/nginx/html/pma/
      cp -rf /var/www/phpMyAdmin/* /var/nginx/html/pma/



      修改phpMyAdmin的配置文件,使之可用。
      vi +17 /var/nginx/html/pma/config.inc.php


      將下面這行修改成:
      $cfg['blowfish_secret'] = 'a'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH!*/

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

      保存退出。
      小提示:

      1
      上面新建了/var/nginx/html/pma目錄來保存phpMyAdmin的文件,目錄名很簡單。你可以用一個更復(fù)雜的目錄名來代替,例如:pma2YAY5jRpfFfLXQVm這樣的目錄名,以防止黑客利用字典攻擊等方法滲透你的phpMyAdmin!

      2
      、你還可以在Nginx的配置文件中,將/var/nginx/html/pma配置成某個虛擬主機(jī)的根目錄,并限定可以訪問這個虛擬主機(jī)的IP。這樣,就可以在很大程度上提高數(shù)據(jù)庫的安全性了!一個配置示例在下面:
      location / {
          allow   192.168.0.0/24;
          deny    all;
      }


      3
      、假如平時只是偶爾用到phpMyAdmin,你還可以在用完后刪除/var/nginx/html/pma目錄,需要用的時候再拷貝過去。

      4
      、你還可以將以上方法結(jié)合起來靈活使用,既建立一個無法被猜測的目錄名,又限制IP訪問,這樣你的系統(tǒng)被黑的機(jī)會就會小了很多!
      六、強(qiáng)化PHP的安全

      OpenBSD
      軟件包中的PHP已經(jīng)自帶了suhosin這個補(bǔ)丁,可以在很大程度上提高PHP腳本的安全。本節(jié)主要討論在php.ini文件中進(jìn)行相關(guān)的設(shè)置,進(jìn)一步提升安全性。具體來說,就是禁用某些危險函數(shù)和啟用PHP安全模式。

      偶一般是把對PHP的所有修改都放在一個單獨(dú)的文件中進(jìn)行,包括對PHP參數(shù)以及擴(kuò)展模塊的修改,都放在這個文件中一并處理,這樣查找、修改和管理會方便許多:
      vi /var/www/conf/php5/addphp.ini


      加入下面的內(nèi)容:
      ; 禁止動態(tài)加載模塊
      enable_dl = Off

      ;
      隱藏PHP信息
      expose_php = Off

      ;
      限定可訪問目錄
      open_basedir = /var/nginx/html/

      ;
      設(shè)定session暫存目錄
      session.save_path=/var/nginx/sesstmp

      ;
      設(shè)定PHP上傳文件的臨時目錄
      upload_tmp_dir=/var/nginx/tmp

      ;
      禁用危險函數(shù)(注意下面的內(nèi)容應(yīng)該是一行,編排的原因分成了多行)
      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
      在安全模式下運(yùn)行是用性能換安全。據(jù)簡單測試,性能下降到50%左右,各位請酌情使用
      ;
      啟用安全模式后,某些程序可能受到影響。例如,Discuz!將無法上傳附件
      safe_mode = On

      ; pecl-APC
      只使用16M的共享內(nèi)存用以加速PHP程序的運(yùn)行
      apc.shm_size=16M


      保存退出。

      七、強(qiáng)化SSH的安全
      、SSH配置文件的修改
      vi /etc/ssh/sshd_config


      跳到最后,加入下面的部分:
      # 使用高位端口,防止黑客掃描22端口??蛇x范圍1024~65535,推薦32768~65535。
      Port 58937

      #
      登錄時間控制在30秒內(nèi)
      LoginGraceTime 30

      #
      不允許root遠(yuǎn)程直接登錄
      PermitRootLogin no
      StrictModes yes

      #
      最多允許三次錯誤
      MaxAuthTries 3

      #
      最多允許三個SSH線程
      MaxSessions 3

      #
      使用SSH協(xié)議2
      Protocol 2

      #
      不使用密碼認(rèn)證
      PasswordAuthentication no

      #
      使用KEY的方式認(rèn)證
      PubkeyAuthentication yes

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


      、使用KEY進(jìn)行驗證

      關(guān)于使用PuTTY進(jìn)行KEY驗證的方法,請參見偶的另一篇博文,地址:
      http://blog./u2/81136/showart_1860332.html

      、按需啟動SSH

      我們只在必要的時候啟動sshd服務(wù),用完即停止,不給黑客掃描的機(jī)會。輸入下面的命令:
      crontab -e


      跳到最后,輸入下面的內(nèi)容(中間的空白部分為Tab):
      # 每天的10:30啟動sshd服務(wù)
      30      10      *       *       *       /usr/sbin/sshd

      # 10:35
      即停止sshd服務(wù),也就是說,你只有五分鐘的時間可以登錄進(jìn)系統(tǒng)
      35      10      *       *       *       kill `cat /var/run/sshd.pid`


      保存退出。

      上面的時間請酌情修改。sshd服務(wù)啟動的時間盡量不要太長,5~10分鐘應(yīng)該夠了!

      、一點安全小常識
      1私鑰請一定保存在安全的地方,不要保存在本地計算機(jī)上,并加上足夠強(qiáng)度的“保護(hù)碼”;

      2
      、本地計算機(jī)不要保存遠(yuǎn)程主機(jī)的“指紋”,用一次確認(rèn)一次(遠(yuǎn)程主機(jī)的指紋保存在注冊表的HKEY_CURRENT_USER\Software\SimonTatham\PuTTY項下,可以手動刪除);

      3
      、不要使用DSA密鑰,據(jù)說有漏洞的;

      4
      、不要在公用計算機(jī)上連接遠(yuǎn)程主機(jī),有鍵盤記錄器、木馬什么的就麻煩了;

      5
      多個遠(yuǎn)程主機(jī)不要使用相同的公鑰,最好是使用各自的公鑰、私鑰;

      6
      、少用,最好是不用無線網(wǎng)絡(luò),加密強(qiáng)度太差,容易被破解;

      7
      、M$系統(tǒng)下的病毒、木馬太多了,推薦客戶端轉(zhuǎn)換到Linux/UNIX環(huán)境,安全性更高,而且仍然有PuTTY及工具可用;

      8
      、注意清除本地機(jī)器上不必要保留的文件(例如私鑰、公鑰、主機(jī)RSA指紋、C:\Documents and Settings\Administrator目錄下的文件等等)。

      八、啟用Packet Filter防火墻

      Packet Filter
      是非常優(yōu)秀的包過濾防火墻,OpenBSD核心已經(jīng)集成了Packet Filter防火墻,不過默認(rèn)并沒有啟用,下面我們來啟用Packet Filter的強(qiáng)大功能!
      vi /etc/pf.conf


      跳到最后,加入下面的內(nèi)容:
      # 宏定義
      #
      請把下面的fxp0換成你自己用的外網(wǎng)網(wǎng)卡,不知道的可以輸入ipconfig查看
      ext_if="fxp0"

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

      #
      指定SSH端口。
      #
      注意,如果在/etc/ssh/sshd_config文件中更改了SSH端口號,這里的也需要同樣修改。否則連不上了不要怪偶沒有提醒!
      ssh_port="58937"

      #
      維持一個持久的表,里面存放的是對本機(jī)發(fā)動DDoS攻擊的IP
      table <badhosts> persist

      #
      選項設(shè)定
      set require-order yes
      set block-policy drop
      set optimization aggressive
      set loginterface none
      set skip on lo0

      # TCP
      參數(shù)設(shè)定
      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及其它參數(shù)設(shè)定
      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主機(jī)來的包
      block quick from <badhosts>
      block return
      block in all
      block out all

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

      #
      允許本機(jī)訪問其他機(jī)器
      pass out quick on $ext_if inet from $ext_if to any flags S/SA keep state

      #
      允許IPv4地址的客戶機(jī)訪問本地80www)端口,發(fā)起過快連接(DDoS)的主機(jī)加入阻止列表。注意是一行,下同
      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地址的客戶機(jī)訪問本地80www)端口,發(fā)起過快連接(DDoS)的主機(jī)加入阻止列表
      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遠(yuǎn)程連接本機(jī)SSH端口
      pass in quick on $ext_if inet proto tcp from $admin_add to $ext_if port $ssh_port flags S/SA synproxy state


      保存退出。

      修改系統(tǒng)配置,使得開機(jī)啟用PF防火墻:
      vi /etc/rc.conf.local


      跳到最后,加入下面這行:
      pf=YES

      保存退出。

      九、系統(tǒng)啟動腳本的修改

      修改系統(tǒng)啟動腳本,使得MySQLPHP(fastcgi)、Nginx可以在系統(tǒng)啟動的時候自動啟動,免去手動啟動的麻煩。
      vi /etc/rc.local


      跳到最后,加入下面的內(nèi)容:
      # 啟動時校時。這行也可以加在/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.環(huán)境已經(jīng)搭建好了!



        系統(tǒng)啟動后,還要把MySQL自帶的測試數(shù)據(jù)庫和匿名用戶刪除,防止被黑客利用。默認(rèn)情況下,新安裝的MySQL數(shù)據(jù)庫,root密碼為空!同樣需要第一時間進(jìn)行設(shè)置,此處不再贅敘。

      寫在最后
        其實,系統(tǒng)的安全是個整體工程,并不是用上了OpenBSD這個最安全的操作系統(tǒng)就算萬事OK,還有很多事情要做。
        更多的是需要在日常工作中積累經(jīng)驗,多分析系統(tǒng)整體的運(yùn)行情況,多關(guān)注網(wǎng)絡(luò)安全方面的內(nèi)容,這樣才能盡可能的打造安全的運(yùn)維環(huán)境。本手冊只是起到拋磚引玉的作用,希望能吸引更多的人來關(guān)注系統(tǒng)安全,希望有更多的人能用上OpenBSD這個主動安全的操作系統(tǒng),希望能推動OpenBSD在國內(nèi)的更多普及。如此,則幸甚!

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多