LINUX 系统基准安全配置步骤
时间:2009-03-23 来源:sjhf
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. 待续。。。 |
相关阅读 更多 +