Linux服务器网络安全经验

关于分区

一个潜在的黑客如果要攻击你的Linux服务器,他首先就会尝试缓冲区溢出。在过去的几年中,以缓冲区溢出为类型的安全漏洞是最为常见的一种形式了。更为严重的是,缓冲区溢出漏洞占了远程网络攻击的绝大多数,这种攻击可以轻易使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权!

为了防止此类攻击,我们从安装系统时就应该注意。如果用root分区纪录数据,如log文件和email,就可能因为拒绝服务产生大量日志或垃圾邮件,从而导致系统崩溃。所以建议为/var开辟单独的分区,用来存放日志和邮件,以避免root分区被溢出。最好为特殊的应用程序单独开一个分区,特别是可以产生大量日志的程序,还有建议为/home单独分一个区,这样他们就不能填满/分区了,从而就避免了部分针对Linux分区溢出的恶意攻击。

关于BIOS

记着要在BIOS设置中设定一个BIOS密码,不接收软盘启动。这样可以阻止不怀好意的人用专门的启动盘启动你的Linux系统,并避免别人更改BIOS设置,如更改软盘启动设置或不弹出密码框直接启动服务器等等。

关于口令

口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN(口令最小长度)。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS(口令使用时间)。

关于Ping

既然没有人能ping通你的机器并收到响应,你可以大大增强你的站点的安全性。你可以加下面的一行命令到/etc/rc.d/rc.local,以使每次启动后自动运行,这样就可以阻止你的系统响应任何从外部/内部来的ping请求。

echo 1 》 /proc/sys/net/ipv4/icmp_echo_ignore_all

关于Telnet

如果你希望用户用Telnet远程登录到你的服务器时不要显示操作系统和版本信息(可以避免有针对性的漏洞攻击),你应该改写/etc/inetd.conf中的一行象下面这样:

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

加-h标志在最后使得telnet后台不要显示系统信息,而仅仅显示login。

关于特权账号

禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击。

为删除你系统上的用户,用下面的命令:userdel username

为删除你系统上的组用户帐号,用下面的命令:groupdel username

在终端上打入下面的命令删掉下面的特权用账号:

userdel adm

userdel lp

userdel sync

userdel shutdown

userdel halt

userdel mail

如果你不用sendmail服务器,就删除这几个帐号:

userdel news

userdel uucp

userdel operator

userdel games

如果你不用X windows 服务器,就删掉这个帐号。

userdel gopher

如果你不允许匿名FTP,就删掉这个用户帐号:

userdel ftp

关于su命令

如果你不想任何人能够su为root的话,你应该编辑/etc/pam.d/su文件,加下面几行:

auth sufficient /lib-

http://security.chinaitlab.com/pam_rootok-

.so debug

auth required /lib-

http://security.chinaitlab.com/pam_wheel-

.so group=isd

这意味着仅仅isd组的用户可以su作为root。如果你希望用户admin能su作为root.就运行下面的命令:

usermod -G10 admin

suid程序也是非常危险的,这些程序被普通用户以euid=0(即root)的身份执行,只能有少量程序被设置为suid。用这个命令列出系统的suid二进制程序:

suneagle# find / -perm -4000 -print

你可以用chmod -s去掉一些不需要程序的suid位。

关于账户注销

如果系统管理员在离开系统时忘了从root注销,系统应该能够自动从shell中注销。那么,你就需要设置一个特殊的 Linux 变量“tmout”,用以设定时间。 同样,如果用户离开机器时忘记了注销账户,则可能给系统安全带来隐患。你可以修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。 编辑文件/etc/profile,在“histfilesize=”行的下一行增加如下一行:

tmout=600

则所有用户将在10分钟无操作后自动注销。注意:修改了该参数后,必须退出并重新登录root,更改才能生效。

关于系统文件

对于系统中的某些关键性文件如passwd、passwd.old、passwd._、shadow、shadown._、inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。 如将inetd文件属性改为600:

# chmod 600 /etc/inetd.conf

这样就保证文件的属主为root,然后还可以将其设置为不能改变:

# chattr +i /etc/inetd.conf

这样,对该文件的任何改变都将被禁止。 你可能要问:那我自己不是也不能修改了?当然,我们可以设置成只有root重新设置复位标志后才能进行修改:

# chattr -i /etc/inetd.conf

关于用户资源

对你的系统上所有的用户设置资源限制可以防止DoS类型攻击,如最大进程数,内存数量等。例如,对所有用户的限制, 编辑/etchttp://security.chinaitlab.com/limits.con加入以下几行:

* hard core 0

* hard rss 5000

* hard nproc 20

你也必须编辑/etc/pam.d/login文件,检查这一行的存在:

session required /libhttp://security.chinaitlab.com/pam_limits.so

上面的命令禁止core files“core 0”,限制进程数为“nproc 50“,且限制内存使用为5M“rss 5000”。

关于NFS服务器

由于NFS服务器漏洞比较多,你一定要小心。如果要使用NFS网络文件系统服务,那么确保你的/etc/exports具有最严格的存取权限设置,不意味着不要使用任何通配符,不允许root写权限,mount成只读文件系统。你可以编辑文件/etc/exports并且加:

/dir/to/export host1.mydomain.com(ro,root_squash)

/dir/to/export host2.mydomain.com(ro,root_squash)

其中/dir/to/export 是你想输出的目录,host.mydomain.com是登录这个目录的机器名,ro意味着mount成只读系统,root_squash禁止root写入该目录。最后为了让上面的改变生效,还要运行/usr/sbin/exportfs -a

Ubuntu服务器版操作系统介绍

服务器版 -建立在众所周知稳定的 Debian 上, 它的强劲的服务器安装 — 具有浓厚的传统, 性能可靠和可以预见的变化。

集成安全平台

由于您的业务增长, 所以您的网络、大多数的应用程序需要重新部署到更多的服务器。 Ubuntu 服务器版提供了几种常见配置的支持, 简化了普通 Linux 服务器的部署过程。 它提供了一个良好的集成平台, 使您迅速和容易的部署新服务器,标准互联网服务: mail, web, DNS, 文件安服务 或 数据库管理。

Debian 传统是默认安全的。 Ubuntu 服务但安装完毕后没有开放任何端口仅仅包含了需要建立一个安全服务器的基本软件。

降低总体拥有成本和自动安装 LAMP

从安装好的 Ubuntu 服务器版大约花费 15 分钟, 您就可以有一个 LAMP (Linux, Apache, MySQL 和 PHP) 服务, 并开始运行。 这个特点, 只有 Ubuntu 服务器版, 在安装的时候被激活。

LAMP 的选项意味着您不需要安装和集成这四个 LAMP 组成部分, 一个过程可以处理和帮助需要安装和配置的人。 相反, 您将得到增强的安全性, 缩短时间去安装和减少风险, 所有的这些都有一个较低的成本。

消除更新个人工作站的成本

Ubuntu 服务器版包括了使用 LTSP (Linux Terminal Server Project) 的瘦客户机支持。 LTSP-5, 最新版本, 提供了简易安装, 方便维护。 所有的数据都存储在服务器上, 这将大大降低成本: 更新个人工作站, 并帮助其保证他们的安全。 Ubuntu 瘦客户端有如下支持:

简单管理:从一个系统上管理所有的用户。 安装新软件, 修改配置, 甚至在服务器上升级到一个新的版本, 所有的客户端都可以升级到最新。 并且为所有的客户端只有一个备份。

全自动安装和设置: 安装一个瘦客户机服务器和乱安装一个单一的桌面系统一样,非常容易,而一旦安装完毕, 新的客户端就可以在服务器上添加任何额外的管理。

通过资源共享,低的 CTO: 通用高性能的桌面工作站大部分时间都在空闲而支付了贵的价格。 使用高性能的服务器和低成本的瘦客户端, 你可以得到伟大的业绩和节省资金。 需要更高的业绩? 马上升级服务器,这样所有的客户端都将得到好处。

快速失败恢复: 如果一个客户端系统失败, 简单的交换一个新的就可以继续工作。 不需要配置, 并且所有的用户数据和设置都完好无损。

本地附加装置: 用户可以访问打印机, 相机, iPods, USB存储设备和其它直接连接到瘦客户端的设备。

支持的架构

Ubuntu 服务器版支持 x86, AMD64 和 UltraSPARC T1 架构。

Ubuntu下Apache服务之PHP配置

将Ubuntu系统更新到最新状态,在做任何操作之前都要做这一步,以确保系统的稳定,同时也不会有一些莫名其妙的现象出现。

$sudo apt-get update

$sudo apt-get dist-upgrade

安装PHP支持

$sudo apt-get install libapache2-mod-php5

$sudo apt-get install php5

如果想支持图形就加php5-gd,如果想支持Mysql就加php5-mysql,这里之所以要单独列出libapache2-mod-php5,主要是由于php5的依赖关系没有做好,有可能会安装上libapache-mod-php4的包,所以为了避免不必要的麻烦,干脆还是单独指定比较好。如果有朋友还是会出现问题,请在新立得中查找libapache-mod-php4包,如果安装的话请将其删除。

修改PHP配置文件,以限制内存和文件最大上传尺寸

我们编辑/etc/php5/apache2/php.ini文件,先做一般配置,在改动之前,请先将该配置文件做个备份。以便在出错的时候可以恢复。

...

memory_limit == 8M ==>修改成你所需的内存大小

upload_max_filesize == 2M ==>修改文件最大上传尺寸

...

extension=mysql.so 支持Mysql服务

extension=gd.so 支持gd函数

...

其实在Ubuntu下,如果你安装了php5-mysql和php5-gd之后,会自动修改以上二行的,我们做的只不过是确认一下它们前面的注释符是否去掉。

a. 目前大多数php的open source都是用php4写的,为了兼容以前的php版本,有时需要将register_long_arrays打开,否则$HTTP_GET_VARS和$HTTP_POST_VARS等变量将无法使用,会出现一些莫名其妙的问题。 a. 另外,在装完php5后最好确认一下/etc/apache2/mods-enabled/下是否有链接:

php5.load -> /etc/apache2/mods-available/php5.load

加固PHP,以增强安全性。注意,下面的安全性要因情况而定,所以我已经把它们的功能写清楚了,如果有问题的话,看看是否由于下面哪种限制条件所造成,可相应将其注释掉。那么让我们开始吧,我们将再次编辑/etc/php5/apache2/php.ini文件,之所以没有一次改完,主要是为了给大家一个清晰的思路。

#打开安全模式,打开他的好处就是PHP文件只能访问所有者和PHP文件所有着一样的文件,即使在chroot环境下也无法访问jail 中属主不一样的文件,类似于php shell这样的后门就没用武之地了哦,phpshell是很流行的php后门,他可以执行系统命令,就象他的名字一样,和shell很接近。

safe_mode = On

#清注意,安全模式打开一个会导致judge online一类有调用外部程序的php无法工作。

#下面的设置就限制了fopen(), file()等函数可以操作的目录范围,避免了入侵者非法读取文件,一定要在/var/www后面加"/",否则/var/wwww下的文件也能被访问。该选项会禁止任何不在/var/www/目录下的PHP文件运行,包括任何以软链接方式链到/var/www/目录下的程序,如PhpMyAdmin 包,就在该选项设定后无法正常运行。

open_basedir = /var/www/

#禁止使用phpinfo和get_cfg_var函数,这样可以避免泄露服务信息,一般在在确认PHP能正常工作之后再使之关闭

disable_functions = phpinfo,get_cfg_var

#设置php程序错误日志

error_reporting = E_ALL

log_errors = On

error_log = /var/log/php_err.log

#如果php程序没有指明需要register_globals的话,最好把register_globals设置为Off,这样可以避免很多安全问题的。注意,如果你的程序是需要register_globals的话,可千万别关。Ubuntu默认是关闭的。

register_globals = Off

#禁止打开远程地址,记得最近出的php include的那个漏洞吗?就是在一个php程序中include了变量,那么入侵者就可以利用这个控制服务器在本地执行远程的一个php程序,例如phpshell,所以我们关闭这个。

allow_url_fopen = Off

OK,打完收功!

在 Ubuntu 中安装 Internet Explorer

在 Ubuntu 中安装 Internet Explorer 很麻烦?试试 IEs 4 Linux 吧,使用它,只需简单回答几个问题就可以了。

1.安装准备

目前,要在 Ubuntu 中运行 IE,Wine 是免不了的。所以,你需要首先安装 Wine。另外,在使用 IEs 4 Linux 过程中,会用到 cabextract 这个解包小工具。安装指令如下:

sudo apt-get install wine cabextract

2.安装 IE

在下载 IEs4Linux 后,使用 tar xvzf ies4linux-2.0.tar.gz 解包。然后,运行脚本 ./ies4linux继续阅读

林黛玉《葬花吟》

林黛玉《葬花吟》

花谢花飞飞满天,红消香断有谁怜?
游丝软系飘春榭,落絮轻沾扑绣帘。
一年三百六十日,风刀霜剑严相逼。
明媚鲜妍能几时,一朝漂泊难寻觅。

花开易见落难寻,阶前愁煞葬花人。
独倚花锄偷洒泪,洒上空枝见血痕。
愿奴胁下生双翼,随花飞到天尽头。
天尽头,何处有香丘!!

未若锦囊收艳骨,一抔净土掩风流。
质本洁来还洁去,强于污淖陷渠沟。
尔今死去侬收葬,未卜侬身何日丧。
侬今葬花人笑痴,他年葬侬知是谁?

天尽头,何处有香丘!!
试看春残花渐落,便是红颜老死时。
一朝春尽红颜老,花落人亡两不知

柳丝榆荚自芳菲,不管桃飘与李飞;
桃李明年能再发,明年闺中知有谁?
三月香巢初垒成,梁间燕子太无情!
明年花发虽可啄,却不见人去梁空巢已倾。
一年三百六十日,风刀霜剑严相逼

明媚鲜妍能几时,一朝飘泊知早觅。
花开易见落难觅,阶前愁煞葬花人;
独把花锄偷洒泪,洒上空枝见血痕。
杜鹃无语正黄昏,荷锄归去掩重门。
青灯照壁人初睡,冷雨敲窗被未温。

怪侬底事倍伤神?半为惜春半恼春:
怜春忽至恼忽去,至又无言去不闻。
昨霄庭外悲歌发,知是花魂与鸟魂?
花魂鸟魂总难留,鸟自无言花自羞:

愿侬此日生双翼,随花飞到天尽头。
无尽头!何处有香丘?
未若锦囊收艳骨,一抔净土掩风流;
质本洁来还洁去,不教污淖陷渠沟。

尔今死去侬收葬,未卜侬身何日丧?
你今葬花人笑痴,他年葬侬知是谁?
试看春残花渐落,便是红颜老死时。
一朝春尽红颜老,花落人亡两不知!

什么是ISP证?

    什么是ISP证(移动网增值业务经营许可证) 

  为适应市场发展及管理需要,信息产业部依据《中华人民共和国电信条例》(国务院令第 291号)第八条规定的授权,适时对《电信业务分类目录》(以下简称《目录》)进行调整。现行《目录》于2003年4月1日起实施。
  
    移动网增值电信业务的接入专项是指建立与移动网络直接连接的服务平台,为移动网增值电信业务的业务专项经营者提供接入移动网络的服务,定位服务等各种增值服务的业务。(包括内容服务、娱乐、游戏、短信、彩信,WAP、铃声下载,商业信息和定位信息等
服务) 信息服务业务面向的用户是固定通信网络用户、移动通信网络用户、因特网用户或其他数据传送网络的用户。

“春暖花开 性吧有你”关键词

“春暖花开 性吧有你”无意中获得的,竟然是色词,衍生词很多,比如“春暖花开 性吧”,“性吧有你 春暖花开”,“xingba”,“性吧有你 首页”等等,都流量巨大,而且这类词排二三页也流量很大,可以好好挖掘,不过提醒大家千万别做色站。可以拿这些流量来做产品应该也可以,别对转化率有期望就好。

发表在

不同站点WordPress调用方法

不在同一站点的情况下,网上流传的方法是用了一款名为Ecall的插件,这个插件是JS调用的,不利于SEO。
一种方法是使用同一站点的方法,在博客根目录中新建blog_call.php文件,内容同站点中给出的代码,然后在需要调用的站点使用file读取

<?php
//$str = file("http://www.blog.com/blog_call.php");
//补充 file测试中有读取不全的现象更正为:
f$str = ile_get_contents("http://www.blog.com/blog_call.php");
echo $str[0];
?>

另一种方法是读取博客RSS的方式,下面这段PHP读取RSS的代码在网上流传已久,但是很多朋友不知道,其实它是可以用在WP外部调用上的··

<?php
//RSS源地址列表数组
$rssfeed = array("http://feeds2.feedburner.com/redlogpress",
"http://rss.sina.com.cn/news/allnews/sports.xml",
"http://ent.163.com/special/00031K7Q/rss_toutiao.xml");

//设置编码为UTF-8
header('Content-Type:text/html;charset= UTF-8');
for($i=0;$i<sizeof($rssfeed);$i++){//分解开始

$buff = "";
$rss_str="";
//打开rss地址,并读取,读取失败则中止
$fp = fopen($rssfeed[$i],"r") or die("can not open $rssfeed");

while ( !feof($fp) ) {
$buff .= fgets($fp,4096);

}
//关闭文件打开
fclose($fp);
//建立一个 XML 解析器
$parser = xml_parser_create();
//xml_parser_set_option -- 为指定 XML 解析进行选项设置

xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
//xml_parse_into_struct -- 将 XML 数据解析到数组$values中
xml_parse_into_struct($parser,$buff,$values,$idx);

//xml_parser_free -- 释放指定的 XML 解析器
xml_parser_free($parser);
foreach ($values as $val) {
$tag = $val["tag"];

$type = $val["type"];
$value = $val["value"];
//标签统一转为小写

$tag = strtolower($tag);
if ($tag == "item" && $type == "open"){

$is_item = 1;
}else if ($tag == "item" && $type == "close") {

//构造输出字符串
$rss_str .= "<a href='".$link."' target=_blank>".$title."</a><br />";

$is_item = 0;
}
//仅读取item标签中的内容
if($is_item==1){
if ($tag == "title") {$title = $value;}

if ($tag == "link") {$link = $value;}
}
}

//输出结果
echo $rss_str."<br />";
}
?>
这两种方法都是要求使用调用的站点支持PHP,如果不支持PHP而支持ASP的话可以用方法一,把读取blog_call.php的PHP代码用ASP重写一遍,但是如果是静态空间就只能装插件来实现了。

发表在 未分类

同一个站点WordPress日志调用方法

假设WP安装在blog目录,在主页调用博客的文章,也是最多的情况

<?php
define('WP_USE_THEMES', false);
require('blog/wp-blog-header.php'); //修改博客的路径

query_posts('showposts=20'); //显示文章条数
?>
<?php while (have_posts()): the_post(); ?>
<li><a href="<?php the_permalink(); ?>" target="_blank"><?php echo mb_strimwidth(strip_tags(apply_filters('the_title', $post->post_title)), 0, 50," "); ?></a></li>
<?php endwhile; ?>

发表在 未分类