CentOS7常见问题


原文链接: CentOS7常见问题

RUN yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
RUN sed -i '10s/enabled=0/enabled=1/' /etc/yum.repos.d/remi.repo
RUN sed -i '30s/enabled=0/enabled=1/' /etc/yum.repos.d/remi.repo

关闭防火墙

systemctl stop firewalld

安装雅黑字体

curl -L -O https://github.com/chenqing/ng-mini/raw/master/font/msyh.ttf &&

cp msyh.ttf /usr/share/fonts/msyh.ttf && \

fc-cache -fv
fc-list
查看linux系统已安装字体,若无该命令,需要先安装相关的软件包
yum install -y fontconfig mkfontscale
查看系统中已经安装的中文字体
fc-list :lang=zh
如无中文字体

cp msyh.ttf /usr/share/fonts/
mkfontscale
mkfontdir
fc-cache

可用fc-list :lang=zh查看,字体已安装成功

Centos 初始化建议

网络不通 (一定是有单词写错)

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

BOOTPROTO=dhcp => BOOTPROTO=static  将动态IP切换成静态
IPADDR=xxx.xxx.xxx.xxx dhclient     IP地址
IPADDR1=xxx.xxx.xxx.xxx             辅助IP地址
NETMASK=255.255.255.0               子网掩码
GATEWAY=xxx.xxx.xxx.xxx             网关地址
DNS1=119.29.29.29                   DNS1服务器
IPONBOOT=on => ONBOOT=yes           开机自启动

ip route
default via 192.168.5.1 dev enp0s3 proto static metric 100 << 检查GATEWAY是否配置正确
15.0.0.0/8 dev enp0s3 proto kernel scope link src 15.14.12.150 metric 100
192.168.5.0/24 dev enp0s3 proto kernel scope link src 192.168.5.155 metric 100

  1. 首先创建被挂载的目录
    mkdir /media/CentOS
  2. 然后我们将光盘挂载
    mount /dev/cdrom /media/CentOS
    PS:也可以将 ISO 文件直接挂载,命令如下
    mount -t iso9660 -o loop /root/centos7.iso /media/CentOS
  3. 使用命令 vi /etc/yum.repos.d/CentOS-Media.repo 打开本地源的配置文件,
    将 enabled=0 改为 enabled=1,退出并保存即可
  4. 移除默认源
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

配置本地ISO源

  1. 挂载cdrom
    mkdir /mnt/cdrom
    mount -t auto /dev/cdrom /mnt/cdrom

  2. 或者挂载载 iso文件
    mount -o loop ~/CentOS-7-x86_64-DVD-1708.iso /mnt/cdrom

  3. 移除线上仓库
    mkdir /etc/yum.repos.d/bak
    mv *.repo /etc/yum.repos.d/bak

  4. 创建本地仓库配置 vi /etc/yum.repos.d/cdrom.repo

[base]
name=RedHat
#注:这里的baseurl就是你挂载的目录,在这里是/mnt/cdrom
baseurl=file:///mnt/cdrom    
#注:这里的值enabled一定要为1  
enabled=1                    
# gpgckeck的值无所谓
gpgckeck=0
#注:这个你cd /mnt/cdrom/可以看到这个key,这里仅仅是个例子
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7

yum clean all
yum install vim*

镜像

https://mirrors.tuna.tsinghua.edu.cn/help/centos/

文件同步

ansible all -m copy -a "src=~/.ssh/id_rsa dest=~/.ssh/id_rsa mode=600"
ansible all -m copy -a "src=../../etc/hosts dest=/etc/hosts "

设置系统时间

ansible all -a "timedatectl set-ntp true " # 开启时间同步
ansible all -a "timedatectl set-timezone Asia/Shanghai"
ansible all -a "hwclock --systohc --utc"

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate time.pool.aliyun.com

Centos配置时间同步

yum install -y ntp
ntpdate ntp1.aliyun.com
ntpdate -u cn.ntp.org.cn ntp.ubuntu.com
ansible all -a "ntpdate -u cn.ntp.org.cn"

Centos docker 无法删除docker容器 device or resource busy

方案1. systemctl start ntpd && systemctl start docker 保证先启动ntpd服务,然后再创建docker container,就不会有任何问题。
方案2. 修改/usr/lib/systemd/system/docker.service配置文件[Service]段中加入MountFlags=slave,解决Bug

  基于systemd 方式的ntpd 服务启动配置文件中设置“PrivateTmp=true”,导致ntpd 私有名字空间中挂接信息(/proc/$ntpd_pid/mounts)存在docker container 挂接磁盘信息,Docker 销毁container时需要卸载挂接磁盘,此时出现冲突导致docker 销毁container动作失败

更新系统内核

ansible all -a "grub2-editenv list"
ansible all -a "grub2-set-default 'CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)'"

ansible all -m copy -a "src=../../etc/yum.repos.d/MariaDB.repo dest=/etc/yum.repos.d/MariaDB.repo mode=0644"

Centos配置阿里源

1、备份原来的源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2.获取CentOS 7阿里源
aliyun.repo curl -so /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
epel.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

3.生成缓存
yum makecache

Centos 配置清华源

  1. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back
  2. wget http://mirrors.aliyun.com/repo/Centos-7.repo -P /etc/yum.repos.d/
  3. mv /etc/yum.repos.d/Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo
  4. yum install -y epel-release
  5. yum install -y centos-release-openstack-mitaka

sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.repo
sed -i "s/mirrorlist/#mirrorlist/g" /etc/yum.repos.d/epel.repo
sed -i "s#http://download.fedoraproject.org/pub#https://mirrors.tuna.tsinghua.edu.cn#g" /etc/yum.repos.d/epel.repo
sed -i "s#http://elrepo.org/linux#https://mirror.tuna.tsinghua.edu.cn/elrepo#g" /etc/yum.repos.d/elrepo.repo
sed -i "s#mirror.centos.org#mirrors.163.com#g" /etc/yum.repos.d/CentOS-OpenStack-mitaka.repo
yum clean all
yum makecache

Centos mongo

#!/usr/bin/env bash

# install mongodb
cat <<EOF >/etc/yum.repos.d/mongodb.repo
[mongodb-org]
name=MongoDB Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el'$'releasever/
gpgcheck=0
enabled=1
EOF

sudo yum makecache
sudo yum install mongodb-org -y
sed -i 's/127.0.0.1/0.0.0.0/' /etc/mongod.conf
systemctl restart mongod
echo "/software/mongodb/bin/mongod --config /software/mongodb/mongo.config" >> /etc/rc.local

gitlab

# 清华大学开源软件镜像站
# https://mirrors.tuna.tsinghua.edu.cn/help/gitlab-ce/
echo -e "[gitlab-ce]\nname=Gitlab CE Repository\nbaseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el\$releasever/\ngpgcheck=0\nenabled=1" > /etc/yum.repos.d/gitlab-ce.repo
sudo yum makecache
sudo yum install gitlab-ce

chmod og-rwx /etc/cron.d
chmod og-rwx /etc/cron.monthly
chmod og-rwx /etc/cron.weekly
chmod og-rwx /etc/cron.daily
chmod og-rwx /etc/cron.hourly
chmod og-rwx /etc/crontab
chmod og-rwx /boot/grub2/grub.cfg

/etc/sysctl.d/99-cis.conf

net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.default.accept_redirects=0

lvm2


set -e
set -x

sudo fdisk /dev/vdb <<EOF
d
n
p
1

t
8e
w
EOF
yum install -y lvm2
## 1. 创建
pvcreate /dev/vdb1
vgcreate VolGroup /dev/vdb1
lvcreate -l +100%FREE -n lv_data VolGroup
mkfs.ext4 /dev/VolGroup/lv_data
echo "/dev/VolGroup/lv_data /docker/ ext4 defaults 0 0"|sudo tee -a /etc/fstab
e2fsck -y /dev/VolGroup/lv_data
mkdir /docker
mount -a


检查项:
禁止转发ICMP重定向报文
加固建议:
执行sysctl -w net.ipv4.conf.all.send_redirects=0,再查看/etc/sysctl.conf中是否存在net.ipv4.conf.all.send_redirects=0,不存在则添加
检查项:
禁止转发ICMP重定向报文
加固建议:
执行sysctl -w net.ipv4.conf.default.send_redirects=0,再查看/etc/sysctl.conf中是否存在net.ipv4.conf.default.send_redirects=0,不存在则添加
检查项:
禁止包含源路由的ip包
加固建议:
执行sysctl -w net.ipv4.conf.all.accept_redirects=0,再查看/etc/sysctl.conf中是否存在net.ipv4.conf.all.accept_redirects=0,不存在则添加
检查项:
禁止包含源路由的ip包
加固建议:
执行sysctl -w net.ipv4.conf.default.accept_redirects=0,再查看/etc/sysctl.conf中是否存在net.ipv4.conf.default.accept_redirects=0,不存在则添加
检查项:
禁止转发安全ICMP重定向报文
加固建议:
执行sysctl -w net.ipv4.conf.all.secure_redirects=0,再查看/etc/sysctl.conf中是否存在net.ipv4.conf.all.secure_redirects=0,不存在则添加
检查项:
禁止转发安全ICMP重定向报文
加固建议:
执行sysctl -w net.ipv4.conf.default.secure_redirects=0,再查看/etc/sysctl.conf中是否存在net.ipv4.conf.default.secure_redirects=0,不存在则添加
检查项:
启用反转地址路径过滤
加固建议:
执行sysctl -w net.ipv4.conf.all.rp_filter=1,再查看/etc/sysctl.conf中是否存在net.ipv4.conf.all.rp_filter=1,不存在则添加
检查项:
启用反转地址路径过滤
加固建议:
执行sysctl -w net.ipv4.conf.default.rp_filter=1,再查看/etc/sysctl.conf中是否存在net.ipv4.conf.default.rp_filter=1,不存在则添加
检查项:
禁止ipv6路由广播
加固建议:
执行sysctl -w net.ipv6.conf.all.accept_ra=0,再查看/etc/sysctl.conf中是否存在net.ipv6.conf.all.accept_ra=0,不存在则添加
检查项:
禁止ipv6路由广播
加固建议:
执行sysctl -w net.ipv6.conf.default.accept_ra=0,再查看/etc/sysctl.conf中是否存在net.ipv6.conf.default.accept_ra=0,不存在则添加
检查项:
禁止ipv6路由重定向
加固建议:
执行sysctl -w net.ipv6.conf.all.accept_redirects=0,再查看/etc/sysctl.conf中是否存在net.ipv6.conf.all.accept_redirects=0,不存在则添加
检查项:
禁止ipv6路由重定向
加固建议:
执行sysctl -w net.ipv6.conf.default.accept_redirects=0,再查看/etc/sysctl.conf中是否存在net.ipv6.conf.default.accept_redirects=0,不存在则添加
检查项:
SSHD强制使用V2安全协议
加固建议:
在/etc/ssh/sshd_config中取消注释符号#
检查项:
SSHD仅记录ssh用户登录活动
加固建议:
在/etc/ssh/sshd_config中取消LogLevel INFO注释符号#
检查项:
SSHD仅记录ssh用户登录活动
加固建议:
在/etc/ssh/sshd_config中取消MaxAuthTries注释符号#,设置自定义最大密码尝试失败次数
检查项:
清理主机远程登录历史主机记录
加固建议:
在/etc/ssh/sshd_config中取消IgnoreRhosts yes注释符号#
检查项:
禁止主机认证登录
加固建议:
在/etc/ssh/sshd_config中取消HostbasedAuthentication no注释符号#
检查项:
禁止root直接登录
加固建议:
在/etc/ssh/sshd_config中PermitRootLogin 值设置为no
检查项:
禁止空密码用户登录
加固建议:
在/etc/ssh/sshd_config中取消PermitEmptyPasswords no注释符号#
检查项:
禁止用户修改环境变量
加固建议:
在/etc/ssh/sshd_config中取消PermitUserEnvironment no注释符号#
检查项:
设置输入密码间隔时间
加固建议:
在/etc/ssh/sshd_config中取消LoginGraceTime前注释符,同时设置输入密码时间间隔秒数
检查项:
设置用户密码最小长度
加固建议:
在/etc/security/pwquality.conf中取消minlen注释符号#,同时设置最小密码长度建议10位以上
检查项:
设置用户密码数字位数
加固建议:
在/etc/security/pwquality.conf中取消dcredit注释符号#,同时设置为负数建议-1最少包含1位数字
检查项:
设置用户密码大写字母位数
加固建议:
在/etc/security/pwquality.conf中取消ucredit注释符号#,同时设置为负数建议-1最少包含1位大写字母
检查项:
设置用户密码小写字母位数
加固建议:
在/etc/security/pwquality.conf中取消lcredit注释符号#,同时设置为负数建议-1最少包含1位小写字母
检查项:
设置用户密码特殊字符位数
加固建议:
在/etc/security/pwquality.conf中取消ocredit注释符号#,同时设置为负数建议-1最少包含1位特殊字符
检查项:
新密码与老密码不能重复
加固建议:
在/etc/pam.d/password-auth中添加:password sufficient pam_unix.so remember=3这一行,remember的值表示此次设置密码与过去3次不同
检查项:
新密码与老密码不能重复
加固建议:
在/etc/pam.d/system-auth中添加:password sufficient pam_unix.so remember=3这一行,remember的值表示此次设置密码与过去3次不同
检查项:
检查空密码账户
加固建议:
使用如下命令设置有密码账户不活动最大时间值:useradd -D -f 90,建议值90
检查项:
rsyslog日志文件权限配置
加固建议:
在/etc/rsyslog.conf中添加:$FileCreateMode 0640
检查项:
强制密码失效时间
加固建议:
在/etc/login.defs 设置强制密码失效时间,建议值365
检查项:
密码修改最小间隔时间
加固建议:
在/etc/login.defs 设置密码修改最小间隔时间,建议值7
检查项:
设置有密码账户不活动最大时间
加固建议:
使用如下命令设置有密码账户不活动最大时间值:useradd -D -f 90,建议值90
检查项:
检查/boot/grub2/grub.cfg文件ACL属性
加固建议:
执行:chmod og-rwx /boot/grub2/grub.cfg
检查项:
检查/etc/crontab文件ACL属性
加固建议:
执行:chmod og-rwx /etc/crontab
检查项:
检查/etc/cron.hourly文件ACL属性
加固建议:
执行:chmod og-rwx /etc/cron.hourly
检查项:
检查/etc/cron.daily文件ACL属性
加固建议:
执行:chmod og-rwx /etc/cron.daily
检查项:
检查/etc/cron.weekly 文件ACL属性
加固建议:
执行:chmod og-rwx /etc/cron.weekly
检查项:
检查/etc/cron.monthly 文件ACL属性
加固建议:
执行:chmod og-rwx /etc/cron.monthly

检查/etc/cron.d 文件ACL属性
加固建议:
执行:chmod og-rwx /etc/cron.d

`