Linux 安全工具

2020-03-23  本文已影响0人  单纯小码农

Linux 安全工具

主机|端口扫描

nmap

https://nmap.org/

主要功能:

  1. 主机发现
  2. 端口扫描
  3. 版本检测
  4. OS猜测

主机发现

类似于ping,发送探测包到指定主机,如果得到回复则说明主机在线

nmap -sn IP|CIDR

原理:

只要获取到一个回应包,就认为此主机在线

端口扫描

nmap -sS -SU IP|CIDR -p T:TCP-PORT,U:UDP-PORT
image

原理:

-p PORT-RANGE

--top-ports NUM

版本检测

nmap -sV IP|CIDR -p PORT 

OS猜测

不同OS对tcp/IP协议的实现方式可能有些许差异,nmap就利用这一点,向目标主机发送精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。

而nmap有一个常见OS指纹特征数据库,将获取到的指纹进行对比,如果匹配就直接返回OS信息,如果无匹配就会进行猜测。

当目标主机至少存在一个开放端口和一个关闭端口时,OS猜测才能正常进行。

nmap -O IP|CIDR

防火墙

iptables

CentOS 7及之后默认安装了firewalld替代iptables作为防火墙工具。

个人习惯换回iptables:

systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld

yum -y install iptables-services
systemctl enable iptables
systemctl restart iptables

Linux系统中真正实现防火墙功能的是系统的netfilter框架,而不论是firewalld还是iptables-services都只是一个类似于用户代理的身份,方便用户使用它向内核管理规则。

table

根据规则功能的不同可分为四表:

  1. raw:控制数据包是否被追踪
  2. mangle:修改数据包的类型、TTL等
  3. nat:网络地址转换
  4. filter:过滤数据包

CHAIN

默认有5个Chain:INPUTOUTPUTFORWARDPREROUTINGPOSTROUTING

match

TARGET

  1. ACCEPT:放行

  2. DROP:丢弃

  3. REJECT:拒绝

    ...

iptables命令

iptables OPTIONS [CHAIN_NAME]查看(某个chain)的规则

-L 显示规则列表,如果后面接CHAIN_NAME则表示只查看某个chain的

-n 禁用域名解析

--line或--line-numbers 显示序号

-v 显示更多信息

-t 查看某个表,默认filter

iptables {-I|-A} [number] [-s|-d ipaddress] [-p {tcp|udp|all}] [--dport|sport port] -j {ACCEPT|DROP...}

在每条Chain中,遵循从上到下的顺序进行匹配,因此顺序是非常重要的

iptables -D {rule_details | number}

使用iptables进行的规则操作都是临时的,重启或reload都会丢失当前配置的规则。要永久生效需要保存规则到/etc/sysconfig/iptables

iptables-save打印配置到屏幕,配合重定向>即可保存到文件

口令破解

John the Ripper

破解加密密码

Linux下用户和密码存储在/etc/shadow/etc/passwd下,采用SHA-512加密,同时采用了salt盐值,保证相同的密码其加密后的字符串也不同。

john --single

john --wordlist=password.lst

hydra

[图片上传失败...(image-9de074-1584971513588)]

密码爆破工具。

SSH安全

[图片上传失败...(image-e162f9-1584971513588)]

fail2ban

介绍

基于认证日志工作,通过扫描日志中的关键字,来更新防火墙规则,从而在指定时间内拒绝某ip的连接。

配置

配置目录/etc/fail2ban/

主配置文件/etc/fail2ban/jail.conf

自定义配置文件目录/etc/fail2ban/jail.d/

jail.conf可能会随着版本更新被覆盖。
因此建议把自定义的配置放置在jail.d下,而不是直接修改jail.conf。
jail.d下的配置(*.local或*.conf)会覆盖jail.conf的相关配置。

过滤器目录/etc/fail2ban/filter.d

动作配置文件目录/etc/fail2ban/action.d

fail2ban日志/var/log/fail2ban.log

fail2ban能够降低暴力破解的速度,但不能减弱弱口令的风险。

在SSH上的应用

自定义配置文件/etc/fail2ban/jail.d/sshd.local

[sshd]
enabled = true
port = 22
findtime = 60
maxretry = 10
bantime = 120
filter = sshd
banaction = iptables-allports
ignoreip = 127.0.0.1/8 192.168.0.0/16
logpath = /var/log/secure

使用systemctl restart fail2ban 运行fail2ban服务

修改配置后,使用systemctl reload fail2ban 重载配置

fail2ban通过向iptables内添加规则来达到效果,如果重启了iptables,fail2ban添加的规则会消失(因为这些规则并未持久化到iptables规则文件中),fail2ban便会失效,因此重启iptables后也需要重启fail2ban服务

fail2ban-client命令

fail2ban-client status 当前运行的jail

fail2ban-client reload

fail2ban-client status JAIL_NAME 某个jail的状态

会显示当前时间段内失败的次数,以及被ban掉的ip

fail2ban-client set JAIL_NAME banip IPADDR 手动ban掉某个ip

fail2ban-client set JAIL_NAME unbanip IPADDR 手动unban某个ip

fail2ban-client set JAIL_NAME addignoreip IPADDR 将某个ip加到白名单内(重启失效)

fail2ban-client set JAIL_NAME delignoreip IPADDR 从白名单内删除某个ip

fail2ban-client get JAIL_NAME ignoreip 查看白名单

在nginx上的应用

一个非常简单的示例:限制某个ip在单位时间内的请求次数,防止某些攻击

  1. 新建过滤器 /etc/fail2ban/filter.d/nginx-test-limit.conf

    [Definition]
    failregex = <HOST>.*HTTP/1.1
    

    使用正则表达式来匹配

  2. 新建jail /etc/fail2ban/jail.d/nginx-test-limit.local

    [nginx-test-limit]
    enabled = true
    port = http,https
    findtime = 60
    maxretry = 10
    bantime = 20
    logpath = /data/log/nginx_access.log
    banaction = iptables-allports
    

    jail名需要与过滤器文件名相同

沙箱

firejail

介绍

https://firejail.wordpress.com/

firejail为不受信任的应用程序提供有限的运行环境和资源。

安装

wget https://phoenixnap.dl.sourceforge.net/project/firejail/firejail/firejail-0.9.60-1.x86_64.rpm && yum localinstall firejail-0.9.60-1.x86_64.rpm

使用

配置

目录 /etc/firejail下有很多(约800+)配置文件,对应不同的命令沙箱配置

配置文件man页面

漏洞扫描

nessus

官网: http://www.nessus.org/

免费版:最多扫描16个ip

上一篇 下一篇

猜你喜欢

热点阅读