ssl加密的方法

上传人:仙*** 文档编号:46134222 上传时间:2021-12-10 格式:DOC 页数:21 大小:155.01KB
返回 下载 相关 举报
ssl加密的方法_第1页
第1页 / 共21页
ssl加密的方法_第2页
第2页 / 共21页
ssl加密的方法_第3页
第3页 / 共21页
点击查看更多>>
资源描述
ssl加密的方法关键词: ssl加密的方法 随着计算机网络技术的发展,方便快捷的互连网使人们渐渐习惯了从Web页上收发E-mail、购物和交易,这时Web页面上需要传输重要或敏感的数据,例如用户的银行帐户、密码等,所以网络安全就成为现代计算机网络应用急需解决的问题。现行网上银行和电子商务等大型的网上交易系统普遍采用HTTP和SSL相结合的方式。服务器端采用支持SSL的Web服务器,用户端采用支持SSL的浏览器实现安全通信。SSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准,目前已有3.0版本。SSL采用公开密钥技术。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。目前,利用公开密钥技术的SSL协议,已成为Internet上保密通讯的工业标准。本文着重在SSL协议和SSL程序设计两方面谈谈作者对SSL的理解。SSL协议初步介绍安全套接层协议能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。通过以上叙述,SSL协议提供的安全信道有以下三个特性:1.数据的保密性信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。加密的过程需要用到密匙来加密数据然后再解密。没有了密钥,就无法解开加密的数据。数据加密之后,只有密匙要用一个安全的方法传送。加密过的数据可以公开地传送。2.数据的一致性加密也能保证数据的一致性。例如:消息验证码(MAC),能够校验用户提供的加密信息,接收者可以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。3.安全验证加密的另外一个用途是用来作为个人的标识,用户的密匙可以作为他的安全验证的标识。SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机密资料时的加密通讯协定。目前,大部分的Web 服务器及浏览器都广泛支持SSL 技术。当浏览器试图连接一个具有SSL认证加密的服务器时,就会唤醒一个SSL会话,浏览器检查认证,必须具备下面三个条件:1)有一个权威机构发放证书,当然可以创建自我签订的证书(x509 结构)。2)证书不能过期。3)证书是属于它所连接的服务器的。只有全部具备了这三个条件,浏览器才能成功完成认证。通过这三个条件,用户能确认其浏览器连接到正确的服务器,而不是连接到一些想盗取用户密码等重要信息的虚假的服务器上。在当今的电子商务中还有一项被广泛使用的安全协议是SET协议。SET(Secure Electronic Transaction,安全电子交易)协议是由VISA和MasterCard两大信用卡公司于1997年5月联合推出的规范。SET能在电子交易环节上提供更大的信任度、更完整的交易信息、更高的安全性和更少受欺诈的可能性。SET交易分三个阶段进行:用户向商家购物并确定支付;商家与银行核实;银行向商家支付货款。每个阶段都涉及到RSA对数据加密,以及RSA数字签名。使用SET协议,在一次交易中,要完成多次加密与解密操作,故有很高的安全性,但SET协议比SSL协议复杂,商家和银行都需要改造系统以实现互操作。在Linux 下,比较流行支持SSL认证的是OpenSSL服务器。OpenSSL项目是一个合作的项目,开发一个健壮的、商业等级的、完整的开放源代码的工具包,用强大的加密算法来实现安全的Socket层(Secure Sockets Layer,SSL v2/v3)和传输层的安全性(Transport Layer Security,TLS v1)。这个项目是由全世界的志愿者管理和开发OpenSSL工具包和相关文档。如何在Linux下配置OpenSSL服务器,首先从OpenSSL的主页(http:/www.openssl.org/)上下载openssl-version.tar.gz软件包来编译安装,与Apache服务器配合可以建立支持SSL的Web服务器,并可以使用自我签订的证书做认证,关于如何编译、安装OpenSSL服务器,可以参考一下OpenSSL HOWTO文档。SSL 程序设计初步介绍SSL 通讯模型为标准的C/S 结构,除了在 TCP 层之上进行传输之外,与一般的通讯没有什么明显的区别。在这里,我们主要介绍如何使用OpenSSL进行安全通讯的程序设计。关于OpenSSL 的一些详细的信息请参考OpenSSL的官方主页 http:/www.openssl.org。在使用OpenSSL前,必须先对OpenSSL 进行初始化,以下的三个函数任选其一:SSL_library_init(void);OpenSSL_add_ssl_algorithms();SSLeay_add_ssl_algorithms();事实上 后面的两个函数只是第一个函数的宏。如果要使用OpenSSL的出错信息,使用SSL_load_error_strings (void)进行错误信息的初始化。以后可以使用void ERR_print_errors_fp(FILE *fp) 打印SSL的错误信息。一次SSL连接会话一般要先申请一个SSL 环境,基本的过程是:1. SSL_METHOD* meth = TLSv1_client_method(); 创建本次会话连接所使用的协议,如果是客户端可以使用SSL_METHOD* TLSv1_client_method(void); TLSv1.0 协议SSL_METHOD* SSLv2_client_method(void); SSLv2 协议SSL_METHOD* SSLv3_client_method(void); SSLv3 协议SSL_METHOD* SSLv23_client_method(void); SSLv2/v3 协议服务器同样需要创建本次会话所使用的协议:SSL_METHOD *TLSv1_server_method(void);SSL_METHOD *SSLv2_server_method(void);SSL_METHOD *SSLv3_server_method(void);SSL_METHOD *SSLv23_server_method(void);需要注意的是客户端和服务器需要使用相同的协议。2申请SSL会话的环境 CTX,使用不同的协议进行会话,其环境也是不同的。申请SSL会话环境的OpenSSL函数是SSLK_CTX* SSL_CTX_new (SSL_METHOD*); 参数就是前面我们申请的 SSL通讯方式。返回当前的SSL 连接环境的指针。然后根据自己的需要设置CTX的属性,典型的是设置SSL 握手阶段证书的验证方式和加载自己的证书。void SSL_CTX_set_verify (SSL_CTX* , int , int* (int, X509_STORE_CTX*) )设置证书验证的方式。第一个参数是当前的CTX 指针,第二个是验证方式,如果是要验证对方的话,就使用SSL_VERIFY_PEER。不需要的话,使用SSL_VERIFY_NONE.一般情况下,客户端需要验证对方,而服务器不需要。第三个参数是处理验证的回调函数,如果没有特殊的需要,使用空指针就可以了。void SSL_CTX_load_verify_locations(SSL_CTX*, const char* , const char*);加载证书;第一个参数同上,参数二是证书文件的名称,参数三是证书文件的路径;int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type);加载本地的证书;type 指明证书文件的结构类型;失败返回-1int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type);加载自己的私钥;type 参数指明私钥文件的结构类型;失败返回-1加载了证书和文件之后,就可以验证私钥和证书是否相符:BOOl SSL_CTX_check_private_key (SSL_CTX*);3既然SSL 使用TCP 协议,当然需要把SSL attach 到已经连接的套接字上了:SSL* SSL_new (SSL_CTX*); 申请一个SSL 套节字;int SSL_set_rfd (SSL*); 绑定只读套接字int SSL_set_wfd (SSL*); 绑定只写套接字int SSL_set_fd ( SSL*); 绑定读写套接字绑定成功返回 1, 失败返回0;4 接下来就是SSL 握手的动作了int SSL_connect (SSL*); 失败返回 -15. 握手成功之后,就可以进行通讯了,使用SSL_read 和SS_write 读写SSL 套接字代替传统的read 、writeint SSL_read (SSL *ssl, char *buf, int num );int SSL_write (SSL *ssl, char *buf, int num);如果是服务器,则使用 SSL_accept 代替传统的 accept 调用int SSL_accept(SSL *ssl);6. 通讯结束,需要释放前面申请的 SSL资源int SSL_shutdown(SSL *ssl); 关闭SSL套接字;void SSL_free (ssl); 释放SSL套接字;void SSL_CTX_free (ctx); 释放SSL环境;OpenSSL 虽然已经发展到了0.9.96版本,但是它的文档还很少,甚至连最基本的man 函数手册都没有完成。所以,本文紧紧是讲述了使用OpenSSL 进行程序设计的框架。更加详细的资料可以参考OpenSSL 的文档或者 Apache mod_ssl 的文档。通过以上的介绍,我想读者对SSL协议已经有了一定的了解,作者有机会将会继续给大家介绍SSL协议的其他方面的内容。SSL原理解密本文出自:范晓明RSA公钥加密在计算机产业中被广泛使用在认证和加密。可以从RSA Data Security Inc.获得的RSA公钥加密许可证。公钥加密是使用一对非对称的密码加密或解密的方法。每一对密码由公钥和私钥组成。公钥被广泛发布。私钥是隐密的,不公开。用公钥加密的数据只能够被私钥解密。反过来,使用私钥加密的数据只能用公钥解密。这个非对称的特性使得公钥加密很有用。使用公钥加密法认证认证是一个身份认证的过程。在下列例子中包括甲和乙,公钥加密会非常轻松地校验身份。符号数据 key意味着数据已经使用密码加密或解密。假如甲想校验乙的身份。乙有一对密码,一个是公开的,另一个是私有的。乙透露给甲他的公钥。甲产生一个随机信息发送给乙。甲乙:random-message乙使用他的私钥加密消息,返回甲加密后的消息。 乙甲:random-message乙的私钥甲收到这个消息然后使用乙的以前公开过的公钥解密。他比较解密后的消息与他原先发给乙的消息。如果它们完全一致,就会知道在与乙说话。任意一个中间人不会知道乙的私钥,也不能正确加密甲检查的随机消息。除非你清楚知道你加密的消息。用私钥加密消息,然后发送给其他人不是一个好主意。因为加密值可能被用来对付你,需要注意的是:因为只有你才有私钥,所以只有你才能加密消息。所以,代替加密甲发来的原始消息,乙创建了一个信息段并且加密。信息段取自随机消息(random-message)并具有以下有用的特性:1. 这个信息段难以还原。任何人即使伪装成乙,也不能从信息段中得到原始消息;2. 假冒者将发现不同的消息计算出相同的信息段值;3. 使用信息段,乙能够保护自己。他计算甲发出的随机信息段,并且加密结果,并发送加密信息段返回甲。甲能够计算出相同的信息段并且解密乙的消息认证乙。这个技术仅仅描绘了数字签名。通过加密甲产生的随机消息,乙已经在甲产生的消息签名。因此我们的认证协议还需要一次加密。一些消息由乙产生:甲乙:你好,你是乙么?乙甲:甲,我是乙信息段甲,我是乙 乙的私钥当你使用这个协议,乙知道他发送给乙的消息,他不介意在上面签名。他先发送不加密的信息,甲,我是乙。,然后发送信息段加密的消息版本。甲可以非常方便地校验乙就是乙,同时,乙还没有在他不想要的信息上签名。提交公钥那么,乙怎样以可信的方式提交他的公钥呢?看看认证协议如下所示:甲乙:你好乙甲:嗨,我是乙,乙的公钥甲乙:prove it乙甲:甲,我是乙 信息段甲,我是乙 乙的私钥在这个协议下,任何人都能够成为乙。所有你所要的只是公钥和私钥。你发送给甲说你就是乙,这样你的公钥就代替了乙的密码。然后,你发送用你的私钥加密的消息,证明你的身份。甲却不能发觉你并不是乙。为了解决这个问题,标准组织已经发明了证书。一个证书有以下的内容:* 证书的发行者姓名* 发行证书的组织* 标题的公钥* 邮戳证书使用发行者的私钥加密。每一个人都知道证书发行者的公钥(这样,每个证书的发行者拥有一个证书)。证书是一个把公钥与姓名绑定的协议。通过使用证书技术,每一个人都可以检查乙的证书,判断是否被假冒。假设乙控制好他的私钥,并且他确实是得到证书的乙,就万事大吉了。这些是修订后的协议:甲乙:你好乙甲:嗨,我是乙,乙的校验甲乙:prove it乙甲:甲,我是乙 信息段甲, 我是乙 乙的私钥现在当甲收到乙的第一个消息,他能检查证书,签名(如上所述,使用信息段和公钥解密),然后检查标题(乙的姓名),确定是乙。他就能相信公钥就是乙的公钥和要求乙证明自己的身份。乙通过上面的过程,制作一个信息段,用一个签名版本答复甲。甲可以校验乙的信息段通过使用从证书上得到的公钥并检查结果。如果一个黑客,叫H甲H:你好H不能建立一个令甲相信的从乙的消息。交换密码(secret)一旦甲已经验证乙后,他可以发送给乙一个只有乙可以解密、阅读的消息:甲乙:secret乙的公钥唯一找到密码的方法只有使用乙的私钥解码上述的信息。交换密码是另一个有效使用密码加密的方法。即使在甲和乙之间的通讯被侦听,只有乙才能得到密码。使用密码作为另一个secret-key增强了网络的安全性,但是这次这是一个对称的加密算法(例如DES、RC4、IDE甲)。因为甲在发送给乙之前产生了密码,所以甲知道密码。乙知道密码因为乙有私钥,能够解密甲的信息。但他们都知道密码,他们都能够初始化一个对称密码算法,而且开始发送加密后的信息。这儿是修定后的协议:甲乙:你好乙甲:嗨,我是乙,乙的校验甲乙:prove it乙甲:甲,我是乙 信息段甲,我是乙 乙的私钥甲乙:ok 乙,here is a secret secret乙的公钥乙甲:some messagesecret-key黑客窃听那么如果有一个恶意的黑客H在甲和乙中间,虽然不能发现甲和乙已经交换的密码,但能干扰他们的交谈。他可以放过大部分信息,选择破坏一定的信息(这是非常简单的,因为他知道甲和乙通话采用的协议)。甲H:你好H乙:你好乙H:嗨,我是乙,乙的校验H甲:嗨,我是乙,乙的校验甲H:prove itH乙:prove it乙H:甲,我是乙 信息段甲,我是乙 乙的私钥H甲:甲,我是乙 信息段甲,我是乙 乙的私钥甲H:ok 乙,here is a secret secret 乙的公钥H乙:ok 乙,here is a secret secret 乙的公钥乙H:some messagesecret-keyH甲:Garblesome messagesecret-key H忽略一些数据不修改,直到甲和乙交换密码。然后H干扰乙给甲的信息。在这一点上,甲相信乙,所以他可能相信已经被干扰的消息并且尽力解密。需要注意的是,H不知道密码,他所能做的就是毁坏使用秘钥加密后的数据。基于协议,H可能不能产生一个有效的消息。但下一次呢?为了阻止这种破坏,甲和乙在他们的协议中产生一个校验码消息(message authentication code)。一个校验码消息(MAC)是一部分由密码和一些传输消息产生的数据。信息段算法描述的上述特性正是它们抵御H的功能:MAC= Digestsome message,secret 因为H不知道密码,他不能得出正确的值。即使H随机干扰消息,只要数据量大,他成功的机会微乎其微。例如,使用HD5(一个RSA发明的好的加密算法),甲和乙能够发送128位MAC值和他们的消息。H猜测正确的MAC的几率将近1/18,446,744,073,709,551,616约等于零。这是又一次修改后的协议:甲乙:你好乙甲:嗨,我是乙,乙的校验甲乙:prove it乙甲:嗨,我是乙,乙的校验甲,我是乙信息段甲,我是乙 乙的私钥ok 乙,here is a secret secret 乙的公钥some message,MACsecret-key现在H已经无技可施了。他干扰了得到的所有消息,但MAC计算机能够发现他。甲和乙能够发现伪造的MAC值并且停止交谈。H不再能与乙通讯。OpenSSL FAQ参考资料: http:/linux.vbird.org/linux_server/0360apache.php#www_ssl_files20.5 建立連線加密網站 (https) 及防砍站腳本從本章一開始的 20.1 就談過 http 這個通訊協定是明碼傳送資料,而那個 https 才是加密傳輸的!那加密的方法是透過 SSL 啊,這個 SSL 就是以 openssl 軟體來提供的一個加密函式庫。更多與 https 有關的資訊,請參考 20.1.4 吧!20.5.1 SSL 所需軟體與憑證檔案及預設的 https要達成讓 apache 支援 https 協定的話,你必須要有 mod_ssl 這個軟體才行!請先自行使用 yum 去裝好這個軟體吧! 同時,我們的 CentOS 5.x 也已經預設提供了 SSL 機制所需要的私鑰與憑證檔案囉!相關軟體提供的檔案如下: /etc/httpd/conf.d/ssl.conf:mode_ssl 提供的 Apache 設定檔; /etc/pki/tls/private/localhost.key:系統私鑰檔,可以用來製作憑證的! /etc/pki/tls/certs/localhost.crt:就是加密過的憑證檔!(signed certificate) 既然系統都已經幫我們搞定了,那麼就讓我們直接來瀏覽一下,看看系統預設提供的 https 是長的什麼模樣吧! 打開你的瀏覽器,輸入 https:/你的IP 來連線看看:圖 20.5-1、在 firefox 底下看到的 SSL 安全問題圖示就如同本章 20.1.4 談到的,因為我們這個 Apache 網站並沒有將此憑證向 CA 註冊,因此就會出現上述的訊息了! 這就類似 ssh 連線時,系統需要你輸入 yes 是一樣的啦!要接受憑證後才能夠進行加密的功能。所以,請點選上圖中的箭頭 1,此時就會延伸出箭頭 2 的位置,按下去吧!然後就會出現如下所示:圖 20.5-2、在 firefox 底下接受一把私有的憑證所需要的流程如果你確定這個網站是你自己的可信任網站,那就按下 1 及 2 的箭頭處!如果還想要看一下這個網站所提供的相關憑證內容, 就按下 3 箭頭的地方:圖 20.5-3、在 firefox 底下觀察憑證的詳細內容由於這個憑證檔案的建置是在第一次啟動 Linux 時就安裝好了憑證檔,而在 CentOS 5.x 底下,預設的憑證有效期限為 1 年,所以你就會看到上圖中箭頭 2 所指的,簽發日到到期日共有一年啊!當你按下關閉後,就能夠看到實際的 https:/ 提供的網站內容囉!這就是預設的 SSL 網站啦!你的重要資訊可以放在這裡讓資料在網路上傳輸更佳的安全!20.5.2 擁有自製憑證的 https建立憑證檔預設的憑證雖然已經可以讓你順利的使用 https 了,不過,憑證的有效日僅有 1 年而已實在討厭 所以,我們還是得要自製憑證才行這個憑證的製作僅是私有 WWW 網站的用途,並沒有要拿去 CA 註冊喔! 那麼自製憑證需要什麼步驟呢?基本上需要的流程是:1. 先建立一把 private key 預備提供給 SSL 憑證簽章要求所用; 2. 最後建立 SSL 憑證 (test certificates)。 那麼建立憑證有沒有很困難呢?沒有啦!因為 CentOS 5.x 已經幫我們寫好了 Makefile 了!你先到 /etc/pki/tls/certs 這個目錄下,然後直接輸入 make 這個指令,就能夠看到所有可行的目標動作!我們就可以很快速的建置好憑證喔! 不過,因為預設的私鑰檔需要加上密碼才能夠進行建立,所以我們還得要額外進行一下動作就是了。好! 現在假設我們要建立的是名為 vbird 的憑證!那麼底下流程中,所有的關鍵字就是 vbird!簡單流程如下所示:這樣就建立好憑證檔了!接下來就是得要去處理 ssl.conf 這個設定內容喔!另外,這把憑證依舊只能使用 1 年!如果你想要建立十年的憑證,那就得要修改一下 Makefile 裡面的內容,將 365 改成 3650 即可!Tips:如果你曾經多次重複進行上述的建立憑證動作,會發現到同一個憑證內容若製作多次,則最終用戶端瀏覽器會出現一些錯誤訊息, 導致無法連線!因此,建議多加一個序號 (SERIAL) 的參數,可以修訂這個錯誤喔! 修改 ssl.conf 的內容,使用自製憑證修改 ssl.conf 的內容也是很簡單!只要修改兩個地方,亦即是檔案檔名的地方即可!然後再以瀏覽器去瀏覽 https:/ 的網址,就能夠查閱到剛剛建立的憑證資料。不過,因為我們之前已經有瀏覽過預設的憑證, 所以網頁以及憑證都有被快取過!因此,你可能得需要到瀏覽器的隱私保護的地方,將記錄的憑證刪除,並且將網頁快取刪除, 這樣才能夠看到最終如下的正確憑證資料喔!圖 20.5-4、檢查憑證的詳細內容!20.5.3 將加密首頁與非加密首頁分離或許你已經發現一個無俚頭的地方,就是我的 http:/ 以及 https:/ 首頁是一模一樣的嘛!那麼我的讀者幹嘛沒事找事幹, 肯定不會使用 https 的嘛!那怎辦?怎麼強制使用者使用 https:/ 來查閱我的重要資料?很簡單啊! 透過虛擬主機就好了啊!因為 SSL 模組也是預設提供了這個功能的嘛!修改會不會很麻煩呢?不會啦! 你只要將 http 及 https 的首頁分離即可!我們這麼假設好了: 一般明碼傳輸的網頁首頁不要變更; https:/ 的首頁放置到 /var/www/https/ 目錄下。 所以我們得先要設定 /var/www/https 目錄才行!然後,只要修改 ssl.conf 檔案內容即可!整個過程可以這樣處理:大部分都使用預設值,就是 DocumentRoot 以及 ServerName 需要留意就是了。如此一來,我們就將 https, http 兩個完整的分開,你的重要資料需要加密的,終於有個可靠的地方擺放囉!_20.5.4 防砍站軟體幾個比較知名的網站管理員大概都有這樣的困擾,那就是網站常被砍站軟體所強力下載,結果造成主機的 CPU loading 過重,最後竟然會導致死掉唉!真是的人怕出名豬怕肥吶!先來解釋一下什麼是砍站吧!所謂的砍站,就是以類似多點連線下載的持續性訊息傳遞軟體進行網站資料的下載,而且, 一啟用該軟體,該軟體就將整個網站的內容都給他 download 下來,很厲害吧!沒錯!是很厲害,但是卻也害死人了怎麼說呢?因為這種軟體常常會為了加快 download 的速度,所以採用多點連線的方式,也就是會持續不斷的向 Server 發出要求封包,而由於這些封包並不見得能夠成功的讓 Server 把資料傳導給 Client 端,常常會無法投遞就是啦!這樣的結果就是.造成 Server 要一直不斷的回應,又無法正確的回應出去, 此外,要求太過頻繁,結果主機應接不暇,最後.就當機了.真的是林老師鳥哥的鳥站主機古早以前,就是因為這樣的原因,導致服務常常斷斷續續的,並且,由於 CPU loading 太高,結果讓正常連線進來看資料的網友沒有足夠的資源,因此網頁開啟的速度就變的很慢唉 這些砍站的人,也太不道德啦!由於這種砍站軟體真的很麻煩,一不注意馬上就又會被砍站而當機,三天兩頭就要重新開機一次,完全讓 Linux 的穩定性無法發揮!真是氣死了後來,鳥哥就自行寫了一個 scripts 來擋這樣的 IP !我的作法是這樣的:1. 由於砍站軟體會多點連續下載,因此,同一個 IP 在同一個時間內,會有相當多的連線發生; 2. 由於他是重複不斷的要求連線,因此剛剛建立的連線在達成下載的目的後,會立刻死掉, 而又多生出其他的連線出來,因此,這個時候他的連線情況就變的相當的不正常了! 3. 由於某些較舊的砍站軟體並不會欺騙主機,所以,會在主機的登錄檔裡面記錄住 Teleport 的標記! 4. 既然如此的話,那麼我就讓我的主機每分鐘去檢查兩個東西(1)先檢查 log file ,如果有發現到相關的 Teleport 字詞,就將該 IP 抵擋掉;(2)使用 netstat 來檢查同一個 IP 的同時連線,如果該連線超過一個值(例如同時有 12 個連線)的話,那麼就將該 IP 抵擋掉! 5. 此外,由於上面的方案可能會將 Proxy 的 Client 端也同時抵擋掉,真是可憐啊! 這個時候,這支程式就會主動的將(1)的情況的主機抵擋 3 天,至於(2)的情況則抵擋2小時! 過了該抵擋的時限後,該 IP 即可又連上我們的主機了! 大致上就是這樣吧!這樣的一程式需要與 iptables 相互配合,所以,請先查閱一下第九章的防火牆內容,然後再來下載這支程式吧! 這支程式你可以在底下的網址下載喔! http:/linux.vbird.org/download/index.php?action=detail&fileid=47詳細的安裝步驟鳥哥已經以中文寫在該檔案裡面了,所以請先查看一下該檔案的前面說明部分吧!此外, Study Area 的 netman 大哥也已經開發了一套很棒的防砍站的程式了! 在防堵砍站的原理上面是完全相同的,不過寫法可能不是很雷同就是了!如果有需要的話,也可以前往 Study-Area 搜尋一下囉! http:/phorum.study-area.org/viewtopic.php?t=1364320.6 重點回顧 WWW 的傳輸協定使用 HTTP (Hyper Text Transport Protocol) ,最早是由歐洲核子物理實驗室的伯納斯-李所發展的; WWW 在 server/client 端主要傳遞的訊息資料以 HTML (Hyper Text Markup Language) 語法為主; http:/www.w3c.org 為制訂與發佈 WWW 標準語法的組織,你撰寫網頁最好依據該站之標準為宜; Apache 是達成 WWW 伺服器的一項軟體,至於用戶端的瀏覽則使用瀏覽器,目前可使用 firefox 瀏覽器可達成的主機連結不止 http,可在網址列輸入對應的協定:/主機:port/資源即可取得不同的資料; 若要 WWW 伺服器可以達成與使用者資訊互動,尚須要網頁程式語言 (如PHP, perl 等) 以及資料庫軟體 (如 MySQL, portgresql 等); 因為 http 使用的是明碼傳送,目前 WWW 可利用 SSL 等機制來進行資料加密的傳輸; Apache 的設定檔其實只有 httpd.conf 而已,其他的設定檔都是被 Include 進來的; Apache 的首頁目錄以 DocumentRoot 決定,首頁檔案則以 DirectoryIndex 決定; Apache 可以透過虛擬主機的設定以指定不同主機名稱到不同的 DocumentRoot 下; Apache 是多執行緒的軟體,可以啟動多個程序來負責 WWW。主要的模組有 prefork 及 worker, 至於最大可連線的數量則以 MaxClients 來決定。 若要正確的讓瀏覽器顯示網頁的編碼格式,最好在網頁上宣告語系,並將 Apache 的設定檔 httpd.conf 內的 AddDefaultCharset 設定值取消; 在 Apache 可瀏覽的目錄權限設定上 (Options 參數),最好將 Indexes拿掉; 透過 AllowOverride 與 .htaccess 可讓使用者在自己管理的目錄下制訂自己的風格; Apache 本身提供一個 apachectl 的 script 讓使用者得以快速管理其 apache 的服務; Apache 分析的資料如果比較重要時,務必以 SSL 或者是保護目錄來保護。 20.7 本章習題 請問 LAMP 這個伺服器代表什麼意思? 這個名詞代表了 Linux + Apache + MySQL + PHP 這個 WWW 伺服器的組成! Apache 的設定檔檔名一般為何? Apache 的設定檔檔名為 httpd.conf ,不過,由於 httpd.conf 內容參數可以使用 include 額外設定檔名,所以也可能具有其他的額外設定檔喔! 在 Apache 的設定檔當中,哪一個參數是用來設定主網頁的? 設定主網頁的參數為:DocumentRoot 喔!後面接的是主網頁放置的目錄! 哪一個指令用來重新啟動與關閉 Apache ?(請以 Apache 本身提供的功能來說明) 其實不論是 RPM 還是 Tarball 都是使用 apachectl 這個檔案來啟動 apache 的,不過 RPM 已經將該檔案整合到 /etc/init.d/httpd 裡面去而已 當我使用 ps -aux 的時候,發現好多的 httpd. 的程序,這是正常的嗎? 最多可以有幾個程序是在那個檔案的那個參數所設定的? 由於 Apache 預設為多執行緒,所以啟動多個 processes 是正常的。至於啟動幾個 process 則由很多設定所處理, 包括 MinSpareServers, MaxSpareServers, MaxClients 等等。 又,呈上題,這些程序 (process) 的 owner 與 group 是誰?該察看那個設定檔的那個參數? 同樣察看 httpd.conf 裡面的 User 與 Group 這兩個設定值! 如果今天我以 http:/your.ip 結果卻發現瀏覽器出現類似 FTP 的畫面(會列出該目錄下的所有檔案),這是什麼原因造成的?該如何避免? 這是由於在 httpd.conf 裡面,針對該目錄的設定參數 Options 當中,設定了 Indexes 這個設定值,導致當找不到主頁時(通常是 index.html),就會將該目錄下的所有檔案秀出來!解決的方法就是拿掉 Options 裡面的 Indexes 設定值即可! 在 Apache 裡面 .htaccess 這個檔案的功能為何? 可以用來取代 httpd.conf 裡面的設定參數!創造屬於使用者自己的 Apache 風格! 若你之前瀏覽過網頁,但顯示的資料並非正確的中文。後來按照上文的說明修改了中文的設定,卻還是無法看到中文。 請問可能的原因為何? 由於你曾經瀏覽過該網站的網頁,所以該網頁會被你的瀏覽器所暫存 (cache),因此你應該可以這樣做:o 在同一頁面下按下 reload 來重新載入; o 清除掉所有的瀏覽器快取; o 將原本的網頁在伺服器端改名,並讓瀏覽器瀏覽新的網頁名稱。 PHP 的程式碼一定要使用 嗎?有沒有替代方案? 預設的情況下,你應該要輸入 才能寫入 PHP 的程式。不過早期的程式或許都以 來撰寫的。 如果想要讓該種方式生效的話,你可以進入 /etc/php.ini 檔案中,修改short_open_tag = On這個設定項目即可。 20.8 參考資料與延伸閱讀 葛林.穆迪著,杜默譯,Linux傳奇,時報出版; WWW 發展者蒂姆伯納斯李的生平簡介: http:/zh.wikipedia.org/wiki/蒂姆伯納斯李 W3C 標準制訂與公布網站:http:/www.w3c.org Apache 官方網站: http:/www.apache.org/ Mozilla 官方網站: http:/www.mozilla.org/ PHP 官方網站: MySQL 官方網站: http:/www.mysql.org/ MySQL 中文使用手冊: http:/linux.tnc.edu.tw/techdoc/mysql/mysql_doc/manual_toc.html Apache 1.3 版的 Tarball 安裝方式:http:/linux.vbird.org/linux_server/0360apache/0360apache-1.php Apache 2.0 的說明文件: http:/httpd.apache.org/docs/2.0/mod/core.html 林彥明的 Apache SSL 實戰演練:http:/www.vbird.org/somepaper/20060310-https.pdf 2003/01/14:第一次完成2003/01/18:新增問題討論:關於中文的說明2003/01/21:新增問題討論:關於 PHP 無法使用的問題說明2003/04/28:加入砍站軟體的程式說明2003/04/29:加入 PHP 原始碼程式優化模組 MM Cache 說明。2003/05/07:加入 ab 這個效能測試的說明!2003/05/30:使用 Tarball 安裝時常常發生一些困擾,加入 User/Group 的設定說明!2003/09/10:將原本在 2002/12 安裝 Tarball 的軟體更新為目前 2003/09 最新的版本來安裝喔!2003/10/02:加入一些問題的克服之道喔!2004/03/25:修訂2004/03/25:修訂 MySQL 安裝的流程!第四步驟加入權限的修訂!2004/09/03:修改了 MMCache 的主網頁。2006/10/21:將舊的文章移動到 此處2006/11/09:花了很多時間修改,不再提供 tarball 的安裝需求了!2006/11/10:預先釋出版本,包括修改 MM Cache 成為 eaccelerator、增加 SSL 修改 awstats 之安裝等。2010/02/08:網友告知,SSL 建置的 genrsa 應該是 private key 而非 public key 喔!這部份鳥哥誤解了。2011/05/10:將舊的基於 CentOS 4.x 的版本移動到 此處2011/05/27:終於改完了!這次的改版幅度不會很大,主要是適應在 CentOS 5.x 的版本上面啦!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!