天天看点

LINUX 系统基准安全配置步骤

1. 调整内核参数:

   1)cp /etc/sysctl.conf /etc/sysctl.conf.zf

   2) 拷贝下面的内容到 /etc/sysctl.conf

       net.ipv4.ip_forward = 0          # 问问他们是不是 LVS,如果是的话,要设置为1

       net.ipv4.tcp_syncookies = 1

       net.ipv4.conf.all.accept_source_route = 0

       net.ipv4.conf.all.accept_redirects = 0

       net.ipv4.conf.all.rp_filter = 1   # 问问他们是不是 LVS 后端服务器,如果是,要设置为0 

       net.ipv4.icmp_echo_ignore_broadcasts = 1

       net.ipv4.icmp_ignore_bogus_error_responses = 1

       net.ipv4.conf.all.log_martians = 1

       kernel.sysrq = 0

       kernel.core_uses_pid = 1

   3) sysctl -p

2.关闭不需要的服务

   1)touch /root/zf.sh

   2) 拷贝下面的脚本到该文件(注意要先理解下面列出的这些服务项目,然后在实际操作的

       时候,记得咨询相关服务器的维护人员 到底需要开放哪些服务,再对下面的服务项 

      目作相应的修改)

#!/bin/bash

#

export LANG=C

temp_file=/tmp/config_security.temp

chkconfig --list | grep :on \

  | grep -v sshd | grep -v network | grep -v syslog | grep -v crond | grep -v anacron \

    | grep -v iptables | grep -v readahead | grep -v irqbalance | grep -v lvm2-monitor \

      | grep -v arptables_jf | grep -v sendmail | grep -v readahead_early | grep -v snmpd \

        | grep -v apache2 | grep -v resin | grep -v mysql \

           | grep -v portmap  | grep -v nfslock | grep -v netfs \           # nfs client needs this line

             | grep -v nfs | grep -v sysstat  \                                         # nfs server needs this line

                | awk '{ print $1 }' > $temp_file

while read serv

do

  chkconfig $serv off

  /etc/init.d/$serv stop

done < $temp_file

rm -f $temp_file

   3) sh /root/zf.sh

3.开启history的时间记录

  1) 拷贝下面的代码到 /etc/profile 的最后位置

      HISTSIZE=100000

      HISTTIMEFORMAT="%F %R "

      export HISTSIZE HISTTIMEFORMAT

  2)执行 history 命令验证先前执行的命令的时间也显示出来了

4. 配置安全的SSH(禁止 root 直接登录,非标准端口(62222),只支持 SSH protocol 2)

   1)touch /etc/ssh/sshd_config_secure

   2) 把文件 sshd_config_secure 的内容拷贝到 /etc/ssh/sshd_config_secure

   3) 把下面的代码加入到 /etc/syslog.conf 文件的末尾

       # save logs of secure sshd to sshd_secure

      local6.*  /var/log/sshd_secure

      并重启日志守护进程: /etc/init.d/syslog restart

   4) 用 visudo 命令打开 /etc/sudoers 文件,并把下面的代码加入到 /etc/sudoers 文件的末尾

       Defaults log_year, syslog=local6

   5) /usr/sbin/sshd -f /etc/ssh/sshd_config_secure

   6) 执行命令 netstat -lnp | grep :62222 验证我们自己配置的 SSH 已经在正常运行了

5. 配置 sudo

   1)询问该服务器的相关维护人员和开放人员以确定需要建立哪几个组,每个组需要建立

        哪几个用户

   2)然后在服务器上建立这些组和用户,一定要注意的是保证在所有服务器上的相同的组

        名称有相同的组ID(GID), 相同的用户名称有相同的用户ID(UID),例如我们在xx的服

        务器上建立如下规范的组和用户:

      ------------------------------------------------------------------------------------------------------------------

      组名称    组ID(GID)     组描述                                   该组内的用户   该用户的用户ID(UID)

       sa            6000                system  admin                       xxxx.xxx               60001

                                                                                             xxxx.xxx               60002

       isa           6001                information security admin     xxxx.xxx               60011

                                                                                             xxxx.xxx               60002

      相关命令如下:

  建组: groupadd -g 6000 sa    # -g 参数指定建立的组的组ID(GID),如果不指定的话,

                                                    # 系统会自动选择一个GID,

               groupadd -g 6001 isa   # 那样的话就没法保证在所有的服务器上相同的组名称

                                                    #  有相同的组ID了,UID 也是如此

  建用户:useradd -u 60001 -g 6000 xxxx.xxx       # 指定 xxxx.xxx 的 UID 为 60001, GID 为

                                                                               #  6000(sa 组)

    useradd -u 60011 -g 6001 xxxx.xxx    # 指定 xxxx.xxx 的 UID 为 60011, GID 为 6001(isa 组)

    useradd -u 60002 -g 6000 -G 6001 xxxx.xxx  # 指定 xxxx.xxx 的 UID 为 60002, 主 GID 为

                                                                           # 6000(sa 组),附加 GID 为6001(isa 组)

                                                                           # -u 指定 UID, -g 指定主组ID, -G 指定附件组ID,

                                                                           #  格式为:

                                                                           # useradd -u <UID> -g <GID> -G<GID1,GID2,...>

                                                                           # <username>

   3)用 visudo 命令打开 /etc/sudoers, 并在其末尾添加如下形式的条目:

        %<组名称>   ALL =       [NOPASSWD:]ALL              # [NOPASSWD:] 表示该部分是可选

                                                                                             # 的, 例如,我们在xx的服务器上的配

                                                                                             # 置是这样的:

       %sa             ALL =  NOPASSWD:ALL

       %isa            ALL =  NOPASSWD:ALL

   4)验证:

      a. 为你自己的帐号设置密码,然后用自己的帐号尝试登录(注意 SSH 的端口是  

          62222);

      b. 登录成功后,执行下面的命令验证 sudo 配置是否成功:sudo cat /etc/shadow

         如果你能够打开 /etc/shadow 人家,表示 sudo 配置 OK 了,

      c. 接着查看 /var/log/sshd_secure 验证我们自己的 SSH 的日志记录是否OK,如果你在该文

         件中看到了我们刚才的登录及 sudo, 说明日志配置 OK 了。

6. 配置公钥

   1)查看服务器上是否有 /root/.ssh/authorized_keys 文件,如果没有,建立它(如果

         连/root/.ssh目录都没有,先建立该目录)

   2)cd /root/.ssh 

   3) 用 rz 命令 上传 authorized_keys (自己生成的所有服务器统一使用的公钥文件)文件

7. 生成并保存当前系统的 md5 hash 以在必要的时候检查系统的完整性

   1)执行下面的命令将系统的重要系统文件的 MD5 hash 保存到 md5.log

     find /bin /boot /etc /lib /lib64 /sbin /sys/module \

        /usr/bin /usr/include /usr/lib /usr/lib64 /usr/libexec /usr/sbin /usr/src \

          -type f -exec md5sum {} \; >> md5.log 

   2)执行命令 sz md5.log 将该文件保存到本机,然后把服务器上的该文件副本删除,并把

         本地的该文件副本改名为 <ip的第四段>-md5-<当前的日期>.log 的形式

        (例如:211.151.xx.xxx --> xxx-md5-20070712.log)

8. 如果系统还没有防火墙(/etc/sysconfig/iptables 文件不存在),那么执行 

    cat /etc/sysconfig/iptables 命令建立该文件,把 iptables.txt 文件的内容拷贝

    到 /etc/sysconfig/iptables 里,执行命令 dos2unix /etc/sysconfig/iptables

    转换格式,然后执行命令 /etc/init.d/iptables start 启用防火墙.

   上面的步骤只配置了最基本的防火墙规则,进一步的调整需要和系统维护人员和开放人

   员协商

9. 待续。。。

本文转自zkjian517 51CTO博客,原文链接:http://blog.51cto.com/zoukejian/56467