Centos7 首次安装后需要准备的工作

文章目录

Centos 是目前服务器常用系统之一,一般推荐Centos6.8+版本或Centos7.Last。目前8推出了,更新了很多,但是目前大部分还是使用的7系列,本文中以Centos7x mini为例。

关闭Selinux

百度定义:“SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现。” Selinux对于个人服务器或VPS来说就是多余的,而且开启会干扰很多程序的编译安装。建议关闭。

#查询当前Selinux状态,以下两命令均可
getenforce
/usr/sbin/sestatus -v
#临时关闭Selinux
setenforce 0 #设置SELinux 成为permissive模式
#setenforce 1 设置SELinux 成为enforcing模式
#永久关闭
vi /etc/selinux/config 
把SELINUX=enforcing改为SELINUX=disabled

安装常用软件包

首先检查yum是否正常,以安装Wget为测试,执行以下命令

yum install -y wget

如果提示错误、或者其他提示。首先看下一项目“设置DNS”,设置后执行“service network restart”后然后测试,如果还出行问题,请参考“替换Yum源”,如果还不能解决问题,可能是python版本的问题,联系服务商解决吧。

#常用包
#在mini系统中ifconfig执行提示找不到,就需要安装net-tools
yum install -y net-tools
#在编译nginx出错可能是perl没有安装或者是gcc版本问题,执行以下命令安装开发者常用工具包
yum groupinstall -y "Development Tools"
#安装perl perl依赖cpan
yum install cpan perl* 

设置DNS

防止污染、防止广告、防止一些域名不能解析、防止出现yum找不到等问题。

#编辑文件 按行添加
vim /etc/resolv.conf
#Google 公共
8.8.8.8
8.8.4.4
#Cloudflare
1.1.1.1 

更换Yum源(镜像)

#依次执行 (Centos7为例)
cd /etc/yum.repos.d/
#备份原有源配置文件
mv  CentOS-Base.repo  CentOS-Base.repo.bak
#下载163镜像源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo CentOS-Base.repo
#清理缓存
yum clean all
yum makecache
yum install epel-release

优化配置

1、 文件资源限制的配置设置到最大

# vim /etc/security/limits.conf
*     soft   nofile   65535 
*     hard  nofile    65535
#说明
* 代表用户,比如你Nginx用的www的用户安装运行的,你可以把*设置成www,就表示www用户下文件资源限制最大额65535。根据机器配置来做,SSD固态建议开最大。独服SAS或HDD下也建议开启。VPS根据配置调整。

2、Swap的使用

SAS、普通机械HDD硬盘不要开启,Swap分区是当内存不够的时候使用硬盘空间做虚拟内容,一个HDD的硬盘本身理论最大6G/s速度,访问量大的时候本身就吃io,再开启使用Swap,网速没有成瓶颈,你的硬盘却成了瓶颈。SSD固态或者M2硬盘下如果内存不够可以勉强给点使用。

#内核参数:0-100 可理解为权重或者百分比,当设置0时,几乎全用物理内存,设置越大,虚拟内存分配越大
vm.swappiness=0-100 
类似的设置还有文件缓存
vm.dirty_ratio[暂用不上]

3、关闭Ipv6

为什么关闭Ipv6?目前网上没有任何消息说关闭Ipv6是好办法,但是通过本人亲测,Ipv6开启的状态下,10Gbps/s 满载网速下,会突然时速,原因未知。

方法一:
编辑/etc/sysconfig/network配置,增加 NETWORKING_IPV6=no
方法二:
修改内核参数:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

修改端口和防火墙策略

Centos默认端口22,网络很多爆破软件都以22端口为爆破目标,可以改端口为0-65535之间任意非系统占用端口,(21、135、3389、3306、8080、8001、443、80等都是系统可能占用的端口),改了之后记着修改防火墙策略不然再次登录就登录不上去了。如果出现此类状况联系机房处理。独服可以IPMI登录修改,VPS可以通过虚拟化平台修改。

修改默认22端口:vi /etc/ssh/sshd_config

#port 22
去掉#注释,修改为 port XXX端口
#重启SSHD服务生效
service sshd restart
#PS:改端口记得要防火墙放行此端口

Centos7防火墙已经不用Iptable了,使用了firewalld;

启动: systemctl start firewalld
查看状态: systemctl status firewalld | firewall-cmd --state
停止: systemctl disable firewalld
禁用: systemctl stop firewalld

#添加放行端口
firewall-cmd --zone=public --add-port={端口}/tcp --permanent
#删除允许某TCP端口
firewall-cmd --zone=public --remove-port={端口}/tcp --permanent
#刷新生效
firewall-cmd --reload

TCP优化

1、使用BBR、LotServer等TCP拥塞控制

#BBR一键安装脚本 自动更换内核
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
安装后会重启,执行“lsmod |grep bbr” 如果有信息说明安装成功
#一键锐速 Lotserver
wget --no-check-certificate -O appex.sh https://raw.githubusercontent.com/0oVicero0/serverSpeeder_Install/master/appex.sh && chmod +x appex.sh && bash appex.sh install
安装成功就绝对成功,需要内核支持。一般用bbr就够了。

2、内核设置

#内核基础优化设置
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

#当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为1,表示开启的;
net.ipv4.tcp_syncookies = 1
#允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;客户端是nat环境或者服务器在nat环境,最好不要开启
net.ipv4.tcp_tw_reuse = 0
#开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_tw_recycle = 0
#开启时间戳,默认系统开启
net.ipv4.tcp_timestamps = 1
#网上搜索到的优化参数:
net.ipv4.tcp_max_tw_buckets = 6000
timewait的数量,默认是180000。
net.ipv4.ip_local_port_range = 1024 65000
允许系统打开的端口范围。
net.ipv4.tcp_tw_recycle = 1
启用timewait快速回收。
net.ipv4.tcp_tw_reuse = 1
开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。
net.ipv4.tcp_syncookies = 1
开启SYN Cookies,当出现SYN 等待队列溢出时,启用cookies来处理。
net.core.somaxconn = 262144
web 应用中 listen 函数的 backlog 默认会给我们内核参数的 net.core.somaxconn 限制到
128,而nginx定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值。
net.core.netdev_max_backlog = 262144
每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包
的最大数目。
net.ipv4.tcp_max_orphans = 262144
系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数
字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS攻击,
不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。
net.ipv4.tcp_max_syn_backlog = 262144
记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而
言,缺省值是1024,小内存的系统则是128。
net.ipv4.tcp_timestamps = 0
时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间
戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。
net.ipv4.tcp_synack_retries = 1
为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也
就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送 SYN+ACK 包的
数量。
net.ipv4.tcp_syn_retries = 1
在内核放弃建立连接之前发送SYN 包的数量。
net.ipv4.tcp_fin_timeout = 1
如果套接字由本端要求关闭,这个参数决定了它保持在 FIN-WAIT-2 状态的时间。对端
可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180 秒,
2 你可以按这个设置,但要记住的是,即使你的机器是一个轻载的 WEB 服务器,也有因为大
量的死套接字而内存溢出的风险,FIN- WAIT-2 的危险性比FIN-WAIT-1 要小,因为它最多只
能吃掉1.5K内存,但是它们的生存期长些。 
net.ipv4.tcp_keepalive_time = 30
当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2 小时。

附件说明

1、内核设置

将参数按行添加到:“/etc/sysctl.conf ”中,使用 sysctl -p 刷新设置。

2、整合个脚本,包含一些基础设置

echo "nameserver 8.8.8.8" > /etc/resolv.conf;echo "nameserver 8.8.4.4" >> /etc/resolv.conf;yum -y install krb5-workstation gcc gcc-c++ system-config-securitylevel-tui automake autoconf ntp sysstat rsync make crontab crontabs quota ping traceroute wget tcpdump scp bzip2 unzip system-config-network-tui kudzu smartmontools make which gd lsof ncurses-devel psmisc dbus-python bc net-tools irqbalance;chkconfig irqbalance on;ln -s /usr/lib64/libncurses.so.5 /usr/lib64/libtinfo.so.5;iptables -F;/etc/init.d/iptables save;service iptables stop;perl -pi -e 's/SELINUX\=enforcing/SELINUX\=disabled/' /etc/selinux/config;chkconfig ip6tables off;chkconfig iptables off;chkconfig firewalld off;

3、禁止Ping

#补充安全设置:禁止Ping,防止扫描 内核参数修改
net.ipv4.icmp_echo_ignore_all = 1

常用

卸载软件不卸载依赖:rpm -e --nodeps {软件包}
原文链接:Centos7 首次安装后需要准备的工作