Posts Tagged ‘ubuntu’
保障Ubuntu Apache Web服务器安全
星期四, 三月 5th, 2009 在一个linux发行版本上设置一个web服务器是一个很快的过程,不过要让这种设置成为一种安全的过程可能就需要花点儿工夫。本文将向你展示如何有效地使用访问控制和身份验证策略,使你的apacheweb服务器更安全。下面所有的例子都假定你用的是ubuntu7.10,并对apache进行了基本的配置。不过,这些例子将帮助任何一位运行apache服务器的用户获得更大的安全性,因为其要领仍然适用于其它linux系统。本文中所涉及到的方法应当首先在一台测试服务器上进行试验,在成功之后才能迁移到一个实际使用的web服务器上。
一、文件许可和访问控制
1. 用户和组
首先要保障的是apache不要以root身份运行,因为如果apache被攻破的话,那么攻击者就可以控制root账户。下面让我们看一下apache正以何种用户和组的身份运行:
运行下面的命令:
# ps auwwfx | grep apache www-data 25675 0.0 0.0 10348 508 ? s jan21 0:00 _ /usr/sbin/apache2 -k start
www-data 25686 0.0 0.2 231816 2208 ? sl jan21 0:00 _ /usr/sbin/apache2 -k start
www-data 25688 0.0 0.2 231816 2200 ? sl jan21 0:00 _ /usr/sbin/apache2 -k start
可以看出,www-data是运行apache的用户。不过,我们需要编辑apache的配置并创建一个新用户和组:
# groupadd www-data
# useradd -g www-data www-data
# vi /etc/apache2/apache2.conf
将user root group root改为:
user www-data group www-data
然后重新加载以使改变生效:
# /etc/init.d/apache2 reload
2. 服务文件准许
一个最易被忽视的安全问题是如何正确地使用chmod命令。例如,我们在apache 的html root目录中创建了一个index.cgi文件,不过在浏览器中打开这个文件时却被告知拒绝访问。为了让我们的index.cgi文件正常工作,我们执行一个chomod 777 index.cgi。在我们如此试验时,每一个apache管理员都在考虑这样安全吗?答案是否定的。不过,如何使这种许可足够安全并能允许index.cgi脚本正常运行呢?
apache需要得到准许来访问index.cgi文件。不过,我们不希望人人都能读写index.cgi。这个文件的所有者应当拥有读写这个文件的许可。为此我们需要下面的命令:
# chmod 755 index.cgi
将下面的一行加入到你的apache.conf文件中是很重要的:
options followsymlinks allowoverride none
注意:
1、上面的命令行防止apache访问root之外的文件。
2、有一些linux发行版本比其它版本拥有更好的安全性。engarde secure linux就是一个很好的例子,因为它默认情况下就在其apache配置文件中包含了上面的代码行。
我们并不想让用户在文件系统上的任何地方运行cgi脚本,不过我们确实需要它们在root中运行。对这个问题的解决办法是“options execcgi”指令。
例如,将下面的行添加到/etc/apache2/apache2.conf文件中:
allowoverride none options execcgi order allow,deny allow from all
重新加载apache:
# /etc/init.d/apache2 reload
那么,如果你拥有只应当被某个网络或ip地址访问的资源怎么办?对这个问题的解决办法是使用我们的apache配置来为你增强安全性:
先说一个只允许访问192.168.0.0网络的例子,需要改变/etc/apache2/apache2.conf文件中以下的一行:
allowoverride none options execcgi order allow,deny allow from all
将其改为:
allowoverride none options execcgi order deny,allow deny from all allow from 192.168.0.0/16
然后重新加载以使更改生效:
# /etc/init.d/apache2 reload
现在只有你内部网络上的用户能够在/home/username/public_html/cgi-bin中运行cgi脚本。
二、身份验证
我们怎样才能仅允许那些拥有正确口令和用户名的用户访问部分web root呢?下面的步骤将向你展示如何安全地做到这一点:
1. 基本验证
允许.htaccess:
# vi /etc/apache2/apache2.conf
将allowoveride none改为allowoveride authconfig
重新加载以使改变生效:
# sudo /etc/init.d/apache2 reload
创建一个口令文件:
# mkdir /var/www/misc
# chmod a+rx /var/www/misc
# cd /var/www/misc
# htpasswd -bc private.passwords username password adding password for user username
创建.htaccess
# cd /home/username/public_html/cgi-bin # vi .htaccess
在.htaccess中增加下面的命令:
authname my private area” authtype basic authuserfile /var/www/misc/private.passwords authgroupfile /dev/null require valid-user
将allowoverride none options execcgi order deny,allow deny from all allow from 192.168.0.0/16
改变为:allowoverride .htaccess options execcgi order deny,allow deny from all allow from 192.168.0.0/16
然后重新加载以使更改生效:
# /etc/init.d/apache2 reload
2、摘要验证(digest authentication)
另外一种验证方法称之为摘要验证。如果采用摘要验证,你的口令将不是以明文通过网络传送,因为它们总是作为用户口令的一个md5摘要传送的。如果采用这种方法,那么通过嗅探网络通信的方法就不能决定用户的口令了。
下面创建口令文件:
# mkdir /var/www/misc
# chmod a+rx /var/www/misc
# cd /var/www/misc
# htdigest -c private.passwords realm username adding password for username in realm realm. new password:
创建 .htaccess :
# cd /home/username/public_html/cgi-bin # vi .htaccess
在.htaccess中增加下面的内容:
authname “my private area” authtype digest authuserfile /var/www/misc/private.passwords authgroupfile /dev/null require valid-user
注意:
1、一些老的浏览器并不支持摘要验证(digest authentication)
2、要完全地保护你的.htaccess就要使用ssl
三、总结
使apache更安全的下一步措施是使用apache的模块来帮助实现更好的安全性,例如mod_security 和 mod_chroot。此外,要保护我们的验证我们还需要配置ssl。
在Ubuntu中用root帐号登录
星期一, 十二月 15th, 2008一、
其实我个人认为这没有多大必要,因为当你需要 root 的权限时,使用 sudo 便可以了。如果你实在需要在 Ubuntu 中启用 root 帐号的话,那么不妨执行下面的操作:
1.重新设置 root 的密码:
$sudo passwd root #按照提示输入两次新的密码,并加以确认。
2.启用root用户登录:
$sudo vi /etc/X11/gdm/gdm.conf #打开gnome的配置文件,在末行模式中输入:AllowRoot回车,找到AllowRoot=false ,把false改为true,保存后退出。
之后,重启系统时,就可以用 root 登录了。如果你想要禁用 root 帐号,则执行下列命令:
$sudo passwd -l root
二、
Ubuntu 中的 root 帐号默认是被禁用了的。在这种情况之下,如果你想要使用 root 的权限来干些事情,就需要 sudo 指令。对某些朋友来说,他们可能需要激活 Ubuntu 中的 root 帐号。
在 Ubuntu 中激活 root 帐号的过程如下:
1. 在终端执行 sudo passwd root 指令后,系统将会提示你设置一个新的 root 帐号密码。
2. 点击 System -> Preferences -> Login Window 菜单,并切换到 Security 选项页,然后选中其下的“Allow local system administrator login”选项。
执行上述两步后,你便可以使用 root 帐号登录 Ubuntu 系统了。
如果要再次禁用 root 帐号,那么可以执行 sudo passwd -l root。
三、
如果一直想一直用root也可以”sudo -s”。
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
Ubuntu常用命令与技巧
星期一, 十二月 15th, 2008Ubuntu常用命令与技巧
sudo apt-get install 软件名 安装软件命令
sudo nautilus 打开文件(有root权限)
su root 切换到“root”
ls 列出当前目录文件(不包括隐含文件)
ls -a 列出当前目录文件(包括隐含文件)
ls -l 列出当前目录下文件的详细信息
cd .. 回当前目录的上一级目录
cd – 回上一次所在的目录
cd ~ 或 cd 回当前用户的宿主目录
mkdir 目录名 创建一个目录
rmdir 空目录名 删除一个空目录
rm 文件名 文件名 删除一个文件或多个文件
rm -rf 非空目录名 删除一个非空目录下的一切
mv 路经/文件 /经/文件 移动相对路经下的文件到绝对路经下
mv 文件名 新名称 在当前目录下改名
find 路经 -name “字符串” 查找路经所在范围内满足字符串匹配的文件和目录
fdisk fdisk -l 查看系统分区信息
fdisk fdisk /dev/sdb 为一块新的SCSI硬盘进行分区
chown chown root /home 把/home的属主改成root用户
chgrp chgrp root /home 把/home的属组改成root组
Useradd 创建一个新的用户
Groupadd 组名 创建一个新的组
Passwd 用户名 为用户创建密码
Passwd -d用户名 删除用户密码也能登陆
Passwd -S用户名 查询账号密码
Usermod -l 新用户名 老用户名 为用户改名
Userdel–r 用户名 删除用户一切
tar -c 创建包 –x 释放包 -v 显示命令过程 –z 代表压缩包
tar –cvf benet.tar /home/benet 把/home/benet目录打包
tar –zcvf benet.tar.gz /mnt 把目录打包并压缩
tar –zxvf benet.tar.gz 压缩包的文件解压恢复
tar –jxvf benet.tar.bz2 解压缩
make 编译
make install 安装编译好的源码包
reboot Init 6 重启LINUX系统
Halt Init 0 Shutdown –h now 关闭LINUX系统
uname -a 查看内核版本
cat /etc/issue 查看ubuntu版本
lsusb 查看usb设备
sudo ethtool eth0 查看网卡状态
cat /proc/cpuinfo 查看cpu信息
lshw 查看当前硬件信息
sudo fdisk -l 查看磁盘信息
df -h 查看硬盘剩余空间
free -m 查看当前的内存使用情况
ps -A 查看当前有哪些进程
kill 进程号(就是ps -A中的第一列的数字)或者 killall 进程名( 杀死一个进程)
kill -9 进程号 强制杀死一个进程
常用apt命令:
apt-cache search package 搜索包
apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package 安装包
sudo apt-get install package – - reinstall 重新安装包
sudo apt-get -f install 修复安装”-f = –fix-missing”
sudo apt-get remove package 删除包
sudo apt-get remove package – - purge 删除包,包括删除配置文件等
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-get dselect-upgrade 使用 dselect 升级
apt-cache depends package 了解使用依赖
apt-cache rdepends package 是查看该包被哪些包依赖
sudo apt-get build-dep package 安装相关的编译环境
apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理无用的包
sudo apt-get check 检查是否有损坏的依赖
清理所有软件缓存(即缓存在/var/cache/apt/archives目录里的deb包 )
sudo apt-get clean
删除系统不再使用的孤立软件
sudo apt-get autoremove
