环境准备:
1)设置本地国际化语言为en_US.UTF-8
[root@c58 ~]
[root@c58 ~]
LANG= "en_US.UTF-8"
[root@c58 ~]
|
2)更新系统软件包
备份默认yum源:
|
find /etc/yum .repos.d -name '*.repo' - exec mv {} {}.bak \;
|
添加163yum源:
redhat5或centos5:
|
wget http: //mirrors .163.com/.help /CentOS5-Base-163 .repo -P /etc/yum .repos.d
|
redhat6或centos6
|
wget http: //mirrors .163.com/.help /CentOS6-Base-163 .repo -P /etc/yum .repos.d
|
添加epel yum源:
redhat5.x 32bit:
|
rpm -ivh http: //dl .fedoraproject.org /pub/epel/5/i386/epel-release-5-4 .noarch.rpm
|
redhat5.x 64bit:
|
rpm -ivh http: //dl .fedoraproject.org /pub/epel/5/x86_64/epel-release-5-4 .noarch.rpm
|
redhat6.x 32bit:
|
rpm -ivh http: //dl .fedoraproject.org /pub/epel/6/i386/epel-release-6-8 .noarch.rpm
|
redhat6.x 64bit:
|
rpm -ivh http: //dl .fedoraproject.org /pub/epel/6/x86_64/epel-release-6-8 .noarch.rpm
|
更新证书:
|
yum -y upgrade ca-certificates --disablerepo=epel
|
更新系统所有软件包:
|
yum clean allyum makecacheyum -y upgrade
|
下文以redhat5/centos5为例
一、服务最小化原则
关闭所有开机自启动服务,仅开启sshd、crond、network、iptables、syslog(redhat5)、rsyslog(redhat6),然后在此基础上按需添加需要开机启动的服务。
1)关闭所有开机自启动服务
2)开启基础服务
3)查看开启的服务
[root@c58 ~]
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
|
二、用户登录限制
1)禁止使用root用户使用远程ssh
[root@c58 ~]
[root@c58 ssh ]
[root@c58 ssh ]
[root@c58 ssh ]
PermitRootLogin no
|
2)禁用登录提示信息
3)修改ssh的默认监听端口(tcp:22)
[root@c58 ssh ]
[root@c58 ssh ]
Port 11983
|
4)只允许指定的ip可以ssh (可选)
方法1(使用tcpwrapper):
echo "sshd:192.168.124.0/255.255.255.0" >> /etc/hosts .allow
echo "sshd:ALL" >> /etc/hosts .deny
|
方法2(使用iptables):
iptables -I INPUT -s 10.0.0.1 -p tcp --dport 22 -j ACCEPT
iptables -I 2 INPUT -s 192.168.1.0 /24 -p tcp --dport 22 -j ACCEPT
iptables -I 3 INPUT -p tcp --dport 22 -j DROP
cp /etc/sysconfig/iptables /etc/sysconfig/iptables ~
iptables-save > /etc/sysconfig/iptables
|
最后,重启sshd服务使上面配置生效(不用担心重启时已打开的远程终端连接会断开,重启只会对新开的终端生效)
[root@c58 ssh ]
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
|
三、用户及命令权限最小化
创建一个普通用户tom,将其加入sudo组,该用户作为系统管理员
groupadd sudo
useradd -G sudo tom
passwd tom
|
修改sudo配置文件,授权sudo组的用户可以以root身份执行所有命令(可以针对不同用户授予不同的命令执行权限,这里允许执行所有命令,生产环境中系统管理员应该按需为用户分配尽可能少的可执行命令,以实现权限最少化),用户执行的所有sudo操作都将记录在/var/log/sudo.log中,以便日后的安全事件排查。执行命令如下:
[root@cloud ~]
> % sudo ALL=(root) ALL
> Defaults logfile= /var/log/sudo .log
> EOF
[root@cloud ~]
[root@cloud ~]
[root@cloud ~]
|
注:"visudo -c"命令用于检查 /etc/sudoers 文件的语法正确性
四、内核安全参数设置
vim /etc/sysctl .conf
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_keepalive_time = 1200
|
保存退出后,执行"sysctl -p"命令将以上设置加载到内核使其立刻生效
五、 内核性能相关参数设置(可选)
vim /etc/sysctl .conf
net.ipv4.tcp_max_syn_backlog
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.ip_local_port_range=1024 65000
|
保存退出后,执行"sysctl -p"命令将以上设置加载到内核使其立刻生效
(责任编辑:IT) |