CentOS7系统优化
1. 修改ip地址、网关、主机名、DNS等
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 #网卡名字
BOOTPROTO=static #静态IP地址获取状态 如:DHCP表示自动获取IP地址
IPADDR=192.168.1.113 #IP地址
NETMASK=255.255.255.0 #子网掩码
ONBOOT=yes#引导时是否激活
GATEWAY=192.168.1.1
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.113
NETMASK=255.255.255.0
ONBOOT=yes
GATEWAY=192.168.1.1
[root@localhost ~]# vi /etc/sysconfig/network
HOSTNAME=c64 #修改主机名,重启生效
GATEWAY=192.168.1.1 #修改默认网关,如果上面eth0里面不配置网关的话,默认就使用这里的网关了。
[root@localhost ~]# cat /etc/sysconfig/network
HOSTNAME=c64
GATEWAY=192.168.1.1
我们也可以用 hostnamec64 来临时修改主机名,重新登录生效
修改DNS
[root@localhost ~]# vi /etc/resolv.conf #修改DNS信息
nameserver 114.114.114.114
nameserver 8.8.8.8
[root@localhost ~]# cat /etc/resolv.conf #查看修改后的DNS信息
nameserver 114.114.114.114
nameserver 8.8.8.8
[root@localhost ~]# systemctl restart network #重启网卡,生效
2. 设置防火墙,关闭selinux,清空iptables
#关闭默认防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service #禁止firewall开机启动
#安装iptables防火墙
yum install iptables-services #安装
systemctl start iptables.service #开启
systemctl enable iptables.service #设置防火墙开机启动
#清空iptables
iptables -F
#编辑iptables防火墙配置
#执行下列脚本:
#!/bin/bash
IPT=`which iptables`
$IPT -F
$IPT -X
$IPT -P INPUT DROP
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -N syn-flood
##本地回环 内网允许任何
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -m state --state NEW -s 10.0.0.0/8 -j ACCEPT
# ssh 端口开放 任何IP
$IPT -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
# 根据需求填写相应的端口
$IPT -A INPUT -p tcp -m multiport --dports 80,8087,89 -j ACCEPT
# zabbix监控地址
$IPT -A INPUT -p tcp -s zabbix.ip -m state --state NEW -m tcp --dport 10050 -j ACCEPT
# ICMP 规则控制
$IPT -A INPUT -p icmp -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
$IPT -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
# DOS防护
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood
$IPT -A INPUT -j REJECT --reject-with icmp-host-prohibited
$IPT -A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN
$IPT -A syn-flood -j REJECT --reject-with icmp-port-unreachable
#保存配置
service iptables save
#关闭selinux
setenforce 0 设置不启动
# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
3. 添加普通用户并进行sudo授权管理
useradd xxx
passwd
Old password:******
New password:*******
Re-enter new password:*******
#赋予root权限
方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
然后修改用户,使其属于root组(wheel),命令如下:
#usermod -g root tommy
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。
方法二:修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tommy ALL=(ALL) ALL
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作
4. 升级ssh版本
yum update openssh
5. 安装常用工具
yum install lrzsz ntpdate sysstat net-tools -y
lrzsz 是上传下载的软件
sysstat 是用来检测系统性能及效率的工具
net-tools 没有ifconfig命令时候需要安装工具
6. 定时自动更新服务器时间
默认云服务器有同步的时间服务器
修改时间 date
硬件时间 hwclock --show
同步公有时间服务器,可搭配任务计划,阿里云的时间服务器ntp.aliyun.com
yum -y install ntp
ntpdate asia.pool.ntp.org
time.nist.gov
time.nuri.net
ntpdate asia.pool.ntp.org 或者 ntp.aliyun.com
注意;如果出现ntpdate[24325]: the NTP socket is in use, exiting,需要systemctl stop ntpd.service停止,然后同步,之后再启动,阿里云服务器默认同步阿里云时间服务器
7. 精简开机自启动服务
修改启动服务
systemctl 是管制服务的主要工具,它整合了chkconfig 与 service功能于一体。
systemctl is-enabled iptables.service #查询防火墙是否开机启动
systemctl restart sshd #有可能不需要加service
systemctl is-enabled servicename.service #查询服务是否开机启动
systemctl enable *.service #开机运行服务
systemctl disable *.service #取消开机运行
systemctl start *.service #启动服务
systemctl stop *.service #停止服务
systemctl restart *.service #重启服务
systemctl reload *.service #重新加载服务配置文件
systemctl status *.service #查询服务运行状态
systemctl --failed #显示启动失败的服务
8. 锁定关键文件系统
加锁,不可修改加锁文件
[root@jokerpro ~]# chattr +i /etc/passwd
[root@jokerpro ~]# lsattr /etc/passwd
----i--------e-- /etc/passwd
去锁,可以修改文件
[root@jokerpro ~]# chattr -i /etc/passwd
[root@jokerpro ~]# lsattr /etc/passwd
-------------e-- /etc/passwd
使用chattr命令后,为了安全我们需要将其改名
mv /usr/bin/chattr /usr/bin/任意名称
9. 调整文件描述符大小
文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件。文件描述符与包括相关信息(文件的打开模式,文件的位置类型,文件的出始类型等)的文件对象相关联,这些信息被称作文件的上下文。文件描述符的有效范围是0到OPEN_MAX。
对于内核而言,所有打开的文件都是通过文件描述符引用的,当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读或写一个文件时,使用open或create返回的文件描述符标识该文件,并将其作为参数传递给read或write。
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 3895
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535 # 文件描述符
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192 # 堆栈文件
cpu time (seconds, -t) unlimited
max user processes (-u) 3895
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
查看linux服务器文件描述符设置的情况
ulimit -n 1024 默认打开的文件描述符就是1024
对于高并发业务来讲,默认值肯定不够
cat /etc/security/limits.conf 65535是最大支持的文件描述符
root soft nofile 65535
root hard nofile 65535
可以使用下面一行来替代上面
* - nofile 65535
重启即可
10. 调整字符集,使其支持中文
修改字符编码,默认是LANG=en_US.UTF-8
修改该文件之前,可以先查看已经安装的语言包:
locale -a 可通过grep过滤查看是否有中文语言包
如果没有语言包
yum install kde-l10n-Chinese
yum reinstall glibc-common
安装完成后通过vi命令编辑配置文件
vim /etc/locale.conf
LANG="zh_CN.UTF-8"
source /etc/locale.conf
11. 去除系统及内核版本登录前的屏幕显示
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
# cat /etc/issue
\S
Kernel \r on an \m
12. 禁止系统被ping
# 开启禁止ping
echo "net.ipv4.icmp_echo_ignore_all=1" 1>> /etc/sysctl.conf
sysctl -p
# 关闭禁止ping
首先要删除 /etc/sysctl.conf 里面net.ipv4.icmp_echo_ignore_all = 1
之后执行如下命令
echo 0 1> /proc/sys/net/ipv4/icmp_echo_ignore_all
# 后续就可以通过更改 cat /proc/sys/net/ipv4/icmp_echo_ignore_all文件
0 关闭 1 开启
13. 历史记录
# 以下都是临时生效,默认1000不需要更改
# 设置的是闲置账号的超时时间
export TMOUT=10 10秒后提示超时时间
# 设置终端history显示条数
export HISTSIZE=5 只显示最近5条信息
# 上面的终端显示对应的是 cat ~/.bash_history
export HISTFILESIZE=5 该文件只保存5条信息
# 清空历史记录
history -c
# 指定条数删除
history -d 历史记录条属
14. 内核参数优化
#根据需求定制
# kernel optimization
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
EOF
sysctl -p