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

上一篇:在Linux系统中安装和配置ACE(转载)


下一篇:WinForm简单多国语言实现