丹尼尔的博客
29 Jan/12 0

通过UMTS网络冲浪坚持和O2与wvdial在Debian的移动平

由于我的新的DSL连接只在几个星期内激活,我在“快速启动”爱丽丝被选中。 被交换在这里你得到一张SIM卡,您可以免费上网3个月作为一个权宜之计,直到DSL连接。

当然我并没有从客户端的互联网连接,但在我的主服务器,这对于作为整个家庭网络路由器通常行为。

最大的问题,我与爱丽丝热线了。 SIM卡拿出了一个关于如何激活它通过短翘门户指导。 不幸的是,无论是在Firefox,Chrome或歌剧网站工作正常。 我不先进,直到SIM卡激活。

所以,不幸的是,要求热线01 805。 很烦人的42ct./Min。

关于地图的热线Akivierung是求快,幸运的是,我在那里第一次,不幸的是,不能呼吁wvdial来配置所需的APN。 我想确保我曾在该值的错误配置的一些担心过高的票据。 在这里,该技术可以帮助我的幸福。 对于爱丽丝/ O2快速启动移动互联网APN是平坦,根据热线“internet.partner1”。 当指定的名称可能是在没有人参与的营销 ;)

作为下一步,我插入手机SIM卡等待激活和那些意识到这一点。 它走得比较快,约30分钟后,我的SIM卡已经积极和登录到网络。 令人惊讶的快,因为爱丽丝激活最初晋升为O2。 要强制入网的手机新einzubuchen,它可以关闭并重新打开。 我现在已经与手机仍然禁用SIM卡PIN码的要求,因为我前一段时间用wvdial来和PIN已经坏毛病。

其余的工作非常好。

我在华为冲浪机(T -移动冲浪棒III)的SIM卡

公交001设备004:ID 12D1:1003华为技术有限公司。  E220 HSDPA调制解调器/ E270 HSDPA / HSUPA调制解调器

被插入。 经过一个USB接口插入了当前的内核Debian提供的设备/ dev/ttyUSB0可用。

这可能会吸引你的wvdial来

 #/ ETC / wvdial.conf [拨号默认] = ATZ Init1 Init2 = ATQ0 V1 E1 S0 = 0&C1&D2 + FCLASS = 0 Init3 = AT + CGDCONT = 1,“IP”,“internet.partner1”电话= * 99 * ** 1#密码=空白用户名=空白的新PPPD = YES调制解调器= / dev/ttyUSB0波特率= 460800 =模拟调制解调器调制解调器的类型自动重新连接=上 

然后可以用“wvdial在”建立连接:

 GBN根- 00:19:27〜 - > wvdial来
 - > wvdial来:互联网拨号器版本1.60
 - >无法获取串行端口信息
 - >初始化调制解调器。
 - >发送:ATZ
 ATZ
 OK
 - >发送:ATQ0 V1 E1 S0 = 0&C1&D2 + FCLASS = 0
 ATQ0 V1 E1 S0 = 0&C1&D2 + FCLASS = 0
 OK
 - >发送:AT + CGDCONT = 1,“IP”,“internet.partner1”
 AT + CGDCONT = 1,“IP”,“internet.partner1”
 OK
 - >调制解调器初始化。
 - >发送:ATDT * 99 *** 1#
 - >为载体等待。
 ATDT * 99 *** 1#
 CONNECT
 - >载波检测。 等待提示。
 - >不知道该怎么办! 启动pppd和最佳希望。
 - >启动pppd的Sun公司2012年1月29日0时十九分58秒
 - > PID的pppd:3749
 - >使用为ppp0
 - > pppd程式:ȧ
 - > pppd程式:ȧ
 - > pppd程式:ȧ
 - > pppd程式:ȧ
 - > pppd程式:ȧ
 - > pppd程式:ȧ
 - >本地IP地址10.43.145.228
 - > pppd程式:ȧ
 - >远程IP地址10.64.64.64
 - > pppd程式:ȧ
 - >主DNS地址193 189 244 225
 - > pppd程式:ȧ
 - >辅助DNS地址193 189 244 206
 - > pppd程式:ȧ 

在此之后是通过空中接口的互联网设备通过ppp0可用,您现在可以使用路由和防火墙规则。

下游的杜塞尔多夫就好中心,上游可想,但是,非常:

下载速度:2082千比特/秒(260字节/秒)
上传速度:71千比特/秒(9千字节/秒)

但是... ... 别看在马口的礼物。 我将为此付出的表现,但是。


补编

不幸的是,连接并不稳定。 经过一个多小时的时间,没有更多的数据流量超过通过ppp0,wvdial在什么也没有得到他们的不幸,认为连接仍处于活动状态,选择一个不是自己不断。 要调试这个问题太复杂,因为这在任何情况下的解决方法只有几个星期,直到电路工作的DSLers。 下面的小脚本,检查连接是否仍然有效。 如果没有,启动wvdial在死亡,新的。

 #/斌/ bash的

 www.google.de平C1> / dev / null的

如果$ [?  - 氖0];
        那么
         killall wvdial来
        回声'日期'>> / var / log中/ connection_lost.log
         wvdial来&
科幻

我把这个脚本会自动通过一个cron作业,现在总是在:

 #/ etc / crontab文件

 #重拨蹩脚O2线
 * * * * *根/根/脚本/ redial_ppp


陷阱:

  • SIM卡PIN保护不被禁用
  • 通过移动电话供应商的连接是不幸geNATtet。 私人服务器是不能直接从外部访问。 Server服务可以提供只有难度。
提起下: 这和 没有评论
Dez/11 5 0

5上网时更隐私的插件与Firefox

为了保护自己在互联网上的隐私变得越来越困难。 无论是产业政策,也没有在保护隐私的互联网的使用兴趣。 几年前有人还不够,他的真实姓名和无处,如出生日期或银行帐户号码显示其他个人资料。 几乎每一个网站的数据收集背景无形今天 - 而不是仅由网站本身的运营商,但也有很多其他商业机构。 通过传递数据给第三党本身的任何优势。 你也失去SO国家随着时间的推移对自己的数据和消费习惯,兴趣,喜欢和不喜欢复杂的无法控制的数据库配置文件控制被忽视。 的个性出卖正如火如荼,并有助于只有个人卫生位信息,以满足新的威胁。

有逛到通过Facebook的清名成网开放,是能够与不适合的人的上网习惯链接是一个理论上的可能性,但完全自动化和连续。

在这篇文章中我将列出一些方法来保护他们的在线隐私。 不幸的是,几乎所有的措施,要求对个人的主动性和少许的训练程度。 通常你失去(至少在初期)上网时一点安慰。 然而,在长期运行的提示使用是非常有用的。

但首先一点Experiement。 对于小测试,我已经开始在其默认配置目前Firefox浏览器,删除所有Cookie,然后冲浪六个面,并Spiegel.de,Bild.de,GMX.de,Twitter,Facebook和一个色情网站。 其结果是21个新电脑上永久的cookie。

即使在调用此几页,浏览器是完全窃听与第三方的cookies。 这些cookie识别我的浏览器安装现在对版权,可以从他们再次读取。 最初,这甚至可能发生在他们自己的网页。 但第三方网站,这正与。

因此,谷歌的cookie被读取,例如在每一页上使用谷歌分析,谷歌广告上,集成了谷歌地图或使用网站管理员的许多其他Complimetary谷歌的服务之一。 这使谷歌搜索谷歌不仅是我的历史,但它需要如此多,我访问她的其他网站也。

同样,运行与其他厂商的饼干。 广告公司,市场调研公司,营销公司和垃圾邮件发送者不断尝试设置您的浏览器,并在合作伙伴站点的cookie读一遍,了解我更多。

这样做既可以通过网站上的小unsichbare文件(“网站信标”,“跟踪图像”)或Java的合作伙伴网站上安装脚本。

一个更私密的第一步,也有跟踪Cookie,网络信标和跟踪JavaScript来打击泛滥。

提示1 -与本地主机文件中的间谍最彻底拒之门外。

为防止瘟疫基础免疫有助于本地主机文件。 在主机文件中的任何现代操作系统,域名与相应的IP列表
存放。 第一个系统使用本地主机文件来查找互联网上的地址,只有一个DNS服务器在互联网上。 在主机文件绘制因而要设置跟踪Cookie,并转发请求,这些网站在本地的恶意域名地址,浏览器无法达到这些恶意网页。

所以,你已经解决了这个问题的很大一部分。 可以承载一个非常良好的维护文件,其中包含数千跟踪域可以在这里找到: http://winhelp2002.mvps.org/hosts.txt Linux下它只是保存在/ etc / hosts中的本地计算机文件,使之。

  #/斌/ bash的
 wget的- O / TMP / tracking.txt http://winhelp2002.mvps.org/hosts.txt
 MV / etc / hosts中的/ etc / hosts.backup
 MV / TMP / tracking.txt / etc / hosts文件 

它经营着自己的DNS服务器在局域网上 ,你可以配置它,以便它使用主机文件,并自动释放整个局域网的中心。

提示2:谷歌仅仅是必需品沟通GoogleSharing

谷歌追踪#1是在互联网上和记录在一个迂回的方式几乎每一页现在访问的个人身份信息,这可以追溯到和链接由个人使用Gmail,谷歌+或其他个性化服务,以自己的人的身份,以自己的谷歌搜索。 另一方面,帮助谷歌饼干的下降,而有趣的Firefox插件GoogleSharing。 该插件anonymisert通过创建随机不变的身份,这与插件的所有其他用户共享的所有接触谷歌。 谷歌可以用它来识别个人用户的插件在这个匿名的群众不再重合。

该插件工程完全自动,降低了谷歌只是不相干的表现。
GoogleSharing有下工具/扩展中心或从本网站直接在Firefox: https://addons.mozilla.org/en-US/firefox/addon/googlesharing/

提示3:在饼干全部控制饼干怪兽

Cookies是不是有跟踪。 许多网站使用完全合法的功能,如日志管理或存储用户的喜好,他们。 因此,这是合理的,首先禁止所有在一次普通的cookie,然后一步一步手动,让你的网页实际上是你经常使用的活动需要的cookies。 这是与Firefox板可能的手段,但不幸的很麻烦。 这是免费的插件“饼干怪兽”。 它位于系统托盘后,在安装,并提供快速访问当前打开的页面的cookie设置。 饼干怪兽不配置开始一点点的工作,因为许多网站不无Cookie的工作实际,但在短时间内得到个人卫生cookie的最佳水平。 饼干怪兽在这里: https://addons.mozilla.org/de/firefox/addon/cookie-monster/


提示4:跟踪使用javaScripts,IFRAMES和NoScript的禁令Flash影片

大多数Cookie是由JavaScript的。 因为如此多的网站都无法使用完成后禁用JavaScript,您必须做出选择这里,不幸的是,就像饼干。 跟踪,也可以通过Iframe和Flash动画完成,也有助于NoScript的。

下面是同样的方法:首先,禁止一点让所有的脚本所需的脚本,再一次彻底一点。 它可以帮助Firefox的NoScript的插件,它类似于cookie从系统托盘中的怪物,并允许从允许或不允许访问每个页面的浏览器访问。 即使这里有一个很大的压力之初,几乎没有什么作品了。 到时候你有插件,但是,这样很好地适应他们的个人需要,它几乎没有受到阻碍。 作为一个很好的副作用很多页面加载速度更快,因为他们不必重新加载页面,同时还建设了来自第三方的外部的各种数据。


提示5:IP地址与Tor匿名按钮

通过前面的提示,我现在至少一次关闭前99.9%的第三方跟踪。 我去得,但仍与我是谁,可以跟踪我的IP地址的网站。 这有助于Tor网络,通过它可以匿名冲浪。 这是类似Prizip GoogleSharing。 它自己的IP地址是一个地址和其他微量元素大池丢失不再是他们自己的连接。

不幸的是TOR很慢,因此不适合日常使用。 但有时会非常有用。 Tor是一个插件,非常方便,快捷地整合在Firefox和关闭。 更多信息和下载在这里: https://www.torproject.org/torbutton/


提示6:删除与Adblock Plus的广告

所有的横幅,没有被以前的技巧已经通过,你可以删除它与Adblock Plus的。 这个插件使用由广告商和阻止访问到他们的服务器的服务器列表。 Firefox无法下​​载的广告横幅,更薄膜和相应的岗位上保持空的网站。 该插件自动工作充分抓住了大量的广告才达到的浏览器。 广告中的AdBlock不会自动块可以手动标记,使的AdBlock可以阻止它,认识它。 Adblock的在这里: https://addons.mozilla.org/de/firefox/addon/adblock-plus

Dez/11 1 1

在杜塞尔多夫网上报名信息使不好的印象

我不是很清楚哪些个人资料可能通过登记机关为之。 我经过一番研究这一行动推动了海盗谁呼吁反对自己的数据在登记机关披露。 许多登记处提供的数据,现在大家!自付。 这只能避免矛盾。

从登记处的数据将被转发到:

国家机关,在在提供援助方面的合法利益的情况下

例如警察,检察官,统计局等。

在GEZ

兄弟,我们已经知道得很好。

缔约方,选民团体和其他来源的提名
有关议会和地方选举; § 35第1款MG NRW

为了得到漂亮的光泽竞选广告。

向申索人,并与各方请愿连接
公民投票与公民和决策; § 35第2款MG NRW

为了获得高光泽将帮助您做出频繁的公民投票。

 在自动搜索的方式在互联网上; § 34 Abs.1b MG NRW

这是我以前没有已知点。 可以有一个互联网门户网站
任何人谁知道在互联网上一个人的某些特征自动
获取信息的报告。 查询目前收费是每记录在杜塞尔多夫€4。

北威州的登记法在这一点上说:



 § 34 Abs.1b MG NRW
 (1B)如果呼叫是通过互联网的可能,确保应用程序和信息进行加密的形式提供。 开放的访问应该是公开的。 呼叫是不允许的,如果个人有反对这种信息交流的形式。 登记机关要注意前,上网打开了右侧公告最新一个月的对象。 此外,§ 35条第6款,判刑2适用。

一个对数据传输的吸引力有可能通过填写表格。 这杜塞尔多夫是在这里: https://formulare.duesseldorf.de/forms/frm/7PRPfAZH5gQA8Ja8AkNGaH1rNpDcHR3此项收费有可能会变成公职释放。 然后,没有在线访问有可能在他们自己的数据更多。 显然,在各自的区域市,县举办的数据请求。

当我问在公民办公室(非常友好)业务员,可以
我没有遗憾地告诉查询的门户网站的网址。 快速搜查,但很快我再上这个杜塞尔多夫市的一面:

https://www.duesseldorf.de/emra/emra.jsp?stadt=D%FCsseldorf&类型=城市

该门户网站在技术上是一个非常可疑,至少可以说印象。
首先,似乎没有验证码或类似的给予。 阿地查询似乎是适当的脚本可能。

此外,Web应用程序批准,在我的测试Tomcat的错误消息以下查询,因为我还没有启用cookie:

我看这一点,但随后越来越怀疑的应用程序提供访问城市所有公民提供数据的专业性。 脚本应该不会崩溃,如果条件不存在于用户的机器(在这种情况下,我丢失的cookie)。 从Web服务器都在生产不使用禁用脚本错误消息是疏忽 ,因为它可以揭示有关系统使用的环境很多。 特别是当一个JSP(如上面的截图),这取决于服务器的配置,并从程序员的意见得到Quelltextschnippsel。 这是草率的。 在对个人数据接口不应该的。

让我坐起来,并使用Tomcat的版本,这也将出现在下面的错误信息。 (阿帕奇Tomcat/6.0.24)这是一个Web服务器上21/01/2010旧版本。 当前版本是6.0.33。 该服务器有四个长期不更新版本寄存器。 如果你认为是在这个最终版本的安全漏洞看,它变得不舒服。 服务器显然不在最佳状态:

 http://tomcat.apache.org/security-6.html固定在Apache Tomcat 6.0.33发布2011年8月18日中等:在HTTP摘要认证CVE - 2011 - 1184的HTTP摘要认证实现多个弱点被发现有几个弱点:重放攻击被允许服务器随机数并没有检查客户端的nonce计数不检查不检查QOP值范围值不检查服务器的秘密被硬编码到一个已知的字符串,这些弱点的结果是,只有什么DIGEST身份验证安全与基本身份验证。 这是固定在修订第一百十五万八千一百八 这是确定的Tomcat的安全小组2011年3月16日就2011年9月26日公开。 影响:6.0.0-6.0.32低:信息披露CVE - 2011 - 2204当用户使用内存数据库(在tomcat - users.xml中为基础)和创建通过JMX,一个用户在创建过程中的异常用户可能触发错误消息在JMX客户端,包括用户的密码。 此错误信息被写入到Tomcat日志。 用户密码是可见的使用JMX访问和/或读访问到tomcat - users.xml文件管理员管理员。 这并不是说这些用户是有权限,但可以读取日志文件可能能够发现用户的密码。 这是固定的修订1140071次 这是确定的Polina热那亚6月14日2011年6月27日作出公开2011th 影响:6.0.0-6.0.32低:信息披露CVE - 2011 - 2526 Tomcat提供发送的HTTP和NIO HTTP连接器在四月文件支持。 的sendfile用于自动服务内容通过DefaultServlet和部署应用程序可能使用通过网络直接设置请求属性。 这些属性没有验证的请求。 当在安全管理器运行,这种验证lack允许恶意Web应用程序执行一个或多个,通常会由安全管理防止以下几点:返回文件到用户的安全管理应使无法终止(通过崩溃)的JVM此外,这些漏洞只有当以下所有条件:不受信任的网络应用程序正在使用的安全管理器是用于限制不可信网络的HTTP NIO或HTTP四月连接器使用的应用程序的sendfile是连接器的功能(这是默认的)这是在修订第一百一十四万六千七百○三固定 这是确定的Tomcat的安全小组2011年7月7日就7月13日2011th公开 影响:6.0.0-6.0.32重要:信息披露CVE - 2011 - 2729由于在代码的功能缺陷,的jsvc(用于Linux服务的包装,是下议院守护进程项目的一部分)不落的能力允许应用程序访问文件和由超级用户拥有的目录。 此漏洞只发生在以下所有条件:Tomcat是一个Linux操作系统与编译什么的libcap的jsvc用户tomcat的参数是用来为的jsvc源文件,其中包括此漏洞影响的版本运系统运行。 这是固定在修订第一百一十五万三千八百二十四 这是确定的维尔弗里德韦斯曼2011年7月20日就2011年8月12日公开。 影响:6.0.30-6.0.32固定在Apache Tomcat 6.0.32发布2011年2月3日注:下面的问题是固定在Apache Tomcat 6.0.31释放,但为6.0.31发布候选投票未通过。 因此,尽管用户必须下载6.0.32版本,以获取,其中包括一个修复此问题,版本6.0.31不包括在受影响的版本的列表。 重要:服务CVE - 2011 - 0534远程拒绝的NIO连接器扩大其在请求处理行缓冲区不休。 这种行为可用于服务攻击使用一个精心制作的请求拒绝。 这是固定在修订1066313th 这是确定的Tomcat的安全小组1月27日,2011年和2011年2月5日就公开。 影响:6.0.0-6.0.30固定在Apache Tomcat 6.0.30发布2011年1月13日最低气温:跨站脚本CVE - 2011 - 0013的HTML管理Web应用程序界面提供的数据显示,如显示名称没有过滤。 一个恶意的Web应用程序可以触发一个管理用户脚本执行经理时查看页面。 这是固定在修订第一百零五万七千二百七十 这是确定的Tomcat的安全团队11月12日,2010年和2011年2月5日就公开。 影响:6.0.0-6.0.29中度:跨站脚本CVE - 2010 - 4172应用程序中使用的管理和用户提供无滤波从而允许跨站点脚本排序的OrderBy参数直接。 这是固定在修订第一百〇三万七千七百七十九 这是首次报道到Tomcat安全团队11月15日,2010年和2010年11月22日就公众。 影响:6.0.12-6.0.29低:SecurityManager的文件权限绕过CVE 2010-3718当运行在一个安全管理器,访问文件系统是有限的,但网络应用程序被授予读/写权限的工作目录。 这个目录是用于如时产生编译JSP到Servlet的中间文件的临时文件等。 这项工作目录的位置是用一个ServletContect属性,是为了只读到Web应用程序。 然而,由于编码错误,只读设置应用于不。 因此,一个恶意的Web应用程序可能会修​​改之前的Tomcat应用属性的文件权限。 这可以用于授予读/写权限的文件系统上的任何区域哪些恶意Web应用程序可能再利用。 此漏洞只适用于承载,如共享主机环境不受信任的源代码的Web应用程序。 这是固定在修订第一百零二万二千五百六十〇 这是发现了Tomcat的安全小组2010年5月12日就2011年2月5日公布。 影响:6.0.0-6.0.29固定在Apache Tomcat 6.0.28发布2010年7月9日重要:服务和信息泄露漏洞远程拒绝CVE - 2010 - 2227中的“传输编码”头处理好几个漏洞被发现预防,一个缓冲回收。 远程攻击者可以触发这个漏洞,将导致后续请求失败和/或请求之间的信息泄漏。 这个缺陷是减轻如果Tomcat后面反向代理(如Apache的httpd 2.2)作为代理应拒绝无效的传输编码头。 这是固定的修订958977次 这是首次报道到Tomcat安全团队6月14日,2010年和2010年7月9日就公众。 影响:6.0.0-6.0.27注意:下面的问题是固定在Apache Tomcat 6.0.27释放,但为6.0.27发布候选投票未通过。 因此,尽管用户必须下载6.0.28版本,以获取,其中包括一个修复此问题,版本6.0.27不包括在受影响的版本的列表。 低:认证头中的信息披露CVE - 2010 - 1157的WWW验证HTTP基本和摘要式身份验证报头包含一个领域名称。 如果一个  元素中指定的,将被用于应用程序的web.xml。 然而,  未指定则Tomcat会产生领域名称使用代码段request.getServerName()+“”+ request.getServerPort()。 在某些情况下,这可能会暴露本地主机名或IP地址的机器上运行的Tomcat。 这是固定的修订936540次 这是首次报道到Tomcat安全小组2009年5月31日就2010年4月21日公开。 影响:6.0.0-6.0.26 

这一切似乎很明朗,对于我来说是对国家意志的例子生活隐私。 这些数据出售,几乎没有人知道。 该技术的实施极不理想,并在很技术已知有故障,需要立即更新系统上运行。 也似乎是一个最终检验和验收的IT项目(已知的状态通常是相当昂贵的)并不总是发生的资格。

唯一的加点我可以注意到,似乎有没有中央与所有报告数据在线阅读全国性门户。 然后,我们肯定不会远离什么以色列最近发生的

Ich bin froh, dass ich mich ausgetragen habe, aber ob jemand mit etwas krimineller Energie und technischem Verständnis nicht trotzdem (kostenlos) an meine Daten (und alle anderen) kommen könnte, halte ich zumindest für fragwürdig. Auf den ersten Blick wirkt das Düsseldorfer System nicht abgehärtet gegen Angriffe.

20 Nov/11 4

Tweet Neglector. A small PHP script to delete old Tweets from Twitter

鸣叫的Neglector删除自动从你的Twitter帐户中的旧鸣叫的过程。 基本上它提供了“过期”为您鸣叫的功能。 它是人谁不想使用Twitter,但不希望他们的鸣叫历史留了几十年的在线帮助。

历史:
二○一一年十一月二十零日|版本0.1
初始版本。 删除鸣叫

 2011年12月28日| 0.2版
小错误修复。 现在,删除,以及转推。

已知错误:
 - 不会工作,如果你鸣叫1000多的时间在鸣叫你打算继续鸣叫。 同为转推(100允许)。 这是Twitter的API的缺点GET我使用ATM。 也许我会在下一个版本修复与此

鸣叫Neglector使用Twitter的API来删除您的鸣叫之前所有的给定数目从现在天发布。 这样,您可以配置脚本删除所有鸣叫都达不到一个星期或一个月例如旧。 该脚本应该自动运行一个cron作业或定期基础另一自动化机制。

这个脚本不能保护您的档案从外部鸣叫。 因此,它是未知的,如果删除存档鸣叫通过Twitter(我敢打赌,他们是)安静。 所以(一如既​​往)认为前啁啾。

鸣叫Neglector用作捆绑PHP脚本语言和Twitter的OAuth的图书馆从马特哈里斯为API访问。

安装

 - PHP5需要tmhOAuth

 - 解压缩到您选择的目录归档。

 - 注册在你的Twitter API密钥https://dev.twitter.com/apps

 - 编辑脚本的配置,以满足您的需求:

 #Twitter的API密钥,令牌和秘密
 #取得这些键 - > https://dev.twitter.com/apps

 $ Consumer_key =“您的关键就在这里”;
 $ Consumer_secret =“您的关键就在这里”;
 $ Access_token =“您的关键就在这里”;
 $ Access_token_secret =“您的关键就在这里”;

 #每节鸣叫数工作
 Tweets_per_session = $ 1000;

 #Twitter用户名
 $ Twitter_username =“您的系统名称”;

 #保留天数鸣叫
 $ Keep_days = 30;

 - 手动运行脚本的浏览器,控制台,或通过cronjob自动
 / USR / BIN / PHP / VAR / WWW / tweetneglector / tweetneglector.php

鸣叫Neglector 0.2下载在这里

标签: 4意见
24 Okt/11 0

HOWTO:快速和肮脏的DHCP服务器和DNS缓存的dnsmasq在Ubuntu

局域网上的DHCP是可行的。 一个不再需要管理网络中的每台计算机的网络配置,以自己的客户,但任何事物都有一个可爱的服务器上的中心位置。 DNS客户端缓存节省一点时间必须在解析主机名,因为查询可以应用到知名企业从本地主机缓存,而不是互联网上的服务器。

一个小的DHCP服务器设置的dnsmasq很快与。

 #安装的dnsmasq
 APT - get安装的dnsmasq

Die Konfiguration findet zentral in der Datei /etc/dnsmasq.conf statt. Man sollte sich vor den geballten Konfigurationsoptionen in der Datei nicht abschrecken lassen. So gut wie alles dient nur als Beispiel und ist per default auskommentiert. Eine sehr kurze Konfig reicht bereits für ein funktionierendes Setup:

DHCP

# DHCP netmask
# Clients bekommen 255.255.255.0 als Netmask
dhcp-option=1,255.255.255.0

# default gateway
# Clients bekommen als Gateway 192.168.1.251
dhcp-option=3,192.168.1.251

# dns
# Clients bekommen als Nameserver 192.168.1.4
# Falls man dnsmasq auch als DNS-Cache benutzen möchte, sollte dies die
# IP des Servers sein, auf dem dnsmasq läuft
dhcp-option=6,192.168.1.4

# Für bekannte Rechner immer dieselbe IP anhand der MAC-Adresse vergeben:
# Hier bekommt der Rechner mit der MAC 00:11:22:33:44:55 die IP 192,168.1.1 für 12 Stunden

dhcp-host=00:11:22:33:44:55,lobby,192.168.1.1,12h
dhcp-host=00:11:22:33:44:66,lobby2,192.168.1.2,12h

# Alle Rechner, die nicht per MAC identifiziert werden können, erhalten IPs
# aus dem Pool 192.168.1.120 bis 150

dhcp-range=192.168.1.120,192.168.1.150,12h

DNS

Die DNS-Funktionalität von dnsmasq benötigt eigentlich keine Konfiguration.
dnsmasq besorgt sich seine Nameserver aus /etc/resolv.conf . Hier sollten die
bekannten Nameserver des Providers eingetragen werden und evtl noch als Fallback
die 8.8.8.8 für Googles DNS-Server.

Weitere Hostnames, die im lokalen Netz gelten sollen, können dnsmasq in der Datei
/etc/hosts bekannt gemacht werden. Hier eingetragene Hostnames stehen allen Rechnern
im LAN zur Verfügung.

Fallstricke

dnsmasq muss nach Konfigänderungen seine Konfigurationsdateien neu einlesen

/etc/init.d/dnsmasq restart

Falls Clients noch eine Lease vom alten DHCP-Server haben, kann man sie manuell dazu bringen, einen neuen DHCP-request zu starten.

#Linux
dhclient eth0

#Windows
ipconfig /RELEASE
ipconfig /RENEW

Dringend muss man darauf achten, den bisher genutzen DHCP-Server (meistens im Router zum Internet) zu deaktivieren. 2 DHCP-Server im LAN können viel Chaos generieren.

5 Okt/11 0

Wlan für EEE 1000H rt2860 unter Ubuntu

Mit irgendeinem Update in letzter Zeit wurde das WLAN auf meinem EEE PC 1000H unter Ubuntu recht instabil. Dauernde Verbindungsabbrüche, kein WLAN nach Suspend, langsame Verbindung, etc.

Ich bin mir nicht ganz sicher woran es liegt, wahrscheinlich hat der rt2860 Treiber mit irgendeinem Update einen Bug bekommen.

Zum Glück kann das Problem durch die Installation der Windows-Treiber mit ndiswrapper gelöst werden.

Dies ist nur eine etwas verkürzte deutsche Übersetzung der englischen Originalanleitung von nevdelap aus dem Ubuntuforum. (Vielen Dank)

1. Windows Treiber saugen und entpacken (comm_driver_gigabyte_mimobility_v.1.3.1.0.15.zip)

Linux Treiber blacklisten

#/etc/modprobe.d/blacklist.conf

blacklist rt2x00lib
blacklist rt2x00pci
blacklist rt2x00usb
blacklist rt2400pci
blacklist rt2500pci
blacklist rt2500usb
blacklist rt2800lib
blacklist rt2800pci
blacklist rt2800usb
blacklist rt61pci
blacklist rt73usb
blacklist rt2600
blacklist rt2860 # Asus eee 1000H has an rt2860. To be loaded by ndiswrapper.
blacklist b43
blacklist b43legacy
blacklist ssb
blacklist r8192s_usb

Mit ndisgtk den Windowstreiber aus drivers/GN-WI30N_WP30N_WS30N_WS30HN_WS31N/WINXP2k installieren

sudo ndisgtk

第四 Grub konfigurieren

#/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="pciehp.pciehp_force=1 pciehp.pciehp_poll=1 quiet splash"
sudo update-grub2

第五 Powermanagement Rule erstellen

#/etc/pm/sleep.d/ndiswrapper

#!/bin/bash
case "$1" in
    hibernate|suspend)
        sudo rmmod ndiswrapper
        ;;
    thaw|resume)
        sudo modprobe ndiswrapper
        ;;
    *)
        ;;
esac
exit $?
chmod +x /etc/pm/sleep.d/ndiswrapper


6. Reboot

Danach läuft das WLAN schnell und stabil.

29 Jul/11 0

PHP Spickzettel

Hier sammele ich nützliche PHP Codeschnipsel

Pseudo Multithreading mit screen

#!/usr/bin/php5 for ($i=1;$i<50;$i++) { echo "starting $i\n"; exec("screen -d -m /usr/bin/php5 ./thread.php"); } 

MySQL Server has gone away in lange laufenden PHP-Shellscripten

#/etc/php5/cli/php.ini
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.connect_timeout = -1
veröffentlicht unter: Linux keine Kommentare
7 Jul/11 0

Company Connect – Spass mit dem Telekom Vertrieb

Ein Kunde hatte ein Problem. Wegen einer speziellen Applikation, wurde ein schnellerer Ping nach Taiwan benötigt. Ein herkömmlicher Telekom DSLer brachte konstant 290 - 320ms zu Hinet, einem grossen taiwanesischen Provider. Eine streßfreie Nutzung der Applikation war mit diesen Paketlaufzeiten nicht möglich, deshalb forschte man nach Alternativen um eine schnellere Verbindung herzustellen. Ich war von Anfang an skeptisch ob eine Verbesserung der Situation überhaupt möglich war. Mit dem DSLer wurden die Pakete zunächst über das Telekom-Netz nach New York geroutet. Von dort aus ging es mit AT&T weiter quer durch die USA, dann über den Pazifik zu Hinet. Von Kalifornien bis Taiwan entstand der Hauptteil der Paketlaufzeit - fast 200ms. Meiner Meinung nach wäre eine Verbesserung nur möglich gewesen, wenn die Telekom selbst einen Backbone ihres Netzes in Taiwan unterhalten würde. Bei meiner Suche nach Anbietern, die das unmögliche leisten könnten, stieß ich auf das Telekom-Produkt Company Connect , das aus einer Standleitung besteht, die direkt an den Telekom-Backbones hängt. Telefonisch versicherte man mir, dass man mit "CoCo" ohne weiteres einen Ping unter 50ms nach Asien erreicht. Ich war freudig überrascht, aber nach wie vor skeptisch. Einige Tage später kam ein jung-dynamischer Telekom-Vertriebler ins Haus und bestätigte die Behauptung der Hotline erneut. "Ich habe mich für Sie erkundigt, das ist alles kein Problem. Die Telekom unterhält weltweit Backbones." Beim verlassen des Gebäudes erzählte er mir noch, dass er sich gerade einen neuen BMW bestellt hätte. Sehr schön. Am nächsten Tag kam per E-Mail direkt der Vertrag ins Haus. Wir schickten ihn mit dem Zusatz zurück, dass wir den Vertrag stornieren können, falls keine Pings unter 100ms nach Taiwan erreicht werden könnten. Die Telekom unterschrieb. Danach passierte erst einmal lange nichts mehr. Der Vertriebler hatte eine Schaltung innerhalb eines Monats zugesichert. Nach einem Monat fragten wir nach, der Vertriebler war allerdings ab dann (bis heute) nicht mehr erreichbar. Auch E-Mails an seine Abteilung wurden nicht beantwortet. Nach 2 1/2 Monaten wurden wir ungeduldig und drohten mit einer Stornierung des Auftrags, falls nicht innerhalb einer Woche ein Termin für die Schaltung vereinbart werden könnte. Danach ging es plötzlich sehr schnell. Die "Eskalationsstelle" organisierte einen Termin für uns, die Leitung wurde geschaltet. Für einen ersten Test klemmte ich einen Router und mein Netbook an die brandneue Leitung.

box-ww-11:57:35 ~ -> ping www.hinet.net
PING www.hinet.net (202.39.224.7) 56(84) bytes of data.
64 bytes from 202-39-224-7.HINET-IP.hinet.net (202.39.224.7): icmp_req=1 ttl=237 time=306 ms
64 bytes from 202-39-224-7.HINET-IP.hinet.net (202.39.224.7): icmp_req=2 ttl=237 time=306 ms

LOL. Was hätte man anderes erwarten können? Exakt die gleichen Ping-Werte wie zuvor. Exakt die gleiche internationale Route wie zuvor. Kein technisches Problem. Einfach nur viel Bullshit-Blah-Blah. Ich bin gespannt, ob die Kündigung genauso "problemlos" funktionieren wird wie die Schaltung.

19 Jun/11 0

XS UMTS Stick W14 unter Ubuntu

Der XS Stick W 14 unter Ubuntu zickte ein wenig herum. Gelegentlich erkannte der Network-Manager ihn als USB-Modem, dann konnte er allerdings trotzdem keine Verbindung herstellen. Nach ein wenig erfolgloser Frickelei bin ich auf das Sakis3G Script gestoßen, das verspricht mit fast allen Sticks eine Verbindung herstellen zu können. Und tatsächlich: Es hat mit Sakis3G sofort funktioniert. Empfehlenswert, wahrscheinlich auch für andere Sticks.

TYPENSCHILD

XS Stick W14
P/N 3000.000056.00
www.4g-systems.com
#lsusb
Bus 002 Device 006: ID 1c9e:9603
# /var/log/syslog beim Einstecken

Jun 19 20:41:04 box kernel: [74186.796148] usb 2-2: new high speed USB device using ehci_hcd and address 7
Jun 19 20:41:04 box kernel: [74186.946031] scsi11 : usb-storage 2-2:1.0
Jun 19 20:41:05 box usb_modeswitch: switching 1c9e:f000 (USB Modem: USB Modem)
Jun 19 20:41:06 box kernel: [74189.293850] usb 2-2: USB disconnect, address 7
Jun 19 20:41:07 box kernel: [74189.660069] usb 2-2: new high speed USB device using ehci_hcd and address 8
Jun 19 20:41:07 box kernel: [74189.819348] option 2-2:1.0: GSM modem (1-port) converter detected
Jun 19 20:41:07 box kernel: [74189.819577] usb 2-2: GSM modem (1-port) converter now attached to ttyUSB0
Jun 19 20:41:07 box kernel: [74189.819802] option 2-2:1.1: GSM modem (1-port) converter detected
Jun 19 20:41:07 box kernel: [74189.819950] usb 2-2: GSM modem (1-port) converter now attached to ttyUSB1
Jun 19 20:41:07 box kernel: [74189.820220] option 2-2:1.2: GSM modem (1-port) converter detected
Jun 19 20:41:07 box kernel: [74189.820395] usb 2-2: GSM modem (1-port) converter now attached to ttyUSB2
Jun 19 20:41:07 box kernel: [74189.821414] scsi12 : usb-storage 2-2:1.3
Jun 19 20:41:07 box modem-manager[10480]:  (ttyUSB1) opening serial port...
Jun 19 20:41:07 box modem-manager[10480]:  (ttyUSB0) opening serial port...
Jun 19 20:41:07 box modem-manager[10480]:  (ttyUSB2) opening serial port...
Jun 19 20:41:08 box usb_modeswitch: switched to 1c9e:9603 (USB Modem: Modem Configuration)
Jun 19 20:41:08 box kernel: [74190.823474] scsi 12:0:0:0: Direct-Access USBModem Disk 2.31 PQ: 0 ANSI: 2
Jun 19 20:41:08 box kernel: [74190.825402] sd 12:0:0:0: Attached scsi generic sg3 type 0
Jun 19 20:41:08 box kernel: [74190.833436] sd 12:0:0:0: [sdc] Attached SCSI removable disk
15 Jun/11 0

12 Maßnahmen um einen Linux root LAMP Apache MySQL PHP Webserver abzusichern


Die Hacking-Frequenz ist in den letzten Monaten stark angestiegen. Besonders viele Daten werden abgegriffen durch Hacks auf Webserver. Sogar der SONY-PSN-Hack nutzte Schwachstellen in einem ungepatchten Apache-Webserver. Deshalb sammele ich hier Maßnahmen, die den eigenen Server etwas sicherer gegen Angriffe von außen machen können. Natürlich bieten auch diese keinen 100%igen Schutz, aber es ist besser, den bösen Buben das Spiel ein wenig schwieriger zu machen. Einige der Maßnahmen benötigen nur einen minimalen Installations- und Wartungsaufwand. Andere benötigen viel Zeit und Kenntnisse von PHP um zu greifen. Man sollte immer auf das Kosten-Nutzen-Verhältnis bei der Auswahl der Sicherheitsmaßnahmen achten. Es macht keinen Sinn, eine kleine, private Website so abzusichern wie die Federal Reserve Bank. Allerdings können wenige gezielte Änderungen am System bereits ein großes Mehr an Sicherheit bedeuten. Und das sollte man sich schon gönnen, bevor es zu spät ist....

Alle Tipps und Codesnips beziehen sich auf eine aktuelle Debian-Kiste.

首先 Die Firewall - erst einmal alles verbieten

Die meisten Linux-Distributionen öffnen in ihren Standardinstallationen keine Ports nach außen, die nicht unbedingt notwendig sind. Diese Situation kann man jedoch schnell selbst ändern, wenn man am Server
herumspielt und Dinge ausprobiert. Plötzlich lauscht auch der Mediaserver im Internet oder die Datenbank
nimmt Verbindungen aus dem Internet entgegen. Deshalb ist es nicht verkehrt sich selbst zu disziplinieren und eine sehr restriktive Firewall aufzusetzen, die grundsätzlich erst einmal alle Verbindungen von außen verbietet und nur (selbst) ausgewählte Verbindungen gestattet. Zum Glück ist das mit iptables schnell erledigt. Auf diese Art und Weise kann man nicht mehr aus versehen Dienste der Welt zugänglich machen, die dort nichts zu suchen haben. Man bezahlt leider mit etwas Komfort - die Firewall muss jedes Mal angepasst werden, wenn man neue Dienste anbieten möchte. Trotzdem ist der Aufwand klein und der Nutzen groß.

#!/bin/bash

# Bestehende Tables löschen
iptables -F

# Alle eingehenden Verbindungen verbieten
iptables -P INPUT DROP
iptables -P FORWARD DROP

# Alle ausgehenden erlauben
iptables -P OUTPUT ACCEPT

# SSH erlauben
iptables -A INPUT -j ACCEPT -p tcp --dport 22 

# HTTP erlauben
iptables -A INPUT -j ACCEPT -p tcp --dport 80 

# Weiteren Dienst (UDP) erlauben, zum Beispiel Gameserver
iptables -A INPUT -j ACCEPT -p udp --dport 4534 

# Alles von Localhost erlauben. (Damit der Server selbst ungehindert auf seine Dienste zugreifen kann,
# zum Beispiel PHP auf die lokale Datenbank
iptables -A INPUT -j ACCEPT -s 127.0.0.1

# Bereits aufgebaute Verbindungen werden an jedem Port akzeptiert
# (Notwendig für manche Daemons)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Dieses kleine Grundgerüst kann man einfach weiter ausbauen und eigene Dienste hinzufügen. Bei Arbeiten an der Firewall sollte man immer für den Fall vorsorgen, dass man sich selbst aussperrt. Besonders bei Remote-Servern, auf die man keinen physischen Zugriff hat, ist es sehr ärgerlich, durch eine mißglückte Firewallregel den eigenen Zugriff zu verlieren. Um diesem Problem aus dem Weg zu gehen, kann man bei Arbeiten an der Firewall einfach temporär einen Cronjob starten lassen, der die Firewall alle paar Minuten zurücksetzt oder den Server neu startet. Sind die Regeln später getestet und geliebt, kann der Cronjob wieder deaktiviert werden und die neuen Regeln bleiben permanent aktiv.

Um herauszufinden, welche Dienste gerade auf dem eigenen Server herumlauschen, kann man netstat benutzen:

#Für TCP-Sockets:
netstat -lpn | grep tcp

#Analog für UDP:
netstat -lpn | grep udp

Um zu testen ob die Firewall wirklich funktioniert, kann man den eigenen Server von einem anderen Rechner aus portscannen. Hat alles geklappt, sollten im Ergebnis nur die selbst geöffneten Ports auftauchen:

#Für TCP:
nmap -p1-65535 meinserver.de

#Für UDP:
nmap -sU -p1-65535 meinserver.de

SSH Logins verbieten

Am eigenen root-Server hat man uneingeschränkten SSH-Zugriff. Das ist recht praktisch, da man von jedem SSH-Client aus mal eben auf den Server kann um an ihm zu arbeiten. Der Nachteil davon ist, dass das natürlich auch jeder andere kann, der unglücklicher Weise irgendwie an das eigene Passwort gelangt ist. Es ist viel sicherer SSH-Logins nur mit einer gültigen Schlüsseldatei zu erlauben. Dafür wird der öffentliche Schlüssel des Clients auf den Server kopiert und interaktive Logins per Passworteingabe werden deaktiviert.

# Auf dem Client einen öffentlichen Schlüssel erstellen
# Wird bei der Generierung ein Passwort angegeben, benötigt man zum
# einloggen später die Schlüsseldatei UND das Passwort. Ansonsten wird
# nur der Schlüssel benötigt.

ssh-keygen -t rsa

# Den erstellten Schlüssel danach auf den Server kopieren

ssh-copy-id -i ~/.ssh/id_rsa.pub root@meinserver.de

# Danach auf dem Server /etc/ssh/sshd_config anpassen


PasswordAuthentication no



# Danach SSh neu starten
/etc/init.d/ssh restart

Auch hier sollte man Vorkehrungen treffen, um sich nicht selbst auszusperren, falls etwas nicht funktioniert.
Der Public Key auf einem USB-Stick mit dem dazugehörigen Passwort im eigenen Kopf macht es sehr viel schwerer für böse Buben eine Shell zu erhalten.

SSH Bruteforcing verhindern mit denyhosts

Falls Tipp 2 nicht praktikabel ist und man den Komfort von passwortgestützten Logins nicht aufgeben will, kann man zumindest das automatisierte Passwortraten von Angreifern auf dem Server verhindern. Sehr viele Bots im Internet machen den ganzen Tag nichts anderes als nach SSH-Servern zu suchen und bei Ihnen verschiedenste Passwörter durchzuprobieren. Mit einem halbwegs sicheren Passwort ist das kein großes Problem, trotzdem gibt es ein besseres Gefühl, wenn nicht einmal das möglich ist. Außerdem schützt man so auch seine User, falls auf dem Server auch Useraccounts bestehen. Hier kann man sich nicht darauf verlassen, dass die Benutzer sichere Passwörter verwenden. denyhosts überprüft ständig Logins auf dem ssh und sperrt Benutzer für eine gewisse Zeit, die ihr Passwort wiederholt falsch angegeben haben. Die IP's dieser Nutzer landen temporär in /etc/hosts.deny, so dass für sie kein Zugriff mehr möglich ist. Damit wird SSH-Bruteforcing zu einer sehr langwierigen und wenig erfolgversprechenden Aufgabe.

apt-get install denyhosts

# denyhosts funktioniert direkt nach der Installation. Man kann es
# in der Datei /etc/denyhosts.conf feintunen

第四 Blacklisten benutzen, um bekannte Problem-IPs auszusperren

Im Internet werden verschiedene Blacklisten gepflegt, die eine große Anzahl von kriminellen/gehackten/spammenden/betrügerischen Servern auflisten. Diese IP-Listen können direkt in die Firewall eingetragen werden, so dass von diesen bekanntermaßen nicht vertrauenswürdigen Rechnern überhaupt keine Verbindung mehr zum eigenen Server möglich ist. So kann man das Spamaufkommen auf dem eigenen Server drastisch verringern und auch das eine oder andere Script-Kiddie aussperren, weil sein Russland-Proxy plötzlich nicht mehr funktioniert. Wie man das macht habe ich bereits in einem anderen Blog-Artikel am Beispiel der Blacklist von Infiltrated.net beschrieben.

第五 Kein FTP benutzen für die Arbeit am Server

FTP ist ein Relikt aus besseren Zeiten in denen das Internet noch ein kleines vertrauenswürdiges Dörfchen war. Viele Admins von Webseiten nutzen nach wie vor FTP um Dateien zum Server zu übertragen oder um an der eigenen Website zu arbeiten. Das ist leider sehr unsicher, da FTP alle Daten ungesichert übertragt. Passwörter und Daten können an jedem Hop zwischen Server und Client ohne Probleme mitgelesen werden. Viel sicherer geht es mit sshfs. Hiermit kann man sich per SSH ein Verzeichnis des Remote-Servers in sein lokales Dateisystem mounten. Man kann danach auf dem Server so arbeiten, als sei er auf dem lokalen Rechner. Alle Dateizugriffe auf Dateien auf dem Server sind komplett transparant, man kann also auch mit dem lokalen Grafikprogramm ein Bild auf dem Server direkt öffnen, bearbeiten und wieder speichern. Mehr Komfort und mehr Sicherheit ohne großen Aufwand.

#sshfs installieren
apt-get install sshfs

#mountpoint im lokalen Dateisystem anlegen
mkdir /media/meinserver

#Server ins lokale Dateisystem mounten
sshfs www-data@mein-server.de:/var/www /media/meinserver

#Nun ist das Verzeichnis /var/www auf meinserver lokal unter /media/meinserver verfügbar

6 Updates installieren

Ein super abgesichertes System hilft nichts, wenn das System selbst fehlerhaft ist und eine bekannte Sicherheitslücke ausgenutzt werden kann. Meist werden diese Sicherheitslücken schnell geschlossen, oft vergessen Admins jedoch regelmäßige Updates des Systems zu machen. Ob man automatische Updates auf Linux-Servern aktivieren sollte oder nicht ist ein strittiges Thema. Einige würden es niemals tun, da es natürlich mit viel Pech auch sein kann, dass die Updates das System unbrauchbar machen. Dies ist mir in über 10 Jahren Arbeit an Debian-Systemen allerdings niemals passiert und ich schätze den Nutzen von zeitnahen und regelmässigen Updates viel höher ein, als die daraus entstehende Gefahr.

#Diese Zeile in der /etc/crontab aktualisiert das System täglich um 6 Uhr morgens
0 6 * * * root apt-get update && apt-get -y upgrade

Diese Quick-and-dirty Methode funktionierte bei mir bisher immer gut. Vor kurzem habe ich gelesen, dass im Debian Repository auch das Paket unattended-upgrades existiert, das die Aufgabe wohl etwas eleganter löst, ich habe es allerdings bisher nicht getestet.

Auch bei diesen vollautomtischen Systemupdates ist man nicht komplett aus dem Schneider. Falls ein Kernel-Update ausgeliefert wurde, muss man das System trotzdem noch per Hand neu booten, da ansonsten die Änderungen nicht aktiv werden.

Benutzt man fremden PHP-Code auf dem Server, wie zum Beispiel ein Open-Source CMS oder ein Forum, ist es natürlich absolut notwendig auch diesen Code mit neuen Versionen aktuell zu halten. Da Debian mit seinen Updates Änderungen an diesen Applikationen in der Regeln nicht abdeckt, ist hier Handarbeit nötig. Am besten liest man die Mailinglisten der entsprechenden Produkte mit um immer auf dem Laufenden zu sein.

第七 PHP einsperren mit open_basedir

Viele Hacks basieren darauf, dass eine Sicherheitslücke im PHP-Code ausgenutzt wird, um auf Dateien im Dateisystem zuzugreifen, die nicht zur Website gehören, sondern zum System selbst. Deshalb sollte man PHP einsperren, so dass es nur in explizit erlaubten Verzeichnissen lesen und schreiben darf. Dafür bietet die php.ini die Konfigurationsoption open_basedir. PHP hat nach setzten der Option nur noch Zugriff auf die dort erlaubten Verzeichnisse. Dateien wie /etc/passwd werden unerreichbar. Hostet man auf einem Server mehrere Webseiten sollte man open_basedir in der jeweiligen VirtualHost-Konfiguration pro Seite setzen.

# Global per php.ini:
# /etc/php5/apache2/php.ini
open_basedir = /var/www/:/tmp/

# Per Site in der VirtualHost Config:
php_value open_basedir /var/www/site/:/tmp/

Wichtig ist zu prüfen ob wirklich alle Orte eingetragen wurden, auf die die Skripte normalerweise Zugriff haben müssen, ansonsten kann es sein, dass man auch legitime Funktionen der PHP-Applikation behindert.

第八 Für Websites einen eigenen MySQL-Benutzer anlegen

Benutzt die eigene PHP-Applikation MySQL, sollte man unbedingt für die Apllikation einen eigenen MySQL-Benutzer anlegen und auf keinen Fall den MySQL-root-Benutzer für Zugriffe nutzen. Außerdem sollte man die Rechte des Benutzers so weit einschränken, dass wirklich nur noch Operationen erlaubt sind, die das PHP-Skript benötigt. CREATE TABLE und DROP TABLE werden zum Beispiel häufig bei SQL-Injections genutzt und werden in den meisten PHP-Applikationen nie benötigt. Hostet man mehrere Websites mit mehreren Datenbanken auf einem Server, sollte man für alle Datenbanken eigene Benutzer anlegen. So hat ein Angreifer nach einem erfolgreichen Angriff nur Zugriff auf eine der Datenbanken und nicht direkt auf alle. Wenn man nicht die Kommandozeile bemühen möchte, um die MySQL-Useraccounts zu verwalten, funktioniert das Usermanagement auch recht einfach mit PHPmyAdmin unter der Registerkarte "Rechte".

9 PHP Fehlermeldungen abschalten

PHP-Fehlermeldungen können einem Angreifer viel über den eigenen Server verraten: Verzeichnisstrukturen, Datenbankstrukturen, Konfigurationsfehler, etc. Außerdem sehen sie für den Benutzer sehr unprofessionell aus. Aus diesem Grund sollte man sie auf einem Live-Webserver grundsätzlich abschalten, da man sie ohnehin weiterhin in den Logs sehen kann.

# Global per php.ini:
# /etc/php5/apache2/php.ini
display_errors = Off

# Per Site in der VirtualHost Config:
php_flag display_errors Off

# Fehlermeldungen trotzdem lesen:
cat /var/log/apache2/error.log | grep PHP

10日 Angriffsfläche für SQL-Injections einschränken mit modSecurity

SQL-injections sind die wohl am häufigsten genutzte Angriffsmethode auf Webserver. Der Zugriff erfolgt direkt über die Webapplikation und es genügt ein Browser um sie durchzuführen. Dabei werden über vom User übermittelte Variablen geschickt SQL-Abfragen eingebaut, die mit den Rechten des Datenbankbenutzers alles an der eigenen Datenbank nach belieben auslesen, löschen oder bearbeiten können. Ein wirklicher echter Schutz gegen SQL-Injections besteht nur, wenn der PHP-Code der Site im Hinblick auf diese Angriffe geschrieben wurde. Jede Variable aus Benutzereingaben, die in eine SQL-Abfrage gelangen könnte, muss geprüft und escaped werden. PHP bietet dafür die Funktion real_mysql_escape_string().

Ist man nicht sicher, ob der Code sauber ist, kann mod_security für den Apache helfen eine große Menge dieser Angriffe trotzdem abzuwehren. mod_security überprüft ständig alle Requests an den Webserver und reagiert auf vorgefertigte Muster mit denen viele SQL-Injection-Angriffe abgewehrt werden können. Leider funktioniert auch mod_security nur gut mit manuellem Aufwand. Oft blockt mod_security nach einer frischen Installation auch gewünschte (normale) Funktionen des eigenen PHP-Codes, so dass einem nichts anderes übrig bleibt, als die komplette Applikation nach der Installation einmal durchzutesten. Nur so findet man heraus, ob mod_security nicht eventuell auch gewünscht Funktionen blockt. Ist das der Fall, muss die Filterliste angepasst werden, so dass die false-positives verschwinden.

Die Konfiguration von mod_security ist etwas komplizierter und würde den Umfang dieses Artikels sprengen, es gibt aber massenweise gute Tutorials zu mod_security im Internet.

11 Ausweiskontrolle - Der Apache sagt nicht mehr, wer er ist
Dies ist keine wirklich wirkungsvolle Methode gegen einen Hack, sie macht es automatisierten Skripten, die nach Server-Versionen suchen aber etwas schwerer. Normalerweise zeigt der Apache auf Seiten mit Fehlermeldungen (zB 404 Not Found) seine Serversignatur.

Apache/2.2.16 (Debian) Server at www.daniel-ritter.de Port 80

So erhalten potentielle Angreifer zumindest schon einmal Informationen über den eigesetzten Webserver und den Versionsstand. Die Serversignatur ist schnell ausgeschaltet:

#/etc/apache2/conf.d/security
ServerSignature Off

12. Nicht benutze Apache-Module deaktivieren

Per default hat der Apache einige Module geladen, die fast nie benötigt werden. Unter Debian findet man die geladenen Module
als Softlinks in /etc/apache2/mods-enabled.

Fast immer entfernt werden können:

mod_cgi

Dient dem ausführen von CGI-Skripten. Diese Technik stammt noch aus den Urzeiten des Web und war der Vorvater der modernen Skriptsprachen um dynamische Webseiten zu ermöglichen. mod_cgi ist auf 99% der PHP-Websites unnötig und bei einer fehlerhaften Apache-Config eine potentielle Sicherheitslücke

a2dismod cgi

mod_status

Ermöglicht es Browsern Statusinformationen über den Apache auszulesen. Es wird so gut wie nie für "normale" Sites genutzt, bietet Angreifern aber Statusinformationen über den Apache.

a2dismod status

mod_autoindex

mod_autoindex sorgt dafür, dass Verzeichnisse auf dem Webserver aufgelistet werden können, wenn es keine gültige Index-Seite in dem entsprechenden Verzeichnis gibt. Falls diese Funktionalität nicht erwünscht ist, sollte man sie abschalten, da durch sie ganze Verzeichnisbäume auf dem Webserver nach aussen sichtbar werden können.

a2dismod autoindex
9 Jun/11 0

Linux Server mit der Scam/Spam/Crime Blacklist von Infiltrated.net absichern

Im Internet gibt es viele böse Buben: Scammer, Hacker, Viagrabuden, Scriptkiddies, etc.

Infiltrated.net pflegt eine recht umfangreiche Liste auffällig gewordener Server unter http://www.infiltrated.net/blacklisted .

Wenn man Zugriff auf seinen Server oder auch sein Heimnetz von diesen IP's unterbindet, hat man bereits sehr viele Russen Proxies, Spammer und anderes Gesindel ausgesperrt.

Das folgende kleine Script saugt sich automatisch die aktuelle Liste und trägt die Hosts in die Firewall ein.

Mit einem Cronjob regelmässig gestartet, ermöglicht es ein Quentchen mehr Sicherheit für die eigenen Dienste.

#!/usr/bin/php
<?
# Zuerst bereits bestehende (eigene) Firewallrules ausführen
exec("/root/scripts/meine_standard_firewall_rules");

# Blacklist saugen
exec("wget -O /tmp/infiltrated_blacklist http://www.infiltrated.net/blacklisted");

$list = file("/tmp/infiltrated_blacklist");

$i = 1;

# Ein bisschen auseinanderschnibbeln und ab in Iptables
foreach ($list as $line)
{
$line = trim($line);
$line = str_replace("\t"," ",$line);

$line = explode(" ",$line);
$line = $line[0];

$firstchar = substr($line,0,1);
if (!is_numeric($firstchar))continue;

exec ("iptables -I INPUT -s $line -j DROP");
$i++;
 }

echo "done. $i rules set.";
?>
veröffentlicht unter: Linux keine Kommentare
28 Mrz/11 0

The Adobe Flash plugin has crashed – Reparieren – Ubuntu – NVidia

Seit einer der letzten Firefox Versionen wollte Flash nicht mehr so richtig. Bei sehr vielen Videos crashte der Adobe Flash Player. Ich habe das Problem gelöst, bin mir aber nicht 100%ig sicher woran es lag. Ich tippe auf 2 Bugs: Einmal auf das Zusammenspiel der Hardwarebeschleunigung von Flash mit meiner Grafikkarte und zum anderen auf das neue Plugin-Crash-Handling von Firefox.

首先 Hardwarebeschleunigung deaktivieren

In ein Flash-Video rechtsklicken. Einstellungen wählen. Haken bei Hardwarebeschleunigung entfernen.

Plugin-Crash-Handling von Firefox deaktivieren

about:config in der Adresszeile eingeben

Die Werte dom.ipc.plugins.processLaunchTimeoutSecs und dom.ipc.plugins.timeoutSecs auf "-1" setzen.

Seitdem habe ich keine Probleme mehr mit Ubuntu 10.10, Firefox 4 und Flash 10.2.153.1

veröffentlicht unter: Ubuntu keine Kommentare