1. 调整内核参数:
1)cp /etc/sysctl.conf /etc/sysctl.conf.zf
2) 拷贝下面的内容到 /etc/sysctl.conf
net.ipv4.ip_forward = 0 # 问问他们是不是 LVS,如果是的话,要设置为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
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
kernel.core_uses_pid = 1
3) sysctl -p
2.关闭不需要的服务
1)touch /root/zf.sh
2) 拷贝下面的脚本到该文件(注意要先理解下面列出的这些服务项目,然后在实际操作的
1)touch /root/zf.sh
2) 拷贝下面的脚本到该文件(注意要先理解下面列出的这些服务项目,然后在实际操作的
时候,记得咨询相关服务器的维护人员 到底需要开放哪些服务,再对下面的服务项
目作相应的修改)
#!/bin/bash
#
export LANG=C
temp_file=/tmp/config_security.temp
#!/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
| 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
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 命令验证先前执行的命令的时间也显示出来了
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)询问该服务器的相关维护人员和开放人员以确定需要建立哪几个组,每个组需要建立
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)然后在服务器上建立这些组和用户,一定要注意的是保证在所有服务器上的相同的组
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),如果不指定的话,
------------------------------------------------------------------------------------------------------------------
组名称 组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 # 那样的话就没法保证在所有的服务器上相同的组名称
groupadd -g 6001 isa # 那样的话就没法保证在所有的服务器上相同的组名称
# 有相同的组ID了,UID 也是如此
建用户:useradd -u 60001 -g 6000 xxxx.xxx # 指定 xxxx.xxx 的 UID 为 60001, GID 为
建用户: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 为
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,...>
# useradd -u <UID> -g <GID> -G<GID1,GID2,...>
# <username>
3)用 visudo 命令打开 /etc/sudoers, 并在其末尾添加如下形式的条目:
%<组名称> ALL = [NOPASSWD:]ALL # [NOPASSWD:] 表示该部分是可选
3)用 visudo 命令打开 /etc/sudoers, 并在其末尾添加如下形式的条目:
%<组名称> ALL = [NOPASSWD:]ALL # [NOPASSWD:] 表示该部分是可选
# 的, 例如,我们在xx的服务器上的配
# 置是这样的:
%sa ALL = NOPASSWD:ALL
%isa ALL = NOPASSWD:ALL
4)验证:
a. 为你自己的帐号设置密码,然后用自己的帐号尝试登录(注意 SSH 的端口是
%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,如果你在该文
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 文件,如果没有,建立它(如果
1)查看服务器上是否有 /root/.ssh/authorized_keys 文件,如果没有,建立它(如果
连/root/.ssh目录都没有,先建立该目录)
2)cd /root/.ssh
3) 用 rz 命令 上传 authorized_keys (自己生成的所有服务器统一使用的公钥文件)文件
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 将该文件保存到本机,然后把服务器上的该文件副本删除,并把
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)
(例如: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 启用防火墙.
上面的步骤只配置了最基本的防火墙规则,进一步的调整需要和系统维护人员和开放人
转换格式,然后执行命令 /etc/init.d/iptables start 启用防火墙.
上面的步骤只配置了最基本的防火墙规则,进一步的调整需要和系统维护人员和开放人
员协商
9. 待续。。。
本文转自zkjian517 51CTO博客,原文链接:http://blog.51cto.com/zoukejian/56467