一、禁止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. odps编写UDF的实现

    问题 尝试写一个UDF,参数支持输入x,y与一个Polygon,返回结果是(x,y)是否在输入的Geometry之内? 环境 eclipse odps 插件 jts包:jts-1.8.jar 解法 i ...

  2. 【Machine Learning】决策树之ID3算法 (2)

    决策树之ID3算法 Content 1.ID3概念 2.信息熵 3.信息增益 Information Gain 4. ID3 bias 5. Python算法实现(待定) 一.ID3概念 ID3算法最 ...

  3. android 多渠道打包

    android 多渠道打包 原理 在manifest文件中,application标签内部设置不同的metadata标签即可,可以通过java api获取这个matedata内的值 友盟提供的多渠道打 ...

  4. 【转】ubunt 安装 yum出现 ubuntu 解决“无法获得锁 /var/lib/dpkg/lock -open (11:资源暂时不可用)”的方法

    今天本来是用xshell 链接本地的linux的,然而链接的时候没有主动弹出输入 用户名和密码的对话框,google搜了下,遇到了上面的问题. 解决办法如下:1.终端输入 ps  aux ,列出进程. ...

  5. 记重回IT行业的面试

    问点: 0,梳理一个前端知识框架 1,jQuery的理解 2,仿某网站首页,除了download,显示新优化地方 3,文档模型(DOM) 事件流 事件处理程序 事件类型 例如阻止冒泡的方法 4,前端跟 ...

  6. webstorm中使用git

    webstorm中使用git将代码放入tfs两种方式: 直接在tfs上建立仓库,复制仓库地址,然后在本地打开webstorm,然后git克隆这个仓库 使用git命令将本地项目上传到tfs git re ...

  7. Razor模板引擎 (RazorEngine)

    Razor模板引擎不仅在ASP.NET MVC中内置了Razor模板引擎,还有一个开源的RazorEngine, 这样以来我们可以在非ASP.NET MVC项目中使用Razor引擎,甚至在控制台,Wi ...

  8. 如何申请免费域名证书,以及在IIS上绑定

    1.前往https://freessl.cn/ 申请域名 证书 2.输入邮箱后,点击创建.文件验证方式 会自动下载一个压缩包,把该压缩包放到所申请的域名首层下.(不要重复创建,需要3,5分钟.最好手动 ...

  9. js 浅拷贝有大用

    如题 像浅拷贝.深拷贝这类的知识点我们应该都明白是怎么回事,大部分都是在面试的时候会被问到.大多让你实现一个深拷贝.现实中我们都用比较暴力直接的手段 JSON stringify. 一句话就搞定,管他 ...

  10. iostat -x命令诊断

    -x 参数iostat还有一个比较常用的选项-x,该选项将用于显示和io相关的扩展数据. iostat -d -x -k 1 10Device:    rrqm/s wrqm/s   r/s   w/ ...