centos7使用全记录

文章目录

精简安装策略

按需安装,不用不装,一般选择最小化安装
centos 6 可选择以下基本包
开发包、基本网络包、基本应用包
centos 7 选择
server as GUI、开发工具、扩展库、安全组件

用yum安装包和依赖

安装包

yum install -y net-tools

安装指定版本的软件包

yum install <package-name>-<version>

删除安装包

yum remove net-tools

查找安装包

查找nginx的可用版本。

sudo yum list nginx --showduplicates

下载安装包和其依赖

这种情况方便在不能上网的机器上安装rpm,可在能上网的同等版本的系统的机器上下载好rpm和依赖。

yum install --downloadonly --downloaddir=<directory> <package-name>

实例

yum install --downloadonly --downloaddir=/root/mypackages/httpd httpd

安装包将下载到/root/mypackages/httpd这个文件夹

# yum install --downloadonly --downloaddir=/root/mypackages/httpd httpd
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-99.el7.centos.1 将被 安装
--> 正在处理依赖关系 httpd-tools = 2.4.6-99.el7.centos.1,它被软件包 httpd-2.4.6-99.el7.centos.1.x86_64 需要
--> 正在处理依赖关系 /etc/mime.types,它被软件包 httpd-2.4.6-99.el7.centos.1.x86_64 需要
--> 正在处理依赖关系 libaprutil-1.so.0()(64bit),它被软件包 httpd-2.4.6-99.el7.centos.1.x86_64 需要
--> 正在处理依赖关系 libapr-1.so.0()(64bit),它被软件包 httpd-2.4.6-99.el7.centos.1.x86_64 需要
--> 正在检查事务
---> 软件包 apr.x86_64.0.1.4.8-7.el7 将被 安装
---> 软件包 apr-util.x86_64.0.1.5.2-6.el7_9.1 将被 安装
---> 软件包 httpd-tools.x86_64.0.2.4.6-99.el7.centos.1 将被 安装
---> 软件包 mailcap.noarch.0.2.1.41-2.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

=============================================================================================================================================
 Package                          架构                        版本                                        源                            大小
=============================================================================================================================================
正在安装:
 httpd                            x86_64                      2.4.6-99.el7.centos.1                       updates                      2.7 M
为依赖而安装:
 apr                              x86_64                      1.4.8-7.el7                                 base                         104 k
 apr-util                         x86_64                      1.5.2-6.el7_9.1                             updates                       92 k
 httpd-tools                      x86_64                      2.4.6-99.el7.centos.1                       updates                       94 k
 mailcap                          noarch                      2.1.41-2.el7                                base                          31 k

事务概要
=============================================================================================================================================
安装  1 软件包 (+4 依赖软件包)

总下载量:3.0 M
安装大小:10 M
Background downloading packages, then exiting:
(1/5): apr-util-1.5.2-6.el7_9.1.x86_64.rpm                                                                            |  92 kB  00:00:04
(2/5): apr-1.4.8-7.el7.x86_64.rpm                                                                                     | 104 kB  00:00:04
(3/5): httpd-tools-2.4.6-99.el7.centos.1.x86_64.rpm                                                                   |  94 kB  00:00:00
(4/5): httpd-2.4.6-99.el7.centos.1.x86_64.rpm                                                                         | 2.7 MB  00:00:04
(5/5): mailcap-2.1.41-2.el7.noarch.rpm                                                                                |  31 kB  00:00:04
---------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                         364 kB/s | 3.0 MB  00:00:08
exiting because "Download Only" specified

最后没有安装,因为指定了downloadonly选项。

/root/mypackages/httpd
[root@localhost httpd]# ll
总用量 3112
-rw-r--r--. 1 root root  106124 1015 2020 apr-1.4.8-7.el7.x86_64.rpm
-rw-r--r--. 1 root root   94424 523 22:38 apr-util-1.5.2-6.el7_9.1.x86_64.rpm
-rw-r--r--. 1 root root 2849200 530 23:15 httpd-2.4.6-99.el7.centos.1.x86_64.rpm
-rw-r--r--. 1 root root   96708 530 23:15 httpd-tools-2.4.6-99.el7.centos.1.x86_64.rpm
-rw-r--r--. 1 root root   31264 74 2014 mailcap-2.1.41-2.el7.noarch.rpm

安装epel扩展源

EPEL是一个由特别兴趣小组创建、维护并管理的,针对红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS、Scientific Linux、Oracle Enterprise Linux)的一个高质量附加软件包项目。(官方网址为:https://fedoraproject.org/wiki/EPEL)

EPEL 的软件包通常不会与企业版 Linux 官方源中的软件包发生冲突,或者互相替换文件。EPEL 项目与 Fedora 基本一致,包含完整的构建系统、升级管理器、镜像管理器等等。

EPEL 是yum的一个软件源,里面包含了许多基本源里没有的软件。安装上EPEL的源后,就可以直接用yum来安装软件,而且EPEL不会替换原有的源,安装后会产生新repo,省去了不少麻烦。

yum install epel-release -y

工具

iftop

一、iftop是什么?
iftop是类似于top的实时流量监控工具。

官方网站:http://www.ex-parrot.com/~pdw/iftop/

二、iftop有什么用?
iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等,详细的将会在后面的使用参数中说明。

三、安装iftop
安装方法1、编译安装
如果采用编译安装可以到iftop官网下载最新的源码包。

安装前需要已经安装好基本的编译所需的环境,比如make、gcc、autoconf等。安装iftop还需要安装libpcap和libcurses。

CentOS上安装所需依赖包:

yum install flex byacc  libpcap ncurses ncurses-devel libpcap-devel

Debian上安装所需依赖包:

apt-get install flex byacc  libpcap0.8 libncurses5

下载iftop

wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz

tar zxvf iftop-0.17.tar.gz

cd iftop-0.17

./configure

make && make install

安装方法2:(懒人办法,最简单)
直接省略上面的步骤

直接

yum install epel-release

yum install iftop

Debian系统 运行:apt-get install iftop

四、运行iftop
直接运行: iftop

五、相关参数及说明
1、iftop界面相关说明
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。

中间的<=>这两个左右箭头,表示的是流量的方向。

TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

2、iftop相关参数
常用的参数

-i设定监测的网卡,如:# iftop -i eth1

-B 以bytes为单位显示流量(默认是bits),如:# iftop -B

-n使host信息默认直接都显示IP,如:# iftop -n

-N使端口信息默认直接都显示端口号,如: # iftop -N

-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0

-h(display this message),帮助,显示参数信息

-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;

-b使流量图形条默认就显示;

-f use filter code to select packets to count (default: none, but only IP packets are counted)

-P使host信息及端口信息默认就都显示;

-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

进入iftop画面后的一些操作命令(注意大小写)
按h切换是否显示帮助;

按n切换显示本机的IP或主机名;

按s切换是否显示本机的host信息;

按d切换是否显示远端目标主机的host信息;

按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;

按N切换显示端口号或端口服务名称;

按S切换是否显示本机的端口信息;

按D切换是否显示远端目标主机的端口信息;

按p切换是否显示端口信息;

按P切换暂停/继续显示;

按b切换是否显示平均流量图形条;

按B切换计算2秒或10秒或40秒内的平均流量;

按T切换是否显示每个连接的总流量;

按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;

按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;

按j或按k可以向上或向下滚动屏幕显示的连接记录;

按1或2或3可以根据右侧显示的三列流量数据进行排序;

按<根据左边的本机名或ip排序;< p=“”>

按>根据远端目标主机的主机名或IP排序;

按o切换是否固定只显示当前的连接;

按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!

按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!

按q退出监控。

pip3

安装pip3

yum install python3-pip

修改主机名

[root@centos7 ~]$ hostnamectl set-hostname docker1             # 使用这个命令会立即生效且重启也生效
[root@centos7 ~]$ hostname                                                 # 查看下
docker1
[root@centos7 ~]$ vim /etc/hosts                                           # 编辑下hosts文件, 给127.0.0.1添加hostname
[root@centos7 ~]$ cat /etc/hosts                                           # 检查
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 docker1
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

关闭selinux

1、为什么要关闭selinux
初学者配置linux服务器时不成功,却没有头绪,那是因为在linux操作系统中默认开启了防火墙,SELinux也处于启动状态,一般状态为enforing。致使很多服务端口默认是关闭的。所以好多服务初学者明明配置文件正确,等验证时有时连ping也ping不通。建议初学者在未学到SELlinux与iptables之前,配置服务器把这两项都关掉。

2、查看selinux状态

#getenforce

enforcing为开启、disable为关闭:

3、临时关闭selinux

#setenforce 0

4、永久关闭selinux

#vi /etc/selinux/config
#SELINUX=enforcing改为SELINUX=disabled

重启生效

5、永久开启
与四相反

关闭不必要的服务

查看已开通的服务

centos作为服务器开放的服务多了,难免一些服务软件有漏洞,开放的端口号越多,上线的服务器越危险,所以我们必须在服务器上线之前把centos里面不必要的服务全部干掉,不让坏人有可乘之机。

[root@centos ~]# chkconfig --list | grep "3:on"
NetworkManager  0:off   1:off   2:on    3:on    4:on    5:on    6:off
abrt-ccpp       0:off   1:off   2:on    3:on    4:on    5:on    6:off
abrtd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
atd             0:off   1:off   2:on    3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
autofs          0:off   1:off   2:on    3:on    4:on    5:on    6:off
blk-availability    0:off   1:on    2:on    3:on    4:on    5:on    6:off
certmonger      0:off   1:off   2:on    3:on    4:on    5:on    6:off
cgconfig        0:off   1:off   2:on    3:on    4:on    5:on    6:off
cgred           0:off   1:off   2:on    3:on    4:on    5:on    6:off
cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
cups            0:off   1:off   2:on    3:on    4:on    5:on    6:off
dnsmasq         0:off   1:off   2:on    3:on    4:on    5:on    6:off
haldaemon       0:off   1:off   2:on    3:on    4:on    5:on    6:off
ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
ipsec           0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
irqbalance      0:off   1:off   2:on    3:on    4:on    5:on    6:off
kdump           0:off   1:off   2:on    3:on    4:on    5:on    6:off
lvm2-monitor    0:off   1:on    2:on    3:on    4:on    5:on    6:off
mcelogd         0:off   1:off   2:on    3:on    4:on    5:on    6:off
mdmonitor       0:off   1:off   2:on    3:on    4:on    5:on    6:off
messagebus      0:off   1:off   2:on    3:on    4:on    5:on    6:off
netconsole      0:off   1:off   2:on    3:on    4:on    5:on    6:off
netfs           0:off   1:off   2:on    3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
nfs             0:off   1:off   2:on    3:on    4:on    5:on    6:off
nfslock         0:off   1:off   2:on    3:on    4:on    5:on    6:off
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
ntpdate         0:off   1:off   2:on    3:on    4:on    5:on    6:off
numad           0:off   1:off   2:on    3:on    4:on    5:on    6:off
oddjobd         0:off   1:off   2:on    3:on    4:on    5:on    6:off
portreserve     0:off   1:off   2:on    3:on    4:on    5:on    6:off
postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
pppoe-server    0:off   1:off   2:on    3:on    4:on    5:on    6:off
psacct          0:off   1:off   2:on    3:on    4:on    5:on    6:off
quota_nld       0:off   1:off   2:on    3:on    4:on    5:on    6:off
rdisc           0:off   1:off   2:on    3:on    4:on    5:on    6:off
restorecond     0:off   1:off   2:on    3:on    4:on    5:on    6:off
rngd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcgssd         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcsvcgssd      0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
saslauthd       0:off   1:off   2:on    3:on    4:on    5:on    6:off
smartd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sssd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
svnserve        0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
winbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off
wpa_supplicant  0:off   1:off   2:on    3:on    4:on    5:on    6:off
ypbind          0:off   1:off   2:on    3:on    4:on    5:on    6:off

关掉不必要的服务

这会儿问题来了,我们的服务器哪些服务必须保留呢?

  • network提供网络的服务,服务器不上网怎么能行呢?
  • crond时间计划任务服务,服务器日常的计划执行离不开这个服务
  • sshd 我们需要通过ssh 才能远程连接到我们的Linux,总不能天天在idc机房拿kvm来工作吧
  • rsyslog 服务器做了哪些事情都需要靠日志才能知道,rsyslog就是用来记录日志的,原来名字叫syslog
  • sysstat 监控系统性能的服务,对服务器掌控怎么能离得了它,sar,mpstat,iostat,vmstat都是非常有用的工具,都在这个服务里面

总结一下,系统必须开启的服务有network,sshd,crond,rsyslog,sysstat五个
把该留下的留下,其他全部干掉,直接给答案:

[root@centos ~]# chkconfig --list | grep 3:on | egrep -v "sshd|network|rsyslog|sysstat|crond" | awk '{print "chkconfig",$1,"off"}' 
chkconfig NetworkManager off
chkconfig abrt-ccpp off
chkconfig abrtd off
chkconfig acpid off
chkconfig atd off
chkconfig auditd off
chkconfig autofs off
chkconfig blk-availability off
chkconfig certmonger off
chkconfig cgconfig off
chkconfig cgred off
chkconfig cpuspeed off
chkconfig cups off
chkconfig dnsmasq off
chkconfig haldaemon off
chkconfig ip6tables off
chkconfig ipsec off
chkconfig iptables off
chkconfig irqbalance off
chkconfig kdump off
chkconfig lvm2-monitor off
chkconfig mcelogd off
chkconfig mdmonitor off
chkconfig messagebus off
chkconfig netconsole off
chkconfig netfs off
chkconfig nfs off
chkconfig nfslock off
chkconfig ntpd off
chkconfig ntpdate off
chkconfig numad off
chkconfig oddjobd off
chkconfig portreserve off
chkconfig postfix off
chkconfig pppoe-server off
chkconfig psacct off
chkconfig quota_nld off
chkconfig rdisc off
chkconfig restorecond off
chkconfig rngd off
chkconfig rpcbind off
chkconfig rpcgssd off
chkconfig rpcsvcgssd off
chkconfig saslauthd off
chkconfig smartd off
chkconfig sssd off
chkconfig svnserve off
chkconfig udev-post off
chkconfig winbind off
chkconfig wpa_supplicant off
chkconfig ypbind off
[root@centos ~]# chkconfig --list | grep 3:on | egrep -v "sshd|network|rsyslog|sysstat|crond" | awk '{print "chkconfig",$1,"off"}' | bash 

查看结果

[root@centos ~]# chkconfig --list |grep "3:on"
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off

不能执行netstat命令的原因及解决办法

centos7有很多命令不能使用,譬如ifconfig、netstat等
使用netstate命令报 -bash: netstate: command not found
出现这个错误的原因:由于网络工具没有安装
使用以下命令安装即可:

[root@localhost ~]# yum install net-tools
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.bit.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirror.bit.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package net-tools.x86_64 0:2.0-0.24.20131004git.el7 will be installed
--> Finished Dependency Resolution

不是这个命令

[root@localhost ~]# yum install netstat

centOS7下安装GUI图形界面

当你安装centOS7服务器版本的时候,系统默认是不会安装GUI的图形界面程序,这个需要手动安装CentOS7 Gnome GUI包
在命令行下 输入下面的命令来安装Gnome包。

# yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

修改运行级别后才能进入图形界面
#修改centos的运行级别
查看现在的运行级别

$ systemctl get-default 
multi-user.target 

修改为

$ systemctl set-default graphical.target

挂载光驱

挂载光驱

mkdir /mnt/cdrom
mount -t auto /dev/cdrom /mnt/cdrom 

卸载光驱

umount /mnt/cdrom

网卡设置

直接修改网卡配置文件

网卡配置文件路径在

/etc/sysconfig/network-scripts

配置文件名称如下所标示
在这里插入图片描述
修改前,可做一备份。
Linux 默认配置网卡的信息

TYPE=Ethernet                               网卡类型:以太网
PROXY_METHOD=none                           代理方式:关闭状态
BROWSER_ONLY=no                             只是浏览器(yes|no)
BOOTPROTO=static                            设置网卡获得ip地址的方式(static|dhcp|none|bootp)
DEFROUTE=yes                                设置为默认路由(yes|no)
IPV4_FAILURE_FATAL=no                       是否开启IPV4致命错误检测(yes|no)
IPV6INIT=yes                                IPV6是否自动初始化
IPV6_AUTOCONF=yes                           IPV6是否自动配置
IPV6_DEFROUTE=yes                           IPV6是否可以为默认路由
IPV6_FAILURE_FATAL=no                       是不开启IPV6致命错误检测
IPV6_ADDR_GEN_MODE=stable-privacy           IPV6地址生成模型
NAME=eth0                                   网卡物理设备名称
UUID=6e89ea13-f919-4096-ad67-cfc24a79a7e7   UUID识别码
DEVICE=eth0                                 网卡设备名称
ONBOOT=no                                   开机自启(yes|no)
IPADDR=192.168.103.203                      IP地址
NETNASK=255.255.255.0                       子网掩码,也可使用掩码长度表示(PREFIX=24)
GATEWAY=192.168.103.1                       网关
DNS1=114.114.114.114                        首选DNS
DNS2=8.8.8.8                                备用DNS

必须引起注意的是,参数名必须是大写
简单的网卡配置

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
DEVICE=eth0
ONBOOT=yes
IPADDR=10.10.10.31
NETMASK=255.255.255.0

nmtui——基于命令行的工具

# nmtui

在这里插入图片描述
在这里插入图片描述
设置完成后,激活
在这里插入图片描述

新增网卡没有配置文件的处理

添加网卡后CentOS 7无网卡配置文件的问题,添加第二块网卡以后,进入CentOS 7系统后,看不到网卡对应配置文件。
解决方案:

1.使用nmcli con show命令,查看网卡的UUID信息,记下UUID值

2.使用ip addr命令查看网卡信息,记下enp0s20f0u14网卡的MAC地址
在这里插入图片描述
3.将 /etc/sysconfig/network-scripts/目录中ifcfg-ens33文件复制一份,并命名为 ifcfg-enp0s20f0u14,重新修改配置文件,注意修改必要的硬件信息。
在这里插入图片描述
4.最后重新启动网卡即可。

# systemctl restart network.service

新增网卡没有配置文件,也没有查到uuid

通过命令查出新增硬件的mac

# ip add

在这里插入图片描述
通过nmtui增加一个网卡
在这里插入图片描述
网卡的mac地址使用查到的mac,添加后即增加了一个配置文件,可以修改配置文件,或直接使用nmtui更改其他参数。
在这里插入图片描述

开启ssh远程调出ssh服务器上图形界面程序

1、首先服务端需要安装过图形化组件,不必须切换到图形化的运行级别。

yum group install "Server with Gui"

2、编辑ssh服务器配置文件/etc/ssh/sshd_config

# vi /etc/ssh/sshd_config
X11Forwarding yes

3、客户端

$ ssh -X -p 端口 user@serverIP

SSH登录缓慢(DNS解析缓慢)

取消GSSAPIAuthentication认证与UseDNS反向解析功能:

vi /etc/ssh/sshd_config
GSSAPIAuthentication no
#通用安全服务应用程序接口(GSSAPI) 是为了让程序能够访问安全服务的一个应用程序接口,取消这个认证。
UseDNS no
#DNS反向解析,设置为no

文件权限设置

修改权限简介
在终端输入:

chmod o w xxx.xxx

表示给其他人授予写xxx.xxx这个文件的权限

chmod go-rw xxx.xxx

表示删除xxx.xxx中组群和其他人的读和写的权限

其中:

u 代表所有者(user)

g 代表所有者所在的组群(group)

o 代表其他人,但不是u和g (other)

a 代表全部的人,也就是包括u,g和o

r 表示文件可以被读(read)

w 表示文件可以被写(write)

x 表示文件可以被执行(如果它是程序的话)

其中:rwx也可以用数字来代替

r ------------4

w -----------2

x ------------1

  • ------------0

行动:

表示添加权限

  • 表示删除权限

= 表示使之成为唯一的权限

当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:

-rw------- (600) 只有所有者才有读和写的权限

-rw-r–r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限

-rwx------ (700) 只有所有者才有读,写,执行的权限

-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限

-rwx–x–x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限

-rw-rw-rw- (666) 每个人都有读写的权限

-rwxrwxrwx (777) 每个人都有读写和执行的权限

centos系统加固

使用安全 shell

Telnet 是不安全的。 rLogin 是不安全的。仍然有服务需要这些,但它们不应该暴露在互联网上。如果你没有 SSH ,那就关闭互联网连接。我们总是说:使用 SSH 密钥。
SSH 规则 1:不要使用密码认证。SSH 规则 2:不要使用密码认证。SSH 规则 3:不要使用密码认证。重要的事情重复三遍。

你可以做的另一件事是修改 SSH 的标准端口,我们许多人都这么做。这可以防止少量的暴力攻击,但是,一般来说,不使用密码认证,你会更安全。

SSH 的第四条规则:所有密钥都要设置密码。无密码密钥根本就不是真正的密钥。我知道如果你想要自动登录或自动化一些事情,这会使得难以处理,但所有的密钥应该有密码!

防范暴力破解

密码要满足复杂性要求

a.密码长度要求8位以上,最好是14位以上
b.密码要求至少包含大小写字母、数字和特殊符号四种字符中的三种以上

修改ssh程序默认的远程端口号

这一点可以通过调整 /etc/ssh/sshd_config 文件中的Port 参数来实现
修改了端口号之后远程工具进行连接时需要指定端口号才可以正常连接,通过ssh命令连接时需要通过-p参数指定端口号

修改默认的管理员账号

a.先对默认的root账号进行禁用(注意:阿里云控制台上的密码重置功能只对默认的root账号生效,如果做了此操作后后期是不能使用阿里云控制台的密码重置功能的),禁用方法直接修改root用户的登陆shell为 /sbin/nologin 即可。
这里写图片描述

b.创建新的用户名,作为管理员账号,Linux系统判定管理员账号的方法是可以通过UID实现的,默认UID为0的用户是管理员,所以只需要创建用户后,在passwd文件中把用户UID改为0即可
创建用户,并设置密码,以及最终的修改效果,可以参考下图,通过id命令查询结果可以看到新建的用户权限是root权限
这里写图片描述
如果暴力破解的情况很严重,虽然经过上述设置后,黑客很难暴力破解成功,但是由于暴力破解时服务器需要不断的对用户登录进行认证,也会导致服务器产生很多额外的开销,进而影响服务器的资源负载状况。
针对这种情况,可以考虑通过开源工具fail2ban监视日志情况。

账户安全

锁定系统中多余的自建帐号

检查方法:
执行命令

#cat /etc/passwd
#cat /etc/shadow

查看账户、口令文件,与系统管理员确认不必要的账号。对于一些保留的系统伪帐户如:bin, sys,adm,uucp,lp, nuucp,hpdb, www, daemon等可根据需要锁定登陆。
备份方法:

#cp -p /etc/passwd /etc/passwd_bak
#cp -p /etc/shadow /etc/shadow_bak

加固方法:
使用命令passwd -l <用户名>锁定不必要的账号。
使用命令passwd -u <用户名>解锁需要恢复的账号。

删除多余帐号

禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击。

为删除你系统上的用户,用下面的命令:

[root@deep]# userdel username

为删除你系统上的组用户帐号,用下面的命令:

[root@deep]# groupdel username

添加使用的帐号

用下面的命令加需要的用户帐号

[root@deep]# useradd username

用下面的命令改变用户口令

[root@deep]# passwd username

风险:
需要与管理员确认此项操作不会影响到业务系统的登录

touch /etc/nologin

nologin命令可以实现礼貌地拒绝用户登录系统,同时给出信息。如果尝试以这类用户登录,就在log里添加记录,然后在终端输出This account is currently not available信息,就是这样。一般设置这样的帐号是给启动服务的账号所用的,这只是让服务启动起来,但是不能登录系统。passwd中帐号多是这种。

设置系统口令策略

检查方法:
使用命令

#cat /etc/login.defs|grep PASS

查看密码策略设置
备份方法:

cp -p /etc/login.defs /etc/login.defs_bak

加固方法:

#vi /etc/login.defs

修改配置文件
PASS_MAX_DAYS 90 #新建用户的密码最长使用天数
PASS_MIN_DAYS 0 #新建用户的密码最短使用天数
PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数
PASS_MIN_LEN 9 #最小密码长度9
风险:无可见风险

禁用root之外的超级用户

检查方法:

#cat /etc/passwd

查看口令文件,口令文件格式如下:
login_name:password:user_ID:group_ID:comment:home_dir:command
login_name:用户名
password:加密后的用户密码
user_ID:用户ID,(1 ~ 6000) 若用户ID=0,则该用户拥有超级用户的权限。查看此处是否有多个ID=0。
group_ID:用户组ID
comment:用户全名或其它注释信息
home_dir:用户根目录
command:用户登录后的执行命令
备份方法:

#cp -p /etc/passwd /etc/passwd_bak

加固方法:
使用命令passwd -l <用户名>锁定不必要的超级账户。
使用命令passwd -u <用户名>解锁需要恢复的超级账户。
风险:需要与管理员确认此超级用户的用途。

限制能够su为root的用户

检查方法:

#cat /etc/pam.d/su

查看是否有auth required /lib/security/pam_wheel.so这样的配置条目
备份方法:#cp -p /etc/pam.d /etc/pam.d_bak
加固方法:

#vi /etc/pam.d/su

在头部添加:
auth required /lib/security/pam_wheel.so group=wheel
这样,只有wheel组的用户可以su到root

#usermod -G10 test

将test用户加入到wheel组
这里写图片描述
风险:需要PAM包的支持;对pam文件的修改应仔细检查,一旦出现错误会导致无法登陆;和管理员确认哪些用户需要su。
当系统验证出现问题时,首先应当检查/var/log/messages或者/var/log/secure中的输出信息,根据这些信息判断用户账号的有效
性。如果是因为PAM验证故障,而引起root也无法登录,只能使用single user或者rescue模式进行排错。

添加需要sudo的用户

首需要切换到root身份
$su -
(注意有- ,这和su是不同的,在用命令"su"的时候只是切换到root,但没有把root的环境变量传过去,还是当前用户的环境变量,用"su -"命令将环境变量也一起带过去,就象和root登录一样)

然后
$visudo //切记,此处没有vi和sudo之间没有空格

1、移动光标,到最后一行
2、按a,进入append模式
3、输入
your_user_name ALL=(ALL) ALL
4、按Esc
5、输入“:w”(保存文件)
6、输入“:q”(退出)

检查shadow中空口令帐号

检查方法:

#awk -F: '($2 == "") { print $1 }' /etc/shadow

备份方法:

cp -p /etc/shadow /etc/shadow_bak

加固方法:对空口令账号进行锁定,或要求增加密码

这里写图片描述

风险:要确认空口令账户是否和应用关联,增加密码是否会引起应用无法连接。
##数据访问控制
设置合理的初始文件权限
检查方法:

#cat /etc/profile    

查看umask的值
备份方法:

#cp -p /etc/profile /etc/profile_bak

加固方法:

#vi /etc/profile
umask=027

风险:会修改新建文件的默认权限,如果该服务器是WEB应用,则此项谨慎修改。

网络访问控制

禁止telnet使用ssh

检查方法:

#ps –aef | grep sshd    

查看有无此服务
备份方法:
加固方法:
使用命令开启ssh服务

#service sshd start

风险:改变管理员的使用习惯
####设置访问控制策略限制能够管理本机的IP地址
检查方法:

#cat /etc/ssh/sshd_config  

查看有无AllowUsers的语句
备份方法:

#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak

加固方法:

#vi /etc/ssh/sshd_config

添加以下语句
AllowUsers @10.138..* 此句意为:仅允许10.138.0.0/16网段所有用户通过ssh访问
保存后重启ssh服务

#service sshd restart

风险:需要和管理员确认能够管理的IP段

禁止root用户远程登陆

检查方法:

#cat /etc/ssh/sshd_config  

查看PermitRootLogin是否为no
备份方法:

#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak

加固方法:

#vi /etc/ssh/sshd_config

PermitRootLogin no
保存后重启ssh服务
service sshd restart

图6

风险:root用户无法直接远程登录,需要用普通账号登陆后su

限定信任主机

检查方法:

#cat /etc/hosts.equiv 

查看其中的主机

#cat /$HOME/.rhosts   

查看其中的主机
备份方法:

#cp -p /etc/hosts.equiv /etc/hosts.equiv_bak
#cp -p /$HOME/.rhosts /$HOME/.rhosts_bak

加固方法:

#vi /etc/hosts.equiv 删除其中不必要的主机
#vi /$HOME/.rhosts   删除其中不必要的主机

风险:在多机互备的环境中,需要保留其他主机的IP可信任。

屏蔽登录banner信息

检查方法:

#cat /etc/ssh/sshd_config    

查看文件中是否存在Banner字段,或banner字段为NONE

#cat /etc/motd               

查看文件内容,该处内容将作为banner信息显示给登录用户。
备份方法:

#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
#cp -p /etc/motd /etc/motd_bak

加固方法:

#vi /etc/ssh/sshd_config   
banner NONE
#vi /etc/motd

删除全部内容或更新成自己想要添加的内容
风险:无可见风险

防止误使用Ctrl+Alt+Del重启系统

检查方法:

#cat /etc/inittab|grep ctrlaltdel     

查看输入行是否被注释
备份方法:

#cp -p /etc/inittab /etc/inittab_bak

加固方法:

#vi /etc/inittab

在行开头添加注释符号“#”

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

风险:无可见风险

最小化服务

停止或禁用与承载业务无关的服务

检查方法:
查看当前init级别

# who –r或runlevel    

查看所有服务的状态

# chkconfig --list     

如果您想列出 systemd 服务,请执行

systemctl list-unit-files

欲查看对特定 target 启用的服务请执行

systemctl list-dependencies [target]

关闭危险的网络服务。echo、chargen、shell、login、finger、NFS、RPC等

关闭非必需的网络服务。talk、ntalk、pop-2等
备份方法:记录需要关闭服务的名称

需要保留的服务

crond , irqbalance , microcode_ctl ,network , sshd ,syslog  

语法:chkconfig [–add][–del][–list][系统服务] 或 chkconfig [–level <等级代号>][系统服务][on/off/reset]

补充说明:这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。

参数:

--add  增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。  
--del  删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。  
--level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关毕 

用户鉴别

####设置帐户锁定登录失败锁定次数、锁定时间
检查方法:

#cat /etc/pam.d/system-auth   

查看有无auth required pam_tally.so条目的设置
备份方法:

#cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak

加固方法:

#vi /etc/pam.d/system-auth
auth required pam_tally.so onerr=fail deny=6 unlock_time=300  

设置为密码连续错误6次锁定,锁定时间300秒
解锁用户 faillog -u <用户名> -r
风险:需要PAM包的支持;对pam文件的修改应仔细检查,一旦出现错误会导致无法登陆;
当系统验证出现问题时,首先应当检查/var/log/messages或者/var/log/secure中的输出信息,根据这些信息判断用户账号的有效
性。

修改帐户TMOUT值,设置自动注销时间

检查方法:

#cat /etc/profile    

查看有无TMOUT的设置
备份方法:

#cp -p /etc/profile /etc/profile_bak

加固方法:

#vi /etc/profile

增加
TMOUT=600 无操作600秒后自动退出
风险:无可见风险

Grub/Lilo密码

检查方法:

#cat /etc/grub.conf|grep password    

查看grub是否设置密码

#cat /etc/lilo.conf|grep password    

查看lilo是否设置密码
备份方法:

#cp -p /etc/grub.conf /etc/grub.conf_bak
#cp -p /etc/lilo.conf /etc/lilo.conf_bak

加固方法:为grub或lilo设置密码
风险:etc/grub.conf通常会链接到/boot/grub/grub.conf

限制FTP登录

检查方法:

#cat /etc/ftpusers    

确认是否包含用户名,这些用户名不允许登录FTP服务
备份方法:

#cp -p /etc/ftpusers /etc/ftpusers_bak

加固方法:

#vi /etc/ftpusers    

添加行,每行包含一个用户名,添加的用户将被禁止登录FTP服务
风险:无可见风险

设置Bash保留历史命令的条数

检查方法:

#cat /etc/profile|grep HISTSIZE=
#cat /etc/profile|grep HISTFILESIZE=    

查看保留历史命令的条数
备份方法:

#cp -p /etc/profile /etc/profile_bak

加固方法:

#vi /etc/profile

修改HISTSIZE=5和HISTFILESIZE=5即保留最新执行的5条命令

图8

风险:无可见风险

审计策略

配置系统日志策略配置文件

检查方法:

#ps –aef | grep syslog   

确认syslog是否启用

#cat /etc/syslog.conf     

查看syslogd的配置,并确认日志文件是否存在
系统日志(默认)/var/log/messages
cron日志(默认)/var/log/cron
安全日志(默认)/var/log/secure
备份方法:

#cp -p /etc/syslog.conf

为审计产生的数据分配合理的存储空间和存储时间

检查方法:

#cat /etc/logrotate.conf    

查看系统轮询配置,有无

# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs

rotate 4 的配置
备份方法:

#cp -p /etc/logrotate.conf /etc/logrotate.conf_bak

加固方法:

#vi /etc/logrotate.d/syslog

增加
rotate 4 日志文件保存个数为4,当第5个产生后,删除最早的日志
size 100k 每个日志的大小
加固后应类似如下内容:

/var/log/syslog/*_log {
missingok
notifempty
size 100k # log files will be rotated when they grow bigger that 100k.
rotate 5  # will keep the logs for 5 weeks.
compress  # log files will be compressed.
sharedscripts
postrotate
/etc/init.d/syslog condrestart >/dev/null 2>1 || true
endscript
}

风险:无可见风险

修改文件权限

用chattr命令给下面的文件加上不可更改属性。

[root@c1gstudio]# chattr +i /etc/passwd  
[root@c1gstudio]# chattr +i /etc/shadow  
[root@c1gstudio]# chattr +i /etc/group  
[root@c1gstudio]# chattr +i /etc/gshadow  

【注:chattr是改变文件属性的命令,参数i代表不得任意更动文件或目录,此处的i为不可修改位(immutable)。查看方法:lsattr /etc/passwd,撤销为chattr –i /etc/group】

补充说明:这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

a:让文件或目录仅供附加用途。  
b:不更新文件或目录的最后存取时间。  
c:将文件或目录压缩后存放。  
d:将文件或目录排除在倾倒操作之外。  
i:不得任意更动文件或目录。  
s:保密性删除文件或目录。  
S:即时更新文件或目录。  
u:预防以外删除。  

参数:

-R 递归处理,将指定目录下的所有文件及子目录一并处理。  
-v<版本编号> 设置文件或目录版本。  
-V 显示指令执行过程。  
+<属性> 开启文件或目录的该项属性。  
-<属性> 关闭文件或目录的该项属性。  
=<属性> 指定文件或目录的该项属性。  

给系统服务端口列表文件加锁

主要作用:防止未经许可的删除或添加服务

chattr +i /etc/services  

【查看方法:lsattr /etc/ services,撤销为chattr –i /etc/ services】

系统文件权限修改

Linux文件系统的安全主要是通过设置文件的权限来实现的。每一个Linux的文件或目录,都有3组属性,分别定义文件或目录的所有者,用户组和其他人的使用权限(只读、可写、可执行、允许SUID、允许SGID等)。特别注意,权限为SUID和SGID的可执行文件,在程序运行过程中,会给进程赋予所有者的权限,如果被黑客发现并利用就会给系统造成危害。

(1)修改init目录文件执行权限:

chmod -R 700 /etc/init.d/* (

递归处理,owner具有rwx,group无,others无)
(2)修改部分系统文件的SUID和SGID的权限:

chmod a-s /usr/bin/chage  
chmod a-s /usr/bin/gpasswd  
chmod a-s /usr/bin/wall  
chmod a-s /usr/bin/chfn  
chmod a-s /usr/bin/chsh  
chmod a-s /usr/bin/newgrp  
chmod a-s /usr/bin/write  
chmod a-s /usr/sbin/usernetctl  
chmod a-s /usr/sbin/traceroute  
chmod a-s /bin/mount  
chmod a-s /bin/umount  
chmod a-s /sbin/netreport  

(3)修改系统引导文件

chmod 600 /etc/grub.conf  
chattr +i /etc/grub.conf  

【查看方法:lsattr /etc/grub.conf,撤销为chattr –i /etc/grub.conf】

#vi /etc/resolv.conf  

nameserver 8.8.8.8 #google dns
nameserver 8.8.4.4
20.hostname 修改

注意需先把mysql、postfix等服务停了
1.hostname servername
2.vi /etc/sysconfig/network
service network restart
3.vi /etc/hosts

selinux 修改

开启selinux可以增加安全性,但装软件时可能会遇到一些奇怪问题
以下是关闭方法

#vi /etc/selinux/config 

改成disabled

设置iptables

iptables 默认安全规则脚本

重启系统

以上大部分设置可以运行脚本来完成。linux安全设置快捷脚本

设置完成后重启系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值