linux 安全防护
一、禁止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 安全防护的更多相关文章
- 网站加速与Linux服务器防护
网站加速方面 1. Nginx 配置 gzip 压缩 开启nginx gzip压缩后,网页.css.js等静态资源的大小会大大的减少,从而可以节约大量的带宽,提高传输效率,给用户快的体验.虽然会消耗c ...
- 四十四.Linux基本防护 用户切换与提权 SSH访问控制 SELinux安全 、SSH访问控制 SELinux安全
1.Linux基本防护措施 与用户相关的配置文件 /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/login.defs /etc/s ...
- 宝塔linux面板防护CC设置
使用宝塔linux面板很多用户受到CC攻击不知如何防范. 下面讲下如何利用宝塔自带的功能来进行基本的CC防护. 首先是在nginx上有个waf安全模块,里面有CC防护设置.(要求nginx为1.12版 ...
- linux SElinux防护 加密解密 gpg签名与认证
SElinux Security-Enhanced Linux由美国国家安全局主导开发一套强化linux安全的mac扩展模块 selinux的运作机制:集成到linux内核上(2.6及以上)操作系统提 ...
- Linux 攻击防护基础排查
作者:Zzang 来源:cnblogs 原文:https://www.cnblogs.com/Zzang/p/LinuxHack.html 版权声明:本文为博主原创文章,转载请附上博文链接! 基本网络 ...
- linux 安全基本防护 用户提权 ssh访问控制
linu安全应用 信息安全分类: 物理安全:主机/机房环境 系统安全:操作系统 应用安全:各种网络服务,应用程序 网络安全:网络访问控制,防火墙规则 数据安全:信息的备份与恢复,加密解密 管理安全:保 ...
- 14.LAMP服务 Linux Apache Mysql Php和防护机制 xinetd、tcp wapper
一.安装LAMP服务 Linux Apache Mysql Php 要求操作系统支持 php解析 apache调用php插件解析 phpmyadmin yum install ...
- linux 下开放端口问题
Linux安装Tomcat后本地可以正常访问,可是这时Tomcat还不能被外界访问需要在Linux默认防护墙上打开8080端口 打开 /etc/sysconfig/iptables [root@l ...
- Linux安装Tomcat外部不能访问
Linux安装Tomcat后本地可以正常访问,可是这时Tomcat还不能被外界访问需要在Linux默认防护墙上打开8080端口 打开 /etc/sysconfig/iptables [root@loc ...
随机推荐
- UNIX/Linux系统管理技术手册(2)----bash脚本编程
1. 一个简单的例子: $ vim readname.sh #file:readname.sh#!/bin/bash echo -n "Enter your name: " rea ...
- Python爬虫教程-27-Selenium Chrome版本与chromedriver兼容版本对照表
我们使用Selenium+Chrome时,版本不一样, 会导致 chromedriver 停止运行 chromedriver 所有版本下载链接:http://npm.taobao.org/mirror ...
- Qt 之 QSS(样式表语法)
https://blog.csdn.net/liang19890820/article/details/51691212 简述 Qt样式表(以下统称QSS)的术语和语法规则几乎和CSS相同.如果你熟悉 ...
- 如何向数据库中添加TIMESTAMP(6)类型的数据
to_timestamp('2011-11-11 11:11:11.1','yyyy-mm-dd hh24:mi:ss.ff')
- C#中的多线程 - 并行编程 z
原文:http://www.albahari.com/threading/part5.aspx 专题:C#中的多线程 1并行编程Permalink 在这一部分,我们讨论 Framework 4.0 加 ...
- 【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 ...
- PHP-Gealman
一.简介 Gearman是一个分发任务的程序框架,它会对作业进行排队自动分配到一系列机器上.gearman跨语言跨平台,很方便的实现异步后台任务.php官方收录:http://php.net/manu ...
- PHP error_log 实际运用
PHP的error_log()函数合理用起来还真方便呢,来看下这个函数: error_log(message,type,destination,headers); 参数 描述 message 必需.规 ...
- hashcode方法 简析
package com.ycgwl; import java.util.HashMap; class People{ private String name; private int age; pub ...
- 理解Underscore中的_.bind函数
最近一直忙于实习以及毕业设计的事情,所以上周阅读源码之后本周就一直没有进展.今天在写完开题报告之后又抽空看了一眼Underscore源码,发现上次没有看明白的一个函数忽然就豁然开朗了,于是赶紧写下了这 ...