Linux 安全工具

Linux 安全工具

主机|端口扫描

nmap

https://nmap.org/

主要功能:

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

主机发现

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

nmap -sn IP|CIDR

原理:

  • 内网

    • 发送arp广播
      Address Resolution Protocol 地址解析协议
  • 外网

    • 发送ICMP echo request

    • 发送tcpSYN443

    • 发送tcpACK80
      Why ACK to 80 and SYN to 443?
      提供SYN和ACK两种ping探测的原因是使通过防火墙的机会尽可能大。

    • 许多管理员会配置他们的路由器或者其它简单的防火墙来封锁SYN报文,除非 连接目标是那些公开的服务器像公司网站或者邮件服务器。 这可以阻止其它进入组织的连接,同时也允许用户访问互联网。 这种无状态的方法几乎不占用防火墙/路由器的资源,因而被硬件和软件过滤器 广泛支持。当这样的无状态防火墙规则存在时,发送到关闭目标端口的SYN ping探测 (-PS) 很可能被封锁。这种情况下,ACK探测格外有闪光点,因为它正好利用了这样的规则。

      另外一种常用的防火墙用有状态的规则来封锁非预期的报文。 这一特性已开始只存在于高端防火墙,但是这些年类它越来越普遍了。 SYN探测更有可能用于这样的系统,由于没头没脑的ACK报文 通常会被识别成伪造的而丢弃。解决这个两难的方法是通过即指定 -PS又指定-PA来即发送SYN又发送ACK。

    • 发送ICMP timestamp request

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

端口扫描

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

原理:

  • TCP SYN 扫描 (-sS):TCP半开放扫描,不建立完整的TCP连接。向目标端口发送SYN,如果收到SYNACK回复,认为端口开放(open);如果收到RST,认为端口关闭(closed);如果无回应,认为端口被防火墙屏蔽(filtered)。
  • UDP扫描(-sU):向目标端口发送探测包,如果收到ICMP port unreachable,则说明端口未开放;如果无回应,则端口可能开放或被拦截(open|filtered)。

-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

  • 基本:源ip地址(source ip,-s)、目标ip地址(destination ip,-d)
  • 扩展:源端口(--sport)、目标端口(--sport)
  • 协议:-p {tcp|udp|all|icmp ...}

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)]

密码爆破工具。

  • 可对多种服务的账号及密码进行爆破,如web登录、SSH、数据库、FTP、RDP(Windwos远程桌面)等等。
  • 支持多线程。

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

使用

  • firejail 启动一个bash沙箱

  • firejail COMMAND 在沙箱里运行指定的命令

  • firejail [OPTIONS] COMMAND

    --help                    https://firejail.wordpress.com/features-3/man-firejail/
    
    --blacklist=filename  将某文件/路径加到黑名单,使沙箱程序不能访问
    --whitelist=filename  将某文件/路径加到白名单(只有程序指定的路径能被加到白名单)
    --env=name=value      配置环境变量
    --private                 禁止沙箱读取home下的文件,创建一个新的空的home目录,家目录中的文件会在沙箱退出后被删除
    --get=name|pid filename   从沙箱中提取某个文件
    --put=name|pid src-filename dest-filename
                          向沙箱里发送文件
    --name=name               命名
    --list
    --join=name|pid           连接到沙箱       
    --net=none                禁止此沙箱联网
    --shutdown=name|pid       关闭某个沙箱
    

配置

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

配置文件man页面

漏洞扫描

nessus

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

免费版:最多扫描16个ip

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容