整体规划遵从最小化原则, 具体包括: 系统安装最小化 YUM 安装软件包最小化开机自启动服务最小化操作命令最小化登录系统用户最小化普通用户权限最小化系统文件及目录权限最小化!
修改用户密码
# echo "centos" |passwd --stdin root && history -c
清空 iptables
企业中一般配置外网 IP 的 Linux 服务器才需要开启防火墙, 但针对有外网 IP 的高并发高流量业务服务器不建议开启防火墙, 这样会有较大的性能损失导致访问速度很慢, 建议使用硬件防火墙!
- # iptables -F
- # /etc/init.d/iptables save
- # /etc/init.d/iptables stop
- # chkconfig iptables off
selinux 设置
SELinux 为 Security-Enhanced Linux 简称, 实际生产环境中根据情况开启, 以下为关闭设置
- # sed -i s/SELINUX=enforcing/SELINUX=disabled$etc/selinux/config // 重启后永久生效
- # setenforce 0 // 临时设置 selinux, 避免业务主机重启
- # getenforce // 查看 selinux 状态
配置静态 IP
# setup // 图形界面方式配置
或者
# vim /etc/sysconfig/network-scripts/ifcfg-eth0 // 修改配置文件
注意: 在虚拟机克隆后, 出现网卡 MAC 地址一致 UUID 网卡名称命名等问题的解决办法
# rm -rf /etc/udev/rules.d/70-persistent-net.rules
配置主机和 IP 映射关系
- # vim /etc/hosts
- 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
- ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
- 192.168.1.63 demo63.cn server01
- 192.168.1.64 demo64.cn client01
修改主机名
- # vim /etc/sysconfig/network
- NETWORKING=yes
- HOSTNAME=demo63.cn
- NTPSERVERARGS=iburst
- # hostname // 查看主机名
- demo63.cn
配置 yum 源方式
方法一: 配置本地 yum 源
- # mount /dev/sr0 /mnt/
- # echo "/dev/sr0 /mnt iso9660 defaults 0 0">> /etc/fstab
- # rm -rf /etc/yum.repos.d/*
- # cat> /etc/yum.repos.d/rhel6.repo <<EOF> [rhel6-source]
- > name=rhel6-source
- > baseurl=file:///mnt
- > enabled=1
- > gpgcheck=0
- > EOF
方法二: 配置网络 yum 源
- # cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bk
- # wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
- # sed -i s/$releasever/6.9/g /etc/yum.repos.d/CentOS-Base.repo
- # yum clean all
- # yum repolist all
- # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
注意:
a) 如下为实际生产中比较有用的软件包, 建议安装
# yum install tree telnet dos2unix sysstat lrzsz nc nmap -y
b) 如系统没有安装 YUM 软件, 可采用 rpm 安装方式
- # rpm -qa |grep yum
- # rpm -qa|grep yum|xargs rpm -e --nodeps // 不检查依赖, 直接删除 rpm 包
- # wget -O /test/yum-3.2.29-81.el6.centos.noarch.rpm http://mirrors.163.com/centos/6.9/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm
- # wget -O /test/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm http://mirrors.163.com/centos/6.9/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
- # wget -O /test/yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm http://mirrors.163.com/centos/6.9/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm
- # rpm -ivh yum-3.2.29-81.el6.centos.noarch.rpm yum-metadata-parser-1.1.2-16.el6.x86_64.rpm yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm
修改运行级别
- # vim /etc/inittab
- id:3: initdefault:// 级别 3, 即为文本模式, 更改配置文件永久生效
- # runlevel// 查看运行级别
- # init0 // 关机 (init5 图形模式 init6 重启)
精简开机系统自启动
企业生产环境中建议保留的五个服务, 包括 sshd(远程连接使用的服务)rsyslog(记录日志时, 系统调用的守护进程, CentOS6 版本之前服务名为 syslog)network(激活 / 关闭网络接口时使用的服务)crond(周期性执行系统或用户配置的任务时使用的服务)sysstat(该服务用于监测系统性能及效率)
方法一: 调用图形化界面
# ntsysv (或 setup->system service) // 选择要启用的服务
方法二: 执行命令
# chkconfig --list |grep 3:on |grep -vE "crond|network|rsyslog|sshd|sysstat" |awk {print chkconfig $1 "off"} |bash
或者
# chkconfig --list |grep 3:on |grep -vE "crond|network|rsyslog|sshd|sysstat" |awk {print $1} |sed -r s#(.*)#chkconfig \1 off#g|bash // 注意蓝色处格式中无空格
方法三: 执行脚本
- # LANG=en // 调整为英文字符集, 方便过滤中文字符串
- # chkconfig --list |grep 3:on // 查看级别 3 上开启的服务
- # vim service-off.sh // 执行脚本关闭不必要服务
a) Shell 脚本一:
- #!/bin/bash
- LANG=en
- for name in `chkconfig --list |grep 3:on |awk {print $1}`;
- do chkconfig --level 3 $name off;
- done
- for name in crond network rsyslog sshd sysstat;
- do chkconfig --level 3 $name on;
- done
- chkconfig --list |grep 3:on
b) Shell 脚本二:(默认情况下级别 3 文本模式都是开启的状态)
- #!/bin/bash
- LANG=en
- for name in `chkconfig --list |grep 3:on |awk {print $1} |grep -vE "crond|network|rsyslog|sshd|sysstat" `;
- do chkconfig --level 3 $name off;
- done
- chkconfig --list |grep 3:on
- # chmod +x service-off.sh
- # ./service-off.sh
远程登录配置
实际生产环境中, 建议隐藏或更改默认 ssh 远程连接端口!
# cp -a /etc/ssh/sshd_config{,.`date +"%F%H%M%S"`}
方法一: 修改配置文件
- # vim /etc/ssh/sshd_config
- Port 2233 //sshd 服务端口号
- PermitRootLogin no // 是否允许 root 登录
- PermitEmptyPasswords no // 是否允许密码为空的用户登录
- UseDNS no //sshd 是否对远程主机名进行反向解析
- GSSAPIAuthentication no // 解决 Linux 之间使用 ssh 远程连接慢的问题
方法二: 通过 sed 快速修改增加内容
- # sed -ir 13 iPort 2233\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no /etc/ssh/sshd_config
- # sed -n 13,17p /etc/ssh/sshd_config
- # /etc/init.d/sshd reload // 平滑重启, 不影响正在 SSH 连接的其他用户
或者
# /etc/init.d/sshd restart
sudo 提权配置
- # cp -a /etc/sudoers{,.`date +"%F%H%M%S"`}
- # echo "admin1 ALL=(ALL) NOPASSWD:ALL">>/etc/sudoers
- # tail -5 /etc/sudoers
或者
- # visudo // 使用此命令可以直接修改配置文件
- # visudo -c // 对修改的配置文件做语法检查
中文显示设置
实际生产环境中, 建议使用英文显示设置
- # cp -a /etc/sysconfig/i18n{,.`date +"%F%H%M%S"`}
- # echo LANG="zh_CN.UTF-8">/etc/sysconfig/i18n
- # source /etc/sysconfig/i18n // 使修改的配置文件生效
- # echo $LANG
设置时间同步任务
- # echo # Time sync by Jerome at 2017-6-8>> /var/spool/cron/root
- # echo */5 * * * */usr/sbin/ntpdate time.nist.gov> /dev/null 2>&1>> /var/spool/cron/root
- # crontab -l // 查看定时任务
或者
# crontab -e // 进行定时任务编辑
部分环境变量的设置
对配置文件 / etc/profile 进行修改为全局修改
- # echo export TMOUT=300>> /etc/profile // 设置账号超时时间
- # echo export HISTSIZE=5>> /etc/profile // 设置命令行历史记录数
- # echo export HISTFILESIZE=5>> /etc/profile // 设置历史文件记录数量 (~/.bash_history)
- # source /etc/profile
- # tail -3 /etc/profile
调整文件描述符数量
文件描述符是由无符号整数表示的句柄, 进程使用它来标识打开的文件
# ulimit -n
方法一:
- # cp -a /etc/security/limits.conf{,.`date +"%F%H%M%S"`}
- # echo * - nofile 65535>> /etc/security/limits.conf
- # tail -1 /etc/security/limits.conf
方法二:
- # cp -a /etc/rc.local{,.`date +"%F%H%M%S"`}
- # cat>> /etc/rc.local <<EOF
- # -S use the soft resource limit
- # -H use the hard resource limit
- # -n the maximum number of open file descriptors
- ulimit -HSn 65535
- # -s the maximum stack size
- ulimit -s 65535
- EOF
定时清理邮件服务临时目录垃圾文件
# vim /scripts/del_temp_mail.sh
脚本内容:
- #! /bin/bash
- find /var/spool/postfix/maildrop/ -type f|xargs rm -f
执行脚本:
# chmod +x /scripts/del_temp_mail.sh
设置定时任务:
- # echo 00 00 * * */bin/sh /scripts/del_temp_mail.sh> /dev/null 2>&1>>/var/spool/cron/root
- # crontab -l
- # df -i // 查看磁盘 inode 总量剩余量使用量
隐藏 Linux 版本信息
- #>/etc/issue
- #>/etc/issue.net
- # cat /etc/issue
- # cat /etc/issue.net
锁定系统关键文件
- # chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
- # chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
- # lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
为 grub 菜单加密
- # /sbin/grub-md5-crypt
- # cp -a /etc/grub.conf{,.`date +"%F%H%M%S"`}
- # vim /etc/grub.conf
注意: password 最好加在 splashimage 和 title 之间, 否则可能无法生效, 设置完成后, 在下次需要管理 grub 时, 会有输入密码提示
来源: http://www.bubuko.com/infodetail-2542473.html