Linux 安全工具
主機(jī)|端口掃描
nmap
主要功能:
- 主機(jī)發(fā)現(xiàn)
- 端口掃描
- 版本檢測
- OS猜測
主機(jī)發(fā)現(xiàn)
類似于ping,發(fā)送探測包到指定主機(jī),如果得到回復(fù)則說明主機(jī)在線
nmap -sn IP|CIDR
原理:
-
內(nèi)網(wǎng)
- 發(fā)送
arp
廣播
Address Resolution Protocol 地址解析協(xié)議
- 發(fā)送
-
外網(wǎng)
發(fā)送
ICMP echo request
發(fā)送tcp
SYN
到443
發(fā)送tcp
ACK
到80
Why ACK to 80 and SYN to 443?
提供SYN和ACK兩種ping探測的原因是使通過防火墻的機(jī)會(huì)盡可能大挺智。-
許多管理員會(huì)配置他們的路由器或者其它簡單的防火墻來封鎖SYN報(bào)文猴蹂,除非 連接目標(biāo)是那些公開的服務(wù)器像公司網(wǎng)站或者郵件服務(wù)器瓶摆。 這可以阻止其它進(jìn)入組織的連接榆鼠,同時(shí)也允許用戶訪問互聯(lián)網(wǎng)遥昧。 這種無狀態(tài)的方法幾乎不占用防火墻/路由器的資源易桃,因而被硬件和軟件過濾器 廣泛支持褥琐。當(dāng)這樣的無狀態(tài)防火墻規(guī)則存在時(shí),發(fā)送到關(guān)閉目標(biāo)端口的SYN ping探測 (
-PS
) 很可能被封鎖晤郑。這種情況下踩衩,ACK探測格外有閃光點(diǎn),因?yàn)樗美昧诉@樣的規(guī)則贩汉。另外一種常用的防火墻用有狀態(tài)的規(guī)則來封鎖非預(yù)期的報(bào)文驱富。 這一特性已開始只存在于高端防火墻,但是這些年類它越來越普遍了匹舞。 SYN探測更有可能用于這樣的系統(tǒng)褐鸥,由于沒頭沒腦的ACK報(bào)文 通常會(huì)被識(shí)別成偽造的而丟棄。解決這個(gè)兩難的方法是通過即指定
-PS
又指定-PA
來即發(fā)送SYN又發(fā)送ACK赐稽。 發(fā)送
ICMP timestamp request
只要獲取到一個(gè)回應(yīng)包叫榕,就認(rèn)為此主機(jī)在線
端口掃描
nmap -sS -SU IP|CIDR -p T:TCP-PORT,U:UDP-PORT
原理:
- TCP SYN 掃描 (-sS):TCP半開放掃描浑侥,不建立完整的TCP連接。向目標(biāo)端口發(fā)送
SYN
晰绎,如果收到SYN
或ACK
回復(fù)寓落,認(rèn)為端口開放(open);如果收到RST
荞下,認(rèn)為端口關(guān)閉(closed)伶选;如果無回應(yīng),認(rèn)為端口被防火墻屏蔽(filtered)尖昏。 - UDP掃描(-sU):向目標(biāo)端口發(fā)送探測包仰税,如果收到
ICMP port unreachable
,則說明端口未開放抽诉;如果無回應(yīng)陨簇,則端口可能開放或被攔截(open|filtered)。
-p PORT-RANGE
--top-ports NUM
版本檢測
nmap -sV IP|CIDR -p PORT
OS猜測
不同OS對tcp/IP協(xié)議的實(shí)現(xiàn)方式可能有些許差異迹淌,nmap就利用這一點(diǎn)河绽,向目標(biāo)主機(jī)發(fā)送精心設(shè)計(jì)的TCP/UDP/ICMP數(shù)據(jù)包,根據(jù)返回的數(shù)據(jù)包生成一份系統(tǒng)指紋唉窃。
而nmap有一個(gè)常見OS指紋特征數(shù)據(jù)庫葵姥,將獲取到的指紋進(jìn)行對比,如果匹配就直接返回OS信息句携,如果無匹配就會(huì)進(jìn)行猜測榔幸。
當(dāng)目標(biāo)主機(jī)至少存在一個(gè)開放端口和一個(gè)關(guān)閉端口時(shí),OS猜測才能正常進(jìn)行矮嫉。
nmap -O IP|CIDR
防火墻
iptables
CentOS 7及之后默認(rèn)安裝了firewalld
替代iptables
作為防火墻工具削咆。
個(gè)人習(xí)慣換回iptables
:
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
yum -y install iptables-services
systemctl enable iptables
systemctl restart iptables
Linux系統(tǒng)中真正實(shí)現(xiàn)防火墻功能的是系統(tǒng)的netfilter框架,而不論是
firewalld
還是iptables-services
都只是一個(gè)類似于用戶代理的身份蠢笋,方便用戶使用它向內(nèi)核管理規(guī)則拨齐。
table
根據(jù)規(guī)則功能的不同可分為四表:
-
raw
:控制數(shù)據(jù)包是否被追蹤 -
mangle
:修改數(shù)據(jù)包的類型、TTL等 -
nat
:網(wǎng)絡(luò)地址轉(zhuǎn)換 -
filter
:過濾數(shù)據(jù)包
CHAIN
默認(rèn)有5個(gè)Chain:INPUT
昨寞、OUTPUT
瞻惋、FORWARD
、PREROUTING
和POSTROUTING
match
- 基本:源ip地址(source ip援岩,-s)歼狼、目標(biāo)ip地址(destination ip,-d)
- 擴(kuò)展:源端口(--sport)享怀、目標(biāo)端口(--sport)
- 協(xié)議:-p {tcp|udp|all|icmp ...}
TARGET
ACCEPT
:放行DROP
:丟棄-
REJECT
:拒絕...
iptables命令
iptables OPTIONS [CHAIN_NAME]
查看(某個(gè)chain)的規(guī)則
-L 顯示規(guī)則列表羽峰,如果后面接CHAIN_NAME則表示只查看某個(gè)chain的
-n 禁用域名解析
--line或--line-numbers 顯示序號(hào)
-v 顯示更多信息
-t 查看某個(gè)表,默認(rèn)filter
iptables {-I|-A} [number] [-s|-d ipaddress] [-p {tcp|udp|all}] [--dport|sport port] -j {ACCEPT|DROP...}
在每條Chain中,遵循從上到下的順序進(jìn)行匹配梅屉,因此順序是非常重要的
iptables -D {rule_details | number}
使用iptables
進(jìn)行的規(guī)則操作都是臨時(shí)的值纱,重啟或reload都會(huì)丟失當(dāng)前配置的規(guī)則。要永久生效需要保存規(guī)則到/etc/sysconfig/iptables
iptables-save
打印配置到屏幕坯汤,配合重定向>
即可保存到文件
口令破解
John the Ripper
破解加密密碼
Linux下用戶和密碼存儲(chǔ)在/etc/shadow
和/etc/passwd
下虐唠,采用SHA-512加密,同時(shí)采用了salt
鹽值惰聂,保證相同的密碼其加密后的字符串也不同疆偿。
john --single
john --wordlist=password.lst
hydra
[圖片上傳失敗...(image-9de074-1584971513588)]
密碼爆破工具。
- 可對多種服務(wù)的賬號(hào)及密碼進(jìn)行爆破庶近,如web登錄翁脆、SSH眷蚓、數(shù)據(jù)庫鼻种、FTP、RDP(Windwos遠(yuǎn)程桌面)等等沙热。
- 支持多線程叉钥。
SSH安全
[圖片上傳失敗...(image-e162f9-1584971513588)]
fail2ban
介紹
基于認(rèn)證日志工作,通過掃描日志中的關(guān)鍵字篙贸,來更新防火墻規(guī)則投队,從而在指定時(shí)間內(nèi)拒絕某ip的連接。
配置
配置目錄/etc/fail2ban/
主配置文件/etc/fail2ban/jail.conf
自定義配置文件目錄/etc/fail2ban/jail.d/
jail.conf可能會(huì)隨著版本更新被覆蓋爵川。
因此建議把自定義的配置放置在jail.d下敷鸦,而不是直接修改jail.conf。
jail.d下的配置(*.local或*.conf)會(huì)覆蓋jail.conf的相關(guān)配置寝贡。
過濾器目錄/etc/fail2ban/filter.d
動(dòng)作配置文件目錄/etc/fail2ban/action.d
fail2ban日志/var/log/fail2ban.log
fail2ban能夠降低暴力破解的速度扒披,但不能減弱弱口令的風(fēng)險(xiǎn)。
在SSH上的應(yīng)用
自定義配置文件/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
運(yùn)行fail2ban服務(wù)
修改配置后圃泡,使用systemctl reload fail2ban
重載配置
fail2ban通過向iptables內(nèi)添加規(guī)則來達(dá)到效果碟案,如果重啟了iptables,fail2ban添加的規(guī)則會(huì)消失(因?yàn)檫@些規(guī)則并未持久化到iptables規(guī)則文件中)颇蜡,fail2ban便會(huì)失效价说,因此重啟iptables后也需要重啟fail2ban服務(wù)
fail2ban-client命令
fail2ban-client status
當(dāng)前運(yùn)行的jail
fail2ban-client reload
fail2ban-client status JAIL_NAME
某個(gè)jail的狀態(tài)
會(huì)顯示當(dāng)前時(shí)間段內(nèi)失敗的次數(shù),以及被ban掉的ip
fail2ban-client set JAIL_NAME banip IPADDR
手動(dòng)ban掉某個(gè)ip
fail2ban-client set JAIL_NAME unbanip IPADDR
手動(dòng)unban某個(gè)ip
fail2ban-client set JAIL_NAME addignoreip IPADDR
將某個(gè)ip加到白名單內(nèi)(重啟失效)
fail2ban-client set JAIL_NAME delignoreip IPADDR
從白名單內(nèi)刪除某個(gè)ip
fail2ban-client get JAIL_NAME ignoreip
查看白名單
在nginx上的應(yīng)用
一個(gè)非常簡單的示例:限制某個(gè)ip在單位時(shí)間內(nèi)的請求次數(shù)风秤,防止某些攻擊
-
新建過濾器
/etc/fail2ban/filter.d/nginx-test-limit.conf
[Definition] failregex = <HOST>.*HTTP/1.1
使用正則表達(dá)式來匹配
-
新建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為不受信任的應(yīng)用程序提供有限的運(yùn)行環(huán)境和資源鳖目。
安裝
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
啟動(dòng)一個(gè)bash沙箱firejail COMMAND
在沙箱里運(yùn)行指定的命令-
firejail [OPTIONS] COMMAND
--help https://firejail.wordpress.com/features-3/man-firejail/ --blacklist=filename 將某文件/路徑加到黑名單,使沙箱程序不能訪問 --whitelist=filename 將某文件/路徑加到白名單(只有程序指定的路徑能被加到白名單) --env=name=value 配置環(huán)境變量 --private 禁止沙箱讀取home下的文件缤弦,創(chuàng)建一個(gè)新的空的home目錄疑苔,家目錄中的文件會(huì)在沙箱退出后被刪除 --get=name|pid filename 從沙箱中提取某個(gè)文件 --put=name|pid src-filename dest-filename 向沙箱里發(fā)送文件 --name=name 命名 --list --join=name|pid 連接到沙箱 --net=none 禁止此沙箱聯(lián)網(wǎng) --shutdown=name|pid 關(guān)閉某個(gè)沙箱
配置
目錄 /etc/firejail
下有很多(約800+)配置文件,對應(yīng)不同的命令沙箱配置
配置文件man頁面
漏洞掃描
nessus
官網(wǎng): http://www.nessus.org/
免費(fèi)版:最多掃描16個(gè)ip