linux學習:網絡(防火牆)及系統安全相關命令學習

指令: top、htop、free、pstree、lsof、ifconfig、w3m、tcpdump、netstat、nmap、ufwphp

網絡:vim

top      #查看內存,cpu,進程之間的狀態。
htop        #在top的基礎上更好顯示(執行sudo apt-get install htop安裝)
free     #查看當前的內存使用狀況安全

free -m | grep Mem | awk '{print $2}'   #查看物理內存大小bash

free -m | grep Mem | awk '{print $3}'   #查看已經使用了的物理內存
pstree     #查看當前進程樹cookie

cat /etc/resolv.conf #查看DNS
echo nameserver 8.8.8.8 >> /etc/resolve.conf    #追加DNS:8.8.8.8到/etc/resolve.conf的DNS地址文件中。
host google.com    #列出域名全部的IP地址
nslookup google.com    #查詢DNS相關的細節信息以及名字解析
route 或 netstat -rn 或 sudo route -n    #查看路由表信息
ping ADDRESS    #檢查某個主機是否能夠到達 ADDRESS能夠是IP,域名和主機名 
ping address -c 5     #選項-c 5表示限制發送的echo分組的數量爲5,5次後自動中止發送網絡

arping IP      #根據IP查網卡地址 
nmblookup -A IP  #根據IP查電腦名app

arp -a   #查看全部內網
arp -a | awk '{ print $4 }'    #查看當前網卡的物理地址
ifconfig eth0:0 1.2.3.4 netmask 255.255.255.0    #同一個網卡增長第二個IP地址
echo 'blacklist ipv6' | sudo tee /etc/modprobe.d/blacklist-ipv6    #屏蔽IPV6
whois test.com     #查看域名的註冊備案狀況
tracepath test.com   #查看到某一個域名的路由狀況:ssh

sudo apt-get install rkhunter; rkhunter –checkall    #檢查本地是否存在安全隱患socket

grep "Invalid user" /var/log/auth.log | cut -d ' ' -f 10 | sort | uniq -c | sort -nr    #查看各個ip嘗試登錄但又失敗的次數(多是窮舉攻擊),執行的順序:查找/var/log/auth.log文件中全部包含"Invalid user"的行,並按照空格拆分這些行,拆分完獲取該行第10個字符串,並排序,而後uniq -c 去重並統計重複字符串的數量最後經過sort -nr對統計的數量進行排序。tcp

grep -a "Accepted password" /var/log/auth.log | cut -d ' ' -f 9 | sort | uniq -c | sort -nr   #查看經過密碼登陸的用戶及登陸次數 grep -a表示若是文件爲2進制則按字符串讀取

grep -a "Accepted publickey" /var/log/auth.log | cut -d ' ' -f 9 | sort | uniq -c | sort -nr   #查看經過祕鑰登陸的用戶及登陸次數 

 

lsof file    #查看哪一個進程打開了文件file
lsof -i :22   #查看22端口如今運行什麼程序
lsof -c vim  #查看vim進行如今打開的文件

lsof -p [進程ID]    #根據進程id跟蹤某個進程所使用的資源

 

ifconfig ens33 | egrep -o "inet addr:[^ ]*" | grep -o "[0-9.]*"    #提取本地ens33網卡的IP地址
ifconfig ens33 hw ether 00:cc:bf:5a:aa:dd    #設置MAC地址,在軟件層面上進行硬件地址的欺騙
ifconfig ens33 192.168.0.12 netmask 255.255.252.0    #設置IP地址的子網掩碼
ifconfig ens33 192.168.0.12    #設置網卡ens33的ip地址

 

netstat參數解釋:
-l  (listen) 僅列出 Listen (監聽) 的服務
-t  (tcp) 僅顯示tcp相關內容
-n (numeric) 直接顯示ip地址以及端口,不解析爲服務名或者主機名
-p (pid) 顯示出socket所屬的進程PID 以及進程名字
--inet 顯示ipv4相關協議的監聽
netstat -ntlp    #查看本機開放了哪些端口,這些端口是什麼程序在監聽

netstat -ntlp | grep 9052   #查看哪些進程在監聽9052端口
netstat -na|grep :80|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n    #統計80端口的鏈接並排序
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'    #查看網絡鏈接狀態
netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n    #統計當前IP鏈接的個數

netstat -anp | grep "php-fpm" | grep "tcp" | grep "pool" | wc -l         #查看已經有多少個php-cgi進程用來處理tcp請求  

netstat -atnp    #察看當前網絡鏈接情況以及程序

netstat   -lntp   --inet    #查看IPV4端口上的tcp的監聽

netstat   -lntp    --inet | grep -v 127.0.0.1  #同上,同時過濾掉本地的監聽

 

tcpdump:

sudo tcpdump -c 10000 -i eth0 -n dst port 80   #TCP抓包工具分析80端口數據流

sudo tcpdump -i any tcp port 9501    # 參數 -i 制定了網卡,any表示全部網卡,tcp 指定僅監聽TCP協議,port 制定監聽的端口

sudo tcpdump tcp port 23 host 192.27.48.1    #獲取主機192.27.48.1接收或發出的telnet包

sudo tcpdump host 210.27.48.1 and / (210.27.48.2 or 210.27.48.3 /)   #想要截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通訊(在命令行中適用括號時,必定要轉義)

sudo tcpdump ip host 210.27.48.1 and ! 210.27.48.2   #獲取主機210.27.48.1除了和主機210.27.48.2以外全部主機通訊的ip包

sudo tcpdump -i eth0 src host hostname    #系統將只對名爲hostname的主機的通訊數據包進行監視。主機名能夠是本地主機,也能夠是網絡上的任何一臺計算機.

sudo tcpdump -i eth0 dst host hostname  #監視全部送到主機hostname的數據包

sudo tcpdump -i eth0 gateway Gatewayname    #監視經過指定網關的數據包

 

w3m:
w3m -dump_head http://www.xxx.com    #查看HTTP頭
w3m -no-cookie -dump www.123cha.com|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'    #查看當前外網的IP地址

 

nmap:

nmap -F -sT -v test.com   #參數-F:掃描100個最有可能開放的端口   -v 獲取掃描的信息   -sT:採用的是TCP掃描 不寫也是能夠的,默認採用的就是TCP掃描

nmap 10.12.123.161  -p1-65535   #掃描10.12.123.161機器的1到65535全部在監聽的tcp端口。
nmap 10.12.123.161     #掃描10.12.123.161機器的1到65535全部在監聽的tcp端口。未知服務的端口沒法掃描到
nmap www.test.com  -p1-65535    #同上,掃描某個域名的端口
nmap 10.12.123.161   -p20-200,7777,8888   #參數-p指定要掃描的端口爲20到200和777七、8888端口
nmap  -sU 10.12.123.161  -Pn    #參數 -sU表示掃描UDP端口,參數-Pn表示不對目標機器進行ping探測,udp端口掃描速度很慢
nmap 10.12.123.161  10.12.123.162    #掃描多臺主機
nmap 10.12.123.161,162                      #同上
nmap 10.12.123.161-164                      #同上,掃描連續的ip地址
nmap 10.12.123.161-164  --exclude 10.12.123.162    #掃描某個地址段但排序某個ip
nmap 10.12.123.161-164  --exclude 10.12.123.162-163    #掃描某個地址段但排序多個連續ip,分散的ip能夠用逗號分隔
nmap 10.12.123.10/24                          #同上,掃描一個子網網端全部ip
nmap -iL ip.txt           #掃描文件裏的ip,文件中每行一個ip
nmap 10.12.123.161-164  --excludefile ex.txt   #掃描多個ip但排除文件中的ip地址

 

----------------------------------------------------------------------
入侵報告工具 以auth.log文件爲輸入
filename:check.sh

#!/bin/bash
AUTHLOG=/var/log/auth.log
if [[ -n $1 ]];
then
AUTHLOG=$1
echo Using Log file:$AUTHLOG
fi
LOG=/tmp/valid.$$.log
grep -v "invalid" $AUTHLOG > $LOG
users=$(grep "Failed password" $LOG | awk '{ print $(NF-5) }' | sort | uniq)
printf "%-5s|%-10s|%-10s|%-13s|%-33s|%s\n" "Sr#" "User" "Attempts" "IP address" "Host_Mapping" "Time range"
ucount=0;
ip_list="$(egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" $LOG | sort | uniq)"
for ip in $ip_list;
do
grep $ip $LOG > /tmp/temp.$$.log
for user in $users;
do
grep $user /tmp/temp.$$.log > /tmp/$$.log
cut -c-16 /tmp/$$.log > $$.time
tstart=$(head -1 $$.time);
start=$(date -d "$tstart" "+%s");
tend=$(tail -l $$.time);
end=$(date -d "$tend" "+%s")
limit=$(( $end - $start))
if [ $limit -gt 120 ];
then
let ucount++;
IP=$(egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" /tmp/$$.log | head -1 );
TIME_RANGE="$start-->$tend"
ATTEMPTS=$(cat /tmp/$$.log|wc -l);
HOST=$(host $IP | awk '{ print $NF }' )
printf "%-5s|%-10s|%-10s|%-10s|%-33s|%-s\n" "$ucount" "$user" "$ATTEMPTS" "$IP" "$HOST" "$TIME_RANGE";
fi
done
done
rm /tmp/valid.$$.log /tmp/$$.log $$.time /tmp/temp.$$.log 2> /dev/null


-------------------------------------------------------------------------------

防火牆ufw

sudo apt-get install ufw   #安裝ufw防火牆
sudo ufw enable              #啓用 ufw防火牆,並在系統啓動時自動開啓

sudo ufw disable       #關閉ufw防火牆

sudo ufw status       #查看防火牆狀態 

sudo ufw default deny         #關閉全部外部對本機的訪問,但本機訪問外部正常。
sudo ufw allow|deny [service]   #開啓/禁用 
sudo ufw allow smtp       #容許全部的外部IP訪問本機的25/tcp (smtp)端口 
sudo ufw allow 22/tcp       #容許全部的外部IP訪問本機的22/tcp (ssh)端口 
sudo ufw allow 53         #容許外部訪問53端口(tcp/udp) 

sudo ufw delete allow 53     #禁用 53 端口
sudo ufw allow from 192.168.1.12      #容許此IP訪問全部的本機端口 

sudo ufw delete allow from 192.168.1.12   #刪除上一條的規則
sudo ufw deny smtp            #禁止外部訪問smtp服務 
sudo ufw delete allow smtp               #刪除上面創建的某條規則 

sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53 

 

用戶操做

一、強制使某個用戶退出:

首先:使用w查看當前登陸的用戶,注意TTY所示登陸進程終端號

其次:使用pkill –9 -t pts/1 結束pts/1進程所對應用戶登陸

二、查看全部登陸用戶的操做歷史

無論是root用戶仍是其它的用戶只有登錄系統後用進入操做咱們均可以經過命令history來查看歷史記錄,但history只針對登陸用戶下執行有效,即便root用戶也沒法獲得其它用戶histotry歷史。若是root用戶要查看其它用戶的操做記錄,經過在/etc/profile裏面加入如下代碼就能夠實現:

PS1="`whoami`@`hostname`:"'[$PWD]'
history
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /tmp/dbasky ]
then
mkdir /tmp/dbasky
chmod 777 /tmp/dbasky
fi
if [ ! -d /tmp/dbasky/${LOGNAME} ]
then
mkdir /tmp/dbasky/${LOGNAME}
chmod 300 /tmp/dbasky/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date "+%Y-%m-%d_%H:%M:%S"`
export HISTFILE="/tmp/dbasky/${LOGNAME}/${USER_IP} dbasky.$DT"
chmod 600 /tmp/dbasky/${LOGNAME}/*dbasky* 2>/dev/null添加完後執行 source /etc/profile 使腳本生效
相關文章
相關標籤/搜索