linux学习:网络(防火墙)及系统安全相关命令学习
指令:ufw、netstat、 top、lsof、htop、free、pstree、ifconfig、w3m、tcpdump、nmap
防火墙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
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n (numeric) 直接显示ip地址以及端口,不解析为服务名或者主机名
-l (listen) 仅列出 Listen (监听) 的服务
-p (pid) 显示出socket所属的进程PID 以及进程名字
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
--inet 显示ipv4相关协议的监听
netstat -i #查看网络接口表(网卡)
netstat -ie #查看网卡信息
netstate -at #列出所有tcp端口,同理,列出所有udp端口:netstate -au
netstat -l #只显示处于监听状态的端口,列出处于监听状态的tcp端口:netstat -lt
netstat -ap | grep ssh #找出某个程序(ssh)运行的端口
netstat -an | grep ':80' #找出运行在80端口的进程
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 #同上,同时过滤掉本地的监听
netstat -nat | grep "127.0.0.1:9000" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20 #查看连接本机9000端口最多的20个ip
lsof file #查看哪个进程打开了文件file
lsof -i :22 #查看22端口现在运行什么程序
lsof -c vim #查看vim进行现在打开的文件
lsof -p [进程ID] #根据进程id跟踪某个进程所使用的资源
网络:
top #查看内存,cpu,进程之间的状态。
htop #在top的基础上更好显示(执行sudo apt-get install htop安装)
free #查看当前的内存使用情况
free -m | grep Mem | awk '{print $2}' #查看物理内存大小
free -m | grep Mem | awk '{print $3}' #查看已经使用了的物理内存
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查电脑名
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 #查看到某一个域名的路由情况:
sudo apt-get install rkhunter; rkhunter –checkall #检查本地是否存在安全隐患
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对统计的数量进行排序。
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 #查看通过秘钥登录的用户及登录次数
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地址
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扫描
----------------------------------------------------------------------
入侵报告工具 以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
-------------------------------------------------------------------------------
用户操作
1、强制使某个用户退出:
首先:使用w查看当前登录的用户,注意TTY所示登录进程终端号
其次:使用pkill –9 -t pts/1 结束pts/1进程所对应用户登录
2、查看所有登录用户的操作历史
不管是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 使脚本生效
linux学习:网络(防火墙)及系统安全相关命令学习的更多相关文章
- Linux的几个概念,常用命令学习
Linux的几个概念,常用命令学习---------------------------------设备名装载点// 通过装载点访问设备-------------------------------- ...
- linux查看网络ip得两个命令ifconfig和 ip addr
在安装linux 得时候,我们要选择桥接网络,相当于本电脑和虚拟机得电话都是接通外网,linux查看网络ip得两个命令ifconfig和 ip addr 1,命令ifconfig 如果ifconfig ...
- 【linux系统】命令学习(八)bash 编程实战学习
常见shell : bash sh zsh windows: git bash cygwin MAC : terminal iterm netstat 是linux下用于显示网络状态的命令.通 ...
- 【linux系统】命令学习(六)awk sed grep 与管道的使用
程序运行环境输入与输出 标准输入0 read a;echo $a 标准输出1 echo cesh 错误输出 ls notr 管道重定向 管道与管道之间可以重定向 管道与文件之间可以重定向 用于写入 将 ...
- Linux快速入门教程-进程管理ipcs命令学习
使用Linux系统必备的技能之一就是Linux进程管理,系统运行的过程正是无数进程在运行的过程.这些进程的运行需要占用系统的内存等资源,做好系统进程的管理,对于我们合理分配.使用系统资源有非常大的意义 ...
- Linux三种关机/重启系统的命令
Linux提供了三种关机/重启系统的命令:shutdown.halt和reboot.这三个命令在一般情况下只有 系统的超级用户(一般是指root)才可以执行.输入没有参数的shutdown命令,两分钟 ...
- linux学习之路5 系统常用命令
日期时间 查看设置当前时间 date +%Y--%m--%d 格式化显示时间 -s " "(切换到超级用户)修改时间 hwclock(clock)用以显示硬件时钟时间 命令 cal ...
- linux系统及命令学习
1,基本概念 Shell(命令行):是一个程序,接受键盘输入的命令,并将命令传递给操作系统进行执行. Bash:Bourne Again Shell, 是大多数linux系统分之中所带的一种shell ...
- 【linux系统】命令学习(五)linux三剑客 grep \ awk \ sed
grep----基于正则表达式查找满足条件的行 1.内容检索 获取行 grep pattern file 获取内容 grep -o pattern file 获取上下文grep -A -B -C pa ...
随机推荐
- JAVA This的简单运用
package Code426;/*当方法的局部变量和类的成员变量重名时,根据“就近原则”,优先使用局部变量如果需要访问本类当中的成员变量,需要使用 this.成员变量 通过谁调用的方法,谁就是thi ...
- Java数组的声明和遍历
Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如 n ...
- codeblocks 配置 opengl 编程宝典 的 gltools 环境
懒得多说,亲测,这个问题,csdn 和 cnblog 上的博客真的没有一个能解决的. 这个帖子2L的答案则完美解决了问题,虽然步骤有些繁琐,过程还是英文,但考虑到了可能出现的各种问题,跟着走一遍就完美 ...
- 浅谈rest風格的接口开发
简单描述:因为前后端分离,开发完模块之后,接到team leader的指令,我这个渣渣javaer需要给前端人员返回一个接口,具体内容是课程列表json和分类列表json.emmmm,第一次写接口,心 ...
- 微信小程序上的map组件bindregionchange地图视野变化函数成功回调会产生2次值的问题?
bindregionchange确实是会触发两次,第一次是视野变化开始,第二次是视野变化结束. 你可以尝试把e.type给打印出来,值为begin表示开始,值为end表示结束. wxml: js:
- Python之MySQL基础
一.存储引擎 1.1 什么是存储引擎 MySQL中的数据通过不同的技术存储再文件或者内存中,每种技术有不同的存储机制,索引技巧,锁定水平,并且提供不同的能力,而实现这些技术的我们就称之为存储引擎 1 ...
- Redis的n种妙用,分布式锁,分布式唯一id,消息队列,抽奖……
介绍 redis是键值对的数据库,常用的五种数据类型为字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset) Redis用作缓存,主要两个 ...
- BZOJ2759 一个动态树好题 LCT
题解: 的确是动态树好题 首先由于每个点只有一个出边 这个图构成了基环内向树 我们观察那个同余方程组 一旦形成环的话我们就能知道环上点以及能连向环上点的值是多少了 所以我们只需要用一种结构来维护两个不 ...
- shell中使用带密码的方式直接pg_dump和psql
数据导出 pg_dump "host=XX.XX.XX.XX port=5432 user=XXXX password=XXXX dbname=XXXXX" -t table_na ...
- 编译phoneix源码,整合Hbase
Hbase版本:1.2.0-cdh5.14.0 1):下载phoneix源码 链接:https://pan.baidu.com/s/1uryK_jLEekdXV04DRc3axg 密码:bkqg 2) ...