Redhat7 环境基本优化

Redha7基础优化

1. 查看系统基础环境。

cat /etc/redhat-release

Red Hat Enterprise Linux Server release 7.4 (Maipo)
uname -r    
3.10.0-957.el7.x86_64  (查看系统内核kernel的版本号)
uname -m   

x86_64  (查看系统的位数)

2. Linux配置YUM源

创建iso存放目录和挂载目录

cd /mnt/

mkdir iso cdrom

将iso镜像文件上传到/mnt/iso文件夹下

将/mnt/iso下的iso文件挂载到/mnt/cdrom目录

mount -o loop rhel-server-7.4-x86_64-dvd.iso /mnt/cdrom/

mount: /dev/loop0 写保护,将以只读方式挂载.

(mount命令 -o指定选项,loop用来把一个文件当成硬盘分区mount到目录)

echo  "mount -o loop /mnt/iso/ rhel-server-7.4-x86_64-dvd.iso /mnt/cdrom/" >> /etc/rc.local

编辑/etc/yum.repos.d/myself.repo,如果/etc/yum.repos.d/路径下有其他*.repo文件的话,先备份删除,然后再编辑myself.repo文件

[root@desktop ~]# cd /etc/yum.repos.d/

[root@desktop yum.repos.d]# vim local.repo

[base]

name=local

baseurl=file:///mnt/cdrom

gpgcheck=0

enabled=1

测试

清除yum缓存

yum clean all

已加载插件:langpacks, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

正在清理软件源: base

Cleaning up everything

Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos

尝试安装httpd

yum install httpd -y

yum install lrzsz -y

已加载插件:langpacks, product-id, search-disabled-repos

软件包 lrzsz-0.12.20-36.el7.x86_64 已安装并且是最新版本

无须任何处理

yum报错信息:

订阅插件提示:This system is not registered with an entitlement server. You can use subscription-manager to register.

这个Red Hat Subscription Manager订阅管理器,它会让你一直register,解决办法:禁用就好
脚本文件: /usr/lib/yum-plugins/subscription-manager.py
配置文件: /etc/yum/pluginconf.d/subscription-manager.conf
调用了脚本 /usr/share/rhsm/repolib.py
去重写或者更新/etc/yum.repos.d/redhat.repo文件。
每次yum调用(不禁掉plugins的情况下),都会更新此文件。
因此,为了不冲突,可以如下操作:停止掉该插件的使用,在配置文件中把enable=0即可。

[root@micocube ~] vim /etc/yum/pluginconf.d/subscription-manager.conf
[main]
enabled=0           #将它禁用掉

如刚开始安装选择的最小化安装,后续可以执行这条命令安装组件

[root@local cdrom]# yum grouplist  

已加载插件:langpacks, product-id, search-disabled-repos, subscription-manager

           This system is not registered with an entitlement server. You can use subscription-manager to register.

没有安装组信息文件

Maybe run: yum groups mark convert (see man yum)

可用的环境分组:

最小安装

基础设施服务器

文件及打印服务器

基本网页服务器

虚拟化主机

带 GUI 的服务器

可用组:

传统 UNIX 兼容性

兼容性程序库

图形管理工具

安全性工具

开发工具

控制台互联网工具

智能卡支持

科学记数法支持

系统管理

系统管理工具

完成

[root@local cdrom]# yum groupinstall -y "开发工具"     ##安装命令

3. 关闭SElinux功能。SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,这个功能让系统管理员又爱又恨,这里我们还是把它关闭,至于安全问题,后面通过其他手段来解决,这也是大多数生产环境的做法,如果非要开启也是可以的。关闭SELINUX,可以通过vi修改配置文件来修改SELinux的状态或者用sed命令进行修改。

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0   

#修改完配置文件需重启系统才能生效,可临时设置为关闭状态

getenforce     
Permissive(#查看SElinux当前的级别状态,Permissive相当disabled)

4. 关闭iptables防火墙。关闭防火墙的目的是为了让初学者学习更方便,将来在学了iptables技术后可再统一开启。在企业环境中,一般只有配置外网IP的linux服务器才需要开启防火墙,但即使是有外网IP,对于高并发高流量的业务服务器仍是不能开的,因为会有较大性能损失,导致网站访问很慢,这种情况下只能在前端加更好的硬件防火墙了。

systemctl stop firewalld        #关闭防火墙
systemctl status firewalld      #查看防火墙状态
systemctl disable firewalld     #设置开机禁止启动防火墙
systemctl is-enabled firewalld  #查看防火墙是否开机启动
disabled

5. 设定linux运行级别。

在Linux操作系统中操作系统 的级别分为七级:

0 — 表示关机级别(不要将默认的运行级别设置成这个值)

1 — 单用户模式

2 — 多用户模式,不带NFS(Network File Syetem)

3 — 多用户模式,完全的多用户模式(不带桌面的,纯命令行模式)

4 — 没有被使用的模式(被保留模式)

5 — X11,完整的图形化界面模式

6 — 表示重启级别(不要将默认的运行级别设置成这个值)

对于传统的设置方法,只要修改/etc/inittab文件即可,将默认的启动级别改为需要改动的级别。打开CentOS7的/etc/inittab,发现该文件与其他Linux不同。

# cat /etc/inittab
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#

按照该文件所说的,runlevels被targets所取代,即CentOS7采用加载target的方式来替代之前的启动级别。其中有两个重要的target:multi-user.target与graphical.target。它们分别表示运行级别中的3与5级别。

linux Redhat7运行级别对应表?

-bash-4.2$ ls -al /lib/systemd/system/runlevel*

lrwxrwxrwx. 1 root root   15 12月 20 16:46 /lib/systemd/system/runlevel0.target -> poweroff.target      关机

lrwxrwxrwx. 1 root root   13 12月 20 16:46 /lib/systemd/system/runlevel1.target -> rescue.target        单用户模式,root权限,用于系统维护

lrwxrwxrwx. 1 root root   17 12月 20 16:46 /lib/systemd/system/runlevel2.target -> multi-user.target    多用户状态(无NFS)。没有网络服务。

lrwxrwxrwx. 1 root root   17 12月 20 16:46 /lib/systemd/system/runlevel3.target -> multi-user.target    完整的多用户状态(有NFS)。有网络服务,登录后进入控制台命令行模式。

lrwxrwxrwx. 1 root root   17 12月 20 16:46 /lib/systemd/system/runlevel4.target -> multi-user.target    保留,未使用

lrwxrwxrwx. 1 root root   16 12月 20 16:46 /lib/systemd/system/runlevel5.target -> graphical.target     X11控制台,登录后进入图形GUI模式。

lrwxrwxrwx. 1 root root   13 12月 20 16:46 /lib/systemd/system/runlevel6.target -> reboot.target        重启模式

linux Redhat7修改运行级别?

将默认级别设置为3(命令行模式)

systemctl set-default multi-user.target

将默认级别设置为5(图形界面模式)

systemctl set-default graphical.target

systemctl管理服务的启动,重启,停止等命令?

systemctl start foo.service    启动

systemctl restart foo.service  重启

systemctl stop  foo.service    停止

systemctl status foo.service   查看服务状态

systemctl设置服务开机启动,不启动等命令?

systemctl enable  foo.service  开机自动启动

systemctl disable foo.service  开机不自动启动

systemctl is-enable  foo.service   查看特定服务是否开机自启动

6. 管理服务设置精简开机。CentOS7开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替。

service 命令与 systemctl 命令对比

众所周知,服务越少,系统占用的资源就会越少,所以建议把不需要的服务关闭掉,这样做的好处是减少内存和CPU资源占用。首先可以看下系统中 存在着哪些已经启动了的服务。

systemctl list-unit-files -t service
yum install -y bash-completion        #安装后可补全服务名称

下面列出的是CentOS7开机需要保留的服务:

crond.service   — 定时任务

getty@.service  — tty控制台相关

rsyslog.service — 日志服务

sshd.service    — ssh登陆

sysstat.service — 性能分析

一条命令关闭其他所有不必要的服务:

# systemctl list-unit-files|grep enable|egrep -v
"crond|getty|rsyslog|sshd|sysstat"|awk '{print "systemctl","disable",$1}'|bash


# systemctl list-unit-files|grep enable
crond.service enabled
getty@.service enabled
rsyslog.service enabled
sshd.service enabled
sysstat.service enabled

7. 中文显示设置。

cp /etc/sysconfig/i18n /etc/sysconfig/back_i18n

echo 'LANG="en_US.UTF-8"' > /etc/sysconfig/i18n

source /etc/sysconfig/i18n

echo $LANG

8. 定时校正服务器时间。当Linux服务器的时间不对的时候,可以使用ntpdate工具来校正时间。

yum install ntp -y    #若无ntpdate命令,安装ntp
ntpdate ntp.api.bz    #校正服务器时间同网络时间一致
 3 Feb 17:03:37 ntpdate[1458]: step time server 114.118.7.163 offset -57.802521 sec
# dig ntp.api.bz #ntp.api.bz是一组NTP服务器集群,可用dig命令查看
# crontab -e #加入到定时任务,如每天凌晨1点1分执行一次时间同步
01 01 * * * /usr/sbin/ntpdate ntp.api.bz >> /dev/null 2>&1

 

9. 调整文件描述符的数量,进程和文件打开都要消耗文件描述符。 

echo 'ulimit -n 32000' >>/etc/profile

source /etc/profile

echo '* soft nofile 327680'>> /etc/security/limits.conf

echo '* hard nofile 327680'>> /etc/security/limits.conf

10. 隐藏linux版本信息。  

>/etc/issue

>/etc/issue.net

11. 禁止linux系统被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 开启

12. 历史记录

# 以下都是临时生效,默认1000不需要更改

# 设置的是闲置账号的超时时间

export TMOUT=10 10秒后提示超时时间

# 设置终端history显示条数

export HISTSIZE=5 只显示最近5条信息

# 上面的终端显示对应的是 cat ~/.bash_history

export HISTFILESIZE=5 该文件只保存5条信息
# 清空历史记录
history -c
# 指定条数删除
history -d 历史记录条属

 

13. 内核优化

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

14. 安装基础软件

yum install lrzsz nmap tree dos2unix nc -y

yum update -y

yum upgrade -y

15. 变更默认的ssh服务端口,禁止root用户远程连接

[root@c64 ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

[root@c64 ~]# vim /etc/ssh/sshd_config

Port 52113           #ssh连接默认的端口禁止

PermitRootLogin no   #root用户黑客都知道,禁止它远程登录,ssh虽然禁止远程登录,但是可以su -

PermitEmptyPasswords no  #禁止空密码登录

UseDNS no           #不使用DNS

GSSAPIAuthentication no  ##ssh连接慢需要更改这里

 

[root@c64 ~]# /etc/init.d/sshd reload    #从新加载配置

[root@c64 ~]# netstat -lnt     #查看端口信息

[root@c64 ~]# lsof -i tcp:52113

 

16. 锁定关键文件系统

加锁,不可修改加锁文件

[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

16. redhat7修改主机名常用方法

第一种方式:nmtui

第二种方式:使用hostnamectl命令

格式:hostnamectl set-hostname 主机名

如:

hostnamectl set-hostname node0001

修改后当前主机名并不会立马更改,需要重启后才生效,可使用hostname查看当前真实的主机名。

17. 为grub菜单设置密码

GRUB2提供两种类型的密码保护:

修改菜单条目时需要密码,但启动菜单条目时不需要密码;(只需要这一种)

修改菜单条目和启动一个、多个或所有菜单条目都需要密码。

设置修改菜单条目时的密码

使用grub2-setpassword设置密码可以防止修改GRUB菜单条目,但是不能防止未经许可的启动。如果需要启动条目的时候也需要密码,需要修改grub配置文件。

在RHEL 7.2和Centos 7(及更高版本)上,GRUB 2使用grub2-setpassword命令提供密码保护。

[root@localhost grub.d]# grub2-setpassword
Enter password:
Confirm password:

当在grub菜单里面按下e 或c,编辑的时候,提示需要用户名和密码才能修改。

 

posted @ 2020-06-03 15:56  quanscd  阅读(913)  评论(0编辑  收藏  举报