Linux 服务器安全配置

Linux 服务器安全配置攻略

在 Linux 服务器上进行完整的安全配置可以提高服务器的安全性,提供更可靠的服务。下面是一份完整的 Linux 服务器安全配置攻略,可供参考。

1.使用 SSH 登录服务器

在使用 Linux 服务器时,我们应该使用 SSH 命令行工具来登陆服务器。首先,我们需要设置 SSH 访问权限,将不安全的访问方式禁用。

sudo chmod 700 /root/.ssh/
sudo chmod 600 /root/.ssh/authorized_keys

上面的命令将设置 .ssh 目录和 authorized_keys 文件的权限,以确保只有管理员可以访问。

接下来,打开 SSH 配置文件 sshd_config,修改以下几个参数:

# 禁用 RFC 4251 中的未加密明文传输
Cipher 3des-cbc,aes192-cbc,aes256-cbc,blowfish-cbc

# 禁用 X11 转发,防止攻击者获取服务器权限
X11Forwarding no

# 禁用 root 账户登录,使用 sudo 来执行管理任务
PermitRootLogin no

2.启用防火墙

防火墙是保护服务器的重要组成部分,能够防止攻击者进一步访问服务器。我们可以使用 iptables 命令来启用防火墙:

# 启用默认策略:通过
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

# 清空已有防火墙设置并防止最终受到黑客攻击
iptables -F
iptables -X
iptables -Z

# 所有包默认都拒绝
iptables -P INPUT DROP
iptables -P FORWARD DROP

# 允许已建立的连接通过防火墙
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允许 HTTP,HTTPS,SSH 的数据包通过防火墙
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

3. 安装 fail2ban

fail2ban 可以监控系统日志,防止攻击者通过 SSH 或其他服务进行暴力破解。我们可以使用以下命令在系统上安装 fail2ban:

sudo apt-get update
sudo apt-get install fail2ban

示例1: 在 DEBIAN 或者 UBUNTU linux 服务器上进行 SSH配置

DEBIAN 或者 UBUNTU linux 服务器默认启用 SSH 服务,我们只需要按照以下步骤进行 SSH 安全配置:

1.打开 /etc/ssh/sshd_config 配置文件

sudo nano /etc/ssh/sshd_config

2.编辑以下参数:

# 禁用禁止的密码
PasswordAuthentication no

# 禁用 root 账户登录,使用 sudo 来执行管理任务
PermitRootLogin no

# 允许 SSH 登录时只使用 PublicKey 动态口令
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey
PubkeyAuthentication yes

# 调整 SSH 登录尝试次数和时间间隔
MaxAuthTries 2
MaxSessions 2
MaxStartups 2:30:10

3.重启 SSH 服务

sudo systemctl restart sshd

示例2: 在 CentOS linux 服务器上进行安全配置

对于 CentOS 服务器,我们需要禁用所有不必要的服务和端口,加强防火墙以及时更新操作系统软件。以下是 CentOS 服务器操作步骤:

1.禁用可能存在漏洞的服务

sudo systemctl stop rpcbind.service
sudo systemctl disable rpcbind.service

sudo systemctl stop nfs.service
sudo systemctl disable nfs.service

sudo systemctl stop dhcpd.service
sudo systemctl disable dhcpd.service

sudo systemctl stop named.service
sudo systemctl disable named.service

2.禁用所有不必要的端口

sudo firewall-cmd --zone=public --list-ports
sudo firewall-cmd --zone=public --remove-port=111/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=5432/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=2049/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=6443/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=8443/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=5473/tcp --permanent
sudo firewall-cmd --reload

3.加强防火墙

# 显示防火墙默认规则
sudo firewall-cmd --list-all

# 允许所有 ICMP 响应
sudo firewall-cmd --permanent --add-icmp-block-inversion
sudo firewall-cmd --permanent --add icmp-block-inversion
sudo firewall-cmd --permanent --add icmp-block-inversion --exception \
  port-unreachable
sudo firewall-cmd --permanent --add icmp-block-inversion --exception \
  time-exceeded
sudo firewall-cmd --permanent --add icmp-block-inversion --exception \
  protocol-unreachable

# 将非本地来源地址的 TCP 和 UDP 数据包丢弃
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 \
  -m conntrack --ctstate INVALID -j DROP
sudo firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 \
  -m conntrack --ctstate INVALID -j DROP
sudo firewall-cmd --reload

4.定期更新操作系统软件,并安装补丁

sudo yum update -y 

结论

通过完整的 Linux 服务器安全配置,我们可以防止攻击者入侵服务器,提高服务器的安全性并提供更稳定的服务。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux 服务器安全配置 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析

    Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析 1. 类变量与成员变量 类变量 类变量是定义在类中但在所有实例之间共享的变量。它可以通过类名或实例访问,当一个实例修改了类变量的值时,该修改会影响到其他所有实例。在类的定义中,类变量通常位于类方法之外,且在所有实例之前初始化。 示例代码: class Circle: # 类变量 pi =…

    other 2023年6月28日
    00
  • Android RecyclerView的卡顿问题的解决方法

    Android RecyclerView的卡顿问题的解决方法 在使用RecyclerView时,有时候会遇到卡顿的问题,导致用户体验不佳。下面是一些解决RecyclerView卡顿问题的方法: 1. 使用合适的布局管理器 RecyclerView的布局管理器对性能有很大的影响。如果列表项的数量较少且固定,可以使用LinearLayoutManager;如果列…

    other 2023年10月13日
    00
  • 详解C语言的exp()函数和ldexp()函数以及frexp()函数

    详解C语言的exp()函数和ldexp()函数以及frexp()函数 1. exp()函数 1.1 函数简介 exp()函数是C语言中一个计算指数函数的函数,可以计算以自然对数为底的指数函数。 1.2 函数原型 double exp(double x); 1.3 函数参数 exp()函数的参数x为一个double类型的数值,表示指数。 1.4 函数返回值 e…

    other 2023年6月26日
    00
  • jQuery实现表格行数据滚动效果

    Sure! Here is a detailed guide on how to implement a table row scrolling effect using jQuery, including two examples: Step 1: Include jQuery Library First, make sure you have inclu…

    other 2023年10月19日
    00
  • 微信小程序canvas生成并保存图片

    微信小程序canvas生成并保存图片的完整攻略 微信小程序提供了canvas组件,可以用于绘制图形和生成图片。本文将详细讲解如何使用canvas生成并保存图片,并提供两个示例说明。 1. canvas基本用法 1.1 创建canvas 可以使用以下代码创建canvas: <canvas id="myCanvas" style=&qu…

    other 2023年5月9日
    00
  • 一文搞懂JAVA 修饰符

    一文搞懂JAVA 修饰符 在Java中,修饰符(Modifier)是用来限制或者开放类、接口、方法和变量的访问权限;限制或者限制方法的继承或其他行为。Java中的修饰符分为以下几种: 访问控制修饰符:public,private,protected和默认(即不写)四种修饰符。 继承控制修饰符:final 和 abstract 两种修饰符。 静态修饰符:sta…

    other 2023年6月26日
    00
  • C语言将日期、时间保存到文本文件中的方法

    C语言将日期、时间保存到文本文件中的方法主要有以下几个步骤: 包含头文件 在C语言程序中,首先需要包含头文件,该头文件中包含了与日期、时间相关的函数。 #include <time.h> 获取当前时间 使用time函数获取当前时间,time函数返回自1970年1月1日零时起经过的秒数。可以使用localtime函数将时间秒数转换为具体的日期时间。…

    other 2023年6月26日
    00
  • java EasyExcel实现动态列解析和存表

    Java EasyExcel实现动态列解析和存表 在Java中,EasyExcel是一款非常好用的Excel操作工具。本文将介绍如何使用EasyExcel实现动态列解析和存表。 准备工作 使用EasyExcel需要添加相应的依赖: <dependency> <groupId>com.alibaba</groupId> &l…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部