Linux 基础优化
1、操作的最小化原则
1)安装系统最小化
一般情况下安装OS时,软件安装包组(Package Group)的选择:
base--------------------------基本环境
editors-----------------------编辑器
development librarys------开发库
development tools---------开发工具
x software development--图形界面开发软件
system tools----------------系统工具
2)开启程序服务最小化原则
for i in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $i off;done
for i in crond network syslog sshd;do chkconfig --level 3 $i on;done
只留:crond network syslog sshd;
3)登陆最小化原则;平时没有需求不用root登陆,要用普通登陆。
useradd tom ; echo 123456 | passwd --stdin tom
2 、更改ssh服务默认端口及常规配置
vim /etc/ssh/sshd_config #ListenAddress 0.0.0.0 #监听ip
Port 52113 #ssh连接默认的端口
PermitRootLogin no #禁止root远程登陆。
PermitEmptyPasswords no #禁止空密码登陆
UseDNS no #不使用DNS
GSSAPIAuthentication no #连接慢时改为no
3、 Sudo的应用
让普通用户可以拥有指定root权限功能
1) 通过visudo配置sudo
注:当给普通用户全部root权限时,可通sudo su – 命令由当前普通用户切换到root用户环境变量中,而无需知道root的密码,只要知道当前用户密码即可切换成功。
2) 通过配置文件配置sudo
3) 配置文件的基本解释
通过visudo直接编辑,配置后可自动检查语法功能; 1)授权(授权组可用%开头)
Wang ALL=(ALL) ALL
用户 机器=(授权哪个角色的权限) 授权的命令
%用户组 机器=(授权哪个角色的权限) 授权的命令
别名的意义
用户或组 |
主机(机器) |
授权角色权限 |
命令 |
Root |
ALL |
(ALL) |
ALL |
User_Alias Uers=wang, %mikem |
Host_Alias Hostname=lc1,lc2 |
Runas_Alias OP=root |
Cmnd_Alias CMd=/sbin.. |
4) 普通用户可通过sudo –l命令查看本身具有sudo的哪些权限
提示:
用户通过sudo提权时有时要输入的密码,有时不输入,其原因可在配置文件里配置密码超时时间;当通过sudo命令提权时,会先检查/var/db/sudo/目录下是否有相应用户的密码时间戳,如果没超时就直接通过,否则输入自己的密码才能执行。
5)Sudo配置注意事项
a) 命令别名下的成员必须是文件或目录的绝对路径
b) 别名名称是包含大写字母,数字,下划线,如果是字母都要大写
c) 一个别名下有多个成员,成员与成员之间,通过半角“,”号分隔;成员必须是有效实际存在的。
d) 别名成员受别名类型Host_Alias,User_Alias,Runas_Alias,Cmnd_Alias制约,定义什么类型的别名,就要有什么类型的成员相配。
e) 别名规则是每行算一个规则,如果一个别名规则一行容不下时,可以通过“\”来续行;
f) 指定切换的用户要用()括号括起来,如果省略括号,则默认为root用户;如果括号里是ALL,则代表能切换到所有用户
g) 如果不需要密码直接运行命令的,应该加NOPASSWD:参数。
h) 禁止某类程序或命令执行,要在命令动作前面加上“!”号,并且放在允许执行命令的后面。
i) 用户组前面必须加%号。
4、linux系统登录用户的超时时间
echo "expert TMOUT=10" >>/etc/profile 超时时间
echo "export HISTSIZE=5" >>/etc/profile 历史命令数量
history –c 清空历史记录
history –d 4 清空指定的记录
5、系统字符集调整支持显示中文
建议更改字符集 (建议)
注:Source表示重新加载配置文件使其生效
6 服务器时间同步及更改
1) 通过date –s命令更改时间并通过hwclock命令将更改的时间更新的bash里
date -s "2014/10/15"hwclock
date +%F\ %T
2) 通过ntpdate更新服务器时间
# ntpdate time.nist.gov
3) Ntp-sever服务器搭建
安装ntp-server(系统默认安装),也可通过yum安装。
rpm -qa ntp
编辑ntpd.conf配置文件
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap noquery #拒绝所有
restrict 192.168.166.0 mask 255.255.255.0 nomodify #只允许该网段更新时间
restrict 127.0.0.1 #本可有所有操作
server 210.72.145.44 prefer #perfer参数是优先到远端Ntpserver更新时间
server 127.127.1.0 fudge #如果远端服务器不能同步时间,则由本地时间提供给客户端
127.127.1.0 stratum 8
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys 1)说明:关于权限设定部分
权限的设定主要以 restrict 这个参数来设定,主要的语法为
restrict IP地址 mask 子网掩码 参数
注:其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP。 2)参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询
注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!
4) 通过cron任务计划定时更新服务器时间
echo “#time update by server” >>/var/spool/cron/root
echo “*/5 * * * * /usr/sbin/ntpdate time.nist.gov” >>/var/spool/cron/root
7、加大服务器文件描述符
通过编辑ulimit配置文件使文件描述符增加永久生效
#vim /etc/syscurity/limits.conf
#ulimit -n
#ulimit –a 查看所有限制,以及设定参数
# man limits.conf
注:调整的数字不是越大越好,一句话够用就行,logout (或Ctrl+D) 退出登录(Ctrl+D = logout)生效
8、调整内核参数文件/etc/sysctl.conf
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl =15
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 32768
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_wmem = 8192 131072 16777216
net.ipv4.tcp_rmem = 32768 131072 16777216
net.ipv4.tcp_mem = 786432 1048576 1572864
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.ip_conntrack_max = 65536
net.ipv4.netfilter.ip_conntrack_max=65536
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384 # sysctl –p ;通过命令使其生效
#vim /etc/sysctl.conf ; 进入文件后在最后行中添加
9 、锁定关键系统文件
通过chattr +i 进行加锁
# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
10、 lvs/haproxy负载均衡代理内核参数配置
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.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
11、 nginx/apache生产内核参数优化案例
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768 net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216 net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_mem = 94500000 915
12、CDN公司cache服务器内核/etc/sysctl.conf优化案例
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_max_tw_buckets = 1800000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_retries1 = 22
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_synack_retries = 3
13、 删除登录信息
(不显示内核版本,主机名,发行版本号及一些后台进程的版本号),防止探测。
cat /dev/null >/etc/issue 本地登录显示linux的版本号
cat /dev/null >/etc/issue.net 网络登录显示linux的版本号
cat /dev/null >/etc/motd 登录描述
#包括应用层 比如隐藏apache ,php等的版本。
14、设置/etc/hosts.deny、/etc/hosts.allow
可以控制外部IP对本机服务的访问
etc/hosts.allow 的设定优先于 /etc/hosts.deny 清除多余的系统虚拟账号(非必须)
1.关闭/etc/passwd中不必要的用户(可选优化项)
2.关闭/etc/group中不必要的用户组(可选优化项)
15、 Linux基础优化小结:
1)不用root,添加普通用户,通过sudo授权管理
2)更改默认的远程连接SSH服务端口及禁止root用户远程连接
3)定时自动更新服务器时间
4)配置yum更新源,从国内更新源下载安装rpm包
5)关闭selinux及iptables(暂时关闭,后面学到要开启并优化)
6)调整文件描述符数量,进程及文件的打开都会消耗文件描述符
7)定时自动清理/var/spool/clientmquene/目录垃圾文件,防止inodes节点被占满。
8)精简开机自启动服务
9)Linux内核参数优化
10)更改字符集,支持中文,但建议还是用英文字符集,防止乱码问题。
11)锁定关键系统文件
12)清空/etc/issue ,去除或更改系统及内核版本登陆前的屏幕显示
16、linux内核崩溃修复
1)重新安装系统,选择硬盘,不分区
2)选择旧分区的/boot,/分区,swap,并重新挂载和格式化
3)安装好系统后,重新挂载data分区 这样不会丢数据。
17、centos7优化
1、关闭selinux
sed -i 's#SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0
getenforce 2、关闭firewalld防火墙服务
systemctl stop firewalld
systemctl disable firewalld 3、设置普通用户提权操作(可选优化)
useradd test
echo 123456|passwd --stdin test
cp /etc/sudoers{,.ori}
echo "test ALL=(ALL) NOPASSWD: ALL " >> /etc/sudoers
tail -1 /etc/sudoers
visudo -c 4.设置系统中文UTF8字符集
cat /etc/locale.conf
LANG="en_US.UTF-8" cp /etc/locale.conf{,.ori}
echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf
source /etc/locale.conf
echo$LANG localectlset-locale LANG="zh_CN.UTF-8"
cat/etc/locale.conf 5、时间同步设置
/usr/sbin/ntpdate ntp.aliyun.com echo '#time sync ' >> /var/spool/cron/root
echo "*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null2>&1" >> /var/spool/cron/root
crontab -l 6、提升命令行操作安全性(可选优化)
echo 'export TMOUT=300' >> /etc/profile
echo 'export HISTSIZE=5' >> /etc/profile
echo 'export HISTFILESIZE=5' >> /etc/profile
tail /etc/profile
. /etc/profile 7、加大文件描述符
echo'* - nofile 65535 ' >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf ulimit -SHn 65535
ulimit -n 8、优化系统内核
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 9、iptables防火墙的优化
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max =25000000
net.netfilter.nf_conntrack_tcp_timeout_established= 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait= 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait= 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait= 120
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216 10、安装系统常用软件
CentOS6和CentOS7
yum install tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs -y CentOS7
yum install psmisc net-tools bash-completion vim-enhanced -y 11、优化SSH远程连接效率
cp /etc/ssh/sshd_config{,.ori}
sed -rn '/#Port/s/#(.*)22/\112345/p' /etc/ssh/sshd_config.
sed -rn '/ListenAddress/s/#(.* )0.*/\1192.168.1.2/p' /etc/ssh/sshd_config
sed -rn '/#PermitRootLogin/s/#(.*)yes/\1no/p' /etc/ssh/sshd_config
sed -n '/PermitEmptyPasswords/s/^#//p' /etc/ssh/sshd_config
sed -rn '/#UseDNS/s/#(.*)yes/\1no/p' /etc/ssh/sshd_config
sed -n '/GSSAPIAuthentication/s#yes#no#p' /etc/ssh/sshd_config 12、保留yum安装的软件包(可选优化)
sed -n '/keepcache/s#0#1#p' /etc/yum.conf 13、 锁定关键系统文件
/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab
chattr +i /etc/passwd /etc/shadow /etc/group
chattr +i /etc/inittab /etc/fstab /etc/sudoers
lsattr /etc/passwd /etc/shadow /etc/group /etc/inittab /etc/fstab /etc/sudoers
mv /usr/bin/chattr /opt/root
cp /usr/bin/xargs /usr/bin/chattr 14、去除登录前的系统及内核版本显示。
> /etc/issue.net
> /etc/issue 15、清除多余的系统虚拟用户账号。
userdel -r adm
userdel -r lp
userdel -r games
userdel -r ftp
groupdel adm
groupdel lp
groupdel games
groupdel video
groupdel ftp 16、grub引导菜单加密码
grub2-setpassword
cat /boot/grub2/user.cfg 17、禁止主机被ping
echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
sysctl -p 18、打补丁
yum update 19、精简开机自启动服务
systemctl list-unit-files | grep enable | egrep -v "sshd.service|crond.service|sysstat|rsyslog|^NetworkManager.service|irqbalance.service" | awk '{print "systemctl disable",$1}' | bash
systemctl list-unit-files | grep enable #保留服务:
sshd|crond|sysstat|rsyslog|NetworkManager|irqbalance 20、企业生产最小化原则:
1)安装软件包最小化。
2)用户权限最小化。
3)目录文件权限最小化。
4)自启动服务最小化。
5)服务运行用户最小化。
Linux 基础优化的更多相关文章
- Linux基础优化和安全重点小结
Linux基础优化和安全重点小结 1.不用root管理,以普通用户的名义通过sudo管理授权(/etc/sudoers) 2.更改默认的ssh服务端口,禁止root用户远程连接,甚至监听 ...
- Linux基础优化(二)
Linux基础优化(二) 一操作系统字符优化 避免出现中文乱码,UTF-8支持中文GBK-Xx支持中文 (一)查看默认编码 [root@centos7 ~]# echo $LANG en_US.UTF ...
- Linux基础优化与安全归纳总结
一名运维工程师在运维岗位上时间久了,就会发现Linux优化的重要性,同时会给运维工作带来很多的便利性.本人逐渐认识到了这一点,所以特意在工作闲暇之余,通过阅读Linux相关书籍及向同事.同行高手咨询, ...
- 18.linux基础优化
1.linux系统的基础优化 (1)关闭selinux sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config 临时关闭 ...
- linux运维、架构之路-linux基础优化
1.查看linux版本 cat /etc/redhat-release #CentOS release 6.9 (Final) ————>查看版本号 uname -m #x86_64 ————& ...
- 1、linux基础优化
1.添加一个用户 [root@oldboy ~]# useradd oldboy [root@oldboy ~]# id oldboy uid=500(oldboy) gid=500 (oldboy) ...
- linux基础优化
[root@moban oldboy]# for oldboy in `chkconfig --list |grep "3:on" |awk '{print $1}' |grep ...
- Centos6.5 64linux系统基础优化(二)
1 操作的最小化原则 1)安装系统最小化 2)开启程序服务最小化原则 3)操作最小化原则 4)登陆最小化原则;平时没有需求不用root登陆,要用普通登陆. 2 更改ssh服务默认端口及常规配置 # ...
- Linux实战教学笔记06:Linux系统基础优化
第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...
随机推荐
- 这款智能又高效的自助式BI工具,你应该了解一下
如今,企业的经营面临越来越激烈的竞争,如何将数据的价值发挥到最大化,成为众多企业急需解决的问题.如果部署数据分析平台还像以前那样要经历漫长实施过程的话,那么数据化运营将成为空谈.在市场需求的催化下,& ...
- 大数据时代变局与机遇,BI数字化转型的实战攻略!
党的十九大报告提出,要推动互联网.大数据.人工智能和实体经济深度融合.更加高效地获取.运用信息,成为企业具有强大竞争力的重要标志.我国企业应牢牢把握历史性机遇,以更加开放的姿态,积极拥抱新经济,积极参 ...
- 📚 选择排序和插入排序区别-DS笔记
选择排序法 A[i...n)未排序,A[0...i)已排序 A[i...n]中最小值要放到A[i]的位置 复杂度 \(O(n^2)\) 第一层循环n次 第二层循环:i=0,n次:i=1,n-1次... ...
- 企业环境下如何把ubuntu的dhcp改为静态IP
静态ip不能连接外网 因为老的虚拟机有ubuntu桌面 以及一些磁盘的问题, 想 迁移 自己的虚拟机,连带着把ip也迁移,(公司有些界面是 通过我的虚拟机ip访问的.) 编辑 root@ubuntu: ...
- 【C#反射】开篇
微软官方教程:https://docs.microsoft.com/zh-cn/dotnet/framework/reflection-and-codedom/viewing-type-informa ...
- Go基础知识梳理(二)
Go基础知识梳理(二) 简单函数的定义 //有参数有返回值 func sum(a int, b int) int { return a + b } //无返回值 func sum(a int, b i ...
- Tableau学习Step2一数据文件的读取与统计图、表的概述
Tableau学习Step2一数据文件的读取与统计图.表的概述 本文首发于博客冰山一树Sankey,去博客浏览效果更好. 一. 前言 本教程通过一个案例从浅到深来学习Tableau知识 案例概述: 二 ...
- 【译】.NET 7 预览版 1 中的 ASP.NET Core 更新
原文 | Daniel Roth 翻译 | 郑子铭 .NET 7 预览版 1 现已推出!这是 .NET 下一个主要版本的第一个预览版,其中将包括使用 ASP.NET Core 进行 Web 开发的下一 ...
- 微信小程序如何测试?
不需要安装,只要在微信里找到这个小程序打开即可使用,由于小程序的便捷,如今越来越多的平台开发方都纷纷推出自身的小程序应用. 那我们该如何进行微信小程序测试呢? 1.功能测试 功能测试以需求文档和交互视 ...
- Jira8.0.2安装及破解
最近开发部总监需要部署JIRA管理项目,就安装了一个JIRA8.5.7版安装并破解后,有天断电重启了,发现启动不了提示连接不上数据库.后来我又换了台机器重新安装后又进行了重启发现此破解版本存在问题.并 ...