1> Redis主從複製
哨兵服務
主庫宕機後,從庫自動升級爲主庫
在slave主機運行哨兵程序。
主庫宕機後,對應的從庫會自動升級爲主庫。
原主庫起來後,成爲新主庫的從庫。
配置:
命令行指定主庫 > slaveof 主庫ip 端口
命令行把從庫恢復爲主庫 > slaveof no one
帶密碼的主庫庫設置
主庫配置:
51 ~]# vim /etc/redis/6379.conf
requirepass 123456
從庫配置
52 ~]# sed -n '282p;289p' /etc/redis/6379.conf
slaveof 192.168.4.51 6351 主庫ip及端口
masterauth 123456 主庫密碼
哨兵服務配置文件
52 redis-4.0.8]# cat /etc/sentinel.conf
bind 0.0.0.0
sentinel monitor redis51 192.168.4.51 6351 1
sentinel auth-pass redis51 123456
啓動哨兵服務
52 ~]# redis-sentinel /etc/sentinel.conf
2> RDB/AOF持久化
因爲Redis的數據都存放在內存中,若是沒有配置持久化,redis重啓後數據就全丟失了,因而須要開啓redis的持久化功能,將數據保存到磁盤上,當redis重啓後,能夠從磁盤中恢復數據。
redis提供兩種方式進行持久化
RDB持久化(原理是將Reids在內存中的數據庫記錄定時 dump到磁盤上的RDB持久化)。
AOF(append only file)持久化(原理是將Reids的操做日誌以追加的方式寫入文件)。
RDB持久化是指在指定的時間間隔內將內存中的數據集快照寫入磁盤,實際操做過程是fork一個子進程,先將數據集寫入臨時文件,寫入成功後,再替換以前的文件,用二進制壓縮存儲。
RDB優勢:
高性能的持久化實現:建立一個子進程來執行持久化,先將數據寫入臨時文件,持久化過程結束後,再用這個臨時文件替換上次持久化好的文件;過程當中主進程不作任何IO操做,比較適合大規模數據恢復,且對數據完整性要求不是很是高的場合;
RDB的缺點:
意外宕機時,最後一次持久化的數據會丟失;
AOF持久化以日誌的形式記錄服務器所處理的每個寫、刪除操做,查詢操做不會記錄,以文本的方式記錄,能夠打開文件看到詳細的操做記錄。
AOF優勢:
能夠靈活的設置同步持久化appendfsync always或異步持久化appendfsync verysec;
宕機時,僅可能丟失1秒的數據;
RDB的缺點:
AOF文件的體積一般會大於RDB文件的體積
執行fsync策略時的速度可能會比RDB慢
RDB持久化配置
Redis會將數據集的快照dump到dump.rdb文件中。此外,咱們也能夠經過配置文件來修改Redis服務器dump快照的頻率,在打開6379.conf文件以後,咱們搜索save,能夠看到下面的配置信息:
save 900 1 #在900秒(15分鐘)以後,若是至少有1個key發生變化,則dump內存快照。
save 300 10 #在300秒(5分鐘)以後,若是至少有10個key發生變化,則dump內存快照。
save 60 10000 #在60秒(1分鐘)以後,若是至少有10000個key發生變化,則dump內存快照。
AOF持久化配置
在Redis的配置文件中存在三種同步方式,它們分別是:
appendfsync always #每次有數據修改發生時都會寫入AOF文件。
appendfsync everysec #每秒鐘同步一次,該策略爲AOF的缺省策略。
appendfsync no #從不一樣步。高效可是數據不會被持久化。
啓用RDB:
]# vim /etc/redis/6379.conf
dbfilename dump.rdb
# save "" //啓用RDB,去掉#號爲禁用RDB
save 120 1 //120秒內且有1次修改(知足三個條件中的任意一個都會保存)
save 300 10
save 60 10000
啓用AOF:
6379]# vim /etc/redis/6379.conf(修改,不須要添加)
appendonly yes //啓用aof,默認no
appendfilename "appendonly.aof" //文件名
appendfsync everysec //每秒記錄一次
3> Redis數據類型
數據管理命令:
string類型
set get strlen setrange getrange
append incr incrby incrbyfloat decr decrby mget mset setbit bitcount
LIST表
lpush llen lrange lset lpop lindex rpop rpush
Hash表
hset hget hmget hmset hgetall hkeys hvals hdel
*************************************
42.部署MongoDB服務、MongoDB基本使用
1> MongoDB
MongoDB 是一個基於分佈式文件存儲的數據庫。由 C++ 語言編寫。旨在爲 WEB 應用提供可擴展的高性能數據存儲解決方案。
MongoDB 是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。
MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔相似於 JSON 對象。字段值能夠包含其餘文檔,數組及文檔數組。
主要特色
MongoDB 是一個面向文檔存儲的數據庫,操做起來比較簡單和容易。
你能夠在MongoDB記錄中設置任何屬性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")來實現更快的排序。
你能夠經過本地或者網絡建立數據鏡像,這使得MongoDB有更強的擴展性。
若是負載的增長(須要更多的存儲空間和更強的處理能力) ,它能夠分佈在計算機網絡中的其餘節點上這就是所謂的分片。
Mongo支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
MongoDb 使用update()命令能夠實現替換完成的文檔(數據)或者一些指定的數據字段 。
Mongodb中的Map/reduce主要是用來對數據進行批量處理和聚合操做。
Map和Reduce。Map函數調用emit(key,value)遍歷集合中全部的記錄,將key與value傳給Reduce函數進行處理。
Map函數和Reduce函數是使用Javascript編寫的,並能夠經過db.runCommand或mapreduce命令來執行MapReduce操做。
GridFS是MongoDB中的一個內置功能,能夠用於存放大量小文件。
MongoDB容許在服務端執行腳本,能夠用Javascript編寫某個函數,直接在服務端執行,也能夠把函數的定義存儲在服務端,下次直接調用便可。
MongoDB支持各類編程語言:RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
MongoDB安裝簡單。
配置文件:
]# vim /usr/local/mongodb/etc/mongodb.conf
logpath=/usr/local/mongodb/log/mongodb.log
logappend=true
dbpath=/usr/local/mongodb/data/db
fork=true
端口:27017
啓動服務
]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf
中止服務
]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf --shutdown
啓動mongodb服務定義服務使用ip 地址及端口號
]# vim /usr/local/mongodb/etc/mongodb.conf
bind_ip=192.168.4.50
port=27050
鏈接時指定指ip地址和端口號
]# /usr/local/mongodb/bin/mongo --host 192.168.4.50 --port 27050(兩次)
2> MongoDB 經常使用命令
> show dbs
> use gamedb(沒有則直接建立)
> db
> show tables
> db.t1.save({name:"bob",age:19,sex:"boy",school:"xxx"})
> db.t1.save({class:"999"})
> db.t1.insert({class:"999"})
> db.t1.find()
> db.t1.count()
> db.t1.findOne()
> db.t1.remove({name:"tom"})
> db.t2.drop()
3> 數據導入/倒出
數據導出: 把集合的文檔存儲到系統文件裏
導出爲json格式
]# /usr/local/mongodb/bin/mongoexport \
--host 192.168.4.50 --port 27050 \
-d gamedb -c t1 --type=json > /mdb/gamedb_t1.json(必須有gamedb庫,t1表)
導出爲csv格式
]# /usr/local/mongodb/bin/mongoexport \
--host 192.168.4.50 --port 27050 \
-d gamedb -c t1 -f name,age --type=csv > /mdb/gamedb_t1.csv
數據導入: 把系統文件的內容存儲到集合裏
使用json文件導入數據
]# /usr/local/mongodb/bin/mongoimport \
--host 192.168.4.50 --port 27050 \
-d bbsdb -c user --type=json /mdb/gamedb_t1.json
使用csv文件導入數據
]# /usr/local/mongodb/bin/mongoimport \
--host 192.168.4.50 --port 27050 \
-d bbsdb -c user2 -f user,old \
--type=csv /mdb/gamedb_t1.csv
不加 --drop 選項 是追加方式導入數據 反之 刪除原表後再導入數據
]# /usr/local/mongodb/bin/mongoimport \
--host 192.168.4.50 --port 27050 \
-d bbsdb -c user5 --headerline --drop \
--type=csv /mdb/gamedb_t1.csv
數據備份:
]# /usr/local/mongodb/bin/mongodump --host 192.168.4.50 \
--port 27050 -d bbsdb -c user6 -o /mdbbak/
查看備份:
]# /usr/local/mongodb/bin/bsondump /mdbbak/bbsdb/user6.bson(查看 數據)
刪除要恢復的庫 再執行恢復
]# /usr/local/mongodb/bin/mongorestore \
--host 192.168.4.50 --port 27050 /mdb/dump/
*************************************
43.MongoDB副本集 MongoDB文檔管理
1> MongoDB副本集
中止當前主庫的mongodb服務,在2個副本主機查看集羣狀態信息(兩個副本機會隨機選舉一個做爲主庫),把壞掉的主庫修復後會自動配置爲當前主庫的副本主機並自動同步宕機期間的數據。
定義集羣成員列表:
replSet=rs1
]#/usr/local/mongodb/bin/mongo --host 192.168.4.51 --port 27051
> config={
_id:"rs1",
members:[
{_id:0,host:"192.168.4.51:27051"},
{_id:1,host:"192.168.4.52:27052"},
{_id:2,host:"192.168.4.53:27053"}
]
}
查看集羣信息
> rs.status()
> rs.isMaster()
訪問集羣存取數據:在51寫入數據,登陸從庫查看數據是否同步
集羣高可用功能測試:中止當前主庫的mongodb服務;
在2個副本主機查看集羣狀態信息(兩個副本機會隨機選舉一個做爲主庫);
把壞掉的主庫修復後會自動配置爲當前主庫的副本主機並自動同步宕機期間的數據;
save()方法和insert()方法的區別:
save方法有更新和插入兩種功能,究竟是插入仍是更新文檔取決於save的參數,是插入一個文檔仍是更新,取決於_id參數。若是能根據_id找到一個已經存在的文檔,那麼就更新。若是沒有傳入_id參數或者找不到存在的文檔,那麼就插入一個新文檔。
總結:
insert: 若新增數據的主鍵已經存在,則會拋 org.springframework.dao.DuplicateKeyException 異常提示主鍵重複,不保存當前數據。
save: 若新增數據的主鍵已經存在,則會對當前已經存在的數據進行更新操做。
另外insert能夠一次性插入一個列表,而不用遍歷,效率高, save則須要遍歷列表,一個個插入。
2> 集羣工做原理
主節點記錄在其上的全部操做oplog,從節點按期輪詢主節點獲取這些操做,而後對本身的數據副本執行這些操做,從而保證從節點的數據與主節點一致。
MongoDB集羣包括必定數量的mongod(分片存儲數據)、mongos(路由處理)、config server(配置節點)、clients(客戶端)、arbiter(仲裁節點:爲了選舉某個分片存儲數據節點那臺爲主節點)。
3> 部署LNMP+MongoDB
版本:mongo-1.6.16
編寫鏈接mongodb服務的php腳本:
]# vim /usr/local/nginx/html/linkmongodb.php
<?php
$m = new Mongo("mongodb://192.168.4.50:27050");
$db = $m->buysite;
$c = $db->usera;
$data=array("name"=>"bob","age"=>19);
$c->insert($data);
echo "data ok";
?>
<?php
$m = new MongoClient("mongodb://192.168.4.53:27053,192.168.4.52:27052,192.168.4.51:27051");
$db = $m->db1;
$c = $db->t15;
$data=array("name"=>"bob","age"=>19);
$c->insert($data);
echo "data ok";
?>
在客戶端訪問網站的php腳本
在mongodb服務器本機查看是否存儲數據了
]# /usr/local/mongodb/bin/mongo --host 192.168.4.50 --port 27050
> show dbs
> use buysite
> db.usera.find()
]# /usr/local/mongodb/bin/mongo --host 192.168.4.53 --port 27053
> show dbs
> use db1
> db.t15.find()
*************************************
44.Linux基本防禦 用戶切換與提權 SSH訪問控制 SELinux安全 、SSH訪問控制 SELinux安全
1> Linux基本防禦
01 帳戶有效期:
chage 命令:定義帳戶有效期
/etc/login.def:定義帳戶有效期、密碼長度、UID最大最小值
02 鎖定用戶
passwd -l -S -u
03 隱藏系統版本
修改tty登陸的提示信息:/etc/issue(reboot)
04 鎖定文件
# chattr +i 文件名 //鎖定文件(沒法修改、刪除等)
# chattr -i 文件名 //解鎖文件
# chattr +a 文件 //鎖定後文件僅可追加
# chattr -a 文件名 //解鎖文件
# lsattr 文件名 //查看文件特殊屬性
2> 用戶切換與提權
01 su(Substitute User)命令能夠快速切換帳戶身份,普通用戶切換帳戶身份時須要輸入密碼,root使用su命令切換任何身份都不須要密碼,如法格式以下:
]# su - [帳戶名稱]
]# su - [帳戶名稱] -c '命令'
]# su - zhangsan -c "touch /tmp/test.txt" //管理員切換普通用戶,不須要輸入密碼
]$ su - -c "systemctl restart sshd" 或者
]$ su - root(可省略) -c "systemctl restart sshd"
密碼:
02 普通用戶提權
修改/etc/sudoers能夠直接使用vim編輯該文件,或使用visudo命令修改該文件。
]# vim /etc/sudoers //修改文件後,須要使用wq強制保存
...
root ALL=(ALL) ALL(原來有,下面追加)
//受權softadm以root身份執行systemctl命令(ALL包括root)
softadm ALL=(ALL) /usr/bin/systemctl
//容許用戶useradm經過sudo方式添加/刪除/修改除root之外的用戶帳號
useradm ALL=(ALL) /usr/bin/passwd,!/usr/bin/passwd root,/usr/sbin/user*,!/usr/sbin/user* * root
//容許wheel組成員以特權執行全部命令
%wheel ALL=(ALL) ALL
]$ sudo -l(查看配置權限)
03 爲sudo機制啓用日誌記錄,以便跟蹤sudo執行操做
]# visudo
Defaults logfile="/var/log/sudo"(添加)
3> SSH訪問控制
01 調整sshd服務配置,並重載服務
配置文件:/etc/ssh/sshd_config
02 定義訪問白名單、黑名單
]# vim /etc/ssh/sshd_config
.. ..
AllowUsers zhangsan tom useradm@192.168.4.0/24 //定義帳戶白名單,追加到文件裏
##DenyUsers USER1 USER2 //定義帳戶黑名單
##DenyGroups GROUP1 GROUP2 //定義組黑名單
##AllowGroups GROUP1 GROUP2 //定義組白名單
]# systemctl restart sshd
03 實現密鑰對驗證登陸(私鑰口令)、免密碼登入
]# ssh-keygen
]# ssh-copy-id root@192.168.4.50
確認密鑰驗證使用正常後,禁用口令驗證
]# vim /etc/ssh/sshd_config
.. ..
PasswordAuthentication no //將此行yes改爲no
4> SELinux安全防禦
查看安全上下文
用戶:角色:訪問類型:選項...
]# ls -lZ 文件名
]# ls -ld 目錄名
]# ps -aux -Z | grep 進程名
通常操做規律
移動的文件,原有的上下文屬性不變
複製的文件,自動繼承目標位置的上下文
建立新文件,自動繼承父目錄上下文
修改文件的上下文
]# chcon -t 訪問類型 文件名
]# chcon -R -t 訪問類型 目錄名
]#chcon -t public_content_t /var/ftp/log2.tar
可替換爲(效果相同):
]# restorecon /var/ftp/log2.tar
或者
]# chcon --reference=/var/ftp/log1.tar /var/ftp/log2.tar
恢復上下文
]# restorecon 文件名
]# restorecon -R 目錄名
SELinux布爾值(bool) 功能開關
查看布爾值
]# getsebool -a 或 getsebool -a | grep 服務名
修改布爾
]# setsebool -P 選項=on|off
設置bool值 容許上傳文件
]# setsebool -P ftpd_anon_write=on
]# setsebool -P ftpd_full_access=on
]# getsebool -a | grep ftp
修改httpd的服務端口等。
*************************************
45.加密與解密 AIDE入侵檢測系統 掃描與抓包
1> 加密與解密,常見的加密算法
對稱加密:怎麼加密,就怎麼解密
DES Date Encryption Standard
AES Advance Encryption Standard
非對稱加密
RSA Rivest Shamirh Adleman
DSA Digital Signature Algorithm
數據信息完整性
MD5 Message Digest Algorithm 5
SHA Secure Hash Algorithm
]# md5sum a.txt
2> GPG加密工具
對稱加密:
gnupg2-2.0.22-3.el7.x86_64
gpg -c 加密(生成*.gpg加密文件) -d 解密(要輸入密碼)
非對稱加密:gpg --gen-key 建立密鑰對
公鑰加密 私鑰解密
加密 解密
uesra userb
A--發送加密數據(B的公鑰) B--查看加密數據(B的私鑰)
B--建立祕鑰對
B-->公鑰-->A
A--公鑰-->加密數據
A--數據-->B
B--私鑰-->數據
gpg --gen-key 建立祕鑰對
gpg --export 導出
gpg --import 導入
gpg -e -r userb test.txt 公鑰加密
gpg -d /tmp/test.txt.gpg > ~/test5.txt (私鑰解密,必須輸入私鑰的密碼)
gpg -b a1.txt (數字簽名 要輸入私鑰密碼)
gpg --fingerprint 輸出私鑰指紋
gpg --verify /tmp/a1.txt.sig 校驗祕鑰指紋
3> AIDE入侵檢測系統
AIDE(Advanced Intrusion Detection Environment,高級入侵檢測環境)是個入侵檢測工具,主要用途是檢查文檔的完整性。
AIDE可以構造一個指定文檔的數據庫,他使用aide.conf做爲其配置文檔。AIDE數據庫可以保存文檔的各類屬性,包括:權限(permission)、索引節點序號(inode number)、所屬用戶(user)、所屬用戶組(group)、文檔大小、最後修改時間(mtime)、建立時間(ctime)、最後訪問時間(atime)、增長的大小連同鏈接數。AIDE還可以使用下列算法:sha一、md五、rmd160、tiger,以密文形式創建每一個文檔的校驗碼或散列號。
配置文件:
/etc/aide.conf #定義檢測的目錄 和檢測規則
實現過程:
]# aide --init 沒有被入侵以前 生成初始信息數據庫文件
]# ls /var/lib/aide/aide.db.new.gz 查看生成的數據庫文件,以此爲基準數據庫
]# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz 備份後還原數據庫名稱,以此爲起點
對被檢測的/root 目錄作操做 (任何操做均可以)
]# aide --check / aide -C 從新檢測,查看都有哪些修改
若是文件修改,對AIDE數據庫進行更新
]# aide --update 或 aide -u
4> 掃描與抓包
01 掃描,NMap
NMap,也就是Network Mapper,最先是Linux下的網絡掃描和嗅探工具包。
其基本功能有三個:
(1)是掃描主機端口,嗅探所提供的網絡服務
(2)是探測一組主機是否在線
(3)還能夠推斷主機所用的操做系統,到達主機通過的路由,系統已開放端口的軟件版本
nmap端口狀態解析
open : 應用程序在該端口接收 TCP 鏈接或者 UDP 報文。
closed :關閉的端口對於nmap也是可訪問的, 它接收nmap探測報文並做出響應。但沒有應用程序在其上監聽。
filtered :因爲包過濾阻止探測報文到達端口,nmap沒法肯定該端口是否開放。過濾可能來自專業的防火牆設備,路由規則 或者主機上的軟件防火牆。
unfiltered :未被過濾狀態意味着端口可訪問,可是nmap沒法肯定它是開放仍是關閉。 只有用於映射防火牆規則集的 ACK 掃描纔會把端口分類到這個狀態。
open | filtered :沒法肯定端口是開放仍是被過濾, 開放的端口不響應就是一個例子。沒有響應也可能意味着報文過濾器丟棄了探測報文或者它引起的任何反應。UDP,IP協議,FIN, Null 等掃描會引發。
closed|filtered:(關閉或者被過濾的):沒法肯定端口是關閉的仍是被過濾的
掃描初級用法:
掃描全部端口:
]# nmap 10.0.1.161 -p1-65535
掃描一個IP的多個(指定)端口:
]# nmap 10.0.1.161 -p20-200,7777,8888
對於udp端口掃描比較慢,掃描完6萬多個端口須要20分鐘左右
-sU:表示udp scan , udp端口掃描
-Pn:不對目標進行ping探測(不判斷主機是否在線)(直接掃描端口)
]# nmap -sU 10.0.1.161 -Pn
掃描多個IP用法,中間用空格隔開
]# nmap 10.0.1.161 10.0.1.162
也能夠採用下面方式逗號隔開
]# nmap 10.0.1.161,162
掃描連續的ip地址:
]# nmap 10.0.1.161-162
掃描一個子網網段全部IP:
]# nmap 10.0.3.0/24
掃描文件裏的IP:(同目錄)
]# nmap -iL ip.txt
掃描地址段是排除某個IP地址:
]# nmap 10.0.1.161-162 --exclude 10.0.1.162
掃描時排除多個IP地址:
]# nmap 10.0.1.161-163 --exclude 10.0.1.162-163
排除分散的,使用逗號隔開:
]# nmap 10.0.1.161-163 --exclude 10.0.1.161,10.0.1.163
掃描多個地址時排除文件裏的IP地址:
]# nmap 10.0.1.161-163 --excludefile ex.txt
掃描高級用法:
(1)-sP :進行ping掃描
打印出對ping掃描作出響應的主機,不作進一步測試(如端口掃描或者操做系統探測):
下面去掃描10.0.3.0/24這個網段的的主機
nmap -sP 10.0.3.0/24
這個命令能夠用於探測局域網有哪些機器
(2) -sn:
-sn: Ping Scan - disable port scan #ping探測掃描主機, 不進行端口掃描 (測試過對方主機把icmp包都丟棄掉,依然能檢測到對方開機狀態)
(3) -sS :半開放掃描(非3次握手的tcp掃描)
]# nmap -sS 10.0.1.161
使用頻率最高的掃描選項:SYN掃描,又稱爲半開放掃描,它不打開一個徹底的TCP鏈接,執行得很快,效率高(一個完整的tcp鏈接須要3次握手,而-sS選項不須要3次握手)。
Tcp SYN Scan (sS) 它被稱爲半開放掃描。
優勢:Nmap發送SYN包到遠程主機,可是它不會產生任何會話,目標主機幾乎不會把鏈接記入系統日誌。(防止對方判斷爲掃描攻擊),掃描速度快,效率高,在工做中使用頻率最高。
缺點:它須要root/administrator權限執行
(4) sT:3次握手方式tcp的掃描
]# nmap -sT 10.0.1.161
Tcp connect() scan (sT)和上面的Tcp SYN 對應,TCP connect()掃描就是默認的掃描模式.
不一樣於Tcp SYN掃描,Tcp connect()掃描須要完成三次握手,而且要求調用系統的connect().
優勢:你勿需root權限。普通用戶也可使用。
缺點:這種掃描很容易被檢測到,在目標主機的日誌中會記錄大批的鏈接請求以及錯誤信息,因爲它要完成3次握手,效率低,速度慢,建議使用-sS
(5)sU:udp端口的掃描
]# nmap -sU 10.0.1.161
Udp scan(sU) 顧名思義,這種掃描技術用來尋找目標主機打開的UDP端口.它不須要發送任何的SYN包,由於這種技術是針對UDP端口的。UDP掃描發送UDP數據包到目標主機,並等待響應,
若是返回ICMP不可達的錯誤消息,說明端口是關閉的,若是獲得正確的適當的迴應,說明端口是開放的.udp端口掃描速度比較慢
(6)sF:也是tcp的掃描一種,發送一個FIN標誌的數據包
]# nmap -sF 10.0.1.161
FIN scan(sF),有時候TcpSYN掃描不是最佳的掃描模式,由於有防火牆的存在.目標主機有時候可能有IDS和IPS系統的存在,防火牆會阻止掉SYN數據包。發送一個設置了FIN標誌的數據包並不須要完成TCP的握手.
和sS掃描效果差很少,比sT速度快
(7)sW:窗口掃描
]# nmap -sW 10.0.1.161 -p22
Window掃描,即窗口掃描
固然也能夠利用Window掃描方式,得出一些端口信息,能夠與以前掃描分析的結果相互補充。Window掃描方式只對某些TCPIP協議棧纔有效。
它也是基於tcp的掃描,我的感受用處不大
另外我嘗試使用它對A機器的22端口掃描,發現對方22端口狀態竟然是錯誤的。
(8) sV:版本檢測(sV)
]# nmap -sV 10.0.1.161
版本檢測是用來掃描目標主機和端口上運行的軟件的版本,以下掃描,多出了ssh的版本信息
02 tcpdump抓包
tcpdump是一個用於截取網絡分組,並輸出分組內容的工具。憑藉強大的功能和靈活的截取策略,使其成爲類UNIX系統下用於網絡分析和問題排查的首選工具。
tcpdump提供了源代碼,公開了接口,所以具有很強的可擴展性,對於網絡維護和入侵者都是很是有用的工具。
tcpdump 支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。
]# tcpdump -i br1 -c 2 -A -w /tmp/one.cap 存儲到文件裏
]# tcpdump -i br1 src host 172.40.52.143 and tcp port 21
(src 只抓訪問個人,不抓我返回給他的,相反dst)
語法
-A 以ASCII格式打印出全部分組,並將鏈路層的頭最小化。
-c 在收到指定的數量的分組後,tcpdump就會中止。
-C 在將一個原始分組寫入文件以前,檢查文件當前的大小是否超過了參數file_size 中指定的大小。若是超過了指定大小,則關閉當前文件,而後在打開一個新的文件。參數 file_size 的單位是兆字節(是1,000,000字節,而不是1,048,576字節)。
-d 將匹配信息包的代碼以人們可以理解的彙編格式給出。
-dd 將匹配信息包的代碼以C語言程序段的格式給出。
-ddd 將匹配信息包的代碼以十進制的形式給出。
-D 打印出系統中全部能夠用tcpdump截包的網絡接口。
-e 在輸出行打印出數據鏈路層的頭部信息。
-E 用spi@ipaddr algo:secret解密那些以addr做爲地址,而且包含了安全參數索引值spi的IPsec ESP分組。
-f 將外部的Internet地址以數字的形式打印出來。
-F 從指定的文件中讀取表達式,忽略命令行中給出的表達式。
-i 指定監聽的網絡接口。
-l 使標準輸出變爲緩衝行形式,能夠把數據導出到文件。
-L 列出網絡接口的已知數據鏈路。
-m 從文件module中導入SMI MIB模塊定義。該參數能夠被使用屢次,以導入多個MIB模塊。
-M 若是tcp報文中存在TCP-MD5選項,則須要用secret做爲共享的驗證碼用於驗證TCP-MD5選選項摘要(詳情可參考RFC 2385)。
-b 在數據-鏈路層上選擇協議,包括ip、arp、rarp、ipx都是這一層的。
-n 不把網絡地址轉換成名字。
-nn 不進行端口名稱的轉換。
-N 不輸出主機名中的域名部分。例如,‘nic.ddn.mil‘只輸出’nic‘。
-t 在輸出的每一行不打印時間戳。
-O 不運行分組分組匹配(packet-matching)代碼優化程序。
-P 不將網絡接口設置成混雜模式。
-q 快速輸出。只輸出較少的協議信息。
-r 從指定的文件中讀取包(這些包通常經過-w選項產生)。
-S 將tcp的序列號以絕對值形式輸出,而不是相對值。
-s 從每一個分組中讀取最開始的snaplen個字節,而不是默認的68個字節。
-T 將監聽到的包直接解釋爲指定的類型的報文,常見的類型有rpc遠程過程調用)和snmp(簡單網絡管理協議;)。
-t 不在每一行中輸出時間戳。
-tt 在每一行中輸出非格式化的時間戳。
-ttt 輸出本行和前面一行之間的時間差。
-tttt 在每一行中輸出由date處理的默認格式的時間戳。
-u 輸出未解碼的NFS句柄。
-v 輸出一個稍微詳細的信息,例如在ip包中能夠包括ttl和服務類型的信息。
-vv 輸出詳細的報文信息。
-w 直接將分組寫入文件中,而不是不分析並打印出來。
03 安裝wireshark
Wireshark(前稱Ethereal)是一個網絡封包分析軟件。網絡封包分析軟件的功能是擷取網絡封包,並儘量顯示出最爲詳細的網絡封包資料。Wireshark使用WinPCAP做爲接口,直接與網卡進行數據報文交換。
網絡封包分析軟件的功能可想像成 "電工技師使用電錶來量測電流、電壓、電阻" 的工做 - 只是將場景移植到網絡上,並將電線替換成網絡線。在過去,網絡封包分析軟件是很是昂貴的,或是專門屬於盈利用的軟件。Ethereal的出現改變了這一切。在GNUGPL通用許可證的保障範圍底下,使用者能夠以避免費的代價取得軟件與其源代碼,並擁有針對其源代碼修改及客製化的權利。Ethereal是目前全世界最普遍的網絡封包分析軟件之一。
安裝:
]# yum -y install wireshark wireshark-gnome
]# wireshark #啓動圖形化管理
*************************************
46.系統審計 服務安全 Linux安全之打補丁
1> 審計(audit)是linux安全體系的重要組成部分,他是一種「被動」的防護體系。在內核裏有內核審計模塊,核外有核外的審計後臺進程auditd。
應用程序給內核發送審計消息,內核的審計模塊再把消息轉發給用戶空間的後臺進程auditd處理。
審計說穿了就是把和系統安全有關的事件記錄下來:誰誰誰在何時作了什麼事,結果是啥。