19、centos7优化

时间:2024-11-11 16:02:12

优化条目:

优化条目:
1.sudo管理用户授权  (不用root管理,以普通用户的名义通过sudo提权)
2.更改默认的远程连接SSH服务端口,禁止root用户远程连接,(提前建立普通用户)(甚至更改为只监听内网IP)
3.精简并保留必要的开机自启动服务(如crond、sshd、network、rsyslog、sysstat)
4.设置运行级别为3(文本模式)
5.服务器时间同步。
6.关闭SELINUX防火墙
7.关闭防火墙(iptables),(在工作场景中,如果有外部IP一般打开)
8.设置回话的超时时间及历史记录数。
9.配置yum更新源,从国内更新源下载安装软件包。
10.调整文件描述符的数量,进程及文件的打开都会消耗文件描述符。
11.定时自动清理邮件目录垃圾文件,防止inodes节点被占满(注意centos6和centos7目录不同)
12.Linux内核参数优化/etc/sysctl.conf,执行sysctl -p 生效。
13.更改字符集,使其支持中文,(但建议还是用英文字符集,防止出现乱码。)
14.锁定关键系统文件如/etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab处理以上内容后把chattr、lsattr改名为xuliangwei,这样就安全多了。
15.清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的信息。
16.清除多余的系统虚拟账号。
17.给grub菜单加密码。
18.禁止被PING
19.升级漏洞软件(yum/rpm升级)
20、修改ip地址、网关、主机名、DNS等

【参考网址】centos7之系统优化方案 - liqianlong - 博客园


一、修改ip地址、网关、主机名、DNS等


[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
#修改网卡
cp /etc/sysconfig/network-scripts/ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-ens33.csbf
ll /etc/sysconfig/network-scripts/ifcfg-ens33*
cat >/etc/sysconfig/network-scripts/ifcfg-ens33 <<EOF
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
#UUID=4c26c5cb-4853-49a3-9b12-bed561a6725e
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.80.80
NETMASK=255.255.255.0
GATEWAY=192.168.80.2
DNS1=8.8.8.8
EOF

#查看过后修改网卡的信息
cat /etc/sysconfig/network-scripts/ifcfg-ens33

#重启网卡
systemctl restart network 
ping www.baidu.com
#更新系统
yum update -y
________________________________________________________________________________________________
#修改DNS,如果网卡未配置DNS需要在这里配置DNS
cp /etc/resolv.conf /etc/resolv.conf.csbak
ll /etc/resolv.conf*
cat >/etc/resolv.conf<<EOF
nameserver 8.8.8.8
nameserver 114.114.114.114
EOF

#查看修改DNS的信息
cat /etc/resolv.conf

#重启网卡生效
service network restart 
ping www.baidu.com
________________________________________________________________________________________________
#使用这个命令会立即生效且重启也生效
 hostnamectl set-hostname jiawenchao

#查看修改过后主机名
[root@localhost ~]# hostname
jiawenchao

#手动更新hosts
[root@localhost ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.80.80  jiawenchao.com      jiawenchao
"修改格式:IP + 长名 + 短名"也可以直接将主机名加入127.0.0.1后面

#重启系统
reboot
——————————————————————————————————————————————————————————————————————————————————————————————————
【拓展】
【参考网址】https://blog.****.net/xuheng8600/article/details/79983927
"在修改静态/瞬态主机名时,任何特殊字符或空白字符会被移除,而提供的参数中的任何大写字母会自动转化为小写。"
"一旦修改了静态主机名,/etc/hostname 将被自动更新。然而,/etc/hosts 不会更新以保存所做的修改,所以你每次在修改主机名后一定要手动更新/etc/hosts,之后再重启CentOS 7。否则系统再启动时会很慢。"
#临时生效
hostname 主机名

二、优化xshell显示面板


cat >skycolor.xcs <<EOF
[skycolor]
text=00ff80
cyan(bold)=00ffff
text(bold)=e9e9e9
magenta=c000c0
green=80ff00
green(bold)=3c5a38
background=042028
cyan=00c0c0
red(bold)=ff0000
yellow=c0c000
magenta(bold)=ff00ff
yellow(bold)=ffff00
red=ff4500
white=c0c0c0
blue(bold)=1e90ff
white(bold)=fdf6e3
black=000000
blue=00bfff
black(bold)=808080
[Names]
name0=skycolor
count=1
EOF
_____________________________________
yum install lrzsz -y
sz  skycolor.xcs 

打开XShell->工具->配色方案 如下

打开导入窗口然后选择刚刚的文件 导入即可

优化后xsehll界面


三、查看系统版本


[root@localhost ~]# cat /etc/redhat-release      
CentOS Linux release 7.6.1810 (Core)          #系统环境7.6
[root@localhost ~]# uname -a                    #内核版本3.10.0 的64位liunx操作系统
Linux jiawenchao 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# uname -m                    #64位系统
x86_64

四、关闭selinux功能,清空iptables


#SELINUX是美国国家安全局(NSA)对于强制访问控制的实现,这个功能让系统管理员又爱又恨,这里我们还是把它关闭了,至于安全问题,后面通过其他手段来解决,这也是大多数生产环境的做法,如果非要开启也是可以的。
修改/etc/selinux/config-->    SELINUX=enforcing修改为SELINUX=disabled
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config    #使用sed替换关闭selinux
getenforce                                                             #查看selinux当前环境
setenforce                                                             #临时关闭 1.开启 0.关闭  permissive

针对centos7防火墙配置
#修改防火墙
CentOS切换为iptables防火墙
firewall-cmd --state 查看防火墙状态
"切换到iptables首先应该关掉默认的firewalld,然后安装iptables服务。"

#关闭firewall,禁止firewall开机启动
systemctl stop firewalld.service 
systemctl disable firewalld.service 

#安装iptables防火墙
yum install iptables-services  -y
service iptables save

#编辑iptables防火墙配置
vim /etc/sysconfig/iptables 
"下边是一个完整的配置文件,在你运行完save中间插入下面的规则"
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7009 -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
:wq! #保存退出

systemctl start iptables.service  #开启
systemctl enable iptables.service #设置防火墙开机启动

"附赠防火墙脚本,前提你已经切换至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

五、精简系统自启动


systemctl list-unit-files | grep enable 过滤查看启动项如下
#abrt-ccpp.service                               enabled abrt为auto bug report的缩写 用于bug报告 关闭
abrt-oops.service                                enabled ---------------------- 
abrt-vmcore.service                              enabled ----------------------
abrt-xorg.service                                enabled ----------------------
abrtd.service                                    enabled   ----------------------
auditd.service                                   enabled 安全审计          保留
autovt@.service                                  enabled 登陆相关          保留
crond.service                                   enabled 定时任务           保留
#dbus-org.freedesktop.NetworkManager.service     enabled 桌面网卡管理      关闭
dbus-org.freedesktop.nm-dispatcher.service      enabled ----------------------
getty@.service                                  enabled tty控制台相关      保留
irqbalance.service                              enabled 优化系统中断分配    保留
kdump.service                                   enabled 内核崩溃信息捕获    自定
microcode.service                               enabled 处理器稳定性增强    保留
#NetworkManager-dispatcher.service               enabled 网卡守护进程      关闭
NetworkManager.service                          enabled ----------------------
#postfix.service                                 enabled 邮件服务          关闭
rsyslog.service                                 enabled 日志服务           保留
snmpd.service                                   enabled snmp监控 数据抓取   保留
sshd.service                                    enabled ssh登陆            保留
systemd-readahead-collect.service               enabled 内核调用--预读取    保留
systemd-readahead-drop.service                  enabled ----------------------
systemd-readahead-replay.service                enabled ----------------------
tuned.service                                   enabled 
default.target                                  enabled 默认启动项 multi-user.target的软连接 保留
multi-user.target                               enabled 启动用户命令环境                     保留
remote-fs.target                                enabled 集合远程文件挂载点                   自定
runlevel2.target                                enabled 运行级别 用于兼容6的SysV             保留
runlevel3.target                                enabled ----------------------
runlevel4.target                                enabled ----------------------

#关闭开机启动
1、先关闭,停止运行服务
systemctl stop   服务.service ;
2、加入开机禁用
systemctl disable 服务.service;
3、查看是否禁用成功
systemctl list-unit-files | grep enable
【参考网址】https://blog.****.net/wuxingpu5/article/details/53641947 
————————————————————————————————————————————————————————————————————————————————————————————————
【参考网址】https://www.cnblogs.com/clsn/p/8338099.html#auto_id_22
#开机启动项优化
systemctl list-unit-files|egrep "^ab|^aud|^kdump|vm|^md|^mic|^post|lvm"  |awk '{print $1}'|sed -r 's#(.*)#systemctl disable &#g'|bash

六、更改ssh服务端远程登陆设置


【ssh配置文件详解】SSH远程服务配置sshd_config_服务器应用_Linux公社-Linux系统门户网站

                        SSH Config 那些你所知道和不知道的事_windows10 配置ssh controlpath-****博客

                        linux ssh_config和sshd_config配置文件学习 - panda2046 - 博客园

"windowns服务器的默认远程管路端口是3389,管理员是administrator,普通用户是guest。liunx管理用户是root,普通用户默认很多个,远程默认端口22。"
[root@jiawenchao ~]# cp  /etc/ssh/sshd_config /etc/ssh/sshd_config.csbf 
17行: #port 22                       修改:port 7009                              	 #修改默认22端口
38行:  PermitRootLogin yes			 修改: PermitRootLogin no               	     #禁止root用户登陆
64行: #PermitEmptyPasswords no       修改:PermitEmptyPasswords no                   #禁止密码为空的用户远程登陆
79行:  GSSAPIAuthentication yes      修改:GSSAPIAuthentication  no       	         #解决liunx之间使用ssh远程连接慢的问题
115行: #UseDNS yes			 	     修改:UseDNS no 					             #指定ssh禁止对该远程主机进行反向解析,加快ssh连接速度

#重启ssh服务
systemctl restart sshd
#查看7009端口是否启动
netstat -ntlp|grep 7009
#停止防火墙,加入开机启动
systemctl stop iptables.service
systemctl enable  iptables.service
#创建普通用户
useradd wenchao
#修改密码
echo 123456 | passwd --stdin wenchao

【测试】

1、使用默认的22端口登陆

ssh 106.12.32.245

提示:登陆失败

2、使用root用户登陆7009端口

ssh 106.12.32.245 7009

账户:root

密码maba521!

提示:登陆失败

3、使用普通用户wenchao登陆

ssh 106.12.32.245 7009

账户:wenchao

密码:123456

提示:登陆成功

【拓展】

【内网】
#编辑/etc/ssh/sshd_config配置文件
/etc/ssh/sshd_config                #服务端配置文件
/etc/ssh/ssh_config                 #客户端配置文件
Port    52113                       #修改端口52113
UseDNS yes                          #修改为No会反向查询客户端主机名,进行验证,防止客户端欺骗
PermitRootlogin no                  #禁止root登录
PermitEmpasswords   no              #禁止使用空密码(默认为空)
ListenAddress   10.0.0.7:52113      #只运行服务器上的内网地址来进行远程连接,外网地址直接拒绝,可以用Vpn做跳板进入局域网,通过这样来访问,更加的安全.
GSSAPIAuthentication yes            #解决Linux之间使用ssh连接慢的问题
"!!!注意,如果加入了IP地址需要在防火墙里开启端口52113"
iptables -I INPUT -p tcp  --dport 52113  -s 10.0.0.0/24  -j ACCEPT

【可参考】Linux系统 SSHD服务安全优化方案 - 小甘丶 - 博客园

【外网参考】
Port  22						                 #监听端口,默认22,建议修改默认端口
ListenAddress  0.0.0.0		                 #允许从本机的那个ip地址远程,默认本机的所有ip
Protocol   2					                 #启用版本2
PenmitRootLogin	  yes		                 #是否允许管理员直接登录,默认为允许,建议修改
AllowUsers	redhat			                 #允许redhat登录,拒绝其他所有用户登录包括管理员用户
AllowGroups	centos			                 #允许centos组的成员登录
DenyUsers  centos			                 #仅拒绝centos用户登录
DenyGroups redhat			                 #拒绝redhead组成员登录,拒绝优先
KeyRegenerationInterval 1h	                 #重新生成密钥的时间
ServerKeyBits 1024				             #密钥长度
PubkeyAuthentication yes		             #启用秘钥认证
AuthorizedKeysFile  .ssh/authorized_keys	 #指定秘钥文件存放位置
Compression	 delayed			             #是否对通信数据加密
PermitRootLogin yes				             #是否允许root用户直接登录
UseDns  on						             #禁止dns方向解析
MaxAuthTries  2					             #密码最大重试次数
PermitEmptyPasswords no			             #禁止空密码登录


基于密钥的认证:
服务器端:
在sshd_config文件中启用:
	  PubkeyAuthentication yes
	  AuthorizedKeysFile  .ssh/authorized_keys

客户端:
ssh-keygen			                                          #生成密码对,默认存放位置~/.ssh/
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.0.10        #将id_rsa.pub文件拷贝到192.168.0.10主机的/root/.ssh并改名为authorized_keys

七、修改文件属性,最低权限原则


#注意,需要知道修改之前此如下文件的原本权限
chmod 700 /bin/rpm                     #只有root权限用户才可以使用rpm命定,安装软件包
chmod 664 /etc/hosts
chmod 644 /etc/passwd
chmod 644 /etc/exports
chmod 644 /etc/issue
chmod 664 /var/log/wtmp
chmod 664 /var/log/btmp
chmod 644 /etc/services
chmod 600 /etc/shadow
chmod 600 /etc/login.defs
chmod 600 /etc/hosts.allow
chmod 600 /etc/hosts.deny
chmod 600 /etc/securetty
chmod 600 /etc/security
chmod 600 /etc/ssh/ssh_host_key      #ssh免密钥需要生成
chmod 600 /etc/ssh/sshd_config
chmod 600 /var/log/lastlog
chmod 600 /var/log/messages

八、添加普通用户并运行sudo授权管理


【参考网址】 https://www.cnblogs.com/jokerbj/p/9117384.html
                https://blog.****.net/fangoooooooooooo/article/details/78091959
                https://blog.****.net/hguisu/article/details/8751432
    为了安全及管理方便,可以将需要的root权限的普通用户加入sudo管理,这样用户就可以自己通过自己普通用户账户登陆,利用root权限管理系统了,当然你也就不需要root账号及密码了。
        对于服务器来说,我们希望的是剥夺被加入到 wheel 组用户以外的普通用户通过 su 命令来登录为 root 的机会(即只有属于 wheel 组的用户才可以用 su 登录为 root)。这样就进一步增强了系统的安全性。具体步骤如下:
    除了 root 用户,只有 wheel 组的成员有特权执行高级操作,那么怎么把用户提升成为 wheel 用户组成员	?
【参考网址】https://www.cnblogs.com/jan5/p/3359421.html
1)修改 /etc/pam.d/su 文件,找到“#auth required /lib/security/$ISA/pam_wheel.so use_uid ”这一行,将行首的“#”去掉。
2)修改 /etc/login.defs 文件,在最后一行增加“SU_WHEEL_ONLY yes”语句。
3)用“usermod -G wheel 用户名”将一个用户添加到 wheel 组中。
4) 用刚刚被添加到 wheel 组的用户登录,并执行 su 命令登录为 root 用户;这时,输入了正确的 root 密码就可以正常的登录为 root 用户了。
1、添加普通用户
useradd  jiawenchao
2、修改普通用户密码
echo qazwsxedc! | passwd --stdin jiawenchao
3、用“usermod -G wheel 用户名”将一个用户添加到 wheel 组中
usermod -G wheel jiawenchao
cat /etc/group|grep wheel
4、 编辑只能wheel组的用户能使用su命令
[root@jiawenchao ~]#cp /etc/pam.d/su /etc/pam.d/su.bak
[root@jiawenchao ~]#sed -i '6s/^#//g' /etc/pam.d/su
[root@jiawenchao ~]#grep wheel /etc/pam.d/su            
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth		sufficient	pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth		required	pam_wheel.so use_uid
5、 控制只能wheel组能使用sudo命令
【参考网址】http://blog.sina.com.cn/s/blog_a5db27840101d33i.html
【sudo命令详解】https://www.cnblogs.com/huanglinxin/p/9101872.html
【sudo授权流程】https://blog.****.net/markximo/article/details/81737692
    ps!!!:有些小伙伴可能会注意到sudoers文件只是一个只读文件,其实强制修改的话也没关系,但是如果你觉得不安全,可以在修改文件之前先赋予文件写权限(W),修改保存之后再收回写权限,操作如下:
1、先赋予文件写权限(W)
chmod u+w /etc/sudoers 
2、修改sudoers文件,为用户jiawenchao添加sudo,除关机外的其他所有操作:
[root@jiawenchao ~]#cp /etc/sudoers /etc/sudoers.bak
[root@jiawenchao ~]# vim /etc/sudoers           
Cmnd_Alias SHUTDOWN = /sbin/halt, /sbin/shutdown, /sbin/poweroff, /sbin/reboot, /sbin/init  # 控制所有用户除了root都不能执行关机重启命令
jiawenchao   ALL=(ALL)  ALL, !SHUTDOWN                                                                           # 不能执行关机命令(修改)
%wheel  ALL=(ALL)  ALL, !SHUTDOWN                                                                                 #修改wheel组的权限,禁止关机(修改)
Defaults logfile=/var/log/sudo.log
:wq!                                                                                                                                      #如果没授权需要强制保存(wq!)
3、进行修改,修改完成之后: 
chmod u-w /etc/sudoers
【拓展】
1、终端命令;visudo,相当于配置/etc/sudoers
2、要配置文件是sudoers,linux下通常在/etc目录下,如果是solaris,sudo都提供了一个编辑该文件的命令:visudo来对该文件进行修改。
3、强烈推荐使用visudo令修改sudoers,因为它会帮你校验文件配置是否正确,如果不正确,在保存退出时就会提示你哪段配置出错的。
4、执行了visudo -c 直接追加内容没有语法检查,因此需要单独执行语法检查命令.

九、更新yum源及必要软件安装 


【阿里源】CentOS7配置阿里云yum源和EPEL源 - 近博 - 博客园

#进入源码目录
cd /etc/yum.repos.d/
#创建备份文件
mkdir repo_bak
#移走全部本地网络源
mv *.repo repo_bak/
#查看是否移动成功
ls
#下载163的centos7源码
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo CentOS-Base.repo
#阿里源
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

#清除缓存
yum clean all  
#建立yum缓存
yum makecache 
#查看EPEL源是否安装
[root@jiawenchao yum.repos.d]# yum list | grep epel-release
epel-release.noarch                        7-11                        @extras  
#卸载EPEL
yum remove epel-release -y
#安装EPEL
yum install epel-release -y
#检测扩展源是否安装完毕
yum install nginx -y

十、安装必要的软件


#安装初始化软件包
yum -y install sysstat lrzsz ntpdate rsync wget bash-completion iptables-services vim-enhanced net-tools lsof  tree
#安装软件常用的软件包
yum install -y gcc gcc-c++  cmake bzip2-devel curl-devel db4-devel libjpeg-devel libpng-devel freetype-devel libXpm-devel gmp-devel libc-client-devel openldap-devel unixODBC-devel postgresql-devel sqlite-devel aspell-devel net-snmp-devel libxslt-devel libxml2-devel pcre-devel mysql-devel pspell-devel libmemcached libmemcached-devel zlib-devel

十一、定时自动更新服务器时间


【参考网址】Centos 7安装配置NTP网络时间同步服务器 | 《Linux就该这么学》

                centos7 时间同步_10754724的技术博客_51CTO博客

                centos7 时间同步_10754724的技术博客_51CTO博客

【>/dev/null 2>&1 详解】 Shell中>/dev/null 2>&1 详解-****博客

修改时区
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cat >/etc/sysconfig/clock<<EOF
ZONE="Asia/Shanghai"
UTC=false
ARC=false
EOF
#安装并设置开机自启
yum install -y ntp
systemctl start ntpd
systemctl enable ntpd
#配置开机启动校验
cp /etc/rc.d/rc.local /etc/rc.d/rc.local.csbf
/usr/sbin/ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w
#配置定时任务
crontab -e
0 */1 * * * ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w


十二、修改字符集


【参考网址】CentOS7.5修改字符集_Linux教程_Linux公社-Linux系统门户网站

  centos7上设置中文字符集 - 开始认识 - 博客园

#首先使用locale命令看看当前系统所使用的字符集,en开头代表英文
locale
#再看看系统是否有安装中文字符集的支持
locale -a |grep CN
#若没有 zh_CN.utf-8,就安装下:
yum install kde-l10n-Chinese -y
#CentOS7.x 字符集配置文件在/etc/locale.conf
cp /etc/locale.conf  /etc/locale.conf.csbf
cat >/etc/locale.conf<<EOF
LANG="zh_CN.UTF-8"
EOF
cat /etc/locale.conf
#使用source命令是配置文件生效
source /etc/locale.conf
#再次查看是否zh_CN.utf-8
[root@jiawenchao ~]#  localectl 
   System Locale:" LANG=zh_CN.UTF-8"
       VC Keymap: us
      X11 Layout: n/a
[root@jiawenchao ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"

十三、去除系统及内核版本登录前的屏幕显示


【优化好网站】https://blog.51cto.com/mrxiong2017/2084661

【清空内核】如何隐藏Linux内核版本及登录时显示的信息_51CTO博客_显示linux内核版本号的命令

# 清空系统版本
cat /etc/issue
> cat /etc/issue
#清空内核版本
cat /etc/issue.net 
> /etc/issue.net 

十四、禁止linux系统被ping


#首先ping自己的IP地址能够ping通
 ping 192.168.0.4 
【"开启禁止ping"】
cp /etc/sysctl.conf /etc/sysctl.conf.csbf
cat /etc/sysctl.conf
echo "net.ipv4.icmp_echo_ignore_all=1"  1>> /etc/sysctl.conf
sysctl -p
#ping自己IP发现不能ping通
ping 192.168.0.4 

【"关闭禁止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 开启"
#再次ping自己IP发现能够ping通
ping 192.168.0.4

1.阻止ping 如果没人能ping通您的系统,安全性自然增加了。为此,可以在/etc/rc.d/rc.local文件中增加如下一行: 
 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 

2.防止IP欺骗 
编辑/etc/host.conf文件并增加如下几行来防止IP欺骗攻击。 
# Lookup names via DNS first then fall back to /etc/hosts.
order hosts,bind
# We have machines with multiple IP addresses.
multi on
# Check for IP address spoofing.
nospoof on
【详解】
第一项设置首先通过DNS解析IP地址,然后通过hosts文件解析。
第二项设置检测是否“/etc/hosts”文件中的主机是否拥有多个IP地址(比如有多个以太口网卡)。
第三项设置说明要注意对本机未经许可的电子欺骗。

3.防止DoS攻击 
对系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。例如,可以在/etc/security/limits.conf中添加如下几行: 
  * hard core 0 
  * hard rss 5000 
  * hard nproc 20 
然后必须编辑/etc/pam.d/login文件检查下面一行是否存在。 
session required /lib/security/pam_limits.so 
上面的命令禁止调试文件,限制进程数为50并且限制内存使用为5MB。 
"你的Linux服务器已经可以对绝大多数已知的安全问题和网络攻击具有免疫能力,但一名优秀的系统管理员仍然要时刻注意网络安全动态,随时对已经暴露出的和潜在安全漏洞进行修补"。


十五、历史记录


# 以下都是临时生效,默认1000不需要更改
# 设置的是闲置账号的超时时间
export TMOUT=10 10秒后提示超时时间
# 设置终端history显示条数
export HISTSIZE=5 只显示最近5条信息
# 上面的终端显示对应的是 cat ~/.bash_history 
export HISTFILESIZE=5 该文件只保存5条信息
# 清空历史记录
history -c
# 指定条数删除
history -d 历史记录条属
——————————————————————————————————————————————————————————————
history 查看历史记录 默认100条,防止黑客进入服务器,查看到机密信息
参数:
    -c:清空历史记录
    -d:指定删除一行
export HISTSIZE=5       
[root@student ~]# export HISTSIZE=5                              # 命令行只看见5条信息(控制终端)
[root@student ~]# history                                        # 查看是否只存留5条
730  history 
731  ls
732  history 
733  export HISTSIZE=5
734  history
# 写入全局配置文件,永久生效。当前用户家目录下~/.bash_history
[root@student ~]# echo 'export HISTFILESIZE=5' >>/etc/profile     
#立即生效
[root@student ~]#source /etc/profile      

# 清空历史记录终端
[root@student ~]# history -c       

# 记录历史命令执行时间以及是谁执行(生产必加)
[root@student ~]# history  
734  history

# 记录历史命令执行时间以及是谁执行(生产必加)
echo export HISTTIMEFORMAT="`whoami` %F %T " >>/etc/profile     

[root@student ~]# export HISTFILESIZE=5  ~/.bash_historty (控制用户家目录下的记录)
[root@student ~]# cat ~/.bash_history 
Test
Welcome to jia Linux
EOF
Exit

十六、调整文件描述符大小


启动进程使用它来表示打开的文件。每个进程启动都会占用文件描述符,如果过文件描述符不够,会导致进程失败
ulinit -n       查看默认文件描述符
参数: -S:软   -H:硬
#临时生效调整文件描述符
[root@student ~]# ulimit -SHn 65535 
cp /etc/security/limits.conf /etc/security/limits.conf.csbf
cat >/etc/security/limits.conf<<EOF
* 	soft 	noproc			65535
* 	hard 	noproc			65535
* 	soft 	nofile			65535
* 	hard 	nofile			65535
如上设置为对每个用户分别设置nofile、noproc最大数,如果需要对Linux整个系统设置文件最大数限制,需要修改/proc/sys/fs/file-max中的值,该值为Linux总文件打开数,
例如设置为:echo 3865161233 >/proc/sys/fs/file-max。

十七、锁定关键文件


[root@student ~]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab        #锁定文件系统
[root@student ~]# lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab           #查看锁定文件
----i--------e- /etc/passwd
----i--------e- /etc/shadow
----i--------e- /etc/group
----i--------e- /etc/gshadow
----i--------e- /etc/inittab
[root@student ~]# chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab        #解除锁定
 [root@student ~]# lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab          #再次查看
-------------e- /etc/passwd
-------------e- /etc/shadow
-------------e- /etc/group
-------------e- /etc/gshadow
-------------e- /etc/inittab
#将chaar命令改名chao
mv /usr/bin/chattr /usr/bin/chao

十八、定时清理


"centos7默认安装了postfix邮件服务,因此邮件位置 /var/spool/postfix/maildrop/会存在垃圾文件,如果长时间不清理,会导致inode数量不够用,从而无法存放文件"
#创建删除垃圾文件目录
mkdir /data/sh -p
#编写超过30天文件删除
cat /var/spool/postfix/maildrop/   
cat > /data/sh/spool_clean.sh<<EOF
#!/bin/sh
find /var/spool/postfix/maildrop/ -type f -mtime +30|xargsr rm -f 
EOF
#然后将其加入到crontab定时任务中
echo  '*/30 * * * *  /data/sh/spool_clean.sh >/dev/null 2>&1' >> /var/spool/cron/root

二十、内核优化


【参考网址】centos7 系统优化 - 一本正经的搞事情 - 博客园

【centos7内核优化】

centos7内核优化 - 小白君的成长 - 博客园

centos7 调优说明及执行_centos7 内核优化文件sysctl.d-****博客

centos7 内核优化_centos lockable memory-****博客

https://birdteam.net/132951

cp /etc/sysctl.conf /etc/sysctl.conf.bak
cat >/etc/sysctl.conf<<EOF 
#关ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

#避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1

#开启恶意的icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 1

#关闭路由转发
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

#开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

#处理无源路由的包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

#关sysrq功能
kernel.sysrq = 0

#core文件名添加pid作为扩展名
kernel.core_uses_pid = 1

#开SYN洪水攻击保护
net.ipv4.tcp_syncookies = 1

#修改消息队列长度
kernel.msgmnb = 65536
kernel.msgmax = 65536

#设置最大内存共享段大小bytes
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

#timewait的数量默认为180000
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

#每个网络接口接收数据包速率比内核处理这些包的速率快时允许送到队列数据包的最大数目
net.core.netdev_max_backlog = 262144

#限制仅仅是为防止简单的DoS攻击
net.ipv4.tcp_max_orphans = 3276800

#未收到客户端确认信息的连接请求最大值
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0

#内核放弃建立连接之前发送SYNACK包数量
net.ipv4.tcp_synack_retries = 1

#内核放弃建立连接之前发送SYN包数量
net.ipv4.tcp_syn_retries = 1

#开timewait快速回收
net.ipv4.tcp_tw_recycle = 1

#允许将TIME-WAIT sockets重新用于新TCP连接
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1

#当keepalive起用的时候TCP发送keepalive消息的频度缺省是2小时
net.ipv4.tcp_keepalive_time = 30

#允许系统打开端口范围
net.ipv4.ip_local_port_range = 1024 65000

#修改防火墙的表大小默认65536
#net.netfilter.nf_conntrack_max = 655350
#net.netfilter.nf_conntrack_tcp_timeout_established = 1200

#确保无人能修改路由表
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
EOF
#执行生效
sysctl -p

二十一、设定用户登录,普通用户登录识别超过6次锁定300s


echo "account required pam_tally.so deny=100 no_magic_root reset" >>/etc/pam.d/system-auth

echo "auth required pam_tally.so onerr=fail deny=6 unlock_time=300" >>/etc/pam.d/system-auth

二十二、安装man为中文版


【源码包网址】Index of /repo/pkgs/man-pages-zh-CN/manpages-zh-1.5.1.tar.gz/13275fd039de8788b15151c896150bc4

Index of /repo/pkgs/man-pages-zh-CN

【源码安装】linux中文man手册安装 - 疯狂110 - 博客园

wget  https://src.fedoraproject.org/repo/pkgs/man-pages-zh-CN/manpages-zh-1.5.1.tar.gz/13275fd039de8788b15151c896150bc4/manpages-zh-1.5.1.tar.gz
tar xf manpages-zh-1.5.1.tar.gz
cd manpages-zh-1.5.1/
./configure --disable-zhtw  --prefix=/usr/local/zhman
make && make install
echo "alias cman='man -M /usr/local/zhman/share/man/zh_CN' " >>.bash_profile
source .bash_profile
cman ls

#安装中文版
yum -y install man-pages-zh-CN.noarch
#修改vim  .bashrc
加入
alias cman='man -M /usr/share/man/zh_CN'
#命令生效
source .bashrc
#检测
man ls 


二十三、参考网址


【好文章】centos7之系统优化方案_centos 设置history为一条-****博客

【优化】https://www.cnblogs .com/cy0917/p/10119908.html

【惨绿少年优化】CentOS 7.X 系统安装及优化 - 惨绿少年 - 博客园

【centos7.2优化】centos7.2系统优化_centos export timeout-****博客

【centos7优化】centos7之系统优化方案 - liqianlong - 博客园

                      linux 系统优化参考_suse linux 性能优化-****博客

                    CentOS 7 优化_centos7内存优化-****博客

【基本优化】centos7系统安装完成后一些基本的优化_centos7安装后基础优化-****博客

【防火墙详细】Centos7安装完成后一些小优化 - 法外狂徒 - 博客园

【内核优化】centos7 系统优化 - 一本正经的搞事情 - 博客园

【优化】CentOS 7 运维优化_centos7 内核优化-****博客

【系统性能优化】Linux系统性能优化思路和方法_linux性能优化思路和方法-****博客

【web服务器优化】lcentos7------作为web服务器优化_centos7 服务器线程数 优化-****博客

【安全加固】CentOS7 系统安全加固实施方案介绍-****博客

                Linux 加固(centos7)_centos7加固脚本-****博客

                CentOS7.X的系统管理、安全设置及系统优化思路_centos7分析与思考-****博客

                【基础知识】Linux系统的安全与优化_如何禁止history被删除-****博客

【优化高手文章】Linux系统安全基础知识_下列哪项不是设置grub口令的目的-****博客

                Linux 安全知识及介绍(实例讲解)_skipped: unusable public key-****博客


二十三、建立回收站


#建立回收站
myrm(){ D=/tmp/$(date +%Y-%m-%d-%H-%M-%S); mkdir -p $D;  mv "$@" $D && echo "moved to $D ok"; }
alias rm='myrm'
#将文件删除
rm +文件 -f\

#进入/tmp/目144录下查看删除的文件
ls /tmp/
#彻底真实删除
/bin/rm +文件 -f
说明:
上面的操作过程模拟了回收站的效果,即删除文件的时候只是把文件放到一个临时目录中,这样在需要的时候还可以恢复过来