免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 12404 | 回复: 26
打印 上一主题 下一主题

LINUX安全讨论 [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-19 12:54 |只看该作者 |倒序浏览
装网络上众多关于LINUX基本安全的文档整理归类如下

一、基本
安装时,最好隔离网络进行系统安装。

1、        避免分区溢出
对/var用单独分区,用来存放日志和邮件,以避免root分区被溢出。因为如果用root分区记录如log文件,就有可能因为拒绝服务产生大量日志或垃圾邮件,从而导致系统崩溃。/home单独分一个区,特别是可以产生大量日志的程序,单独分一个区。

2、        设置Bios密码,以防通过在Bios中改变启动顺序,而可以从软盘启动。这样可以阻止别人试图用特殊的启动盘启动你的系统,还可以阻止别人进入Bios改动其中的设置。

3、        为单用户引导加上密码
在“/etc/lilo.conf”文件中加入三个参数:time-out,restricted,password。这三个参数可以使你的系统在启动lilo时就要求密码验证。

a): 编辑lilo.conf文件(vi /etc/lilo.conf),假如或改变这三个参数:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
time-out=00 #把这行该为00
prompt
Default=linux
##########加入这行
restricted
##########加入这行并设置自己的密码
password=<password>;
image=/boot/vmlinuz-2.2.14-12
label=linux
initrd=/boot/initrd-2.2.14-12.img
root=/dev/hda6
read-only

b):因为"/etc/lilo.conf"文件中包含明文密码,所以要把它设置为root权限读取。
[root]# chmod 600 /etc/lilo.conf

c):更新系统,以便对“/etc/lilo.conf”文件做的修改起作用。
[root]# /sbin/lilo -v

d):使用“chattr”命令使"/etc/lilo.conf"文件变为不可改变。
[root]# chattr +i /etc/lilo.conf

4、禁止Control-Alt-Delete 键盘关闭命令
在"/etc/inittab" 文件中注释掉下面这行:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
为了使这项改动起作用,输入下面这个命令:
[root]# /sbin/init q

论坛徽章:
0
2 [报告]
发表于 2004-07-19 13:01 |只看该作者

LINUX安全讨论

引导程序的安全还要有grub啊。
呵呵,如果没有物理安全,什么都白费了。

楼主是否抛砖引玉?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-07-19 13:04 |只看该作者

LINUX安全讨论

二、隐藏系统的信息
1、在确省的情况下,当登陆到LINUX系统上,系统回打印出LINUX系统的版本,名称内核服务等信息。所以我们需要修改让他只显示一个login:登陆符号
编辑/etc/rc.d/rc.local,在下面的文件行前加上注释符号#,把输出信息的行注释掉:
#This will overwrite /etc/issue at every boot.so,make any changes you
#want to make to /etc/issue here or you will lose them when you reboot.
#echo "">;/etc/issue
#echo "$R">;>;/etc/issue
#echo "Kernel $(uname -r) on $a $(uname -m)">;>;/etc/issue
#
#cp -f /etc/issue/etc/issue.net
#echo >;>; /etc/issue

(2):删除/etc目录下的issue.net和issue文件。
[boot]#rm -f /etc/issue
[boot]#rm -f /etc/issue.net
[root]# touch /etc/issue
[root]# touch /etc/issue

2、当有人远程登陆时,禁止显示系统欢迎信息。你可以通过修改“/etc/inetd.conf”文件来达到这个目的。
把/etc/inetd.conf文件下面这行:
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
修改为:
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h
在最后加“-h”可以使当有人登陆时只显示一个login:提示,而不显示系统欢迎信息。

3、历史命令
Bash shell在“~/.bash_history”(“~/”表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件。
bash shell应该保存少量的命令,并且在每次用户注销时都把这些历史命令删除。
(1)“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行确定所有用户的“.bash_history”文件中可以保存的旧命令条数。把“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行的值设为一个较小的数。编辑profile文件(vi /etc/profile),把下面这行改为:
HISTFILESIZE=30 //设为30
HISTSIZE=30 //不要把HISTSIZE置零,那样就不能使用上下健来调用历史命令了
这表示每个用户的“.bash_history”文件只可以保存30条旧命令。

(2)在"/etc/skel/.bash_logout" 文件中添加下面这行"rm -f $HOME/.bash_history" 。这样,当用户每次注销时,“.bash_history”文件都会被删除。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-07-19 13:06 |只看该作者

LINUX安全讨论

原帖由 "零二年的夏天" 发表:
引导程序的安全还要有grub啊。
呵呵,如果没有物理安全,什么都白费了。

楼主是否抛砖引玉?


呵呵,有什么不全的地方,还望大家添加了,
这里我没有考虑到物理安全     

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2004-07-19 13:10 |只看该作者

LINUX安全讨论

嗬嗬,同样这篇,楼主翻译的比purge翻译的要地道。
http://www.chinaunix.net/jh/4/274901.html

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-07-19 13:10 |只看该作者

LINUX安全讨论

三、口令和用户帐号管理
1、        密码
(1)修改密码长度:
[boot]#vi /etc/login.defs/--把 PASS_MIN_LEN 5 改为 PASS_MIN_LEN 8

(2)使用“/usr/sbin/authconfig”工具打开shadow功能,对password加密。如果你想把已有的密码和组转变为shadow格式,可以分别使用“pwcov,grpconv”命令。

(3)系统会自动注销root,#vi /etc/profile/--在"HISTFILESIZE="后面加入:
TMOUT=3600 3600,表示60*60=3600秒,也就是1小时。这样,如果系统中登陆的用户在一个小时内都没有动作,那么系统会自动注销这个账户。你可以在个别用户的“.bashrc”文件中添加该值,以便系统对该用户实行特殊的自动注销时间。 改变这项设置后,必须先注销用户,再用该用户登陆才能激活这个功能。

2、        关闭或删除所有不用的缺省用户和组账户
[root]# userdel username /--删除你系统上的用户
[root]# groupdel username /--删除你系统上的组用户帐号
[root]# useradd username /--增加用户帐号
[root]# passwd username/--改变用户口令
用户(adm,lp,sync,shutdown,halt,mail,news,uucp,operator,games,gopher,ftp等)
组(adm,lp,mail,news,uucp,games,slipusers,dip,ppusers,popusers等)

用chattr命令给下面的文件加上不可更改属性。
[root]# chattr +i /etc/passwd
[root]# chattr +i /etc/shadow
[root]# chattr +i /etc/group
[root]# chattr +i /etc/gshadow

3、        限制用户权限
(1)取消普通用户的控制台访问权限,比如shutdown、reboot、halt等命令。
[root]# rm -f /etc/security/console.apps/<servicename>; /--<servicename>;是你要注销的程序名。

(2)不允许从不同的控制台进行root登陆
编辑"/etc/securetty"文件,再不需要登陆的TTY设备前添加“#”标志,来禁止从该TTY设备进行root登陆。

(3)禁止任何人通过su命令改变为root用户
su(Substitute User替代用户)命令允许你成为系统中其他已存在的用户。
[boot]#vi /etc/pam.d/su
########在开头添加下面两行:
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/Pam_wheel.so group=wheel
这表明只有"wheel"组的成员可以使用su命令成为root用户。你可以把用户添加到“wheel”组,以使它可以使用su命令成为root用户

4、禁止不使用的SUID/SGID程序
如果一个程序被设置成了SUID root,那么普通用户就可以以root身份来运行这个程序。网管应尽可能的少使用SUID/SGID 程序,禁止所有不必要的SUID/SGID程序。

查找root-owned程序中使用's'位的程序:
[root]# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;

用下面命令禁止选中的带有's'位的程序:
[root]# chmod a-s [program]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2004-07-19 13:12 |只看该作者

LINUX安全讨论

文章里有一些我也不是很明白,欢迎讨论

像删除帐号啊,关闭服务什么,没有经验的最好先找好资料

在测试机上使用过正常,才能用于服务上,这点切记


补充一些可能用得上的命令
为了查找所有可写的文件和目录,用下面的命令:
[root@deep]# find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \; >;
ww-files-results
[root@deep]# find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \; >;
ww-directories-results

用下面的命令查找没有拥有者的文件:
[root@deep]# find / -nouser -o -nogroup >; unowed-results

用下面的命令查找所有的.rhosts文件:
[root@deep]# find /home -name .rhosts >; rhost-results


find命令的使用方法可以查找手册,这里有什么不对的地方,欢迎指出,谢谢

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2004-07-19 13:21 |只看该作者

LINUX安全讨论

四、关闭不必要的服务或端口

然后用“sighup”命令升级“inetd.conf”文件。 (我对这句不太明白,没试过的说)
(1)、[Root]# chmod 600 /etc/inetd.conf /--只允许root来读写该文件。
确定“/etc/inetd.conf”文件所有者为root。

(2)、#vi /etc/inetd.conf,取消不需要的服务如:ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth,gophper,rsh,rlogin,rexec,ntalk等等。把不需要的服务关闭可以使系统的危险性降低很多。
(要先确认不需要哪些服务,还有关联服务才能关闭,做任何事之前,要先试验过,并有记操作记录的习惯)

(3)、[root]# killall -HUP inetd /--给inetd进程发送一个信号关闭不需要的服务(这句话是不是这意思啊?)

(4)、[root]# chattr +i /etc/inetd.conf/--把inetd.conf文件设为不可修改
[root]# chattr -i /etc/inetd.conf /--取消不可修改


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

论坛徽章:
0
9 [报告]
发表于 2004-07-19 13:29 |只看该作者

LINUX安全讨论

楼主提醒的很好!
曾经注释掉了ftp,发觉我的ftp服务器无论如何也不能配置成功,后来发觉居然是这个用户的问题。
关于那些用户可以注释,那些不可以似乎并不一定,这还要依赖于您的服务需要。论坛里曾经就用户问题作过讨论:
http://bbs.chinaunix.net/forum/viewtopic.php?t=182847&highlight=用户

关于安全服务部分也还有很多要讨论的,请大家广泛参与啊!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2004-07-19 13:30 |只看该作者

LINUX安全讨论

五、关键文件或目录权限
1、对于系统中的某些关键性文件如passwd、passwd.old、passwd._、shadow、shadown._、
inetd.conf、services和lilo.conf 等可修改其属性,防止意外修改和被普通用户查看。如将inetd 文件属性改为600 :
# chmod 600 /etc/inetd.conf
这样就保证文件的属主为root,然后还可以将其设置为不能改变:
# chattr +i /etc/inetd.conf
这样,对该文件的任何改变都将被禁止
# chattr -i /etc/inetd.conf
取消禁止更修属性

2、给"/etc/rc.d/init.d" 下的文件设置权限
给执行或关闭启动时执行的程序的所有目录设置许可权限
[root]# chmod -R 700 /etc/rc.d/init.d/*
这样便仅有root可以读、写或执行上述所有脚本文件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP