linux渗透测试

iptables是linux下的防火墙,得好好学习。渗透学习。

渗透学习

1、主机发现与端口扫描

nmap

nmap [扫描类型…] [通用选项] {扫描目标说明}

1
nmap -v -sS 192.168.1.10-254

扫描10-254这段ip的主机,-p为扫描端口
-sS :TCP同步扫描(TCP SYN),因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。
-sN :秘密扫描,有时可以骗过防火墙
-v :冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
-p :如-p1-65535,扫描每台主机的1-65535端口
-A :详细扫描

netdiscover

netdiscover [通用选项] [ip]

1
netdiscover -r 192.168.0.1/24

-p :被动扫描(贼慢)
扫描一个子网段
当然还有其他的扫描工具啦。etc

2、dos

hping3

1
hping3 -I eth0 -S 192.168.0.50 -a 10.10.10.1 -p 80 -i u1000

向192.168.0.50主机80端口发起dos攻击,将自己ip伪装成10.10.10.1

1
hping3 -P -U --flood -V -a --rand-soucer -S 10.21.13.97

伪造IP地址的简单的SYN洪水攻击――使用HPING3的DoS
-a –rand-source : 使用随机性的源头IP地址。

nping

1
2
3
4
nping --tcp -p 80 --flags rst --ttl 2 192.168.1.1
nping --icmp --icmp-type time --delay 500ms 192.168.254.254
nping --echo-server "public" -e wlan0 -vvv
nping --echo-client "public" echo.nmap.org --tcp -p1-1024 --flags ack

iptables

iptables -A INPUT -j DROP
屏蔽所有ip
参考:https://esebanana.github.io/page/2/

iptables

iptables是netfilter的基本框架,即liunx发行版下的防火墙,其实就是过滤数据包。
举个栗子: 当Internet来了一个主机,想要进入主机。这时,会先经过iptables的规则,检查通过则接受(accept),否则,就会丢弃(drop)。iptables的规则是有顺序的,从开始配置,若是某一条匹配成功,则执行这条规则,后面的规则都不会执行。当所有的规则都不匹配,则丢弃(drop).

iptables的策略

一般分为两种策略: “通”策略(定义只有指定ip能访问)和”堵”策略(所有的都能访问,但是有身份认证)

因为iptable有许多的规则,所有我们定义了许多的表(table),每个表的规则都不一样。比如filter,nat,mangle

数据包中允许或者不允许进入本机——filter(过滤器)
地址转换的功能的则是——nat(地址转换)
修改报文原数据的标志位——mangle(数据包修改QOS)

iptables常见的表

每个表中有许多的规则链

filter(过滤器)——主要用于防火墙
INPUT:处理输入数据包规则链
OUTPUT:处理输出数据包规则链
FORWARD:将来到本机的数据包转发到其它主机(这里与nat有关)的规则链

nat(地址转换)
PREROUTING :地址转换前的规则
POSTROUTING:地址转换后的规则
OUTPUT: 与发送出去的数据包有关

mangle(修改数据包)
mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。

最常用的是filter表,我们的主要学习对象

iptables命令

语法

iptables (选项) (参数)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-t<表>:指定要操纵的表;
-A:向规则链中添加条目,添加到尾部;
-D:从规则链中删除条目;
-I:向规则链中插入条目,默认添加到首部;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。

iptables命令选项输入顺序:

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

一些动作

1
2
3
4
5
6
7
accept:接收数据包。
DROP:丢弃数据包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换。
DNAT:目标地址转换。
MASQUERADE:IP伪装(NAT),用于ADSL。
LOG:日志记录。

添加规则(如:屏蔽ip)

1
2
3
iptables -A INPUT -j DROP #屏蔽所有IP的命令
iptables -A INPUT -s 192.168.1.25 -j DROP #将这条命令添加到规则的尾部,屏蔽单个IP的命令
iptables -I INPUT -s 192.168.1.1/24 -j DROP #封整个段即从192.168.1.0到192.168.1.255的命令

删除规则

1
2
iptables -D INPUT -s 192.168.1.25 -j DROP #将这条命令从规则中删除
iptables -D INPUT 2 #删除INPUT里面的第2条规则(从最上面开始)

限定某个ip登录ssh

1
2
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.35 -j ACCEPT 
iptables -A INPUT -p tcp --dport 22 -j DROP

更改所有来自192.168.1.0/24的数据包的源ip地址为1.2.3.4(nat地址转化)

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 1.2.3.4

查看的iptables规则

iptables -nL --line-number

Donate
-------------本文结束感谢您的阅读-------------