标签 CentOS7 下的文章

为JustHost.ru的CentOS7小鸡开启IPv6

前言

笔者有个从JustHost.ru购买的新西伯利亚小鸡,用途懂得都懂,不懂得,说了你也不明白,不如不说。你们也别来问我怎么了,利益牵扯太大,说了对你们也没什么好处,当不知道就行了。小鸡很便宜,服务页面很简陋,购买后会把一些机器信息发送到注册邮箱。一直以为这么便宜的机器有IPv4就行了,万不会提供IPv6。后来偶尔看到管理页面上标识有IPv6地址,看了一下购买时的邮件,邮件中有IPv4和IPv6地址和网关等信息。尝试Ping提供的IPv6地址提示无法访问目标主机,通过在小鸡上运行 ip a 命令查看其只配置了IPv4网络信息。官方支持IPv6但没有配置IPv6信息导致无法使用IPv6的情况,我们只需要在为网卡添加IPv6信息即可。

注:本文中涉及的敏感信息包括不限于MAC地址与IP地址等均为编造,非笔者所有,如有雷同纯属巧合!

操作

  1. 找到购买小鸡时的邮件,以获取IP配置信息。

  2. 小鸡执行 ip a 命令,查看所有网卡的信息。一般会有两个接口,其中 lo 是回环接口,那么另一个应该就是网卡了,比如笔者这里的名称是 eth0 。此处我们应该会看到一个开头fe80的本地v6地址,但没有服务商分配给我们的公网地址。

    [root@XXX ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 55:55:aa:aa:55:aa brd ff:ff:ff:ff:ff:ff
        inet 8.8.8.8/24 brd 8.8.8.255 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet6 fe80:::::8/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
  3. 使用以下命令确认eth0配置文件的存在,正常应该可以看到名为 ifcfg-eth0 的配置文件。

    [root@XXX ~]# ls /etc/sysconfig/network-scripts/
    ifcfg-eth0      ifdown-post      ifup-bnep   ifup-routes
  4. 使用以下命令备份 ifcfg-eth0 文件为 ifcfg-eth0.old

    [root@XXX ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.old
  5. 使用 nano /etc/sysconfig/network-scripts/ifcfg-eth0 命令打开配置文件,参考购买时官方邮件为其添加IPv6信息。主要修改 IPV6INIT参数为:yes,并随后添加IPv6默认网关和地址信息。

    ...
    IPV6INIT="yes"
    IPV6_DEFAULTGW=2a00:b700:1::1
    IPV6ADDR="2a00:b700:1:3e::175/64"
    ...
  6. 修改完后按 Ctrl+O ,然后直接按 Enter 键保存。按 Ctrl+X 键退出NANO编辑器。

  7. 运行以下命令重启网络服务。(也可以使用systemctl restart network命令)

    [root@XXX ~]# service network restart
    Restarting network (via systemctl):                        [  OK  ]
  8. 此时,再次查看eth0接口信息,应能看到新添加的IPv6地址,通过以下命令可以查看特定接口的信息。

    [root@v119813 ~]# ip a show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 55:55:aa:aa:55:aa brd ff:ff:ff:ff:ff:ff
        inet 8.8.8.8/24 brd 8.8.8.255 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet6 2a00:b700:1:3e::175/64 scope global noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80:::::8/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
  9. 如果正常,此时在我们本地应可以Ping 通 小鸡的IPv6地址了。

参考

CentOS7升级最新版Git

CentOS7升级最新版Git

前言

Git是一个快速、可扩展的分布式版本控制系统,具体用途这里不再赘述。有时,我们生产环境中的某些程序可能会对Git版本有要求。但是CentOS7中的Git版本是比较旧的1.8.3.1版本,且无法使用yum升级到最新版本。如果这时我们的程序需要2.x的Git,便会出现兼容性问题。这种情况下,我们就需要自行下载并编译安装了。

读懂实践本文,你可能需要在技能树中点亮以下技能:

  • Linux系统基础操作

操作

  1. 运行以下命令安装所有依赖软件包。
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 
yum install gcc perl-ExtUtils-MakeMaker
  1. 在/usr/src目录下创建一个Git目录,并进入。

    mkdir -p /usr/src/Git
    cd /usr/src/Git
  2. 打开Git下载页下载最新版的Git。页面按发布时间排序,我们直接点开最近的一个版本(我这2.23.0)。然后在“Source code(tar.gz)”上右击,复制其下载地址,然后使用wget下载文件。此命令由wget后空格加文件地址构成。

wget https://github.com/git/git/archive/v2.23.0.tar.gz
  1. 查看下载的文件名(比如我这里下载的文件名是v2.23.0.tar.gz),并使用tar工具解包,解包后查看解出的文件夹名称。这里我们发现文件加名为“git-2.23.0”
[root@lexsion]# ls
v2.23.0.tar.gz
[root@lexsion]# tar xzf v2.23.0.tar.gz
[root@lexsion]# ls
git-2.23.0  v2.23.0.tar.gz
  1. 进入解出的文件夹,使用make命令编译并安装新版Git工具。
cd git-2.23.0
make prefix=/usr/local/git all
make prefix=/usr/local/git install
  1. 移除旧版本Git,为新版Git添加软链接。
yum remove git
cd /usr/bin
ln -s  /usr/local/git/bin/git git
  1. 使用以下命令查看Git版本,确认是否安装成功。
git --version

以上就是CentOS7下,升级Git版本的过程。

参考

  1. centOS7升级git版本到2.7.3
  2. centos7升级git到最新版本
  3. Git-GitHub项目页

CentOS7新主机初步配置命令

CentOS7新主机初步配置命令

前言

购买自己的Linux主机后第一件事就是安装操作系统,再之后需要自己做一些配置。本文对CentOS7系统下此流程进行整理,主要用于记录备忘,以便于日后查阅。如有遗漏,欢迎大家留言补充。

目录

  1. SSH登陆并修改密码
  2. 修改SSH的登陆端口
  3. 修改系统欢迎信息
  4. 修改启动选择菜单等待时间
  5. 修改主机名(HostName)
  6. 配置Fail2Ban防止SSH爆破

1.SSH登陆并修改密码

将主机IP地址与SSH端口号输入SSH软件使用 用户名和密码登陆服务器,SSH的端口号默认为22端口,用户名一般应为root。如果是购买VPS,商家一般会告知IP地址、端口号以及用户名密码。
登陆一个新的主机时(或主机重装系统后),会对未知的信息进行警告,需选择接受才能正常连接。
通常我们使用root用户登陆后需要修改密码,使用以下命令修改密码,系统会提示要求输入新密码两次以确认修改,如下所示:

# passwd 
Changing password for user root. 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

2.修改SSH的登陆端口

在使用有公网IP的主机时,为了安全考虑,我们需要改掉默认的SSH端口。
使用 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.old 命令备份配置文件 sshd_configsshd_config.old ,使用 vi /etc/ssh/sshd_config 命令打开SSH服务端配置文件,将 #Port 22# 号删除,按格式添加新行,内容为Port空格后跟自定义端口号。如下所示自定义端口为21748:

#
Port 22
Port 21748

使用以下命令重启SSH服务端使配置生效,正常情况此时端口22和端口21748应都能正常访问。

service sshd restart

使用 exit 命令退出SSH客户端,然后使用IP地址加新端口号尝试连接,如不成功,请检查防火墙设置以及是否自定义端口与其他应用冲突。
如果通过新端口连接正常,则记录自己修改的端口号已免忘记,重新使用 vi /etc/ssh/sshd_config 命令打开配置文件,如下所示,在 Port 22 行前添加 # 号注释本行并保存,停用22端口的使用。

#
#Port 22
Port 21748

运行 service sshd restart 使配置生效,这之后,将无法通过22端口连接SSH,此时我们可以删除防火墙规则中的22端口。

3.修改系统欢迎信息

某些系统在我们登陆后会显示一段欢迎信息。我们可以按我们自己的意愿进行修改。这些信息实际来自于文件 /etc/motd ,我们可以使用以下命令通过vim编辑器编辑此文件来修改欢迎信息。

vim /etc/motd

如果系统提示命令未找到,可尝试使用其他编辑器修改。例如: vi , nano 。

  • vim编辑器使用:按i键进入输入模式,编辑完后按ESC键退出编辑模式,输入进入命令模式,输入wq命令保存并退出。若没有vim编辑器或不习惯使用vim编辑器,可用其他编辑器替代,具体使用方法请自行通过搜索引擎查询。

    4.修改启动选择菜单等待时间

    在使用独立主机或自己的物理主机情况下,可能会遇到开机时的启动选择菜单等待时间较长需要修改的问题,此问题可通过修改 /boot/grub2/grub.cfg 文件解决。与上文类似,找到修改以下代码:

    terminal_output console
    if [ x$feature_timeout_style = xy ] ; then
      set timeout_style=menu
      set timeout=5(单位为秒,建议修改成1,修改完成下次开机等待时间就会生效)

    Fallback normal timeout code in case the timeout_style feature is

    unavailable.

5.修改主机名(HostName)

在CentOS7中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(pretty)。静态主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。瞬态主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。而另一方面,灵活主机名则允许使用自由形式(包括特殊/空白字符)的主机名,以展示给终端用户。
一般情况下主机名默认为 localhost 。但在管理的主机较多时,我们需要修改一个易于识别的主机名来标记每台主机。这样才能方便区分自己操作的主机。
在CentOS 7中,使用 hostnamectl 命令行工具查看或修改与主机名相关的配置。
不带参数输入命令查看主机名相关的设置,如果只查看静态、瞬态或灵活主机名,可分别使用 --static--transient--pretty 选项:

[root@localhost ~]# hostnamectl
Static hostname: localhost.localdomain
Pretty hostname: localhost.localdomain
        Icon name: computer-vm
        Chassis: vm
        Machine ID: b5f3ded389c742h9d3g41s87bt57ng28
        Boot ID: 5aa97h356hjg9v8jhng474m6r6k48w89
    Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
    CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-957.10.1.el7.x86_64
    Architecture: x86-64

[root@localhost ~]# hostnamectl --static
localhost.localdomain

通过以下命令同时修改三个主机名:

hostnamectl set-hostname

如果只想修改特定的主机名(静态,瞬态或灵活),可以使用 --static--transient--pretty 选项。例如:使用以下命令修改灵活主机名为ahost:

[root@localhost ~]# hostnamectl --pretty set-hostname ahost

一旦修改了静态主机名,/etc/hostname 将被自动更新。然而, /etc/hosts 不会自动根据所做的修改自动修改,所以在修改主机名后一定要手动更新 /etc/hosts 。使用 vim /etc/hosts 命令通过vi编辑器打开host文件,在里面加入以下内容保存(此处以主机名为ahost为例):

127.0.0.1       ahost
::1             ahost

6.配置Fail2Ban防止SSH爆破

Fail2Ban是一种入侵防御软件框架,可以保护计算机服务器免受暴力攻击。它可以监视计算机的系统日志,通过匹配日志的错误信息执行相应的屏蔽动作。
CentOS7默认的防火墙管理工具是FirewallD,通过以下命令检查其运行状态,若提示running则表示正常运行。

firewall-cmd --state

如果提示未启动则可通过以下命令启用:

# 启动FirewallD
systemctl start firewalld

# 将FirewallD设置开机启动
systemctl enable firewalld.service

启用FirewallD后会禁止除设置的放行端口外的其他端口连接,因此需设置放行常用的端口,以免自己被防火墙阻挡。使用以下命令查看已经放行的端口:

firewall-cmd --zone=public --list-ports

以下是放行上文设置的SSH端口(21748)示例,供参考:

firewall-cmd --zone=public --add-port=21748/tcp --permanent
firewall-cmd --reload

通过以下命令获取FailedBan:

yum -y install epel-release
yum -y install fail2ban

fail2ban配置文件位于/etc/fail2ban,其中jail.conf为主配置文件,相关的匹配规则位于filter.d目录。我们通过新建jail.local文件来覆盖fail2ban的一些默认规则以实现自定义配置。使用 vi /etc/fail2ban/jail.local 命令新建 jail.local 文件,内容如下。

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s

[sshd]
enabled = true
filter  = sshd
port    = 21748
action = %(action_mwl)s
logpath = /var/log/secure
  • ignoreip:IP白名单,可填写多个以 , 分隔

  • bantime:屏蔽时间,单位为秒(s)

  • findtime:时间范围

  • maxretry:最大次数

  • banaction:屏蔽动作,上面使用firewalld屏蔽接口

  • [sshd]:给人看的名称,可随便填写

  • filter:规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则

  • port:对应的端口

  • action:采取的行动

  • logpath:需要监视的日志路径

以上配置意为如果同一个IP,在10分钟内,连续超过5次密码错误,则通过FirewallD接口将此IP ban掉。运行 systemctl start fail2ban 命令启动Fail2Ban。
使用另一台主机不断尝试使用错误密码连接SSH,你会发现连续错误超过5次后直接连不上,说明IP被ban。可以使用命令 fail2ban-client status sshd 查看被ban的IP地址。假设IP:10.0.0.8被sshd规则ban掉,使用命令 fail2ban-client set sshd unbanip 10.0.0.8 可以解除封锁。
确认配置没有问题,使用命令 systemctl enable fail2ban 为Fail2Ban设置开机启动,使用 systemctl status fail2ban 可查看服务状态。若需要停止Fail2Ban,可使用命令 systemctl stop fail2ban 停止其服务,使用命令 systemctl disable fail2ban 可取消开机启动。

参考

CentOS 7安装fail2ban + Firewalld防止爆破与CC攻击
https://www.xiaoz.me/archives/9831

FirewallD入门手册
https://www.linuxprobe.com/centos-firewalld.html

如何在CentOS 7上修改主机名
https://www.jianshu.com/p/39d7000dfa47