发新话题
打印

[原创]对linux安全设置中需要注意和掌握的地方

[原创]对linux安全设置中需要注意和掌握的地方

文章作者:火焰 [E.S.T VIP]
信息来源:邪恶八进制安全小组


服务器的安全 (防范于未然 比入侵后再修补漏洞要好的多 一旦遭到入侵以后 当你发现你的水平在黑客的水平之下并且找不到 他攻击的路径和方法的话 最好重装系统 并且更新你软件的版本为最新的)

需要注意的地方:

1.使用 复杂的口令( 都是废话 但是却是 非常关键的 很多资料都谈到了 我也不必再重复)

2.摒弃不安全的连接方式 : telnet 以及 ftp 都是不安全的连接方式 ( 尽量采用 ssh 和sftp 等等加密的通讯方式  防止通讯数据被人嗅探或者截获)

4.对一些关键的 切换命令 比如 su mount ..等等 要严加控制 其使用权限 (su 需要指定专门的用户才可以使用 防止暴力破解 mount 防止 有人通过远程挂载 一些 目录 上面suid 和sgid 的 程序 用于入侵或者攻击)

5.经常的更新 和升级软件的版本 ( 但是注意 盲目的升级软件版本 很可能会造成新的软件 运行不正常)redhat 有可以从 redhat network 获得 更新的功能 使用 up2date 就可以更新系统的各类服务的数据包


6.sudo 的设置 ( 这个工具是授权 非root用户 运行root 用户的一些命令)



7.suid 和sgid 位的设置 ( 这个的危害 恐怕是非常严重的 )


8.各种服务配置文件的设置 (卸载 自己没有开设的服务的数据包 不要保留 )


9.为了防止dns欺骗 要对的设置 进行修改 必须 让服务器 进行反相解析 并且要 设置为 先从 外部dns服务器上获得数据 不要 设置为 直接读取自己机子的缓存信息

10.最好可以使用 vpn 来替代 利用外部网络直接连接 远程服务器

11. hosts.deny hosts.allow 文件 阻挡 非授权用户访问系统服务


12.iptables 防火墙设置 (这里需要严格设置 并且要设置 关键文件的权限 同时在这里 在保证安全的前提下尽量少的 规则可以提高效率和处理速度 对出口数据同样要严格控制 防止反相连接 或者成为别人dos 攻击的发源
地 !)

13.at 计划任务的 检查 (包括at.deny at.allow 文件的检查) 这里强调一下 很多服务都有这样地后缀名为 deny allow文件 设置不当 就会给人以可乘之机 所以前面说的 对服务设置地了较 同样非常重要)


14.cron 设置  检查 定期运行的 列表里 有什么不妥当的 shell

15.系统在分区过程中 最好能够 把一些目录分开 如果有多的硬盘 最好把/home 和 应用程序的目录分在各自单独的硬盘上 并且做好 用户的磁盘配额 来防止 入侵后对系统进行 恶意的写数据 破坏硬盘的数据 最大限度上保证数据的安全

16.做好 raid  磁盘列阵 来防止硬盘的损坏 (安全不仅仅 指的是 系统的安全还 包括数据的安全和通讯的安全)


17.文件的文件完整性检查 工具 tripwire 用来检查文件的 完整性 ( 所以强烈建议 linux 系统的管理员在工作过程中  做好工作笔记 记录在对系统设置修改中 更改的设置) 完整性检查的数据不要保存到这台主机的硬盘上 最好使用移动介质(cdrom 或者移动硬盘)

18.检查一些容易被黑客替换的命令文件 ls mount netstat lsof top .....  并且要备份一套 完整的没有做过修改的系统检查文件的 备份 (防止 这些检查工具被 木马话或者被替换 )

19.最好 使用 chattr 命令 给写文件加上 一些属性 比如 +i 这样可以防止任意更改文件(虽然不能阻止 获得root 用户的黑客修改参数 但是对 防范脚本攻击却非常有效 可以避免软件本身有漏洞 造成被人修改 至少可以延缓 别人的攻击速度 对方停留在系统的时间越长 留下的日志也就越多还有专门的工具 可以增强这个功能 设置后甚至于root 用户都无权修改)

20.备份文件 这样可以在出现问题的时候快速恢复数据

21.syslogd 日志  最好设置一个远程日志服务器来保存日志 (这样在黑客攻破主机后 为了擦除 日志记录 就必须攻击
日志服务器 并且日志服务器上有可能只有开启日志的服务 从而为入侵增加了难度 争取了 大量的时间)
在这里 还要说明一点 一旦root 用户被攻破 黑客很容易从syslog-ng的配置文件中 发现日志文件发送的目标
(就是远程的日志服务器地址) 黑客可能无法攻破日志主机但是 很有可能发动 dos 攻击导致日志主机崩溃无法记录
黑客在后面 所做的操作 这样会对通过日志文件找出他攻击的方法 造成很大的难度
所以 为了能够欺骗 黑客 可以 设置日志发送到内部网络中的假的或者不存在的目标 同时在网络中 设置一个秘密
的日志主机 通过一种软件 passlogd 把秘密的日志服务器的网卡设置成为混和模式 来记录网络中传送的所有日志
(passlogd 是一种日志嗅探工具)
如果是使用交换机 可以在交换机上设置对这个秘密日志服务器的某一个端口转发所有的数据包

所以建议: 同时设置2个日志服务器 一个秘密 一个为公开 这样 可以对黑客的攻击日志服务器 起到很好的作用

由于日志文件是以明文传输的 容易被人截获 所以需要以加密的方式来传递日志信息 可以使用stunnel 来加密数据

(stunnel 在安全焦点有下载) 但是由于加密了 就会导致passlogd 嗅探工具失效 所以这需要自己平衡



22.logsentry 日志监视工具  这个是用来在发现 监视工具中设置的一些敏感的 日志可以 尽快 发到 管理员手上


23.protsentry 端口卫兵监视工具 这个可以设置一些端口 来反正 黑客对系统的踩点(扫描) 这工具还可以设置 一些被扫描后 运行什么脚本的功能 所以功能强大  如果可以设置的好 可以非常有效的防止 黑客对系统的扫描

上面强调的都是从 网络上攻击的防范方法:

其实物理的安全同样重要 要是人家 拿走了你的硬盘 恐怕你的设置再安全也是 于事无补

24.同时对  bios 设置和 给grub 加密 还有 对自己离开主机是 锁定 系统都是非常必要的 ( 可以防止 别人通过
物理接触来攻破系统)

25.上面的做的再好  没有管理员的责任心 敬业精神 警惕心 和上进心 (每天需要对日志 和关键信息的 查阅 应该是管理
员的必修课 同时需要不断的学习 增强自己的技术水平) 再强的硬件和环境 都是一堆摆设 只会 成为黑客谈论的
笑柄  说白了 安全在于人为 不要怪罪于软件和硬件 本身 !!

                      -------------------------引用黑客常说的一句话; 没有入侵不了的系统
我加上一句 :但是事在人为 肯定会有打败不了的管理员

最后忠告大家 当发现自己被某个 ip入侵 请不要采取极端的恶意攻击活动 最好 发信件告知 (因为攻击主机很可能
是 黑客的跳板) 采取恶意攻击 搞不好会把自己 搞进监狱

由于我并不是一个 非常了解入侵 的一个菜鸟 上面的有些知识点 有出入 希望大家给予添加和指导
我是中国人, 我热爱自己的祖国 .我愿意为我的祖国付出一切, 包括自己的生命!

TOP

以下内容不属原创.管理就不用加分了(这样压力很大)
  只是觉的对楼上的文章是个具体的补充.很抱歉作者不祥.如果作者问罪.可以发贴给我臭骂.
与该论坛无关!
    本文讲述了如何通过基本的安全措施,使你的linux系统变得可靠。
1、Bios Security
一定要给Bios设置密码,以防通过在Bios中改变启动顺序,而可以从软盘启动。这样可以阻止别人试图用特殊的启动盘启动你的系统,还可以阻止别人进入Bios改动其中的设置(比如允许通过软盘启动等)。(感觉用处不大.如果你是管理)
2、LILO Security
在“/etc/lilo.conf”文件中加入下面三个参数:time-out,restricted,password。这三个参数可以使你的系统在启动lilo时就要求密码验证。
第一步:
编辑lilo.conf文件(vi /etc/lilo.comf),假如或改变这三个参数:
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
第二步:
因为"/etc/lilo.conf"文件中包含明文密码,所以要把它设置为root权限读取。
[root@kapil /]# chmod 600 /etc/lilo.conf
第三步:
更新系统,以便对“/etc/lilo.conf”文件做的修改起作用。
[Root@kapil /]# /sbin/lilo -v
第四步:
使用“chattr”命令使"/etc/lilo.conf"文件变为不可改变。
[root@kapil /]# chattr +i /etc/lilo.conf
这样可以防止对“/etc/lilo.conf”任何改变(意外或其他原因)
(权限设置这块比较重要.个人感觉.其他的安装时候就完成了)
3、删除所有的特殊账户
你应该删除所有不用的缺省用户和组账户(比如lp, sync, shutdown, halt, news, uucp, operator, games, gopher等)。
删除用户:
[root@kapil /]# userdel LP
删除组:
[root@kapil /]# groupdel LP

4、选择正确的密码
在选择正确密码之前还应作以下修改:
修改密码长度:在你安装linux时默认的密码长度是5个字节。但这并不够,要把它设为8。修改最短密码长度需要编辑login.defs文件(vi /etc/login.defs),把下面这行
PASS_MIN_LEN 5
改为
PASS_MIN_LEN 8
login.defs文件是login程序的配置文件。
5、打开密码的shadow支持功能:
你应该打开密码的shadow功能,来对password加密。使用“/usr/sbin/authconfig” 工具打开shadow功能。如果你想把已有的密码和组转变为shadow格式,可以分别使用 “pwcov,grpconv”命令。
(郁闷ING.好多版本默认就这样啦)
6、root账户
在unix系统中root账户是具有最高特权的。如果系统管理员在离开系统之前忘记注销 root账户,系统会自动注销。通过修改账户中“TMOUT”参数,可以实现此功能。TMOUT按秒计算。编辑你的profile文件(vi /etc/profile),在"HISTFILESIZE="后面加入下面这行:
TMOUT=3600
3600,表示60*60=3600秒,也就是1小时。这样,如果系统中登陆的用户在一个小时内都没有动作,那么系统会自动注销这个账户。你可以在个别用户的“.bashrc”文件中添加该值,以便系统对该用户实行特殊的自动注销时间。
改变这项设置后,必须先注销用户,再用该用户登陆才能激活这个功能。
(有点臭屁)
7、取消普通用户的控制台访问权限
你应该取消普通用户的控制台访问权限,比如shutdown、reboot、halt等命令。
[root@kapil /]# rm -f /etc/security/console.apps/<servicename>
<servicename>是你要注销的程序名。
(加精,Linux这点还是很强大.windows要实现这些还要拜托组策略)
8、取消并反安装所有不用的服务
取消并反安装所有不用的服务,这样你的担心就会少很多。察看“/etc/inetd.conf” 文件,通过注释取消所有你不需要的服务(在该服务项目之前加一个“#”)。然后用 “sighup”命令升级“inetd.conf”文件。
第一步:
更改“/etc/inetd.conf”权限为600,只允许root来读写该文件。
[Root@kapil /]# chmod 600 /etc/inetd.conf
第二步:
确定“/etc/inetd.conf”文件所有者为root。
第三步:
编辑 /etc/inetd.conf文件(vi /etc/inetd.conf),取消下列服务(你不需要的): ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth 等等。把不需要的服务关闭可以使系统的危险性降低很多。
第四步:
给inetd进程发送一个HUP信号:
[root@kapil /]# killall -HUP inetd
第五步:
用chattr命令把/ec/inetd.conf文件设为不可修改,这样就没人可以修改它:
[root@kapil /]# chattr +i /etc/inetd.conf
这样可以防止对inetd.conf的任何修改(以外或其他原因)。唯一可以取消这个属性的人只有root。如果要修改inetd.conf文件,首先要是取消不可修改性质:
[root@kapil /]# chattr -i /etc/inetd.conf
别忘了该后再把它的性质改为不可修改的。
(常用)
9、TCP_WRAPPERS
使用TCP_WRAPPERS可以使你的系统安全面对外部入侵。最好的策略就是阻止所有的主机(在"/etc/hosts.deny" 文件中加入"ALL: ALL@ALL, PARANOID" ),然后再在 "/etc/hosts.allow" 文件中加入所有允许访问的主机列表。
第一步:
编辑hosts.deny文件(vi /etc/hosts.deny),加入下面这行
# Deny access to everyone.
ALL: ALL@ALL, PARANOID
这表明除非该地址包好在允许访问的主机列表中,否则阻塞所有的服务和地址。
第二步:
编辑hosts.allow文件(vi /etc/hosts.allow),加入允许访问的主机列表,比如:
ftp: 202.54.15.99 foo.com
202.54.15.99和 foo.com是允许访问ftp服务的ip地址和主机名称。
第三步:
tcpdchk程序是tepd wrapper设置检查程序。它用来检查你的tcp wrapper设置,并报告发现的潜在的和真实的问题。设置完后,运行下面这个命令:
[Root@kapil /]# tcpdchk
(说变态都是夸它)
10、禁止系统信息暴露
当有人远程登陆时,禁止显示系统欢迎信息。你可以通过修改“/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:提示,而不显示系统欢迎信息。
(呵呵.怎么说呢.对付我可能还可以.对付论坛里的高手嘛.~~~汗啊)
11、修改“/etc/host.conf”文件
“/etc/host.conf”说明了如何解析地址。编辑“/etc/host.conf”文件(vi /etc/host.conf),加入下面这行:
# Lookup names via DNS first then fall back to /etc/hosts.
order bind,hosts
# We have machines with multiple IP addresses.
multi on
# Check for IP address spoofing.
nospoof on
第一项设置首先通过DNS解析IP地址,然后通过hosts文件解析。第二项设置检测是否 “/etc/hosts”文件中的主机是否拥有多个IP地址(比如有多个以太口网卡)。第三项设置说明要注意对本机未经许可的电子欺骗。
(没玩过)
12、使“/etc/services”文件免疫
使“/etc/services”文件免疫,防止未经许可的删除或添加服务:
[root@kapil /]# chattr +i /etc/services
(对付马儿的.不提了)
13、不允许从不同的控制台进行root登陆
"/etc/securetty"文件允许你定义root用户可以从那个TTY设备登陆。你可以编辑 "/etc/securetty"文件,在不需要登陆的TTY设备前添加“#”标志,来禁止从该TTY设备进行root登陆。
14、禁止任何人通过su命令改变为root用户
su(Substitute User替代用户)命令允许你成为系统中其他已存在的用户。如果你不希望任何人通过su命令改变为root用户或对某些用户限制使用su命令,你可以在su 配置文件(在"/etc/pam.d/"目录下)的开头添加下面两行:
编辑su文件(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用户。
(好主意)
15、Shell logging
Bash shell在“~/.bash_history”(“~/”表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件。bash shell应该保存少量的命令,并且在每次用户注销时都把这些历史命令删除。
第一步:
“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行确定所有用户的 “.bash_history”文件中可以保存的旧命令条数。强烈建议把把“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行的值设为一个较小的数,比如30。编辑profile 文件(vi /etc/profile),把下面这行改为:
HISTFILESIZE=30
HISTSIZE=30
这表示每个用户的“.bash_history”文件只可以保存30条旧命令。
第二步:
网管还应该在"/etc/skel/.bash_logout" 文件中添加下面这行 "rm -f $HOME/.bash_history" 。这样,当用户每次注销时,“.bash_history”文件都会被删除。
编辑.bash_logout文件(vi /etc/skel/.bash_logout) ,添加下面这行:
rm -f $HOME/.bash_history
(以前只图方便.可是没考虑到这点)
16、禁止Control-Alt-Delete 键盘关闭命令
在"/etc/inittab" 文件中注释掉下面这行(使用#):
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
改为:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
为了使这项改动起作用,输入下面这个命令:
[root@kapil /]# /sbin/init q
17、给"/etc/rc.d/init.d" 下script文件设置权限
给执行或关闭启动时执行的程序的script文件设置权限。
[root@kapil/]# chmod -R 700 /etc/rc.d/init.d/*
这表示只有root才允许读、写、执行该目录下的script文件。
(屡试不爽)
18、隐藏系统信息
在缺省情况下,当你登陆到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
第二步:
删除"/etc"目录下的“isue.net”和"issue"文件:
[root@kapil /]# rm -f /etc/issue
[root@kapil /]# rm -f /etc/issue.net
(方法还有N多)
19、禁止不使用的SUID/SGID程序
如果一个程序被设置成了SUID root,那么普通用户就可以以root身份来运行这个程序。网管应尽可能少使用SUID/SGID 程序,禁止所有不必要的SUID/SGID程序。
查找root-owned程序中使用&#39;s&#39;位的程序:
[root@kapil]# find / -type f ( -perm -04000 -o -perm -02000 ) -exec ls -lg {} ;
用下面命令禁止选中的带有&#39;s&#39;位的程序:
[root@kapil /]# chmod a-s [program]
根据上面这些安全指导方针设置后,系统管理员就会拥有一个基本安全的系统。上面这些工作有些是个持续的过程,网管要不断进行这些工作,以保持系统的安全性。
    如果有部分让作者感觉不适.鞠躬~~~~
黑夜给了我黑色的眼睛   我却用它来寻找光明

TOP

发新话题