centos7系统优化
优化说明:
一.关闭selinux
二.更改为阿里yum源
三.提权dm用户可以使用sudo
四.优化ssh远程登录配置
五.设置中文字符集
六.设置时间同步
七.历史记录数及登录超时环境变量设置
八.调整linux描述符
九.定时清理邮件服务临时目录垃圾文件
十.锁定关键系统文件,防止被提权篡改
十一.ssh限制ip登录
十二.为grub菜单加密
十三.优化开机自启服务
十四.内核优化
十四.更新系统到最新
一.关闭selinux
#修改配置文件可使配置文件生效,但必须要重启系统,此步骤是sed快速修改方法,也可以通过vim编辑/etc/selinux/config来修改此文件.
sed -i '/^SELINUX/s/enforcing/disabled/g' /etc/selinux/config 检查替换结果为disabled就表示成功了.
grep SELINUX=disabled /etc/selinux/config
SELINUX=disabled #临时关闭
setenforce
usage: setenforce [ Enforcing | Permissive | | ]
0表示Permissive,即给出警告,但不会阻止操作,相当于disabled.
1表示Enforcing,即表示SELinux为开启状态.
setenforce #临时将SELinux调为Permissive状态.
getenforce #查看SELinux当前状态.
二.更改为阿里yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
三.提权dm用户可以使用sudo
备份/etc/sudoers文件
cp /etc/sudoers /etc/sudoers.--.bak sudo提权配置说明
用户或组 机器=授权角色 可以执行的命令
user MACHINA= COMMANDS
dm ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel useradd dm
echo |passwd --stdin dm
echo "dm ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers #结尾的ALL表示dm可拥有完全的系统管理权限,NOPASSSWD表示提权执行命令时不提示密码;
grep dm /etc/sudoers
visudo -c &>/dev/null
四.优化ssh远程登录配置
备份/etc/ssh/sshd_conf
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.--.bak
不允许基于GSSAPI的用户认证
sed -i 's/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/' /etc/ssh/sshd_config
不允许sshd对远程主机名进行反向解析
sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
禁止root用户登录
sed -i 's%#PermitRootLogin yes%PermitRootLogin no%' /etc/ssh/sshd_config
不允许空密码登录
sed -i 's%#PermitEmptyPasswords no%PermitEmptyPasswords no%' /etc/ssh/sshd_config
systemctl restart sshd
五.设置中文字符集
localectl set-locale LANG=zh_CN.UTF-
localectl status
六.设置时间同步
检查是否安装ntpdate
rpm -qa|grep ntpdate
ntpdate-4.2.6p5-.el7.centos.x86_64 如果没有安装,则使用yum安装
yum install -y ntpdate 添加计划任务,每5分钟同步一次时间;
echo '#time sync by dm at 2018-8-20' >>/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate -u ntp.api.bz >/dev/null 2>&1' >>/var/spool/cron/root
crontab -l
七.历史记录数及登录超时环境变量设置
设置闲置超时时间为300s
echo 'export TMOUT=300' >>/etc/profile 设置历史记录文件的命令数量为100
echo 'export HISTFILESIZE=100' >>/etc/profile 设置命令行的历史记录数量
echo 'export HISTSIZE=100' >>/etc/profile 格式化输出历史记录(以年月日分时秒的格式输出)
echo 'export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"' >>/etc/profile source /etc/profile
tail - /etc/profile
八.调整linux描述符
文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件.文件描述符与包括相关信息(如文件的打开模式,文件的位置类型,文件的初始类型等)的文件对象相关联,这些信息被称作文件的上下文.文件描述符的有效范围是0到OPEN_MAX.
对于内核而言,所有打开的文件都是通过文件的描述符引用的.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符,当读或写一个文件时,使用open或create返回的文件描述符标识该文件,并将其作为参数传递给read或write. 查看系统文件描述符设置的情况可以使用下面的命令,文件描述符大小默认是1024.
ulimit -n
对于高并发的业务Linux服务器来说,这个默认的设置值是不够的,需要调整. 调整方法一:
调整系统文件描述符为65535
echo '* - nofile 65535' >>/etc/security/limits.conf
tail -l /etc/security/limits.conf 调整方法二:
直接把ulimit -SHn 65535命令加入/etc/rc.d/rc.local,用以设置每次开机启动时配置生效,命令如下:
echo " ulimit -HSn 65535" >>/etc/rc.d/rc.local
echo " ulimit -s 65535" >>/etc/rc.d/rc.local
九.定时清理邮件服务临时目录垃圾文件
centos7默认是安装了Postfix邮件服务的,因此邮件临时存放地点的路径为/var/spool/postfix/maildrop,为了防止目录被垃圾文件填满,导致系统额inode数量不够用,需要定期清理.
定时清理的方法为:将清理命令写成脚本,然后做成定时任务,每日凌晨0点执行一次. #创建存放脚本的目录
[ -d /server/scripts/shell ] && echo "directory already exists." || mkdir /server/scripts/shell -p #编写脚本文件
echo 'find /var/spool/postfix/maildrop/ -type f|xargs rm -f' >/server/scripts/shell/del_mail_file.sh #查看
cat /server/scripts/shell/del_mail_file.sh #加入计划任务
echo "00 00 * * * /bin/bash /server/scripts/shell/del_mail_file.sh >/dev/null &1" >>/var/spool/cron/root
crontab -l
十.锁定关键系统文件,防止被提权篡改
要锁定关键系统文件,必须对账号密码我那件及启动文件加锁,防止被篡改,加锁命令如下:
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
lsattr /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 如果想要更加安全,可以把chattr改名转移,防止被黑客利用.
mv /usr/bin/chattr /usr/bin/dm1
十一.ssh限制ip登录
方法一:
只允许指定用户进行登录(白名单):
在 /etc/ssh/sshd_config 配置文件中设置 AllowUsers 选项,(配置完成需要重启 SSHD 服务)格式如下:
AllowUsers root@192.168.1.1
# 允许 IP 192.168.1.1 登录root 通过帐户登录系统。 只拒绝指定用户进行登录(黑名单):
在/etc/ssh/sshd_config配置文件中设置DenyUsers选项,(配置完成需要重启SSHD服务)格式如下:
DenyUsers root@192.168.1.10 #Linux系统账户
# 拒绝 IP 192.168.1.10 登录root 通过帐户登录系统。 方法二:
#允许192.168.200.0段的IP登录
echo "sshd:192.168.200.0/24:allow" >>/etc/hosts.allow #禁止所有的其他IP段的IP登录
echo "sshd:all:deny" >>/etc/hosts.deny
hosts.allow 和hosts.deny 两个文件同时设置规则的时候,hosts.allow 文件中的规则优先级高,按照此方法设置后服务器只允许 192.168.200.0/24这个段的 IP 地址的 ssh 登录,其它的 IP 都会拒绝。 方法三:
允许192.168.100.10登录ssh
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.100.10 service name=ssh accept' 拒绝192.168.200./24登录ssh
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.200.0/24 service name=ssh reject' firewall-cmd --reload
十二.为grub菜单加密
为grub菜单加密的目的是防止他人修改grub进行内核等启动设置,以及用单用户模式启动进行破解root密码等操作,实际上此步骤可以在安装系统的过程中设定.
安装系统后的具体设定步骤如下: 设置密码:
grub2-setpassword 查看设置的密码:
cat /boot/grub2/user.cfg #在/etc/grub.d/01_users文件中可以看到grub用户名为root,然后通过grub2-setpassword来设置grub的密码,密码设置成功后会生成/boot/grub2/user.cfg文件,可以通过/boot/grub2/user.cfg文件查看设置的密码,查看到的密码为加密的密码。
十三.优化开机自启服务
十四.内核优化
Linux服务器内核参数优化,主要是指在Linux系统中针对业务服务应用而进行的系统内核参数调整,优化并无一定的标准.下面是生产环境下Linux常见的内核优化: cat >>/etc/sysctl.conf<<EOF
#kernel_flag
#关闭ipv6
net.ipv6.conf.all.disable_ipv6 =
net.ipv6.conf.default.disable_ipv6 =
# 避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts =
# 开启恶意icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses =
#关闭路由转发
#net.ipv4.ip_forward =
#net.ipv4.conf.all.send_redirects =
#net.ipv4.conf.default.send_redirects =
#开启反向路径过滤
net.ipv4.conf.all.rp_filter =
net.ipv4.conf.default.rp_filter =
#处理无源路由的包
net.ipv4.conf.all.accept_source_route =
net.ipv4.conf.default.accept_source_route =
#关闭sysrq功能
kernel.sysrq =
#core文件名中添加pid作为扩展名
kernel.core_uses_pid =
# 开启SYN洪水攻击保护
net.ipv4.tcp_syncookies =
#修改消息队列长度
kernel.msgmnb =
kernel.msgmax =
#设置最大内存共享段大小bytes
kernel.shmmax =
kernel.shmall =
#timewait的数量,默认180000
net.ipv4.tcp_max_tw_buckets =
net.ipv4.tcp_sack =
net.ipv4.tcp_window_scaling =
net.ipv4.tcp_rmem =
net.ipv4.tcp_wmem =
net.core.wmem_default =
net.core.rmem_default =
net.core.rmem_max =
net.core.wmem_max =
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog =
#限制仅仅是为了防止简单的DoS 攻击
net.ipv4.tcp_max_orphans =
#未收到客户端确认信息的连接请求的最大值
net.ipv4.tcp_max_syn_backlog =
net.ipv4.tcp_timestamps =
#内核放弃建立连接之前发送SYNACK 包的数量
net.ipv4.tcp_synack_retries =
#内核放弃建立连接之前发送SYN 包的数量
net.ipv4.tcp_syn_retries =
#启用timewait 快速回收
net.ipv4.tcp_tw_recycle =
#开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接
net.ipv4.tcp_tw_reuse =
net.ipv4.tcp_mem =
net.ipv4.tcp_fin_timeout =
#当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时
net.ipv4.tcp_keepalive_time =
#允许系统打开的端口范围
net.ipv4.ip_local_port_range =
#修改防火墙表大小,默认65536
#net.netfilter.nf_conntrack_max=
#net.netfilter.nf_conntrack_tcp_timeout_established=
# 确保无人能修改路由表
#net.ipv4.conf.all.accept_redirects =
#net.ipv4.conf.default.accept_redirects =
#net.ipv4.conf.all.secure_redirects =
#net.ipv4.conf.default.secure_redirects =
EOF
/sbin/sysctl -p
十四.更新系统到最新
#更新补丁并升级系统版本
yum update -y #只更新安全补丁,不升级系统版本
yum --security check-update #检查是否有安全补丁
yum update --security #更新安全补丁
centos7系统优化的更多相关文章
- centos7系统优化定制
#!/bin/bash #author junxi by #this script is only for CentOS 7.x #check the OS platform=`uname -i` i ...
- centos7 系统优化脚本
脚本一: #!/usr/bin/env bash #设置环境变量 export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sb ...
- centos7 系统优化
#!/usr/bin/env bash #设置环境变量 export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/u ...
- centos7系统优化-转载
禁用SELINUX # grep -i ^selinux /etc/selinux/config SELINUX=enforcing SELINUXTYPE=targeted 注释掉上面2行,并增加 ...
- CentOS7版本基础使用
第1章 CentOS7的使用 1.1 为什么要使用CentOS7版本 CentOS7是在CentOS6基础上发布的新版本,与之前的版本相比,主要的更新包括: 1.内核更新到3.10.0 2.支持Lin ...
- Joker的自动化之路
系统篇 颜色 黄绿+金色 使用mac系统常用工具(包含svn,vim,crt,redis,php5,网络性能命令) 计算机硬件 linux发展史 cent ...
- Centos7之系统优化
优化条目: 修改ip地址.网关.主机名.DNS等 关闭selinux,清空iptables 添加普通用户并进行sudo授权管理 更新yum源及必要软件安装 定时自动更新服务器时间 精简开机自启动服务 ...
- centos7之系统优化方案
优化条目: 修改ip地址.网关.主机名.DNS等 关闭selinux,清空iptables 添加普通用户并进行sudo授权管理 更新yum源及必要软件安装 定时自动更新服务器时间 精简开机自启动服务 ...
- CentOS7.2最小化安装后系统优化
系统初始化技术的演变 1.sysvinit技术 (1)Linux系统的第一个进程(pid=1)为init: Linux 操作系统的启动首先从 BIOS 开始,接下来进入 boot loader,由 b ...
随机推荐
- js截取文件名不带后缀
利用正则表达式是匹配后缀名 一般文件后缀都为.xxx,也就是说从尾部匹配的话首先是字母,接着应该有一个. 那么我们就开始写正则表达式 利用在线工具 方便我们编写边测试 一般都是小写字母,所以我们用[a ...
- JavaScript Allongé 第一呷 :基础函数 (2)
啊!我想要有一个参数 到现在为止,我们已经了解了没有参数的函数.只说我们的函数没有任何参数,甚至还没说参数是什么.大多数程序员非常熟悉参数,中学数学就讨论这个了.所以你知道他们是什么,而我也知道你知道 ...
- copyin函数
详见:http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.kerneltechref%2Fdoc%2Fk ...
- 闹心的CSDN
近来搜索技术文章时,每次来到csdn上时,显示全文就提示登陆. 唉登陆就登陆吧,记不清账号了,就用手机号获取验证码.然后更改密码.我靠,密码居然要8位以上,要有大小写字母.数字和标点符号的组合... ...
- Linux远程连接及常用指令
一.远程连接 一般,服务器都是特别庞大的,会把它们用一个独立的小屋进行存放,如果有时候需要对服务器进行一些操作,离得近还好,离的远就会破费一些周折了,所以,这个时候我们就需要用到远程连接软件了.推荐使 ...
- JS 字符串 时间 数字函数操作 事件
字符串 操作 var s="abcdefg" s.tolowerCase() 转小写 s.toupperCase() 转大写 s.substring(2,5) 索引下 ...
- _T(x) _TEXT(x) L 代表什么?
首先 <tchar.h>中 #ifdef _UNICODE .... #define __T(x) L ## x //替换 #else /* ndef _UNICODE ...
- HDU 1520 Anniversary party (树形DP,入门)
题意:给一棵树,每个节点都有权值,要求选择部分节点出来,使得权值之和最大,但是每对(父亲,儿子)中最多只能挑一个. 思路: 比较入门的题,每个节点可以选也可以不选.若当前节点选的话,孩子必须全部不选: ...
- js 分组数组
思路: 1.先将数组按照一定规则排序: 2.再拆分数组到Map中,按Key分类: 3.再从Map中遍历取出要显示的内容: sortBroadList: function (broadcastList) ...
- Html5怎么导出图片
其实很简单, 首先需要两个js文件 jquery.min.js html2canvas.js 直接上代码,几行就解决了 <a id="example1" onclick=&q ...