| XH 的个人资料礼物照片日志列表 | 帮助 |
|
礼物好好的活着,让生命象棵树 11月22日 iptables入门教程--设置静态防火墙( step by step)来自www.linuxsir.org 作者:liweioop
1、iptables介绍 iptables是复杂的,它集成到linux内核中。用户通过iptables,可以对进出你的计算机的数据包进行过滤。通过iptables命令设置你的规则,来把守你的计算机网络──哪些数据允许通过,哪些不能通过,哪些通过的数据进行记录(log)。接下来,我将告诉你如何设置自己的规则,从现在就开始吧。 2、初始化工作 在shell提示符 # 下打入 iptables -F iptables -X iptables -t nat -F iptables -t nat -X 以上每一个命令都有它确切的含义。一般设置你的iptables之前,首先要清除所有以前设置的规则,我们就把它叫做初始化好了。虽然很多情况下它什么也不做,但是保险起见,不妨小心一点吧! 如果你用的是redhat 或fedora,那么你有更简单的办法 service iptables stop 3、开始设置规则: 接下下开始设置你的规则了 iptables -P INPUT DROP 这一条命令将会为你构建一个非常“安全”的防火墙,我很难想象有哪个hacker能攻破这样的机器,因为它将所有从网络进入你机器的数据丢弃(drop)了。这当然是安全过头了,此时你的机器将相当于没有网络。如果你ping localhost,你就会发现屏幕一直停在那里,因为ping收不到任何回应。 4 、添加规则 接着上文继续输入命令: iptables -A INPUT -i ! ppp0 -j ACCEPT 这条规则的意思是:接受所有的,来源不是网络接口ppp0的数据。 我们假设你有两个网络接口,eth0连接局域网,loop是回环网(localhost)。ppp0是一般的adsl上网的internet网络接口,如果你不是这种上网方式,那则有可能是eth1。在此我假设你是adsl上网,你的internet接口是ppp0 此时你即允许了局域网的访问,你也可以访问localhost 此时再输入命令 ping localhost,结果还会和刚才一样吗? 到此我们还不能访问www,也不能mail,接着看吧。 5、我想访问www iptables -A INPUT -i ppp0 -p tcp -sport 80 -j ACCEPT 允许来自网络接口ppp0(internet接口),并且来源端口是80的数据进入你的计算机。 80端口正是www服务所使用的端口。 好了,现在可以看网页了。但是,你能看到吗? 如果你在浏览器的地址中输入www.baidu.com,能看到网页吗? 你得到的结果一定是:找不到主机www.baidu.com 但是,如果你再输入220.181.27.5,你仍然能够访问baidu的网页。 为什么?如果你了解dns的话就一定知道原因了。 因为如果你打入www.baidu.com,你的电脑无法取得www.baidu.com这个名称所能应的ip地址220.181.27.5。如果你确实记得这个ip,那么你仍然能够访问www,你当然可以只用ip来访问www,如果你想挑战你的记忆的话^ _ ^,当然,我们要打开DNS。 6、打开dns端口 打开你的dns端口,输入如下命令: iptables -A INPUT -i ppp0 -p udp -sport 53 -j ACCEPT 这条命令的含义是,接受所有来自网络接口ppp0,upd协议的53端口的数据。53也就是著名的dns端口。 此时测试一下,你能通过主机名称访问www吗?你能通过ip访问www吗? 当然,都可以! 7、查看防火墙 此时可以查看你的防火墙了 iptables -L 如果你只想访问www,那么就可以到此为止,你将只能访问www了。 不过先别急,将上面讲的内容总结一下,写成一个脚本。 #!/bin/bash # This is a script # Edit by liwei # establish static firewall iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -P INPUT DROP iptables -A INPUT -i ! ppp0 -j ACCEPT iptables -A INPUT -i ppp0 -p tcp --sport 80 -j ACCEPT iptables -A INPUT -i ppp0 -p udp --sport 53 -j ACCEPT 8、复杂吗?到此iptables可以按你的要求进行包过滤了。你可以再设定一些端口,允许你的机器访问这些端口。这样有可能,你不能访问QQ,也可能不能打网络游戏,是好是坏,还是要看你自己而定了。顺便说一下,QQ这个东西还真是不好控制,用户与服务器连接使用的好像是8888端口,而QQ上好友互发消息使用的又是udp的4444端口(具体是不是4444还不太清楚)。而且QQ还可以使用www的80端口进行登录并发消息,看来学无止境,你真的想把这个家伙控制住还不容易呢?还是进入我们的正题吧。 如果你的机器是服务器,怎么办? 9、如果不巧你的机器是服务器,并且要提供www服务。显然,以上的脚本就不能符合我们的要求了。但只要你撑握了规则,稍作修改同样也能很好的工作。在最后面加上一句 iptables -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT 这一句也就是将自己机器上的80端口对外开放了,这样internet上的其他人就能访问你的www了。当然,你的www服务器得工作才行。如果你的机器同时是smtp和pop3服务器,同样的再加上两条语句,将--dport后面的80改成25和110就行了。如果你还有一个ftp服务器,呵呵,如果你要打开100个端口呢…… 我们的工作好像是重复性的打入类似的语句,你可能自己也想到了,我可以用一个循环语句来完成,对,此处可以有效的利用shell脚本的功能,也让你体验到了shell脚本语言的威力。看下文: 10、用脚本简化你的工作,阅读下面的脚本 #!/bin/bash # This is a script # Edit by liwei # establish a static firewall # define const here Open_ports="80 25 110 10" # 自己机器对外开放的端口 Allow_ports="53 80 20 21" # internet的数据可以进入自己机器的端口 #init iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -P INPUT DROP #we can use another method to instead it iptables -A INPUT -i ! ppp0 -j ACCEPT # define ruler so that some data can come in. for Port in "$Allow_ports" ; do iptables -A INPUT -i ppp0 -p tcp -sport $Port -j ACCEPT iptables -A INPUT -i ppp0 -p udp -sport $Port -j ACCEPT done for Port in "$Open_ports" ; do iptables -A INPUT -i ppp0 -p tcp -dport $Port -j ACCEPT iptables -A INPUT -i ppp0 -p udp -dport $Port -j ACCEPT done 这个脚本有三个部分(最前面的一段是注释,不算在这三部分中) 第一部分是定义一些端口:访问你的机器"Open_ports"端口的数据,允许进入;来源是"Allow_ports"端口的数据,也能够进入。 第二部分是iptables的初始化,第三部分是对定义的端口具体的操作。 如果以后我们的要求发生了一些变化,比如,你给自己的机器加上了一个ftp服务器,那么只要在第一部分"Open_ports"的定义中,将ftp对应的20与21端口加上去就行了。呵呵,到此你也一定体会到了脚本功能的强大的伸缩性,但脚本的能力还远不止这些呢! 11、使你的防火墙更加完善 看上面的脚本init部分的倒数第二句 iptables -P INPUT DROP 这是给防火墙设置默认规则。当进入我们计算机的数据,不匹配我们的任何一个条件时,那么就由默认规则来处理这个数据----drop掉,不给发送方任何应答。 也就是说,如果你从internet另外的一台计算机上ping你的主机的话,ping会一直停在那里,没有回应。 如果黑客用namp工具对你的电脑进行端口扫描,那么它会提示黑客,你的计算机处于防火墙的保护之中。我可不想让黑客对我的计算机了解太多,怎么办,如果我们把drop改成其他的动作,或许能够骗过这位刚出道的黑客呢。 怎么改呢?将刚才的那一句( iptables -P INPUT DROP )去掉,在脚本的最后面加上 iptables -A INPUT -i ppp0 -p tcp -j REJECT --reject-with tcp-reset iptables -A INPUT -i ppp0 -p udp -j REJECT --reject-with icmp-port-unreachable 这样就好多了,黑客虽然能扫描出我们所开放的端口,但是他却很难知道,我们的机器处在防火墙的保护之中。如果你只运行了ftp并且仅仅对局域网内部访问,他很难知道你是否运行了ftp。在此我们给不应该进入我们机器的数据,一个欺骗性的回答,而不是丢弃(drop)后就不再理会。这一个功能,在我们设计有状态的防火墙中(我这里讲的是静态的防火墙)特别有用。 你可以亲自操作一下,看一看修改前后用namp扫描得到的结果会有什么不同? 12、这个教程我想到此就结束了,其中有很多东西在这里没有提到,如ip伪装,端口转发,对数据包的记录功能。还有一个很重要的东西就是:iptables处理数据包的流程.在这里我想告诉你,你设置的过滤规则的顺序很重要,在此不宜详细介绍,因为这样一来,这个教程就会拘泥于细节。 iptables是复杂的,我在linuxsir上看过很多教程,它们往往多而全,反而让人望而生畏,希望我的这个教程,能够指导你入门。加油! 最后,我把完整的脚本写出来如下,你只要修改常量定义部分,就能表现出较大的伸缩性^_^ #!/bin/bash # This is a script # Edit by liwei # establish a static firewall # define const here Open_ports="80 25 110 10" # 自己机器对外开放的端口 Allow_ports="53 80 20 21" # internet的数据可以进入自己机器的端口 #init iptables -F iptables -X iptables -t nat -F iptables -t nat -X # The follow is comment , for make it better # iptables -P INPUT DROP iptables -A INPUT -i ! ppp0 -j ACCEPT # define ruler so that some data can come in. for Port in "$Allow_ports" ; do ptables -A INPUT -i ppp0 -p tcp -sport $Port -j ACCEPT iptables -A INPUT -i ppp0 -p udp -sport $Port -j ACCEPT done for Port in "$Open_ports" ; do iptables -A INPUT -i ppp0 -p tcp -dport $Port -j ACCEPT iptables -A INPUT -i ppp0 -p udp -dport $Port -j ACCEPT done # This is the last ruler , it can make you firewall better iptables -A INPUT -i ppp0 -p tcp -j REJECT --reject-with tcp-reset iptables -A INPUT -i ppp0 -p udp -j REJECT --reject-with icmp-port-unreachable 11月21日 oracle日期处理完全版zt
11月15日 Tomcat 配置集锦Tomcat 服务器server.xml的关键参数配置
1.下载
http://www.eu.apache.org/dist/jakarta/tomcat-5/ 这里注意,在jakarta-tomcat-5.0.28.exe以前是有默认的admin模块,在jakarta-tomcat-5.5.9.exe则没有安装默认的admin模块,这时 http://127.0.0.1:8080/admin打开时则会出现 Tomcat's administration web application is no longer installed by default. Download and install the "admin" package to use it. 因此我们现在需要下载"admin"package 包 把jakarta-tomcat-5.5.x.zip 与 jakarta-tomcat-5.5.x-compat.zip 与 jakarta-tomcat-5.5.x-admin.zip 三个文件解压在同一个目录中 (如果使用jdk1.4,才需要compat.zip用jdk1.5就可以免了这个。) 2.修改jakarta-tomcat-5.5.x\conf\tomcat-users.xml. 添加管理员账号lizongbo,密码为lizongbopass. 新xml如下: <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager"/> <role rolename="admin"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="role1" password="tomcat" roles="role1"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="lizongbo" password="lizongbopass" roles="admin,manager"/> </tomcat-users> 有时在%CATALINA_HOME%\server\webapps\admin\WEB-INF\web.xml里面也要做些修改 <!-- Security is active on entire directory --> <security-constraint> <display-name>Tomcat Server Configuration Security Constraint</display-name> <web-resource-collection> <web-resource-name>Protected Area</web-resource-name> <!-- Define the context-relative URL(s) to be protected --> <url-pattern>*.jsp</url-pattern> <url-pattern>*.do</url-pattern> <url-pattern>*.html</url-pattern> </web-resource-collection> <auth-constraint> <!-- Anyone with one of the listed roles may access this area --> <role-name>admin</role-name> </auth-constraint> </security-constraint> <!-- Login configuration uses form-based authentication --> <login-config> <auth-method>FORM</auth-method> <realm-name>Tomcat Server Configuration Form-Based Authentication Area</realm-name> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> <!-- Security roles referenced by this web application --> <security-role> <description> The role that is required to log in to the Administration Application </description> <role-name>admin</role-name> </security-role> 无论是 Authetication ( 身份验证 还是 Authorization ( 权限管控 都只有设置相关的 admin ROLE, 当你想要新增或修改相关的 AA, 就必须修改这一个文件, 来符合你的环境.3.修改jakarta-tomcat-5.5.x\conf\server.xml来解决编码问题。 (给Connector 添加URIEncoding参数,参考 http://blog.csdn.net/darkxie/archive/2004/10/25/TOMCATAPP.aspx) (可以设置成GB18030) <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="200" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml"/> <Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="GBK"/> 4.启用支持gzip压缩. ( http://www.linuxaid.com.cn/forum/showdoc.jsp?l=1&i=81169) 添加下列属性 compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml" 5.设置虚拟主机。 在jakarta-tomcat-5.5.x\下建立文件夹vhost\www.mydomain.com。 然后修改jakarta-tomcat-5.5.x\conf\server.xml <Engine defaultHost="localhost" name="Catalina"> <Host appBase="vhost/www.mydomain.com" name=" http://www.mydomain.com/"> </Host> <Host appBase="webapps" name="localhost"> </Host> <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/> </Engine> 6.添加数据库驱动,更新mail.jar和actiovation.jar 复制mysql-connector-java-3.0.16-ga-bin.jar,pg74.215.jdbc3.jar到 jakarta-tomcat-5.5.x\common\lib\ 还有javamail 1.3.2的mail.jar,jaf-1_0_2的 activation.jar msSQl 2000 JDBC sp3,msbase.jar,msutil,jar,mssqlserver.jar 7.配置SSL 参考 http://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.html D:\j2sdk1.4.2_06\bin>%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA 输入keystore密码: lizongbossl 您的名字与姓氏是什么? [tomcat5.5.x]: tomcat5.5.x 您的组织单位名称是什么? [jakarta]: jakarta 您的组织名称是什么? [apache]: apache 您所在的城市或区域名称是什么? [hzcity]: hzcity 您所在的州或省份名称是什么? [gdp]: gdp 该单位的两字母国家代码是什么 [CN]: CN CN=tomcat5.5.x, OU=jakarta, O=apache, L=hzcity, ST=gdp, C=CN 正确吗? [否]: y 输入<tomcat>的主密码 (如果和 keystore 密码相同,按回车): (必须密码一致,因此直接回车) 然后再把userhome(例如:C:\Documents and Settings\lizongbo\)下的.keystore复制到 tomcat的conf\目录下。 (例如:D:\jakarta-tomcat-5.5.x\conf\.keystore ![]() 配置jakarta-tomcat-5.5.x\conf\server.xml 加上 <Connector port="8443" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="conf/.keystore" keystorePass="lizongbossl"> <!--与先前设置的密码一致--> </Connector> 8.禁止文件目录列表, 修改jakarta-tomcat-5.5.x\conf\web.xml,把listing设置为false <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 9.指定了自己的javaEncoding (参考 http://gceclub.sun.com.cn/staticcontent/html/sunone/app7/app7-dg-webapp/ch6/ch6-4.html ![]() <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>javaEncoding</param-name> <param-value>GB18030</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>true</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet> 10.添加rar,iso等的mime-type映射 避免在浏览器里直接打开。 <mime-mapping> <extension>mht</extension> <mime-type>text/x-mht</mime-type> </mime-mapping> <mime-mapping> <extension>rar</extension> <mime-type>application/octet-stream</mime-type> </mime-mapping> <mime-mapping> <extension>iso</extension> <mime-type>application/octet-stream</mime-type> </mime-mapping> <mime-mapping> <extension>ape</extension> <mime-type>application/octet-stream</mime-type> </mime-mapping> <mime-mapping> <extension>rmvb</extension> <mime-type>application/octet-stream</mime-type> </mime-mapping> <mime-mapping> <extension>ico</extension> <mime-type>image/x-icon</mime-type> </mime-mapping> 10.1对html静态页面设置编码 <!-- 修改下面两行以支持静态超文本的自动编码 --> <mime-mapping> <extension>htm</extension> <mime-type>text/html;charset=gb2312</mime-type> </mime-mapping> <mime-mapping> <extension>html</extension> <mime-type>text/html;charset=gb2312</mime-type> </mime-mapping> </web-app> 11.添加welcome-file-list,并调整顺序。 <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> 发表于 @ 2005年12月01日 11:43 AM | 评论 (0)
|
|||||||||||||||||||||
|
|