2013
02
28
14:02

dedecms安全设置之php.ini设置

php.ini中修改参数:

disable_functions = system,exec,shell_exec,passthru,proc_open,proc_close,proc_get_status,checkdnsrr,getmxrr,

getservbyname,getservbyport,syslog,popen,show_source,highlight_file,dl,socket_listen,socket_create,

socket_bind,socket_accept,socket_connect,stream_socket_server,stream_socket_accept,

stream_socket_client,ftp_connect,ftp_login,ftp_pasv,ftp_get,sys_getloadavg,disk_total_space,

disk_free_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,

posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,

posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,

posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,

posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname,fsockopen,pfsockopen

 

allow_url_include = Off

2013
02
28
11:55

启用gzip模块优化网页

Nginx

 

http

{

: include conf/mime.types;

: gzip on;

: gzip_min_length 1000;

: gzip_buffers 4 8k;

: gzip_http_version 1.1;

: gzip_types text/plain application/x-javascript text/css text/html application/xml;

}

重启nginx

IIS6

打开Internet信息服务(IIS)管理器,右击”网站”→“属性”,选择”服务”。在”HTTP压缩”框中选中”压缩应用程序文件”和”压缩静态文件”,按需要设置”临时目录”和”临时目录的最大限制”;

在Internet信息服务(IIS)管理器,右击”Web服务扩展”→“增加一个新的Web服务扩展…“,在”新建Web服务扩展”框中输入扩展 名”HTTPCompression”,添加”要求的文件”为C:\WINDOWS\system32\inetsrv\gzip.dll,其中 Windows系统目录根据您的安装可能有所不同,选中”设置扩展状态为允许”;

使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),找到Location =”/LM/W3SVC/Filters/Compression/gzip”,如果需要压缩动态文件,则将 HcDoDynamicCompression设置为”TRUE”,并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名, 如aspx;如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置 为”TRUE”,并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css 等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数字越小压缩率越低;

编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开”开始”→“管理工具”→“服务”,停止”IIS Admin Service”后,即可保存;

最后,重新启动IIS。

Apache

编辑httpd.conf

在最下面加上:

<IfModule mod_deflate.c>

SetOutputFilter DEFLATE

AddOutputFilterByType DEFLATE text/html text/css application/x-javascript

</IfModule>

重启apache:

2013
02
28
09:17

关于FORCE_PKG_REGISTER

当你先已用ports安装过某一软件,再次安装同一项时,会出现类似:You may wish to “make deinstall” and install this port again

by “make reinstall” to upgrade it properly.

If you really wish to overwrite the old port of PORTS資料夾位置

without deleting it first, set the variable “FORCE_PKG_REGISTER”

in your environment or the “make install” command line.

的错误。

 

解决办法:只要在make install 时加上 FORCE_PKG_REGISTER=”yes” 就可以强制安裝

2013
02
21
09:43

Apache VirtualHost设定

通常在一台Web Server上,會有數個不一樣的網站要執行,這時候各個網站的domain name就必須靠VirtualHost設定

VirtualHost基本設定

#指定主機所有port 80所指定的虛擬主機

NameVirtualHost *:80

 

<Virtualhost *:80>

#DNS

ServerName wp.johnsonlu.org

 

#Web Root Path

DocumentRoot /var/www/test

 

#Alias可以將DocumentRoot底下的路徑對應成特定目錄路徑

Alias /doc/ /var/www/test/doc/

 

#控制目錄權限

<Directory “/usr/share/doc/”>

#Options可以透過+號或-號來控制目錄權限,例如關閉Index目錄

#FollowSymLinks是允許連到DocumentRoot以外的其他目錄、MultiViews是多國語言支援

Options -Indexes FollowSymLinks MultiViews

 

#AllowOverride是用來設定Override權限。None代表關閉.htaccess;FileInfo則是開啟

AllowOverride None

 

#Order負責控制Deny和Allow執行順序

Order Deny,Allow

#控制要拒絕的連線

Deny from all

#控制可以通過的連線

Allow from 127.0.0.0/255.0.0.0

</Directory>

 

#Log

ErrorLog /var/log/error_log

</Virtualhost>

Alias也可以透過正規表示法設定成pattern,可以參考mod_alias

Directory設定可以參考Directory Directive

Allow和Deny的部份可以參考mod_access_compat

 

 

另外也可以把VirtualHost設定成動態的pattern

(需要開啟mod_vhost_alias module)

<VirtualHost *:80>

ServerName api.johnsonlu.org

ServerAlias *.api.johnsonlu.org

VirtualDocumentRoot /home/johnsonlu/www/api/%0/public

</VirtualHost>

這樣一來,假設我有一個/home/johnsonlu/www/api/test.api.johnsonlu.org/public的路徑,就可以對應到test.api.johnsonlu.org

VirtualDocumentRoot的字串pattern可以參考 mod_vhost_alias

2013
02
21
09:40

Apache压力测试工具 ApacheBench

這是Apache內建的壓力測試工具

指令為(ab or ab2)

ab -k -c 10 -n 10 http://xxxx.com/

-k 是代表KeepAlive

-c concurrent 代表同時進行壓力測試的數量

-n request number 代表request的數量

2013
02
21
09:38

Apache mod_deflate(gzip)

在Apache中,可以啟用mod_deflate來壓縮網頁,傳送給client後再由client端解壓縮,可以大大節省頻寬的使用

開啟方法:

#先到apache的httpd.conf中把mod_deflate.so註解拿掉(如果預設有引入的話就代表已經有使用deflate壓縮囉)

LoadModule deflate_module libexec/apache22/mod_deflate.so

#Ubuntu可以使用指令開啟

a2enmod deflate

接著可以在Apache設定檔(httpd.conf)中自訂一些設定

<IfModule mod_deflate.c>

#壓縮等級1~9,等級越高壓縮效能越好

DeflateCompressionLevel 9

#設定要壓縮的類型

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-httpd-php

#自訂Log格式及存放位置

DeflateFilterNote ratio

LogFormat ‘”%r” %b (%{ratio}n) “%{User-agent}i”‘ deflate

CustomLog /var/log/deflate_log deflate

</IfModule>

其他更細部的操作,例如BrowserMatch等等,可以直接參考Apache mod_deflate的說明

設定完成後重新啟動Apache即可,可以透過這個網站測試

2013
02
21
09:27

FreeBSD防火墙Firewall(ipfw)

先將kernel複製出來

mkdir /usr/local/etc/FreeBSD

cd /usr/src/sys/i386/conf

cp GENERIC /usr/local/etc/FreeBSD/MYKERNEL

ln -s /usr/local/etc/FreeBSD/MYKERNEL

vi /usr/local/etc/FreeBSD/MYKERNEL

加入

options IPFIREWALL #firewall

options IPFIREWALL_VERBOSE #enable logging to syslogd(8)

options IPFIREWALL_FORWARD #packet destination changes

options IPFIREWALL_DEFAULT_TO_ACCEPT #allow everything by default

cd /usr/src;make kernel

完成後開始設定

vi /etc/rc.conf

加入

#firewall

firewall_enable=”YES”

firewall_logging=”YES”

firewall_script=”/etc/rc.firewall”

vi /etc/rc.firewall

將內容全部刪除改為

#!/bin/sh

fwcmd=”/sbin/ipfw”

Trust_IP1=”127.0.0.1″ #這裡要換成server本身的IP

Trust_IP2=”120.119.1.0/24″ #可通過的網段

UnTrust_IP1=”192.83.191.0/24″

Allowed_TCP_In_1=”22,25,53,80,443″

#you want to open port

Traceroute=”33433-33499″

Allowed_UDP_Out=”20,21,53,113″

Allowed_UDP_In=”20,21,53,113″

Allowed_UDP_ftp_Out=”65000-65500″

Allowed_UDP_ftp_In=”65000-65500″

Allowed_TCP_ftp_Out=”65000-65500″

Allowed_TCP_ftp_In=”65000-65500″

#ipfw [add/del/fwd] [serial] [allow/deny] [protocol] [from] [ports] to [destation] [ports]

$fwcmd -f flush

#flush ipfw tables

$fwcmd add 1 allow ipv6 from any to any

$fwcmd add 00010 allow tcp from me to any setup keep-state

$fwcmd add 00021 check-state

$fwcmd add 00030 allow ip from ${Trust_IP1} to any

$fwcmd add 00031 allow ip from ${Trust_IP2} to any

$fwcmd add 00060 allow icmp from any to any

$fwcmd add 00061 allow udp from any to any $Traceroute

$fwcmd add 00120 deny ip from ${UnTrust_IP1} to me

$fwcmd add 00121 deny tcp from ${UnTrust_IP1} to me 25

$fwcmd add 56000 allow tcp from any to any ${Allowed_TCP_In_1}

$fwcmd add 56003 allow udp from any ${Allowed_UDP_In} to any

$fwcmd add 56004 allow udp from any to any ${Allowed_UDP_ftp_Out}

$fwcmd add 56005 allow tcp from any to any ${Allowed_TCP_ftp_Out}

$fwcmd add 65534 deny log ip from any to any

#deny all ip

$fwcmd zero

#clean counter

sh /etc/rc.firewall &

reboot

2013
02
21
09:25

FreeBSD安裝sshguard-ipfw

請先完成ipfw設置

cd /usr/ports/security/sshguard-ipfw;make install clean

在/etc/syslog.conf 中

#auth.info;authpriv.info |exec /usr/local/sbin/sshguard

註解去掉

也可以自由設定鎖定時間

例如:

auth.info;authpriv.info |exec /usr/local/sbin/sshguard -a 5 -p 7200 -s 3600

(a:失敗多少次 p:被擋多久(秒) s:多少秒忘記攻擊)

最後/etc/rc.d/syslogd restart

接著你可以tail -f /var/log/auth.log,然後用putty連線,密碼請故意打錯四次,就會出現:

Jan 26 13:31:05 earth sshguard[40059]: Blocking 210.71.11.116:4 for >420secs: 4 failures over 2 seconds.

解除鎖定:

使用另一個IP登入

ipfw show

ipfw delete xxxxx

2013
02
21
09:11

FreeBSD安装pure-ftpd

cd /usr/ports/ftp/pure-ftpd

make install clean(選UTF-8)

cd /usr/local/etc

cp pure-ftpd.conf.sample pure-ftpd.conf

vi /etc/rc.conf

加入

pureftpd_enable=”YES”

ftp傳輸檔案時是有特定的port,

如果防火牆有擋port,可以自行設定ftp檔案傳輸的port

vi /usr/local/etc/pure-ftpd.conf

將PassivePortRange這行改成

PassivePortRange 65000 65500

啟用ftp

/usr/local/etc/rc.d/pure-ftpd start

2013
02
21
09:09

FreeBSD Samba安装及设定

cd /usr/ports/net/samba34

make install clean

(選擇 LDAP、ADS、CUPS、WINBIND、ACL_SUPPORT、SYSLOG、UTMP)

vi /etc/rc.conf

samba_enable=”YES”

vi /usr/local/etc/smb.conf

#加入工作群組

workgroup = WORKGROUP

#主機名稱

server string = %h Samba Server

(%h為主機名稱變數)

#設定使用者家目錄

原為:

[homes]

comment = Homes Directories

browseable = no

writable = yes

更改為:

[homes]

comment = Home directory for %u on %h

browseable = no

writable = yes

path = /usr/home/%u/

valid users = %S

#設定共享資料夾

[public]

comment = %h Shared Public Directory

path = /usr/home/samba/public

force directory mode = 0777

force create mode = 0777

force group = nobody

force user = nobody

public = yes

writeable = yes

read only = no

#測試Samba conf中語法有無錯誤

/usr/local/bin/testparm | more

mkdir /usr/home/samba

mkdir /usr/home/samba/public

chmod 777 /usr/home/samba/public

#新增Samba帳戶

使用者必須同時設定兩種帳號: FreeBSD 的使用者帳號、 Samba 的使用者帳號 才能正常登入 Samba 伺服器。

smbpasswd -a 帳號

/usr/local/etc/rc.d/samba restart

#個別設定資料夾設定

[aaa]

comment = aaa

path = /home/samba/my2075/aaa

valid users = aaa, admin2075

write list = aaa, admin2075

browseable = No

[bbb]

comment = bbb

path = /home/samba/my2075/bbb

valid users = bbb, admin2075

write list = bbb, admin2075

browseable = No

[ccc]

comment = ccc

path = /home/samba/my2075/ccc

valid users = ccc, admin2075

write list = ccc, admin2075

browseable = No

#samba變數

%S: 取代目前的「資源名稱」,所謂的「資源名稱」就是在 [ ] 裡面的內容。ex: valid users = %S

%U: 代表目前登入的使用者的使用者名稱。

%m: 代表 Client 端的 NetBIOS 名稱。

%g: 代表登入的使用者的群組名稱。

%M: 代表 Client 端的 Internet 主機名稱,就是 HOSTNAME。

%L: 代表 SAMBA 主機的 NetBIOS 名稱。

%h: 代表目前這部 SAMBA 主機的 HOSTNAME。

%H: 代表使用者的家目錄。

%I: 代表 Client 端的 IP。

%T: 代表目前的日期與時間。

#Samba 使用下列的通訊埠:

Port 135/TCP – used by smbd

Port 137/UDP – used by nmbd

Port 138/UDP – used by nmbd

Port 139/TCP – used by smbd

Port 445/TCP – used by smbd

#Windows網路芳鄰切換使用者

進cmd模式

net use * /delete