25.- 日常管理第二部分,抓包工具防火墙相关。

智慧并不产生于学历,而是来自对于知识的终生不懈的追求。这篇文章主要讲述25.- 日常管理第二部分,抓包工具防火墙相关。相关的知识,希望能为你提供帮助。
tcpdump
1. tcpdump是一个抓包工具;
2. tcpdump可以看到、一行一行的查看到10.20.20.13121表示时间,ip或icmp不过大部分都是显示ip,10.133.193.117表示来源的ip、.56556或ssh表示来源的prot、识别的prot显示ssh或者是80httpd、不识别的prot显示成数字,大于号> 表示数据走向、数据包从一个ip的一个prot走到另一个ip的一个prot,114.249.244.227.52556表示目标ip和目标prot,length表示它的长度;
3. tcpdump -nn 一般我们这样用这个命令,它可以把来源ip、来源prot,目标ip、目标prot显示成真正的ip数字,port显示成真正的prot数字;
4. tcpdump -nn -i eth1 减小i表示指定网卡,默认第一个网卡就是eth0,不加小i就是默认抓eth0,指定其它网卡就要加小i ;
5. tcpdump -nn -i eth1 tcp and prot 22 and host 0.0.0.0 这里tcp表示指定指定抓tcp的包,and表示和的意思,prot表示指定prot端口是22的,host表示指定ip,这里ip可以写来源ip或者目标ip都是可以的;
6. tcpdump -nn -i eth1 tcp and not prot 22 这里not表示取反的意思,把不是22端口的包都显示出来;
这么使用命令只是查看一个数据流向,而不是包数据的本身。

抓数据包本身内容方法
1. tcpdump -nn -i eth1 tcp and port 22 and host 10.133.193.117 -w /tmp/1.txt这里-w表示把抓到的数据包指定到一个文件中去,使用ctrl c可以终止命令后显示 00 packets received by filter 可以看到有几个包被接收了,用du -sh 可以查看/tmp/1.txt这个文件大小,这个文件接收的包还是属于二进制的,使用cat直接查看会显示乱码;
2. strings 这个命令可以查看二进制的包里面显示的可识别的字符串;
3. 在脚本里面自动去抓包没有人帮你ctrl c 停掉去查看的话,使用-c 例 tcpdump -nn-i eth1 tcp prot 22 andhost 10.133.193.117 -c 10 -w /tmp/1.txt 这里-c表示指定只抓10个包后自动停止;
4. 平时用的最多的就只是去看一看数据包流向,就是不去指定到一个文件中了,例 tcpdump -nn-i eth1 tcp prot 22 andhost 10.133.193.117 -c 10;
5. tcpdump -nn -s0 -i eth1tcp port 22 and host 10.133.193.117 -c 这里 -s0 表示把所有的包全抓,不加s0它会默认把一些小包和不符合规则的包丢掉;
我们使用抓包工具的目的是为了查看异常的流量信息数据流向,正常的话我们的服务器里面只有常用的端口会发送接收一些数据包。

tshark
安装tshark命令使用wiresahrk包 yum install -y wiresahrk 安装
1. tshark也是一个抓包工具,它跟tcpdump是异曲同工,他们两个都需要用root的身份去执行。
2. 抓包分析http请求: tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"这条命令它可以很快的帮自己去分析服务器上请求到的一些80端口的一些数据,类似我们的访问日志,这条命令用在访问日志没有去记录,又不知道它的配置文件在哪里,不想去改动配置文件,只想抓个包看看的情况下就可以使用这条命令,比较实用,哪天使用这个命令没有出来东西,那就要看一下有没有-i指定网卡,-i 网卡 要放在tshark 后面;

selinux
1. selinux是美国的国家安全局联合某一个科研机构联合研发出来的一个防火墙工具,它其实很安全很厉害,但是不被国人广泛的去认可,因为它比较麻烦,如果把用好了,那么你会发现你的系统会变得非常健壮。我们可以不用去管它,因为我们工作中默认是把它关掉的,如果有时间感兴趣的话可以去研究一下;
2. 我们主要是要懂如何去关闭它,如何去查看它的状态;
3. rpm -qf `which getenforce` 查看是哪个安装包用yum去安装;
4. getenforce 查看selinux的状态,默认状态为enforcing开启;
5. cat /etc/selinux/config 可以查看这个配置文件,可以看到它的三种状态,enforcing表示开启、permissive表示开启不生效 触碰到规则警告、disabled表示关闭;

iptables
1. iptables 它不是防火墙,它只是一个实现防火墙的工具,真正实现防火墙的叫做netfilter 为网络过滤器;
2. netfilter表,下面 图一、图二、中是它工作的一些流程,还有对应的表和链,
1

25.- 日常管理第二部分,抓包工具防火墙相关。

文章图片

2
25.- 日常管理第二部分,抓包工具防火墙相关。

文章图片


3. filter 这个表主要用于过滤包的,是系统预设的表,内建有三个链INPUT、OUTPUT以及FORWARD。INPUT作用于进入主机的包;OUTPUT作用于本机送出的包;FORWARD作用于那些跟本机无关的包;
4. nat 主要用于网络地址转换、端口映射,也有三个链。PREROUTING链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链改变本地产生的包目的地址。POSTROUTING链在包就要离开防火墙之前改变其源地址,nat用的不多。
5. iptables的用法;
iptables -nvL这里L是大写,可以查看防火墙的规则;
6. iptables -nvL 不加-t默认就是filter;
7. iptables -nvL -t nat 这里加-t nat表示指定nat表;
8. iptables -F 减大F,清除防火墙规则,不加-t默认清除filter表的规则;
9. iptables -F -t nat 加-t nat指定清除nat表的规则;
10. iptables -Z 减大Z把计数器置零;
11. iptables -A/I INPUT -s 1.1.1.1 -p tcp --sport123 -d 10.111.111.111 --dport 80 -j ACCEPT/DROP/REJECT 这里-A减大A表示增加规则,-I减大i表示插入、把新的规则排到第一位,INPUT表示针对哪一个链、INPUT就是针对INPUT链、表示包从外面进来的、就是从INPUT进来从OUTPUT出来,-s减小s表示指定它的来源ip,-p tcp 如果要加sport或着dport必须给它规定好是tcp还是udp、所以一定要给它规定好、减小p tcp表示指定prot是tcp还是udp、这里tcp表示指定prot就是tcp,--sport 123表示指定的port端口号、也就是来源port,-d减小d表示指定目标ip、这里是INPUT链是远程的包进来到我本机的、包进来一定是要先访问本机、所以目标ip一定要是内网ip或公网ip,--dport 80 表示指定dprot端口号、也就是目标prot,-j ACCEPT 减小j ACCEPT表示允许、放行,-j DROP减小j DROP表示直接拒绝,-j REJECT减小j REJECT表示观望状态;
【25.- 日常管理第二部分,抓包工具防火墙相关。】12. 这样写了一条规则并没有保存,下次重启规则就会消失,使用这个命令保存
service iptables save 写完规则运行这个命令它会把规则保存到/etc/sysconfig/iptables文件中,使用cat可以查看到;
13. cat /etc/sysconfig/iptables打开查看到保存的规则 *nat表示nat表、*filter表示filter表 可以看到filter表下有我们保存的规则;
14. service iptables stop 暂停防火墙规则,临时给它停掉,前提是要先把规则保存,stop后还能重新恢复;
15. service iptables start 在已经保存规则的情况下重启,恢复防火墙规则;

针对某一条规则删除方法,在不记得以前写的命令的情况下
1. 使用iptables -nvL --line-number这条命令,把每一条规则用数字的自然顺序排序出来;
2. iptables-D INPUT 2 这里减大D表示删除一条规则,INPUT指定链,2 表示指定删除第二条规则;
小常识:使用--line-number这条命令给规则加上数字排序以后,每删除一条规则,那么数字都会呈自然顺序补位上来。

1. iptables -P 减大P修改默认规则是放行通过还是直接拒绝,(policy ACCEPT)是防火墙的默认规则;
2. iptables -P INPUT DROP/ACCEPT 修改默认规则必须指定是哪一个链,DROP表示拒绝,ACCEPT表示通过;如果直接DROP掉的话那么远程就不能上网了,要去虚拟机重新加规则,iptables -A INPUT -p tcp --dprot 22 -j ACCEPT现在把22端口放行了,再去远程就可以连上了,可以运行命名,但是ping不通,再把icpm给它放行用iptables -A INPUT -p icmp -j ACCEPT 这时候直接Ping还是ping不通,因为53端口已经被封了,请求的DNS出不去,但是可以ping IP,使用cat查看/etc/resolv.conf在请求哪个ip的53端口,用iptables -A INPUT -s 加请求的ip -j ACCEPT这样给它放行就可以ping通了
(icmp是(Intemet Control Message Protocol)Internent控制报文协议。它是TCP/IP协议族的一个子协议,用于在ip主机,路由器之间传递控制信息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息)
3. tcp跟udp的区别就是tcp需要确认包的完整性,udp不去确认,所以udp会很快。去放行规则是要一条一条的去添加,来源ip是远程的,目标ip是本地的
4. iptables -A OUTPUT-s local-d remote这里OUTPUT链表示出去的包,local表示本地的, remote表示远程的,有时候我们去限制一个连接只需要在INPUT端做限制就可以了,就是进来的,OUTPUT链出去的可以给它放行,如果遇到机器被黑了,在不停对某一个远程的机器的80端口发包,它只发包不接收,这时候就要针对OUTPUT去限制了,用iptables -A OUTPUT -d 加远程的ip-P 减大P DROP 给它限制。
5. 写一个任务计划防止规则出问题那么写好的规则先不要保存,可以先把一个允许放行的规则写成一个随时都可以执行的脚本,把这个脚本定时设置时间去自动执行这个脚本。
6. iptables-save > 1.ipt 表示把写好的规则重定向保存到1.ipt这个文件,iptables-restore < 1.ipt 反向重定向恢复规则,这是它的备份和恢复。
7. service iptables stop 这条命令表示停掉规则把默认策略也清空,如果觉得写的规则不合适就在任务计划里加上 ,就是防止规则写错,设置多少时间以后自动执行这条命令,直接iptables -F是不行的,因为它没有把DROP这个默认策略清空,只有用stop给它停掉。
8. iptables -F 只清规则
stop 清规则和策略。















    推荐阅读