一、禁止ROOT用户远程登录

linux中root用户是超级管理员,可以针对root用户暴力破解密码,这样很不安全,工作中我们一般禁止root用户直接远程登陆,开设一个或多个普通用户,只允许登陆普通用户,如果有需要用root用户,可以su切换root 或者sudo来拥有root权限执行命令。

1、需要编辑/etc/ssh/sshd_config。

vim /etc/ssh/sshd_config

2、找到 PermitRootLogin

改为 PermitRootLogin no

3、保存退出配置文件后,重启sshd服务

systemctl restart sshd.service

二、设置只有指定用户组才能使用su命令切换到root用户

1、新建普通用户,比如baby

useradd  baby

2、修改密码

passwd baby

3、将帐号加入wheel组

usermod -G wheel baby

4、设置只允许这个组的帐号,使用su命令切换到root

vi /etc/pam.d/su

找到#auth            required        pam_wheel.so use_uid

去掉行首的注释符 # 保存退出;

接着vi /etc/login.defs

在最末添加SU_WHEEL_ONLY yes 保存退出即可。

或者执行

echo "SU_WHEEL_ONLY yes">>/etc/login.defs

现在,再建立新的普通帐号,是无法使用su命令切换到root组了。

三、对一些关键文件进行保护

有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。

chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux系统都是2.6以上内核了。

通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。

chattr命令不能保护/、/dev、/tmp、/var目录。

lsattr命令是显示chattr命令设置的文件属性。

与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

1、防止系统中某个关键文件被修改

chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow

如果需要改动时可以使用

chattr -i /etc/passwd /etc/group /etc/shadow /etc/gshadow

2、让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件

chattr +a /var/log/messages

四、设置密码过期时间、修改间隔时间、到期警告时间

对于新添加的用户,用户密码过期时间是从/etc/login.defs中PASS_MAX_DAYS提取的,普通系统默认就是99999,而安全操作系统4.0是90。更改此处,只是让新建的用户默认密码过期时间变化,已有用户密码过期时间仍然不变。

chage [options] user

chage:密码失效是通过此命令来管理的。

  参数意思:
  -m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
  -M 密码保持有效的最大天数。
  -W 用户密码到期前,提前收到警告信息的天数。
  -E 帐号到期的日期。过了这天,此帐号将不可用。
  -d 上一次更改的日期
  -i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
  -l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

个人设置的参数:过期时间:90;修改间隔:7;到期警告时间:7

五、安装DenyHosts

当你的linux服务器暴露在外网当中时,服务器就极有可能会遭到互联网上的扫描软件进行扫描,然后试图连接ssh端口进行暴力破解(穷举扫描)。如果遇到这个问题,一款非常有用的工具DenyHosts可以阻止试图猜测SSH登录口令。DenyHosts是用Python写的一个程序,它会分析SSHD的日志文件(Redhat为/var/log/secure等),当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。

1、检查安装环境:

1) 判断系统安装的sshd是否支持tcp_wrappers(默认都支持),命令如下:

ldd /usr/sbin/sshd |grep libwrap.so.0

如果有输出:libwrap.so.0 => /lib64/libwrap.so.0 则为支持

2)判断是否有python(centos默认都有):

python -V

只要系统Python版本不小于2.3版本即可(本机版本为Python 2.6.5)。

2、安装DenyHosts

1)下载DenyHosts-2.6.tar.gz并上传到服务器,

wget http://imcat.in/down/DenyHosts-2.6.tar.gz

2)安装

①解压

tar -zxvf DenyHosts-2.6.tar.gz

②安装

cd DenyHosts-2.6
python setup.py install

程序脚本自动安装在:/usr/share/denyhosts目录

库文件安装在:/usr/lib/python2.6/site-packages/DenyHosts目录下

denyhosts.py默认安装在:/usr/bin/目录下

3)设置启动脚本

cd /usr/share/denyhosts/
cp daemon-control-dist daemon-control
chown root daemon-control
chmod 700 daemon-control

##将denyhosts.cfg-dist中不是以"#"开头的行,写入denyhosts.cfg文件

grep -v "^#" denyhosts.cfg-dist > denyhosts.cfg

编辑denyhosts.cfg

vi denyhosts.cfg

具体配置项可参考以下的配置:

############ THESE SETTINGS ARE REQUIRED ############
##分析源文件
SECURE_LOG = /var/log/secure
##禁止sshd登陆的IP存放文件
HOSTS_DENY = /etc/hosts.deny ##过多久后清除已经禁止的IP
PURGE_DENY = 1d ##监控的服务名
BLOCK_SERVICE = sshd ##表示允许无效用户登录失败的次数
DENY_THRESHOLD_INVALID = 3 ##表示允许普通用户登录失败的次数
DENY_THRESHOLD_VALID = 3 ##表示允许root用户登录失败的次数
DENY_THRESHOLD_ROOT = 3 DENY_THRESHOLD_RESTRICTED = 1 WORK_DIR = /usr/share/denyhosts/data SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES ##是否做域名反解
HOSTNAME_LOOKUP=NO LOCK_FILE = /var/lock/subsys/denyhosts

4)将denyhosts添加到系统服务并自动启动

①自启动

vi /etc/rc.local 

在末尾添加以下行

/usr/share/denyhosts/daemon-control start

 ②添加至系统服务

ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
chkconfig --add denyhosts
chkconfig --level 345 denyhosts on

5)启动denyhosts

service denyhosts start

6)查看denyhosts是否运行成功

service denyhosts status

显示:DenyHosts is running with pid = XXXX,即运行成功。

7)至此,denyhosts也就配置完成了;此外将sshd的默认端口修改掉,再结合denyhosts可以防止大部分sshd的暴力破解了。

3、将自己的IP加入白名单

如果自己的IP曾经登陆失败过,并且超过了你配置文件中的阀值,安装好denyhosts后,只要一登陆, 自己的IP就会被加到/etc/hosts.deny里。所以可以将IP加入白名单hosts.allow,当hosts.allow和 host.deny相冲突时,以hosts.allow设置优化。

加入白名单:

vim /etc/hosts.allow

添加 sshd:127.0.0.1(冒号后跟要加入的IP)

在网上还看到另一种方法,亲测可行:https://www.cnblogs.com/jackrebel/p/3935592.html

六、禁止系统响应任何从外部/内部来的ping请求

攻击者一般首先通过ping命令检测此主机或者IP是否处于活动状态 ,如果能够ping通 某个主机或者IP,那么攻击者就认为此系统处于活动状态,继而进行攻击或破坏。如果没有人能ping通机器并收到响应,那么就可以大大增强服务器的安全性,linux下可以执行如下设置,禁止ping请求:

修改文件 /etc/sysctl.conf,在文件末尾增加一行:

net.ipv4.icmp_echo_ignore_all = 1

如果已经有 net.ipv4.icmp_echo_ignore_all 这一行了,直接修改 = 号后面的值即可的 0 表示允许,1 表示禁止。

修改完成后执行 sysctl -p 使新配置生效(重要)。

linux 安全防护的更多相关文章

  1. 网站加速与Linux服务器防护

    网站加速方面 1. Nginx 配置 gzip 压缩 开启nginx gzip压缩后,网页.css.js等静态资源的大小会大大的减少,从而可以节约大量的带宽,提高传输效率,给用户快的体验.虽然会消耗c ...

  2. 四十四.Linux基本防护 用户切换与提权 SSH访问控制 SELinux安全 、SSH访问控制 SELinux安全

     1.Linux基本防护措施 与用户相关的配置文件 /etc/passwd   /etc/shadow  /etc/group /etc/gshadow  /etc/login.defs /etc/s ...

  3. 宝塔linux面板防护CC设置

    使用宝塔linux面板很多用户受到CC攻击不知如何防范. 下面讲下如何利用宝塔自带的功能来进行基本的CC防护. 首先是在nginx上有个waf安全模块,里面有CC防护设置.(要求nginx为1.12版 ...

  4. linux SElinux防护 加密解密 gpg签名与认证

    SElinux Security-Enhanced Linux由美国国家安全局主导开发一套强化linux安全的mac扩展模块 selinux的运作机制:集成到linux内核上(2.6及以上)操作系统提 ...

  5. Linux 攻击防护基础排查

    作者:Zzang 来源:cnblogs 原文:https://www.cnblogs.com/Zzang/p/LinuxHack.html 版权声明:本文为博主原创文章,转载请附上博文链接! 基本网络 ...

  6. linux 安全基本防护 用户提权 ssh访问控制

    linu安全应用 信息安全分类: 物理安全:主机/机房环境 系统安全:操作系统 应用安全:各种网络服务,应用程序 网络安全:网络访问控制,防火墙规则 数据安全:信息的备份与恢复,加密解密 管理安全:保 ...

  7. 14.LAMP服务 Linux Apache Mysql Php和防护机制 xinetd、tcp wapper

    一.安装LAMP服务 Linux Apache Mysql Php       要求操作系统支持 php解析 apache调用php插件解析 phpmyadmin       yum install ...

  8. linux 下开放端口问题

    Linux安装Tomcat后本地可以正常访问,可是这时Tomcat还不能被外界访问需要在Linux默认防护墙上打开8080端口 打开 /etc/sysconfig/iptables   [root@l ...

  9. Linux安装Tomcat外部不能访问

    Linux安装Tomcat后本地可以正常访问,可是这时Tomcat还不能被外界访问需要在Linux默认防护墙上打开8080端口 打开 /etc/sysconfig/iptables [root@loc ...

随机推荐

  1. UNIX/Linux系统管理技术手册(2)----bash脚本编程

    1. 一个简单的例子: $ vim readname.sh #file:readname.sh#!/bin/bash echo -n "Enter your name: " rea ...

  2. Python爬虫教程-27-Selenium Chrome版本与chromedriver兼容版本对照表

    我们使用Selenium+Chrome时,版本不一样, 会导致 chromedriver 停止运行 chromedriver 所有版本下载链接:http://npm.taobao.org/mirror ...

  3. Qt 之 QSS(样式表语法)

    https://blog.csdn.net/liang19890820/article/details/51691212 简述 Qt样式表(以下统称QSS)的术语和语法规则几乎和CSS相同.如果你熟悉 ...

  4. 如何向数据库中添加TIMESTAMP(6)类型的数据

    to_timestamp('2011-11-11 11:11:11.1','yyyy-mm-dd hh24:mi:ss.ff')

  5. C#中的多线程 - 并行编程 z

    原文:http://www.albahari.com/threading/part5.aspx 专题:C#中的多线程 1并行编程Permalink 在这一部分,我们讨论 Framework 4.0 加 ...

  6. 【Leetcode】【Medium】Binary Tree Right Side View

    Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...

  7. PHP-Gealman

    一.简介 Gearman是一个分发任务的程序框架,它会对作业进行排队自动分配到一系列机器上.gearman跨语言跨平台,很方便的实现异步后台任务.php官方收录:http://php.net/manu ...

  8. PHP error_log 实际运用

    PHP的error_log()函数合理用起来还真方便呢,来看下这个函数: error_log(message,type,destination,headers); 参数 描述 message 必需.规 ...

  9. hashcode方法 简析

    package com.ycgwl; import java.util.HashMap; class People{ private String name; private int age; pub ...

  10. 理解Underscore中的_.bind函数

    最近一直忙于实习以及毕业设计的事情,所以上周阅读源码之后本周就一直没有进展.今天在写完开题报告之后又抽空看了一眼Underscore源码,发现上次没有看明白的一个函数忽然就豁然开朗了,于是赶紧写下了这 ...