Skip to content

毛俊的博客

GNU/Linux系统安全强化的几个步骤

typecho1 min read

互联网上的攻击扫描无处不在,为了提高网站的安全性,可以给新的服务器或者已有的服务器做下安全加固。通过下面的步骤可以大大提高服务器的安全性。

更新系统

Ubuntu和 Debian:

1$ sudo apt update && sudo apt upgrade -y

Fedora

1$ sudo dnf upgrade

Centos

1$sudo yum update

Archlinux

1$ sudo pacman Syu

注意以上只会更新系统版本,不会升级内核(Arch除外是滚动更新)

升级内核

注意,默认只会升级到仓库的最新内核版本。而不是Linux Kernel的最新版本。我们可以通过第三方仓库升级。

1# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2
3# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

添加仓库源后,可以通过以下命令列出可用的系统内核包。

1# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

安装主干文档版本内容:

1# yum --enablerepo=elrepo-kernel install kernel-ml

安装后重启检查内核

1# reboot
2# uname -r

重启后发现内核并没有切换到最新的版本。

编辑/etc/default/grub 文件,将内容中的GRUB_DEFAULT属性

1GRUB_TIMEOUT=5
2GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
3GRUB_DEFAULT=saved
4GRUB_DISABLE_SUBMENU=true
5GRUB_TERMINAL_OUTPUT="console"
6GRUB_CMDLINE_LINUX="crashkernel=auto net.ifnames=0 console=tty0 console=ttyS0,115200n8"
7GRUB_DISABLE_RECOVERY="true"

修改为:

1GRUB_DEFAULT=0

表示GRUB 初始化页面的第一个内核将作为默认内核.

运行下面的命令来重新创建内核配置:

1# grub2-mkconfig -o /boot/grub2/grub.cfg

### 清理内核包 升级完到最新的内核后,可以把旧的内核包清理掉。查看内核 RPM包:

1# rpm -qa |grep kernel
2kernel-3.10.0-514.26.2.el7.x86_64
3kernel-ml-5.4.8-1.el7.elrepo.x86_64
4kernel-tools-libs-3.10.0-1062.9.1.el7.x86_64
5kernel-tools-3.10.0-1062.9.1.el7.x86_64
6kernel-headers-3.10.0-1062.9.1.el7.x86_64
7kernel-3.10.0-1062.9.1.el7.x86_64
8kernel-3.10.0-514.el7.x86_64

删除3.10.0的包

1# rpa -qa |gre kernel |grep 3.10.0 | xargs yum remove

删除后重新启动系统即可。

创建sudo用户

### centos7 新建用户:

1# adduser <username>

重置密码:

1# passwd <username>

sudo user

1# usermod -aG wheel <username>

配置ssh密钥

使用ssh-copy-id命令将预先生成的密钥上传到服务器。

1$ ssh-copy-id <username>@ip_address

这样,以后就无需输入密码远程登录到服务器。

限制访问

  1. 禁用SSH密码认证
  2. 限制ROOT用户远程登录
  3. 限制IPV$IPV6的访问

即编辑/etc/ssh/sshd_config:

1PasswordAuthentication no
2PermitRootLogin no

修改AddressFamily选项限制IPV4IPV6

1AddressFamily inet

重启SSH服务生效。

Systemctl管理服务的系统上重启SSH

1$ sudo systemctl restart sshd

防火墙

Ubuntu 和 Debian:

1$ sudo apt install ufw

RHEL和Centos

1$ yum -y install firewall-cmd

centos默认安装了这个

Archlinux和Manjaro:

1$ sudo pacman -S ufw

UFW默认拒绝所有传入连接,允许所有传出连接。

设置允许传入的连接:

1$ sudo ufw allow ssh
2$ sudo ufw allow http
3$ sudo ufw allow https

启用UFW:

1$ sudo ufw enable

查看状态:

1$ sudo ufw status

禁用UFW:

1$ sudo ufw disable

安装Fail2ban

Fail2ban可以根据规则阻止攻击者的IP

Ubuntu和 Debian:

1$ sudo apt install fail2ban -y

Archlinux和Manjaro:

1$ sudo pacman -S fail2ban

复制配置文件:

1$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

编辑jail.local文件

1[sshd]
2enabled = true

重启Fail2ban:

1$ sudo systemctl restart fail2ban

Fail2ban软件将不断检查日志文件以查找攻击。

查看状态:

1$ sudo fail2ban-client status ssh

移除无用的网络服务

使用ss命令查看正在运行的网络服务:

1$ sudo ss -atpu

删除无用的网络服务:

Ubuntu和Debian:

1$ sudo apt purge <service_name>

RHEL和Centos:

1$ sudo yum remove <service_name>

(完)

© 2020 by 毛俊的博客. All rights reserved.
Theme by LekoArts