1. 程式人生 > >思維導圖(41-50)

思維導圖(41-50)

secure 開機 記錄 restart linux 報文交換 指令 不同步 header

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腳本 ]# curl http://localhost/mdb1.php ]# curl http://localhost/mdb2.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 [email protected]/24 //定義賬戶白名單,追加到文件裏 ##DenyUsers USER1 USER2 //定義賬戶黑名單 ##DenyGroups GROUP1 GROUP2 //定義組黑名單 ##AllowGroups GROUP1 GROUP2 //定義組白名單 ]# systemctl restart sshd 03 實現密鑰對驗證登錄(私鑰口令)、免密碼登入 ]# ssh-keygen ]# ssh-copy-id [email protected] 確認密鑰驗證使用正常後,禁用口令驗證 ]# 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還能夠使用下列算法:sha1、md5、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) 語法 完整的英文文檔:https://www.tcpdump.org/tcpdump_man.html -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處理。 審計說穿了就是把和系統安全有關的事件記錄下來:誰誰誰在什麽時候做了什麽事,結果是啥。

思維導圖(41-50)