BIOS安全

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

  LILO安全

  在“/etc/lilo.conf”文件中添加3个参数:time-out、restricted 和 password。这些选项会在启动时间(如“linux single”)转到启动转载程序过程中,要求提供密码。

  步骤1

  编辑lilo.conf文件(/etc/lilo.conf),添加和更改这三个选项:

  QUOTE:

  boot=/dev/hda

  map=/boot/map

  install=/boot/boot.b

  time-out=00 #change this line to 00

  prompt

  Default=linux

  restricted #add this line

  password= #add this line and put your password

  image=/boot/vmlinuz-2.2.14-12

  label=linux

  initrd=/boot/initrd-2.2.14-12.img

  root=/dev/hda6

  read-only

  步骤2

  由于其中的密码未加密,“/etc/lilo.conf”文件只对根用户为可读。

  [root@kapil /]# chmod 600 /etc/lilo.conf (不再为全局可读)

  步骤3

  作了上述修改后,更新配置文件“/etc/lilo.conf”。

  [Root@kapil /]# /sbin/lilo -v (更新lilo.conf文件)

  步骤4

  还有一个方法使“/etc/lilo.conf”更安全,那就是用chattr命令将其设为不可改:

  [root@kapil /]# chattr i /etc/lilo.conf

  它将阻止任何对“lilo.conf”文件的更改,无论是否故意。

  关于lilo安全的更多信息,请参考LILO。

  禁用所有专门帐号

  在lp, sync, shutdown, halt, news, uucp, operator, games, gopher等系统中,将你不使用的所有默认用户帐号和群组帐号删除。

  要删除用户帐号:

  [root@kapil /]# userdel LP

  要删除群组帐号:

  [root@kapil /]# groupdel LP

  选择恰当的密码

  选择密码时要遵循如下原则:

  密码长度:安装Linux系统时默认的最短密码长度为5个字符。这个长度还不够,应该增为8个。要改为8个字符,必须编辑 login.defs 文件(/etc/login.defs):

  PASS_MIN_LEN 5

  改为:

  PASS_MIN_LEN 8

  “login.defs”是登录程序的配置文件。

  启用盲区密码支持

  请启用盲区密码功能。要实现这一点,使用“/usr/sbin/authconfig”实用程序。如果想把系统中现有的密码和群组改为盲区密码和群组,则分别用 pwconv 和 grpconv 命令。

/////////////2///////////////////

根帐户

  在UNIX系统中,根帐户具有最高权限。如果系统管理员在离开系统时忘了从根系统注销,系统应该能够自动从shell中注销。那么,你就需要设置一个特殊的
Linux 变量“TMOUT”,用以设定时间。

  编辑“/etc/profile”文件在

  "HISTFILESIZE="

  之后添加:

  TMOUT=3600

  为“TMOUT=”输入的值代表1小时的妙数(60 * 60 = 3600妙)。

  在“/etc/profile”文件中加了这一行后,任何用户使用该系统时有1小时的休止状态,将自动执行注销操作。而如果用户要对该变量进行分别设定,可以在“.bashrc”文件中定义自动注销的时间。

  修改了该参数后,必须退出并重新登录(为根帐户),更改才能生效。

  禁止普通用户对控制台的所有访问

  应该禁止服务器上的普通用户对关闭、重启、挂起等控制台级别程序的访问。运行如下命令:

  [root@kapil /]# rm -f /etc/security/console.apps其中为禁止访问的程序名称。

  禁用
& 卸载所有不使用的服务

  对所有不使用的服务,应该禁用并卸载,这样可以少些麻烦。查看“/etc/inetd.conf”文件,在不需要的项目行前加“#”号,即改为注释语句,就可以禁用它们了。然后给
inetd 过程发送一个 SIGHUP 命令,对“inetd.conf”文件进行更新。步骤如下:

  步骤1

  将“/etc/inetd.conf”文件许可改为600,使其只对根用户为可读写。

  [Root@kapil /]# chmod 600 /etc/inetd.conf

  步骤2

  确保“/etc/inetd.conf”文件的所有者为根用户。

  步骤3

  编辑
inetd.conf 文件(/etc/inetd.conf),禁用如下服务:

  ftp、telnet、shell、login、exec、talk、ntalk、imap、pop-2、pop-3、finger、auth,等等。

  如果不打算用,禁用了这些服务可以减少风险。

  步骤4

  给
inetd 过程发送HUP信号:

  [root@kapil /]# killall -HUP inetd

  步骤5

  将“/etc/inetd.conf”文件设为不可更改,chattr 命令可以使任何人都无法对其进行修改:

  [root@kapil /]# chattr i /etc/inetd.conf

  唯一可以设置或清除该属性的用户只有根用户。要修改inetd.conf文件,必须去掉不可更改标记:

  [root@kapil /]# chattr -i /etc/inetd.conf

///////////////////////3//////////////////////

TCP_WRAPPERS

  通过
TCP_WRAPPERS,可以使服务器更好地抵制外部侵入。最好的办法是拒绝所有主机:在“/etc/hosts.deny”文件中加入“ALL:&nbspALL@ALL,
PARANOID”,然后在“/etc/hosts.allow”列出允许访问的主机。TCP_WRAPPERS
受控于两个文件,搜索时停在第一个匹配的地方。

  /etc/hosts.allow

  /etc/hosts.deny

  步骤1

  编辑
hosts.deny 文件(/etc/hosts.deny),加入如下行:

  #
Deny access to everyone.

  ALL:&nbspALL@ALL, PARANOID

  语句的意思是,除非在 allow 文件中说明允许访问,所有服务、所有主机都被拒绝。

  步骤2

  编辑
hosts.allow 文件(/etc/hosts.allow),例如在文件中添加如下行:

  ftp:
202.54.15.99 foo.com

  对于你的客户机来说:202.54.15.99为IP地址,foo.com为允许使用ftp的一个客户机。

  步骤3

  tcpdchk 程序是tcpd wrapper配置的检查程序。它对tcpd
wrapper的配置进行检查,并报告所发现的潜在的和实际存在的问题。配置完成后,运行tcpdchk 程序:

  [Root@kapil /]# tcpdchk

  不要显示系统发行文件

  当别人远程登录时,不应该显示系统发行文件。做法是在“/etc/inetd.conf”文件中更改telnet选项:

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

  改为:

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

  在末尾加“-h”标记使后台程序不显示任何系统信息,而只给用户提供一个 login: 提示符。

  更改“/etc/host.conf”文件

  “/etc/host.conf”文件用来指定如何解析名称的方法。编辑 host.conf
文件(/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解析主机名称,然后解析主机文件。multi
选项用于确定“/etc/hosts”文件中的主机是否有多个IP地址(多接口以太网)。

  nospoof 选项指明该机器不允许假信息。

  为“/etc/services”文件免疫

  必须为“/etc/services”文件进行磁盘免疫,以避免对文件未经授权的删除或添加。使用如下命令:

  [root@kapil /]# chattr i /etc/services

  不接受从不同控制台的根用户登录

  “/etc/securetty”文件可以指定“root”用户允许从哪个TTY设备登录。编辑“/etc/securetty”文件,在不需要的tty前面加“#”,禁用这些设备。

///////////////4///////////////////

禁止任何人使用su命令

  su命令(Substitute
User,替代用户)可以使你成为系统的现有用户。如果不希望别人使用su进入根帐户,或者对某些用户限制使用“su”命令,则在“/etc/pam.d/”目录的“su”配置文件顶部加上下文中给出的两行代码。

  编辑su文件(/etc/pam.d/su),在文件顶部添加如下两行:

  auth
sufficient /lib/security/pam_rootok.so debug

  auth
required /lib/security/Pam_wheel.so group=wheel

  意思是,只有“wheel”组的成员可以用su命令;其中还包括了日志。你可以在wheel组中添加允许使用该命令的用户。

  shell日志

  shell可存储500个旧命令在“~/.bash_history”文件中(其中“~/”代表主目录),这样可以便于重复前面的长命令。系统中的每个帐号用户在各自的主目录中都有这个“.bash_history”文件。为安全起见,应使shell存储较少的命令,并在注销用户时将其删除。

  步骤1

  “/etc/profile”文件中的 HISTFILESIZE 和 HISTSIZE
行决定了系统中所有用户的“.bash_history”文件可容纳的旧命令个数。建议将“/etc/profile”文件中的
HISTFILESIZE 和 HISTSIZE 设为比较小的数,比如30。

  编辑
profile 文件(/etc/profile),并更改:

  HISTFILESIZE=30

  HISTSIZE=30

  步骤2

  系统管理员还应在“/etc/skel/.bash_logout”文件中加进“rm -f
$HOME/.bash_history”行,这样就可以在每次用户退出时删除“.bash_history”文件。

  编辑
.bash_logout 文件(/etc/skel/.bash_logout),并添加如下行:

  rm
-f $HOME/.bash_history

  禁用
Control-Alt-Delete 键盘关机命令

  只要在该行前面加“#”,改为注释行。在“/etc/inittab”文件中找到:

  ca::ctrlaltdel:/sbin/shutdown -t3 -r now

  改为:

  #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

  然后,为使更改生效,在提示符下输入:

  [root@kapil /]# /sbin/init q

  修正脚本文件在“/etc/rc.d/init.d”目录下的权限

  对脚本文件的权限进行修正,脚本文件用以决定启动时需要运行的所有正常过程的开启和停止。添加:

  [root@kapil/]# chmod -R 700 /etc/rc.d/init.d/*

  这句指的是,只有根用户允许在该目录下使用 Read、Write,和 Execute 脚本文件。

  隐藏系统信息

  默认情况下,当用户登录到 Linux 中时,会显示 Linux
发行名称、版本、内核版本,以及服务器名称。这些已经足够让黑客获取服务器的信息了。正确的做法是只为用户显示“Login:
”提示符。

  步骤1

  编辑“/etc/rc.d/rc.local” 文件,并将“#”标在下列行的前面:

  QUOTE:

  #
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”文件:

  [root@kapil /]# rm -f /etc/issue

  [root@kapil /]# rm -f /etc/issue.net

  禁用通常不用的 SUID/SGID 程序

  如果设为
SUID 根用户,普通用户也可以作为根用户运行程序。系统管理员应该减少 SUID/GUID
程序的使用,并禁用那些不需要的程序。

  步骤1

  要从根用户的程序中搜索所有包含“s”字符的文件,使用命令:

  [root@kapil]# find / -type f ( -perm -04000 -o -perm -02000 )
-exec ls -lg {} ;

  要在搜索到的程序中禁用 suid 程序,键入如下命令:

  [root@kapil /]# chmod a-s [program]

  按照上述的一些安全指南,系统管理员就可以达到基本的系统安全要求。上述的一些操作是一个连续的过程。系统管理员必须保持它们的连续性,才能使系统真正安全。

让你的linux操作系统更加安全【转】的更多相关文章

  1. Linux操作系统备份之三:通过二进制拷贝(dd)方式实现Linux操作系统数据的备份

    前面有两篇文章,<Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份>和<Linux操作系统备份之二:通过tar拷贝分区实现Linux操作数据的在线备份& ...

  2. Linux操作系统备份之二:通过tar拷贝分区实现Linux操作数据的在线备份

    http://www.tektea.com/archives/2163.html. 在<Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份>文章中,我们介绍了使 ...

  3. 安装linux操作系统

    安装双操作系统; 1 0. 介绍: 1 1 实验环境: 2 2. 实验准备: 2 3.开始安装: 2 1 制作U盘启动工具: 2 2.安装LinuxOS. 3 2.1在windowOS中划分60G空间 ...

  4. 在Linux操作系统下备份恢复技术的应用 转自https://yq.aliyun.com/articles/50205?spm=5176.100239.blogcont24250.9.CfBYE9

    摘要: 安全防护:在Linux操作系统下备份恢复技术的应用  原文参见:http://linux.chinaunix.net/techdoc/system/2005/12/19/925898.shtm ...

  5. 献给初学者:谈谈如何学习Linux操作系统

    本文出自 “技术成就梦想” 博客,请务必保留此出处http://ixdba.blog.51cto.com/2895551/569329. 为了能把这篇不错的文章分享给大家.所以请允许我暂时用原创的形式 ...

  6. Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份

    这里我们讨论Linux操作系统的备份. 在生产环境,客户都会要求做全系统的数据备份,用于系统崩溃后的一种恢复手段.这其中就包含操作系统数据的备份恢复. 由于是生产环境,客户都会要求备份不中断业务,也就 ...

  7. 安装Kali Linux操作系统Kali Linux无线网络渗透

    安装Kali Linux操作系统Kali Linux无线网络渗透 Kali Linux是一个基于Debian的Linux发行版,它的前身是BackTrack Linux发行版.在该操作系统中,自带了大 ...

  8. 使用 /proc 文件系统来访问 linux操作系统 内核的内容 && 虚拟文件系统vfs及proc详解

    http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/201304 ...

  9. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  10. Linux操作系统基础(四)保护模式内存管理(2)【转】

    转自:http://blog.csdn.net/rosetta/article/details/8570681 Linux操作系统基础(四)保护模式内存管理(2) 转载请注明出处:http://blo ...

随机推荐

  1. 把int放在一个char数组里(用于处理每一位数字)

    sprintf(): #include <stdio.h> void put_int_with_space(int v) {     char str[50];    //定义一个足够大的 ...

  2. Random类和ThreadLocalRandom类

    Random类和ThreadLocalRandom类 Random类用于生成一个伪随机数,他有两个构造方法:一个构造方法使用默认的种子(以当前时间作为种子),另一个构造方法需要显示传入一个long型整 ...

  3. H5网站借鉴

    http://www.rdinfo.com.cn/index.shtml http://www.winployee.com/ http://www.lkkdesign.com/ http://www. ...

  4. 【leetcode❤python】387. First Unique Character in a String

    #-*- coding: UTF-8 -*- class Solution(object):    def firstUniqChar(self, s):        s=s.lower()     ...

  5. Utility

    #region Tools public static string ForMatDateTime(DateTime dt, string formatStr) { return string.For ...

  6. PHP clone

    PHP  clone     定义一个电视类 class Tv{public $width=100;public function setWidth($v){$this->width = $v; ...

  7. Checking For User Permissions Before Updating or Inserting The Records in Oracle Forms

    Suppose you want to check the user permissions on inserting or updating the records in Oracle Forms, ...

  8. [SAP ABAP开发技术总结]搜索帮助Search Help (F4)

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. linux的计划任务crontab

    crontab(全称cron table计划任务列表)是一个用于周期性被执行的任的工具. 相关指令: usage: crontab [-u user] file   crontab [ -u user ...

  10. 检测服务器IP端口是否可用

    private static double Scanner(string ip, int port) { try { System.Net.Sockets.TcpClient Tcp = new Sy ...