查看网络状态
netstat 查看网络状态 netstat -lnp 查看监听端口 netstat -an 查看系统的网络连接状况 netstat -lntp 只看出tcp的,不包含socket ss -an 和nestat异曲同工
自行查看TCP三次握手四次挥手的过程
分享一个小技巧:
查看所有状态的数字统计:netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
ESTABLISHED是正在通信的客户端
Linux下抓包
抓包工具tcpdump
安装:yum install -y tcpdump
用法:tcpdump -nn
tcpdump -nn -i ens33 //按照网卡名称
tcpdump -nn port 80 //指定端口 tcpdump -nn not port 22 and host 192.168.0.100 tcpdump -nn -c 100 -w 1.cap //-c指定数据包抓捕数量;-w指定存放文件 查看文件:tcpdump -r 1.cap file 1.cap(查看文件概况)
安装工具:yum install -y wireshark
查看80端口web: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"
例:
Linux网络相关
ifconfig查看网卡ip(yum install net-tools) ifup ens33/ifdown ens33 //连接网卡或断开网卡 设定虚拟网卡ens33:1 mii-tool ens33 查看网卡是否连接 ethtool ens33 也可以查看网卡是否连接 更改主机名 hostnamectl set-hostname aminglinux DNS配置文件/etc/resolv.conf
/etc/hosts文件 可以看成是IP和hostname主机名的一个解析文件 把ip和hostname写到里面,ping hostname和ping ip就一样了
Linux防火墙-netfilter
1、 -- selinux临时关闭 setenforce 0 -- selinux永久关闭 vi /etc/selinux/config centos7之前使用netfilter防火墙 centos7开始使用firewalld防火墙
centos7关闭firewalld开启netfilter方法: systemctl stop firewalld //关闭防火墙 systemctl disable firewalled //关闭开机启动
开启netfilter yum install -y iptables-services systemctl enable iptables systemctl start iptables
iptables -nvL //查看防火墙默认规则
netfilter的5个表 filter表用于过滤包,最常用的表,有INPUT、FORWARD、OUTPUT三个链 nat表用于网络地址转换,有PREROUTING、OUTPUT、POSTROUTING三个链 managle表用于给数据包做标记,几乎用不到 raw表可以实现不追踪某些数据包 security表在centos6中并没有,用于强制访问控制(MAC)的网络规则
数据包流向与netfilter的5个链
PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARD:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外发出
POSTROUTING:发送到网卡接口之前
参考:
iptables简介
netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
iptables基础
规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息 包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规 则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的 主要工作就是添加、修改和删除这些规则。
iptables和netfilter的关系:
这是第一个要说的地方,Iptables和netfilter的关系是一个很容易让人搞不清的问题。很多的知道iptables却不知道 netfilter。其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。
iptables传输数据包的过程
① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。
2、iptables语法
查看iptables规则:iptables -nvL 规则文件路径:/etc/sysconfig/iptables iptables -F 清空规则(建议不要进行) service iptables save 保存规则 service iptables restart 重启防火墙服务 iptables -t nat //-t指定表 iptables -Z 可以把计数器清零 iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP -A增加 来源IP 协议 来源端口 目标IP 目标端口 拒绝 iptables -I/-A/-D INPUT -s 1.1.1.1 -j DROP -I插入 -D删除 iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT //-i eth0指定网卡
若忘记之前增加的规则语句,现在想删除,可以用以下办法操作: iptables -nvL --line-numbers //把规则的编号显示出来 iptables -D INPUT 1 //删除编号1的规则 iptables -P INPUT DROP //把默认规则改成DROP(建议不操作) 若操作了iptables -P INPUT DROP,需要在客户端进行操作修改回来:iptables -P OUTPUT DROP
3、iptables小案例 编写脚本 vi /usr/local/sbin/iptables.sh //加入如下内容
#! /bin/bash
ipt="/usr/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
执行脚本:sh /usr/local/sbin/iptables.sh
结果如下图:
icmp示例(需要把上个执行的脚本恢复为默认状态) iptables -I INPUT -p icmp --icmp-type 8 -j DROP //结果:ping外网地址能通,ping本机不通
4、iptables nat表应用
A机器两块网卡ens33(192.168.133.130)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。 需求1:可以让B机器连接外网 A机器上打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward //打开端口转发 A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE B上设置网关为192.168.100.1 需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口 A上打开路由转发echo "1">/ proc/sys/net/ipv4/ip_forward 执行下面两个命令前,需要把原来设置的删掉:iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE A上执行iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22 A上执行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130 B上设置网关为192.168.100.1
用命令设置IP和子网掩码(临时,想永久生效需要改配置文件):ifconfig 网卡名 192.168.100.1/24 断开网卡:ifdown 网卡名 查看网关:route -n 命令行设置网关:route add default gw 192.168.100.1
用命令设置IP和子网掩码(临时,想永久生效需要改配置文件):ifconfig 网卡名 192.168.100.1/24 断开网卡:ifdown 网卡名 查看网关:route -n 命令行设置网关:route add default gw 192.168.100.1
5、iptables规则的备份和恢复
保存和备份iptables规则 service iptables save //会把规则保存到/etc/sysconfig/iptables
把iptables规则备份到my.ipt文件中 iptables-save > my.ipt
恢复刚才备份的规则 iptables-restore < my.ipt