作者存档: Alex Hwang - 第5页

你够胆量给女生讲这则笑话吗?

小白兔的故事

有一天,小白兔MM出去玩,回家时迷路了,走到一个三岔路口,正好来了一只小灰兔。白兔妹妹就问道:“灰兔哥哥,妹妹迷路了,能告诉我怎么走吗?”灰兔见白兔妹妹单身一人,便不怀好意的说:“想知道吗?”白兔说:“当然想知道哪,你快说吧。”灰兔说:“想知道,就让哥高兴高兴!”。于是,白兔让灰兔高兴了高兴,完事后,灰兔一指左边,白兔于是向前走了。一会儿,白兔又来到了一个三岔路口,这可怎么办,正好又来了一只小黑兔,于是,白兔妹妹就问道:“黑兔哥哥,妹妹迷路了,能告诉我怎么走吗?”黑兔见白兔妹妹单身一人,也便不怀好意的说:“想知道吗?”白兔说:“当然想知道哪,你快说吧。”黑兔说:“想知道,就让哥高兴高兴!”。于是,白兔让黑兔高兴了高兴,完事后,灰兔一指左边,白兔于是向前走了。白兔回到家,不久后,生下了一窝小兔子,你猜一猜,小兔子是什么颜色?猜对我请客。

有人猜是白色,你说不对 有人猜是黑色,你说不对,再猜,
猜是灰色,你说不对,再猜 猜是杂色,你说还不对………

有人问:那你说是什么颜色
你说,想知道吗?
他说:想知道

你说:想知道?
hehe
先让哥高兴高兴

PHP Code Beautifer – Editplus

昨天,看了一些别人代码,再加上之前在工作中所遇到的别人代码不符合自己的阅读习惯,就打算去将别人代码美化为自己喜欢的格式。

开始使用‘phpCB’,命令行下代码美化的实在不敢恭维,于是还是用自己最喜欢的PEAR PHP_Breautifer,呵呵,用我目前是的JS帮助快捷键“Ctrl + 5 ” 作为美化快捷键。

一直在电脑边,当感觉有点困意的时候,才发现已经凌晨六点多了,休息了一个多小时,虽然是周末,呆在住处也没有意思,就来公司了… …

武林足球

   新公司的产品,http://www.50zq.com/home?q=u10

《武林足球经理 http://www.50zq.com/home?q=u10是一款以武林为背景的线上足球经理游戏,无需下载客户端,打开网页就能玩,免费,便捷,娱乐又休闲!这里没有升级打怪,不依靠时间取胜。你需要身兼俱乐部经理和球队主教练双重角色,训练球员,布置阵容,制定策略,率领球队与其他玩家进行足球比赛,赢得一场又一场胜利,最终夺得顶级赛事的冠军,赢取奖杯、奖金、奖品。。。最重要的是,证明自己,你是最具智慧的!

我的球队为:xinze

B/S系统Sockets通信演示

今天中午有点空余时间,就套用一个界面,做了个WEB IM演示系统。

演示地址: http://www.douwoo.com/kf/im.php

Linux网络安全选项的调整

网络安全选项的调整




/proc/sys 网络安全选项的调整
· 让系统对 ping 没有反应
· 让系统对广播没有反应
· 取消 IP source routing
· 开启 TCP SYN Cookie 保护
· 取消 ICMP 接受 Redirect
· 开启错误讯息保护
· 开启 IP 欺骗保护
· 记录Spoofed Packets, Source Routed Packets, Redirect Packets
Redhat 6.1 的做法:
[root@deep /]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
[root@deep /]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
[root@deep /]# for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
> echo 0 > $f
> done
[root@deep /]# echo 1 > /proc/sys/net/ipv4/tcp_syncookies
[root@deep /]# for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
> echo 0 > $f
> done
[root@deep /]# echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
[root@deep /]# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
> echo 0 > $f
> done
[root@deep /]# for f in /proc/sys/net/ipv4/conf/*/log_martians; do
> echo 0 > $f
> done

Redhat 6.2 的做法:
编辑 "/etc/sysctl.conf" 档案,并加入下面几行,
# Enable ignoring ping request
net.ipv4.icmp_echo_ignore_all = 1
# Enable ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Disables IP source routing
net.ipv4.conf.all.accept_source_route = 0
# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1
# Disable ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects = 0
# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Enable IP spoofing protection, turn on Source Address Verification
net.ipv4.conf.all.rp_filter = 1
# Log Spoofed Packets, Source Routed Packets, Redirect Packets
net.ipv4.conf.all.log_martians = 1
最后重新激活 network
[root@deep /]# /etc/rc.d/init.d/network restart

Jabber

很久就知道GTalk使用的是Jabber协议,今天突然想深入了解下,将如下几个网址:

http://www.jabber.org/

http://www-128.ibm.com/developerworks/cn/xml/x-jabber/index.html?S_TACT=105AGX52&S_CMP=tag-csdn

Linux 系统审计样例


developerWorks 中国   >  Linux   >

Linux 系统审计样例

编写脚本测试系统审计兼容性的案例研究

级别: 中级

Emily Ratliff (ratliff@austin.ibm.com), 软件工程师, IBM

2007 年 6 月 04 日

您认为您拥有一个安全的 Linux® 系统吗?在安装和设置过程中按照最佳实践的提示是必须的,但是如果您没有设置正常的系统审计,就丢失了一半保险。本文讨论现有的一些工具,并提供了几个样例脚本来对真实环境中的处理实现自动化。

关于如何安装一 个安全的 Linux 系统已经撰写了很多文章和书籍。但是为了确保满足安全性需求而安装系统之后,整个战役才打赢了一半。另外一半需要确保系统在整个生命周期中都可以满足安全 性需求(并且您可以证明这一点)。这就意味着需要对系统进行周期性审计,才能确保不会出现问题。

系统审计需求

例程系统审计过程中需要验证的安全性需求应该与系统安装过程中使用的需求和安全性准则相同。这个 3 部分的 developerWorks 系列文章 “增强 Linux 的安全性” 向您简要介绍了如何安装一个非常安全的 Linux 系统。正常的系统审计也可以帮助提炼安装新机器时所使用的安全策略,因为它有助于关闭关于实际使用的子系统的反馈循环。

满足这些需求的第一组工具是系统审计基于主机的入侵检测。本文着重介绍的是系统审计。基于主机的入侵检测系统有 tripwire、AIDE 和 Samhain,它们都可以检测出何时对文件系统进行了修改,因此对于确保系统仍然维持在已知状态来说是至关重要的一些工具。Linux Gazette 上有一篇有关使用这些工具的有趣文章 “Constructive Paranoia”(链接请参看下面的 参考资料)。

本文的重点是基于管理大型学术网络子网的系统管理员的真实需求而总结出的一些周期性的系统审计实践。这些管理员所学到的教训同样适用于企业 intranet 和那些希望防止自己的机器在蠕虫军队面前变成一具僵尸的家庭用户。管理员的系统需要周期性地进行随机的系统审计,在此过程中需要执行一些例行的审计操作 (例如显示周期性查看的审计和系统日志,检查已经失效的用户帐号)。另外,系统管理员还需要解决以下问题:

  • 了解系统中的 suid/sgid 可执行文件,并确定为什么这些文件要使用 suid/sgid 权限
  • 证明具有人人可写目录(/tmp 和 /var/tmp)的文件系统中没有任何 suid/sgid 文件
  • 打开一些端口,并验证防火墙关闭这些端口的影响


回页首

这些 suid 文件是干什么用的?

确定系统中的 suid 和 sgid 文件 — 并对那些不需要的文件禁用这种权限 — 是安装安全系统的一条基本原则。这种任务很常见,find 手册页在它的例子中就列出了这个任务所使用的参数。清单 1 是一个执行典型的 find 命令的脚本,可以帮助回答 suid 文件执行什么功能,以及它属于哪个包;这样可以帮助管理员定位这些文件,并确定这些文件是应该保留在系统中还是应该删除。(您可以从本文后面 下载 一节的 zip 文件下载清单 1、3、4 的代码)。

清单 1. 搜索 suid/sgid 文件的精简后的样例输出

[root@localhost hpc]# ./find_setuids.pl /04755 root /usr/X11R6/bin/cardinfo       cardinfo - PCMCIA card monitor and control utility for Xpcmcia-cardinfo-3.2.7-107.3

04755 root /usr/bin/opiepasswd       opiepasswd -  Change or set a user's password for the       OPIE authentication system.Opie-2.4-544.1

04755 root /usr/bin/opiesu       opiesu  -  Replacement  su(1)  program that uses OPIE challengesopie-2.4-544.1

04755 root /usr/bin/sudo       sudo - execute a command as another usersudo-1.6.7p5-117.4

回页首

哪些文件系统包含人人可写的目录?

作 为一名系统管理员,您可能会对人人可写的目录感兴趣,从而满足所有用户可写的文件系统应该使用 nosuid 属性进行挂载的需求。用户可写的目录包括用户的根目录,以及任何人人可写的目录。之所以有这种要求是为了防止创建其他用户或管理员可能会不经意执行的 suid 可执行程序。然而,如果在一个合法的 suid 可执行程序与一个人人可写的目录在同一个文件系统中,因此使用 nosuid 选项来挂载的,那么 suid 位就会被忽略,这个可执行程序也就无法正确执行。您也可能会考虑在自己的多用户系统中实现这种限制。

清单 1 中的脚本也会对每个普通文件系统进行测试,寻找人人可写的目录,并在输出结果末尾报告这个文件系统是否包含一个人人可写的目录。对于每个 suid/sgid 文件来说,它还报告这个文件是否在一个包含人人可写目录的文件系统中。

对人人可写目录的样例输出结果精简后如下所示:
/ Contains both suid/sgid files and world writable directories.


回页首

系统使用了哪些网络端口?都用于什么目的?

有几种方法可以用来检测系统上使用了哪些端口。nmap、netstat 和 lsof 都是非常有用的工具。

  • Nmap 是一个非常灵活的工具,它可以主动或被动地扫描远程(和本地)系统。
  • Netstat 给出了有关本地系统的网络信息。默认情况下,它会显示打开的连接。
  • Lsof 可以列出系统中的打开文件。它可以用来获取有关端口使用情况的信息,因为它还可以显示有关网络套接字的信息。

Kurt Seifried 维护了一个列有 8,457 个常用端口的清单。(这个端口清单的链接请参看后面的 参考资料。)您可以使用这些数据来帮助解释这个端口用于什么目的,如果防火墙关闭这个端口会产生什么影响。他还包含了有关特洛伊木马和根工具通常使用的端口的信息;例如,31337 通常会被 Back Orifice 使用,而 12345、12346 和 20034 都会由 netbus 使用。

清单 2 包含了一个使用 lsof 和 netstat 的脚本,用来以一种更容易阅读的格式显示系统的当前端口使用情况。

清单 2. port_scan.sh 的样例输出

[root@localhost hpc]# ./port_scan.sh  please wait...PORT              SERVICE         LINK22                sshdhttp://www.seifried.org/security/ports/0/22.html25                sendmailhttp://www.seifried.org/security/ports/0/25.html123               ntpdhttp://www.seifried.org/security/ports/0/123.html631               cupsdhttp://www.seifried.org/security/ports/0/631.html46336 <-> 22      ssh             ** 

在清单 2 中,编号较小的端口(小于 1024)标识的是系统上运行的守护进程,除非被防火墙阻断,否则它们就会接收传入的信息。编号较大的端口 46336 给出了一个外发 ssh 连接,以及连接到另一端的端口(22)。这意味着阻塞这个临时端口上的外发通信会阻断诸如 ssh 之类的常用客户机程序。有关使用防火墙阻塞更高端口的影响的更详细内容,请参看 参考资料 中 Kurt 的端口清单 。

这些脚本和工具可以实时显示在某个时间点上的端口使用情况。即使有些端口现在没有使用,审计子系统可以用来查找已经使用了哪些端口(在审计日志文件记录的时间范围内)。将下面的审计规则添加到 /etc/audit.rules 中就可以记录对 bind 的调用情况。

-a entry,always -S socketcall -F a0=2

参数 -a entry,always 说明了在系统调用执行开始时总要调用的规则。 -S socketcall 说明了这个审计规则是用于 socketcall 系统调用的。这个 socketcall 系统调用在 i386 架构上是多元的,因此需要使用 -F a0=2 选项将所生成的审计记录仅仅限制在 bind 上。

其 他架构对 bind 系统调用的处理方式不同,因此这些命令和脚本必须稍加修改才能处理 i386 之外的架构。审计事件可以记录为多条审计记录,它们使用一个共享序号关联在一起。ausearch 会使用序列号将相关记录关联在一起,并将它们作为一个组呈现出来。-i 标记请求使用数字值,例如在可能时可以将 saddr (IP 地址)和 uid (用户名)翻译成人们可以阅读的文本。

清单 3. ausearch 输出简化后的内容

# ausearch -i -sc socketcallAbbreviated example output----type=SOCKETCALL msg=audit(11/20/2006 11:28:43.844:10) : nargs=3 a0=0a1=b8004004 a2=10type=SOCKADDR msg=audit(11/20/2006 11:28:43.844:10) : saddr=inethost:127.0.0.1 serv:631type=SYSCALL msg=audit(11/20/2006 11:28:43.844:10) : arch=i386syscall=socketcall(bind) success=yes exit=0 a0=2 a1=bfffaca0 a2=b8000664a3=1 items=0 pid=3340 auid=unknown(4294967295) uid=root gid=root euid=rootsuid=root fsuid=root egid=root sgid=root fsgid=root comm=cupsdexe=/usr/sbin/cupsd----type=SOCKETCALL msg=audit(11/20/2006 16:40:46.169:16) : nargs=3 a0=6a1=b8056720 a2=10type=SOCKADDR msg=audit(11/20/2006 16:40:46.169:16) : saddr=inethost:192.0.34.166 serv:123type=SYSCALL msg=audit(11/20/2006 16:40:46.169:16) : arch=i386syscall=socketcall(bind) success=yes exit=0 a0=2 a1=bffff9a0 a2=b80004a8a3=6 items=0 pid=3523 auid=unknown(4294967295) uid=root gid=root euid=rootsuid=root fsuid=root egid=root sgid=root fsgid=root comm=ntpdexe=/usr/sbin/ntpd

这个输出结果显示每个对于 bind 的调用都会生成 3 个审计记录。第一个记录类型是 SOCKETCALL 记录,它显示按条目传递给 bind 的参数个数和参数值。第二个记录类型是 SOCKADDR 记录,它以 IP 地址和所使用的端口形式给出了主机。第三个记录类型是 SYSCALL 记录,它显示对于 bind 的调用是否成功,退出的参数给出了进程 ID、所执行的文件、显示生成这个调用的进程的有效性和实际用户/组信息。对于我们的目的来说,最感兴趣的内容在 serv 中,这是 SOCKADDR 记录的一部分,它记录了所使用的端口,以及 SYSCALL 记录的 exe= 字段,这个字段说明了调用 bind 的程序是什么。

清单 4 包含了一个简单的脚本,它使用 sed 和 awk 将 ausearch 的输出压缩成只有不重复的(忽略时间)可执行程序和端口号字段。

清单 4. auportprint.sh 的样例输出

[root@localhost hpc]# ./auportprint.sh22      /usr/sbin/sshd123     /usr/sbin/ntpd123     /usr/sbin/ntpdate631     /usr/sbin/cupsd

回页首

结束语

本 文介绍了一些可以帮您维持系统遵守安全性策略的工具和技术。本文还提供了一些样例脚本来帮助将系统数据解析为简单可读的格式,这可以帮助您快速证明系统的 安全状态,对于那些不太熟悉工具和系统的人来说也会更加容易。我希望您可以使用这些简单的工具和技术来创建自己的脚本,从而周期性地对系统的安全性情况进 行测试。

致谢

感谢 Kylene Hall、Dustin Kirkland、 Flavio Ivan da Silva、Rodrigo Rubira Branco 和 Flavio C. Buccianti 提供的代码、建议以及对本文的卓越贡献。


回页首

下载

描述 名字 大小 下载方法
本文清单 1,清单 3,清单 4 的代码 hpc.zip 4KB HTTP
关于下载方法的信息

参考资料

学习

获得产品和技术

  • 订阅免费的 SEK for Linux,共包含两张 DVD,其中有用于 Linux 的最新 IBM 试用软件,包括 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 系列。
  • 您可直接从 developerWorks 的 IBM 软件下载资源中心 下载 IBM 试用版软件,在 Linux 上构建您的下一个开发项目。

讨论

关于作者

Emily Ratliff 在 IBM Linux Technology Center 从事 Linux 安全性方面的工作。她已经从事了多个 Common Criteria 评测、Trusted Computing、Kerberos 和 Enterprise Identity Mapping 以及其他项目的工作。Emily 的最终目标是保护自己未加任何防护的工作站能够免受自己蹒跚学步的儿子的随机攻击(很奇怪这种攻击都是成功的)。

VMWare Host-Guest 通信

【总结失败】

昨天没能成功地原因,主要是因为一直在使用默认的Bridge方式连接host和guest――根据VMware帮助,在Bridge模式下,guest会消耗掉host当前所在的LAN的一个地址(不论通过手动分配或DHCP方式),所以host必须有权限从当前LAN中获得一地址:
If the host computer is on an Ethernet network, bridged networking is often the easiest way to give your virtual machine access to that network. With bridged networking, the virtual machine appears as an additional computer on the same physical Ethernet network as the host. A virtual machine with bridged networking may transparently use any of the services available on the network to which it is bridged, including file servers, printers, gateways and so on. Likewise, any physical host or other virtual machine configured with bridged networking can use resources of that virtual machine.

【成功经验】

由于目前host没有通过网线连接到任何LAN中,故没有可用的网关(gateway)。虽然host(192.168.0.25/24)和guest(192.168.0.250/24)在同一个subnet中,仍无法ping通――因为无gateway,链路不完整。

现在,采用NAT或Host-only方式连接host和guest,以下是关于它们的说明:
NAT (Network Address Translation) ― If you want to connect to the Internet or other TCP/IP network using the host computer’s dial-up networking connection and you are not able to give your virtual machine an IP address on the external network, this is often the easiest way to give the virtual machine access to that network. The virtual machine does not have its own IP address on the external network. Instead, a separate private network is set up on the host computer. The virtual machine obtains an address on that network from the VMware virtual DHCP server.
Host-only ― When you use this type of network connection, the virtual machine is connected to the host operating system on a virtual private network, which normally is not visible outside the host. Multiple virtual machines configured with host-only networking on the same host are on the same network.
显然,NAT和Host-only方式不需要保证host已经连接到某个LAN上,并从LAN中分配地址;而是将host设置为在虚拟网络VMnet8(NAT方式)或VMnet1(Host-only方式)上的一台计算机。

从帮助文档及VMware的一些参数还可以得到以下信息:
1) 与NAT方式对应的虚拟子网为VMnet8(192.168.184.0/24),guest的可用地址为192.168.184.128 ~ 192.168.184.254。通过查看host中的VMware Network Adapter VMnet8的属性可知host在此情况下的地址为192.168.184.1(可以手工设置,但要避免与guest冲突)。
2) 与Host-only方式对应的虚拟子网为VMnet1(192.168.17.0/24),guest的可用地址为192.168.17.128 ~ 192.168.17.254。通过查看host中的VMware Network Adapter VMnet1的属性可知host在此情况下的地址为192.168.17.1(可以手工设置,但要避免与guest冲突)。

所以,如果使用NAT方式(必须保证NAT服务进程在host中已经启动),需要将guest的地址设置在192.168.184.128 ~ 192.168.184.254内,使guest和host在同一个subnet内。在guest内通过ping 192.168.184.1测试,说明已与host连通!

同样地,如果使用Host-only方式,需要将guest的地址设置在192.168.17.128 ~ 192.168.17.254内,使guest和host在同一个subnet内。在guest内通过ping 192.168.17.1测试,说明已与host连通!

Flash PHP socket

     昨天晚上,完成了测试Flash与PHP之间通过socket进行数据传递,效果不错。有空的时候,整理贴出代码,呵呵

Flash Remoting类 包 功能简述

Flash Remoting类 包 功能简述

     Connection mx.romoting Connection类是一个方法集合,使用该集合中的方法可以创建到Flash Romoting网关的连接,并且使用这些方法也可以调用远程方法并处理结果.

     DataGlue mx.romoting 使用DataGlue类可以格式化记录集数据以更加适用于ListBox组件,ComboBox以及其他的Flash UI组件

     Fault mx.rpc 该对象包含了方法调用时出错的详细信息

     FaultEvent mx.rpc 如果对远程服务的调用出错(应用程序服务器出错),Flash Remoting 就会返回一个FaultEvent对象,该对象作为出错时处理函数的参数.

     Log mx.services 在Service构造器中,可以定义一个Log对象作为参数,该参数是可选的

     NetDebug mx.remoting.debug NetDebug 类用于进行调试,它可以将Flash影片应用程序调用信息(包括参数).Flash Remoting信息和应用程序服务器信息(包括结果和调用信息)显示在NetConnectionDebugger面板上

     NetDebugConfig mx.remoting.debug NetDebugConfig类在开发阶段可以用来将数据发送给NetConnectionDebugger面板

     NetServices mx.romoting NetServices 已经不再建议使用了,虽然功能还可以,但是如果使用Flash Remoting for flash mx 2004 as2的话,最好用Service类

     PendingCall mx.rpc 对远程服务方法的调用都会返回一个PendingCall对象实例

     RecordSet mx.remoting RecordSet对象实例用来处理记录集,记录集可以是从服务器返回的,也可以是本地创建的

     RelayResponder mx.rpc RelayResponder类提供了一种机制,使用该机制可以将结果和出错事件传递给一个对象处理方法函数

     RemotingConnector mx.data.components RemotingConnector 是一个组件,使用该组件可以直接调用Flash Remoting MX网关提供的远程方法,而且可以使用该组件进行数据绑定,这正是 Flash mx 2004的优点

     Responder mx.rpc Responder接口可以声明一个ResultEvent对象,从而可以实现一个远程方法调用的回应器

     ResultEvent mx.rpc 对远程服务的调用会返回一个ResultEvent对象,该对象作为结果处理函数的参数

     Service mx.remoting Service类为远程服务(该远程服务必须是通过Flash Remoting MX网关提供的)提供了一个客户端处理  

AMFPHP资料:

1. 英文

2. 中文

Page 5 of 18« First...34567...10...Last »