快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

Red Hat Linux 安全设置方法

  Red Hat Linux 安全设置方法系统配置方案

  网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。

  网络安全从其本质上来讲就是网络上的信息安全。从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。

  1,最小化安全系统,删除不必要的软件,关闭不必要的服务.

  # ntsysv

  以下仅列出需要启动的服务,未列出的服务一律推荐关闭,必要运行的服务再逐个打开.

  atd

  crond

  irqbalance

  microcode_ctl

  network

  sshd

  syslog

  2,删除finger程序,具体方法如下

  #rpm –e finger

  3,BOIS安全设置

  4,帐号安全设置

  修改/etc/login.def文件

  PASS_MAX_DAYS 120 ?设置密码过期日期

  PASS_MIN_DAYS 0 ?设置密码最少更改日期

  PASS_MIN_LEN 10 ?设置密码最小长度

  PASS_WARN_AGE 7 ?设置过期提前警告天数

  确保/etc/shadow为root只读

  确保/etc/passwd为root读写

  定期用密码工具检测用户密码强度

  5, /etc/exports

  如果通过NFS把文件共享出来,那么一定要配置”/etc/exports”文件,使得访问限制尽可能的严格.这就是说,不要使用通配符,不允许对根目录有写权限,而且尽可能的只给读权限.在/etc/exports文件加入:

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

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

  建议最好不要使用NFS.

  6,inetd.conf或xinetd.conf

  如果是inetd.conf建议注释掉所有的r开头的程序,exec等

  7,TCP_Wrappers

  在/etc/hosts.allow中加入允许的服务,在/etc/hosts.deny里加入这么一行ALL:ALL

  8,/etc/aliases文件

  Aliases文件如果管理错误或管理粗心就会造成安全隐患.把定义”decode”这个别名的行从aliases文件中删除.

  编辑aliases,删除或注释下面这些行:

  #games: root

  #ingres: root

  #system: root

  #toor: root

  #uucp: root

  #manager: root

  #dumper: root

  #operator: root

  #decode: root

  运行/usr/bin/nesaliases重新加载.

  9,防止sendmail被没有授权的用户滥用

  编辑sendmail.cf

  把PrivacyOptions=authwarnings

  改为PrivacyOptions=authwarnings,noexpn,novrfy

  10,不响应ping

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

  11,使TCP SYN Cookie保护生效

  Echo 1 > /proc/sys/net/ipv4/tcp_syncookies

  12,删除不必要的用户和组用户

  删除的用户,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等

  删除的组,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等

  可以设置不可更改位

  chattr +i /etc/passwd

  chattr +i /etc/shadow

  chattr +i /etc/group

  chattr +i /etc/gshadow

  13,防止任何人都可以用su命令成为root

  编辑su文件(vi /etc/pam.d/su),加入如下两行

  auth sufficient /lib/security/pam_rootok.so debug

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

  把能su为root的用户加入wheel组

  usermod -G10 username

  14,使Control+Alt+Delete关机键无效

  编辑inittab文件,注释掉

  Ca:ctrlaltdel:/sbin/shutdown –t3 –r now

  运行/sbin/init q 使设置生效

  15,创建所有重要的日志文件的硬拷贝

  如果服务器比较重要,可以考虑把ssh,mail,引导信息等打印出来.在/etc/syslog.conf文件中加入一行.:

  Authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0

  执行/etc/rc.d/init.d/syslog restart

  或者把日志发送到其它服务器保存

  如

  authpriv.* /var/log/secure

  要把它发送到192.168.0.2,就可以这样修改

  authpriv.* @192.168.0.2 /var/log/secure

  16,改变/etc/rc.d/init.d目录下的脚本文件的访问许可

  chmod –R 700 /etc/rc.d/init.d/*

  注意:慎重修改此安全设置

  17,/etc/rc.d/rc.local

  把此文件中无关的信息全部注释,不让任何人看到任何有关主机的信息.

  删除/etc下的issue和issue.net

  18,带S位的程序

  可以清除s位的程序包括但不限于:

  从来不用的程序;

  不希望非root用户运行的程序;

  偶尔用用,但是不介意先用su命令变为root后再运行.

  find / -type f \( -perm 04000 –o –perm -02000 \) -print

  chmod a-s 程序名

  19,查看系统隐藏文件

  find / -name “.*” –print

  20,查找任何人都有写权限的文件和目录

  find / -type f \( -perm -2 -o perm -20 \) ls

  find / -type f \( -perm -2 –o –perm -20 \) ls

  21,查找系统中没有主人的文件

  find / -nouser –o –nogroup

  22,查找.rhosts文件

  find /home -name “.rhosts”

  如果有,请删除它.

  23,收回系统编译器的权限或删除

  如: chmod 700 /usr/bin/gcc

  一、磁盘分区

  1、如果是新安装系统,对磁盘分区应考虑安全性:

  1)根目录(/)、用户目录(/home)、临时目录(/tmp)和/var目录应分开到不同的磁盘分区;

  2)以上各目录所在分区的磁盘空间大小应充分考虑,避免因某些原因造成分区空间用完而导致系统崩溃;

  2、对于/tmp和/var目录所在分区,大多数情况下不需要有suid属性的程序,所以应为这些分区添加nosuid属性;

  方法一:修改/etc/fstab文件,添加nosuid属性字。例如:

  /dev/hda2 /tmp ext2 exec,dev,nosuid,rw 0 0

  方法二:如果对/etc/fstab文件操作不熟,建议通过Linuxconf程序来修改。

  运行linuxconf程序;

  选择”File systems”下的”Access local drive”;

  选择需要修改属性的磁盘分区;

  选择”No setuid programs allowed”选项;

  根据需要选择其它可选项;

  正常退出。(一般会提示重新mount该分区)

  二、安装

  1、对于非测试主机,不应安装过多的软件包。这样可以降低因软件包而导致出现安全漏洞的可能性。

  2、对于非测试主机,在选择主机启动服务时不应选择非必需的服务。例如routed、ypbind等。

  三、安全配置与增强

  内核升级。起码要升级至2.2.16以上版本。

  GNU libc共享库升级。(警告:如果没有经验,不可轻易尝试。可暂缓。)

  关闭危险的网络服务。echo、chargen、shell、login、finger、NFS、RPC等

  关闭非必需的网络服务。talk、ntalk、pop-2等

  常见网络服务安全配置与升级

  确保网络服务所使用版本为当前最新和最安全的版本。

  取消匿名FTP访问

  去除非必需的suid程序

  使用tcpwrapper

  使用ipchains防火墙

  日志系统syslogd

  一些细节:

  1.操作系统内部的log file是检测是否有网络入侵的重要线索,当然这个假定你的logfile不被侵入者所破坏,如果你有台服务器用专线直接连到Internet上,这意味 着你的IP地址是永久固定的地址,你会发现有很多人对你的系统做telnet/ftp登录尝试,试着运行#more /var/log/secure   grep refused 去检查。

  2. 限制具有SUID权限标志的程序数量,具有该权限标志的程序以root身份运行,是一个潜在的安全漏洞,当然,有些程序是必须要具有该标志的,象passwd程序。

  3.BIOS安全。设置BIOS密码且修改引导次序禁止从软盘启动系统。

  4. 用户口令。用户口令是Linux安全的一个最基本的起点,很多人使用的用户口令就是简单的‘passWord,这等于给侵入者敞开了大门,虽然从理论上说 没有不能确解的用户口令,只要有足够的时间和资源可以利用。比较好的用户口令是那些只有他自己能够容易记得并理解的一串字符,并且绝对不要在任何地方写出 来。

  5./etc/eXPorts 文件。如果你使用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

  6.确信/etc/inetd.conf的所有者是root,且文件权限设置为600 。

  [root@deep]# chmod 600 /etc/inetd.conf

  ENSURE that the owner is root.

  [root@deep]# stat /etc/inetd.conf

  File: “/etc/inetd.conf”

  Size: 2869 Filetype: Regular File

  Mode: (0600/-rw——-) Uid: ( 0/ root) Gid: ( 0/ root)

  Device: 8,6 Inode: 18219 Links: 1

  Access: Wed Sep 22 16:24:16 1999(00000.00:10:44)

  Modify: Mon Sep 20 10:22:44 1999(00002.06:12:16)

  Change:Mon Sep 20 10:22:44 1999(00002.06:12:16)

  编辑/etc/inetd.conf禁止以下服务:

  ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger,

  auth, etc. 除非你真的想用它。

  特别是禁止那些r命令.如果你用ssh/scp,那么你也可以禁止掉telnet/ftp。

  为了使改变生效,运行#killall -HUP inetd

  你也可以运行#chattr +i /etc/inetd.conf使该文件具有不可更改属性。

  只有root才能解开,用命令

  #chattr -i /etc/inetd.conf

  7. TCP_WRAPPERS

  默认地,Redhat Linux允许所有的请求,用TCP_WRAPPERS增强你的站点的安全性是举手

  之劳,你可以放入

  “ALL: ALL”到/etc/hosts.deny中禁止所有的请求,然后放那些明确允许的请求到

  /etc/hosts.allow中,如:

  sshd: 192.168.1.10/255.255.255.0 gate.openarch.com

  对IP地址192.168.1.10和主机名gate.openarch.com,允许通过ssh连接。

  配置完了之后,用tcpdchk检查

  [root@deep]# tcpdchk

  tcpchk是TCP_Wrapper配置检查工具,

  它检查你的tcp wrapper配置并报告所有发现的潜在/存在的问题。

  8. 别名文件aliases

  编辑别名文件/etc/aliases(也可能是/etc/mail/aliases),移走/注释掉下面的行。

  # Basic system aliases — these MUST be present.

  MAILER-DAEMON: postmaster

  postmaster: root

  # General redirections for pseudo accounts.

  bin: root

  daemon: root

  #games: root ?remove or comment out.

  #ingres: root ?remove or comment out.

  nobody: root

  #system: root ?remove or comment out.

  #toor: root ?remove or comment out.

  #uUCp: root ?remove or comment out.

  # Well-known aliases.

  #manager: root ?remove or comment out.

  #dumper: root ?remove or comment out.

  #operator: root ?remove or comment out.

  # trap decode to catch security attacks

  #decode: root

  # Person who should get roots mail

  #root: marc

  最后更新后不要忘记运行/usr/bin/newaliases,使改变生效。

  9.阻止你的系统响应任何从外部/内部来的ping请求。

  既然没有人能ping通你的机器并收到响应,你可以大大增强你的站点的安全性。你可以加下面的一行命令到/etc/rc.d/rc.local,以使每次启动后自动运行。

  echo 1 >; /proc/sys/net/ipv4/icmp_echo_ignore_all

  10. 不要显示出操作系统和版本信息。

  如果你希望某个人远程登录到你的服务器时不要显示操作系统和版本信息,你能改变

  /etc/inetd.conf中的一行象下面这样:

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

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

  11.The /etc/host.conf file

  编辑host.conf文件(vi /etc/host.conf)且加下面的行:

  # Lookup names via DNS first then fall back to /etc/hosts.

  order bind,hosts

  # We dont have machines with multiple IP addresses on the same card

  (like virtual server,IP Aliasing).

  multi off

  # Check for IP address spoofing.

  nospoof on

  IP Spoofing: IP-Spoofing is a security exploit that works by tricking

  computers in a trust relationship that you are someone that you really arent.

  12. The /etc/securetty file

  该文件指定了允许root登录的tty设备,/etc/securetty被/bin/login程序读取,它的

  格式是一行一个被允许的名字列表,如你可以编辑/etc/securetty且注释出下面的行。

  tty1

  #tty2

  #tty3

  #tty4

  #tty5

  #tty6

  #tty7

  #tty8

  意味着root仅仅被允许在tty1终端登录。

  13. 特别的帐号

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

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

  [root@deep]# userdel username

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

  [root@deep]# groupdel username

  在终端上打入下面的命令删掉下面的用户。

  [root@deep]# userdel adm

  [root@deep]# userdel lp

  [root@deep]# userdel sync

  [root@deep]# userdel shutdown

  [root@deep]# userdel halt

  [root@deep]# userdel mail

  如果你不用sendmail服务器,procmail.mailx,就删除这个帐号。

  [root@deep]# userdel news

  [root@deep]# userdel uucp

  [root@deep]# userdel operator

  [root@deep]# userdel games

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

  [root@deep]# userdel gopher

  [root@deep]# userdel ftp

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

  打入下面的命令删除组帐号

  [root@deep]# groupdel adm

  [root@deep]# groupdel lp

  [root@deep]# groupdel mail

  如不用Sendmail服务器,删除这个组帐号

  [root@deep]# groupdel news

  [root@deep]# groupdel uucp

  [root@deep]# groupdel games

  如你不用X Windows,删除这个组帐号

  [root@deep]# groupdel dip

  [root@deep]# groupdel pppusers

  [root@deep]# groupdel popusers

  如果你不用POP服务器,删除这个组帐号

  [root@deep]# groupdel slipusers

  用下面的命令加需要的用户帐号

  [root@deep]# useradd username

  用下面的命令改变用户口令

  [root@deep]# passwd username

  用chattr命令给下面的文件加上不可更改属性。

  [root@deep]# chattr +i /etc/passwd

  [root@deep]# chattr +i /etc/shadow

  [root@deep]# chattr +i /etc/group

  [root@deep]# chattr +i /etc/gshadow

  14. 阻止任何人su作为root.

  如果你不想任何人能够su作为root,你能编辑/etc/pam.d/su加下面的行:

  auth sufficient /lib/security/pam_rootok.so debug

  auth required /lib/security/pam_wheel.so group=isd

  意味着仅仅isd组的用户可以su作为root.

  然后,如果你希望用户admin能su作为root.就运行下面的命令。

  [root@deep]# usermod -G10 admin

  16. 资源限制

  对你的系统上所有的用户设置资源限制可以防止DoS类型攻击(denial of service attacks)

  如最大进程数,内存数量等。例如,对所有用户的限制象下面这样:

  编辑/etc/security/limits.con加:

  * hard core 0

  * hard rss 5000

  * hard nproc 20

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

  session required /lib/security/pam_limits.so

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

  为5M“rss 5000”。

  17. The /etc/lilo.conf file

  a) Add: restricted

  加这一行到每一个引导映像下面,就这表明如果你引导时用(linux single),则需要一个password.

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论