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 ...
随机推荐
- MySQL1:客户端/服务器架构
一.MySQL的客户端/服务器架构 前言 之前对MySQL的认知只限于会写些SQL,本篇算是笔记,记录和整理下自己对MySQL不熟悉的地方. 大致逻辑: MySQL的服务器程序直接和我们存储的数据打交 ...
- 移动端右侧导航 显示隐藏js
transform与fixed影响 html按钮 <span class="nav-btn"></span> <span class="cl ...
- IDEA适合的插件
一:安装方法 在线安装 二. 官网插件地址 http://plugins.jetbrains.com/ 三.常用插件 一. ) Alibaba Java Coding Guidelines ...
- cc.Lable组件,RichText组件,AudioSouce组件的使用
一.cc.Lable组件的使用 1.创建Label的方法 a.通过菜单直接创建Label组件:b.先创建节点,然后在节点上绑定Label组件即可. 2.Label 面板上的属性 String => ...
- linux安装lamp环境(linux+apache+mysql+php)
源码安装 本次使用 Centos7.2 MySQL5.7.22 Apache2.4.37 PHP5.6.38 安装Apache 安装httpd和所需依赖:gcc, apr, apr-util,apr- ...
- set操作
Set操作,Set集合就是不允许重复的列表 sadd(name,values) # name对应的集合中添加元素 scard(name) 获取name对应的集合中元素个数 sdiff(keys, *a ...
- 两个spring boot项目war部署到tomcat 其中一个无法正常启动
Spring Boot的spring.jmx资源管理是默认打开的,而两个项目同时使用会冲突 需要在第二个.或者第三个springboot项目中增加如下配置: 1:application.propert ...
- .NET Core on K8S快速入门课程学习笔记
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 目录 01-介绍K8s是什么 02-为什么要学习k8s 03-如何学习k8s ...
- net读取文件字节流要注意的小细节
]; var numBytesToRead = (int)fileLenght; ; using (fs) { do { ); numBytesRead += n; numBytesToRead -= ...
- MyCat基础安装配置-笔记(一)
概述 Mycat 是一个数据库分库分表中间件,Mycat web 可以对 Mycat进行监控,这里分享一下 Mycat web 的搭建过程 详细内容可以参考 官方文档,下载文档地址:https://g ...