1. 网站集群架构搭建规划
1.1 中小规模基础网站集群架构规划
image.png1.2 网站集群搭建顺序规划
image.png1.3 主机IP及主机名规划表
image.png1.4 安装及配置路径等规划
image.png1.5 集群架构系统基础环境准备
1)安装CentOS7.6系统
2)第一块网卡配置为NAT模式
3)第二块网卡配置为LAN区段模式,网段为172.16.1.0网段
2. 网站集群架构系统优化
2.1 集群节点模板机统一基础优化
2.1.1 规范功能目录
创建存储软件目录和存储脚本目录。
mkdir -p /server/tools
mkdir -p /server/scripts
2.1.2 配置hosts解析信息
设置本地服务主机名称与IP地址映射关系。
cat >/etc/hosts<<EOF
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 sweb01
172.16.1.10 sweb02
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01
EOF
2.1.3 修改主机名称
hostnamectl set-hostname backup ---根据对应主机名称进行设置
2.1.4 更新yum源信息
第一个:就近使用yum源地址,安装软件更快。
curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
第二个:安装RHEL/CentOS官方源不提供的软件包。
curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2.1.5 优化安全设置
# 1、关闭selinux
sed -i 's#SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config ---查看修改SELinux的状态
setenforce 0 ---临时关闭SELinux
getenforce ---查看SELinux状态
# 2、关闭firewalld防火墙服务
systemctl stop firewalld
systemctl disable firewalld
2.1.6 精简开机启动程序
systemctl list-unit-files |grep enable|egrep -v "sshd.service|crond.service|sysstat|rsyslog|^NetworkManager.service|irqbalance.service"|awk '{print "systemctl disable",$1}'|bash
企业生产最小化原则有以下几个:
1)安装软件包最小化
2)用户权限最小化
3)目录文件权限最小化
4)自启动服务最小化
5)服务运行用户最小化
2.1.7 设置普通用户提权操作(可选优化)
对于系统运维工作中,一些普通用户需要分担超级管理员root的工作压力,因此需要将相应的root权限进行下放,所以要将相应普通用户进行提权。
# 提权oldboy可以利用sudo
useradd oldboy
echo 123456|passwd --stdin oldboy
\cp /etc/sudoers /etc/sudoers.ori
echo "oldboy ALL=(ALL) NOPASSWD: ALL " >>/etc/sudoers
tail -1 /etc/sudoers
visudo -c
2.1.8 设置系统字符集
[root@oldboyedu ~]# cat /etc/locale.conf
LANG="en_US.UTF-8"
修改命令如下:
cp /etc/locale.conf{,.ori}
localectl set-locale LANG="zh_CN.UTF-8"
cat /etc/locale.conf
2.1.9 时间同步设置
yum install ntpdate -y
/usr/sbin/ntpdate ntp3.aliyun.com
echo '#crond-id-001:time sync by oldboy' >>/var/spool/cron/root
echo "*/5 * * * * /usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1">>/var/spool/cron/root
crontab -l
设置定时任务,进行每5分钟的时间同步操作。
2.1.10 提升命令行操作安全性(可选优化,测试环境下建议不做)
echo 'export TMOUT=300' >>/etc/profile ---设置会话超时时间为300秒
echo 'export HISTSIZE=5' >>/etc/profile ---命令行历史记录保留5个
echo 'export HISTFILESIZE=5' >>/etc/profile ---历史记录文件保留5个
tail -3 /etc/profile
. /etc/profile
2.1.11 加大文件描述符
一般情况下,一台服务器被访问时会启用很多的程序,而启用每一个程序的进程都会占用文件服务器描述符,因此有需要加大文件描述符的大小,从而不致影响到程序的启动。
echo '* - nofile 65535 ' >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf
ulimit -SHn 65535 ---使用命令临时修改
ulimit -n ---命令方式查看配置结果
2.1.12 优化系统内核
利用相应内核参数数值的优化,从而影响系统的安全性、稳定性、高效性。
cat >>/etc/sysctl.conf<<EOF
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.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216
EOF
sysctl -p ---使修改内容生效
2.1.13 安装系统常用软件
CentOS6和CentOS7都要安装的企业运维常用基础工具包如下:
yum install tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs -y
CentOS7要安装的企业运维常用基础工具包如下:
yum install psmisc net-tools bash-completion vim-enhanced -y
2.1.14 优化SSH远程连接效率
cp /etc/ssh/sshd_config{,.ori}
sed -i -e "17s/.*/Port 52113/g" /etc/ssh/sshd_config ---修改默认远程端口
sed -i -e "19s/.*/ListenAddress 172.16.1.41/g" /etc/ssh/sshd_config ---修改默认监听IP,默认为0.0.0.0全部监听,可以自定义指定监听内网IP地址
sed -i -e "38s/.*/PermitRootLogin no/g" /etc/ssh/sshd_config ---关闭SSH登录root用户权限,提升系统安全性
sed -i -e "64s/.*/PermitEmptyPasswords no/g" /etc/ssh/sshd_config ---禁止空密码用户SSH连接登录系统
# 特别说明:以上采用sed替换方式修改SSH服务配置文件,替换时指定的行号会根据不同版本的系统有变化,最好以工作中常用的系统为主,修改相应行号。
# 如果是CentOS6还要修改SSH配置,防止连接速度慢的优化
即把UseDNS yes改为UseDNS no,把GSSAPIAuthentication yes改为GSSAPIAuthentication no。
这里为了减少集群搭建的难度,只做如下的配置优化:
PermitEmptyPasswords no
UseDNS no
GSSAPIAuthentication no
2.1.15 锁定关键系统文件优化
对关键系统帐号文件和启动文件进行锁定,防止用户篡改。
chattr +i /etc/passwd /etc/shadow /etc/group ---锁定关键账户文件,防删防改
chattr +i /etc/inittab /etc/fstab /etc/sudoers ---锁定其他关键文件
lsattr /etc/passwd /etc/shadow /etc/group /etc/inittab /etc/fstab /etc/sudoers ---查看结果
mv /usr/bin/chattr /opt/oldboy ---移走关键命令
cp /usr/bin/xargs /usr/bin/chattr ---用其他命令伪装一下,用户需要妥善保存关键命令
2.1.16 清理系统版本信息
说明:系统对外显示的信息越少越安全
[root@localhost ~]# cat /etc/issue
\S
Kernel \r on an \m
[root@localhost ~]# cat /etc/issue.net
\S
Kernel \r on an \m
[root@localhost ~]# >/etc/issue.net
[root@localhost ~]# >/etc/issue
[root@localhost ~]# cat /etc/issue
[root@localhost ~]# cat /etc/issue.net
2.1.17 为GRUB增加密码
默认情况下,用户可以随意进入GRUB引导界面,这样就会存在安全隐患。例如,有人靠近设备就可以破解root密码,为了防止别人进入单用户模式破解密码,可以添加GRUB密码。
[root@localhost ~]# grub2-setpassword
Enter password:
Confirm password:
[root@localhost ~]# cat /boot/grub2/user.cfg
GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.3BE3BF1C30B4E871CEE0A383A98AF382825E69459067541570CFBA6E53C638C5BD75278CAF2CF15334B7FFED30569791CF6B2D2B97BB2E0716ED7ED38FB1F3F5.48C31EB837FE26E066B1456B979E04AC48B8B65CA820E956F6C5E3C7CE2AC96828E5D6EA921E4114FB4D62B7A5BA560DEE998892C508AC3D6E7183AEDBD3FD53
此时,系统重启后,进入系统GRUB菜单后就会出现输入密码的提示。
2.1.18 禁止用户ping服务器IP地址
禁止用户ping服务器IP地址的目的,也是让黑客用户以为服务器停机或者不可用,或禁止返回有效信息。
[root@localhost ~]# echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.icmp_echo_ignore_all = 1
网友评论