- 参考资料
- 安装前的准备
- 开始安装
- 更新系统打补丁到最新
- 添加帐号
- 关闭SELinux功能 并验证
- 临时关闭SELinux 由于SELinux功能生效需要重启所以需要再临时关闭一下
- 设定系统运行级别为3
- 关闭多余的服务只开启基本服务
- 暂时关闭防火墙关闭两次以确认服务生效并关闭开机启动
- 备份并更改SSH服务器端远程登录的配置
- 使用52113端口和oldboy 帐号 重新登录切换到root帐号
- 利用sudo控制用户对系统命令的使用权限
- 中文显示设置
- 设置Linux 服务器时间同步
- 设置历史记录数及登录超时环境变量设置
- 调整Linux系统文件描述符数量重新登录后才生效
- Linux服务器内核参数优化
- 定期清理邮件服务临时目录垃圾文件
- 查看并隐藏linux版本信息
- 锁定关键系统文件防止被提权篡改每次修改的时候先解除修改完成后再锁定
- 如果想要更安全可以把chattr改名转移
- 为grup菜单加密码
- 通过设置防火墙的方式设置只限于某段ip可以ping
- 升级具有典型漏洞的软件版本
参考资料
[1]. 跟老男孩学Linux运维:Web集群实战,老男孩
安装前的准备
下载的系统选择 CentOS-6.8-x86_64-bin-DVD1.iso 这个安装包会自带一些软件包
安装类型选择 Minimal 即最小化安装,并选择添加额外的软件包组选择项 Customize now
左侧 Base System 项,需要选择 Base、Compatibility libraries、Debugging Tools、 Dial-up Networking Support 四个软件包
左侧 Develoment 项,需要选择 Develoment tools
所有安装包,必需安装,如未安装,在后面安装其他软件的时候可能会出错。
开始安装
更新系统,打补丁到最新
[root@www ~]# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.ori
[root@www ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
[root@www ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
[root@www ~]# yum update -y
[root@www ~]# yum install tree telnet dos2unix sysstat lrzsz nc nmap gcc-c++ -y
添加帐号
[root@www ~]# useradd oldboy
[root@www ~]# passwd oldboy
关闭SELinux功能 并验证
[root@www ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@www ~]# grep SELINUX=disabled /etc/selinux/config
临时关闭SELinux (由于SELinux功能生效需要重启,所以需要再临时关闭一下)
[root@www ~]# setenforce 0
[root@www ~]# getenforce
设定系统运行级别为3
[root@www ~]# init 3
[root@www ~]# grep 3:initdefault /etc/inittab
[root@www ~]# runlevel
关闭多余的服务,只开启基本服务
[root@www ~]# LANG=en
[root@www ~]# for oldboy in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $oldboy off;done
[root@www ~]# for oldboy in crond network rsyslog sshd sysstat ;do chkconfig --level 3 $oldboy on;done
[root@www ~]# chkconfig --list|grep 3:on
暂时关闭防火墙(关闭两次,以确认服务生效),并关闭开机启动
[root@www ~]# /etc/init.d/iptables stop
[root@www ~]# /etc/init.d/iptables stop
[root@www ~]# chkconfig --list|grep iptables
备份并更改SSH服务器端远程登录的配置
[root@www ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori
[root@www ~]# vi /etc/ssh/sshd_config
加入下面的内容
#### by shuaige #2016-12-31####
Port 52113
PermitRootLogin no
PermitEmptyPasswords no
UseDNS no
GSSAPIAuthentication no
ListenAddress 192.168.1.xx:52113 # 指定仅监听内网ip
#### by shuaige #2016-12-31####
重新读取或重启
[root@www ~]# /etc/init.d/sshd reload
[root@www ~]# /etc/init.d/sshd restart
使用52113端口,和oldboy 帐号 重新登录,切换到root帐号
[oldboy@www ~]# whoami
[oldboy@www ~]# su - root
[root@www ~]# whoami
利用sudo控制用户对系统命令的使用权限
[root@www ~]# visudo
# 在大概第98行左右可以加入下面的内容
[root@www ~]# visudo
# 给予有限权限
[root@www ~]# oldboy ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel
# 或全部权限,并且在提升权限的时候不需要密码
[root@www ~]# oldboy ALL=(ALL) NOPASSWD: ALL
[root@www ~]# grep oldboy /etc/sudoers
# 重新登录后,就可以使用root权限的命令了
[oldboy@www ~]# sudo ls /root
# 查看老男孩的权限
[oldboy@www ~]# sudo -l
中文显示设置
[root@www ~]# cat /etc/sysconfig/i18n
[root@www ~]# cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori
[root@www ~]# echo ' LANG="zh_CN.UTF-8"' > /etc/sysconfig/i18n # 添加内容
[root@www ~]# source /etc/sysconfig/i18n # 使上文修改生效
[root@www ~]# echo $LANG
设置Linux 服务器时间同步
[root@www ~]# which ntpdate # 如果服务不存在,就执行安装
[root@www ~]# yum install -y ntpdate # 安装时间同步服务
[root@www ~]# echo '#time sync by oldboy at 2016-12-31' >> /var/spool/cron/root
[root@www ~]# echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com > /dev/null 2>&1' >> /var/spool/cron/root
[root@www ~]# crontab -l
设置历史记录数及登录超时环境变量设置
[root@www ~]# echo 'export TMOUT=300' >> /etc/profile
[root@www ~]# echo 'export HISTSIZE=5' >> /etc/profile
[root@www ~]# echo 'export HISTFILESIZE=5' >> /etc/profile
[root@www ~]# tail -3 /etc/profile
调整Linux系统文件描述符数量(重新登录后才生效)
[root@www ~]# echo '* - nofile 65535 ' >> /etc/security/limits.conf
[root@www ~]# tail -1 /etc/security/limits.conf
Linux服务器内核参数优化
[root@www ~]# vi /etc/sysctl.conf
# 加入下面的内容
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
# 以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120
[root@www ~]# sysctl -p # 使配置生效
定期清理邮件服务临时目录垃圾文件
[root@www maildrop]# mkdir -p /server/scripts
[root@www maildrop]# echo "find /var/spool/postfix/maildrop/ -type f|xargs rm -f" > /server/scripts/del_file.sh
[root@www maildrop]# cat /server/scripts/del_file.sh
[root@www maildrop]# echo "00 00 * * * /bin/sh /server/scripts/del_file.sh > /dev/null 2>&1" >> /var/spool/cron/root
[root@www maildrop]# crontab -l
[root@www maildrop]# df -i
查看并隐藏linux版本信息
[root@www maildrop]# cat /etc/issue
[root@www maildrop]# cat /etc/issue.net
[root@www maildrop]# > /etc/issue
[root@www maildrop]# > /etc/issue.net
锁定关键系统文件,防止被提权篡改,每次修改的时候先解除,修改完成后再锁定
[root@www maildrop]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab # 锁定
[root@www maildrop]# chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab # 解除
如果想要更安全,可以把chattr改名转移
[root@www maildrop]# mv /usr/bin/chattr /usr/bin/oldboy
[root@www maildrop]# oldboy +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
[root@www maildrop]# lsattr /etc/passwd # 查看上锁后的文件权限
为grup菜单加密码
[root@www maildrop]# /sbin/grub-md5-crypt # 生成密码串
[root@www maildrop]# vi /etc/grub.conf
#添加到 hiddenmenu 和 title 内容中间
hiddenmenu
password --md5 $1$ZL2w6/$AIOTFjSgqr0zEij8wRB/o1
title CentOS (2.6.32-642.11.1.el6.x86_64)
通过设置防火墙的方式设置,只限于某段ip可以ping
[root@www maildrop]# iptables -t filter I INPUT -p icmp --icmp-type 8 -i eth0 -s 192.0.0.0/24 -j ACCEPT
升级具有典型漏洞的软件版本
[root@www ~]# yum install openssl openssh bash -y #安装
[root@www ~]# rpm -qa openssl openssh bash # 查看