学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- 进入本机:PREROUTING --> INPUT
- 穿过本机的:PREROUTING --> FORWARD --> POSTROUTING
- 从本机往外走的:OUTPUT --> POSTROUTING
实验环境准备
- Centos7:systemctl stop firewalld.service && systemctl disable firewalld. service
- Centos6:service iptables stop && chkconfig iptables off && checonfig --list iptables
卸载虚拟网卡
yum info libvirt-deamon
yum remove libvirt-deamon
看看iptables来自于那个包
rpm -ql `which iptables`
iptables规则
组成部分:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就由规则定义的处理动作作出处理
- 匹配条件:默认为与条件,同时满足 基本匹配:IP,端口,TCP的Flags(SYN,ACK等) 扩展匹配:通过复杂高级功能匹配
- 处理动作:称为target,跳转目标 内建处理动作: ACCEPT,DROP,REJECT,SNAT,DNATMASQUERADE,MARK,LOG… 自定义处理动作:自定义chain,利用分类管理复杂情形
- 规则要添加在链上,才生效;添加在自定义上不会自动生效
- 链chain: 内置链:每个内置链对应于一个钩子函数 自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有 Hook钩子调用自定义链时,才生效
iptables命令
cent6和centos7查看帮助的方式不同,centos7把拓展分出去了
centos6: man iptables
centos7:man iptables && man iptables-extendisions
man 8 iptables
iptables [-t table] {-A|-C|-D} chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -R chain rulenum rule-specification
iptables [-t table] -D chain rulenum
iptables [-t table] -S [chain [rulenum]]
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain target
iptables [-t table] -E old-chain-name new-chain-name
rule-specification = [matches...] [target]
match = -m matchname [per-match-options]
target = -j targetname [per-target-options]
-t=table -A=appentd -s=source ip -j=jump
input=INPUT
暴力ping
ping -f 192.168.63.3
iptables -t filter -A INPUT -s 192.168.63.3 -j DROP
iptables -t filter -A INPUT -s 192.168.63.3 -j REJECT
iptables -t filter -A INPUT -s 192.168.63.0/24 -j REJECT
drop是丢弃 REJECT是不回应
对于ping而言 reject收到unreachable ,drop无显示
liunx小型抓包工具
tcpdump -i eth0 -nn
tcpdump -i eth0 -nn src 192.168.63.3
tcpdump -i eth0 -nn host 192.168.63.3
iptables -L (英文)
iptables -nL(包的字节数)
iptables -nvL (更为详细的包的字节数)
iptables -nxvL(精确)
iptables -nvL --line-number编号,先后顺序
iptables -D INPUT 1 删除
iptables -t filter -I `--line-number` INPUT -s 192.168.63.0/24 -j ACCEPT
规则管理
-A:append,追加
-I:insert, 插入,要指明插入至的规则编号,默认为第一条
-D:delete,删除 (1) 指明规则序号 (2) 指明规则本身
-R:replace,替换指定链上的指定规则编号
-F:flush,清空指定的规则链
-Z:zero,置零
iptables的每条规则都有两个计数器
(1) 匹配到的报文的个数
(2) 匹配到的所有报文的大小之和
chain:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
全禁用 && 本地回环网络
iptables -t filter -A INPUT -s 0.0.0.0 -j DROP
iptables -p INPUT DROP
iptables -I INPUT 6 -s 127.00.1,192.168.663.250 -j ACCEPT
iptables -r INPUT 5 -i lo -j ACCEPT
iptables -P INPUT DROP
备份
n分钟之后执行任务
echo wall warning | at now+1 minutes
iptables命令拓展
管理端口号
ss -tnl
ss -tn
- 查看帮助 CentOS 6: man iptables CentOS 7: man iptables-extensions
- muiltport拓展
multiport扩展 以离散方式定义多端口匹配,最多指定15个端口
--source-ports,--sports port[,port|,port:port]... 指定多个源端口
--destination-ports,--dports port[,port|,port:port]... 指定多个目标端口
--ports port[,port|,port:port]...多个源或目标端口
示例: iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp -m multiport --dports 20:22,80 -j ACCEPT
iptables -I INPUT 3 -s 192.168.37.6 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 3 -s 192.168.37.6 -p tcp --dport 330:335 -j ACCEPT
muiltport
当不连续端口号 可以使用拓展模块 muiltport
iptables -A INPUT -s 192.168.37.6 -p tcp -m multiport --dports 139,445,11001:11032 -j ACCEPT
- iprange拓展
iprange扩展 指明连续的(但一般不是整个网络)ip地址范围
–src-range from[-to] 源IP地址范围
–dst-range from[-to] 目标IP地址范围
示例: iptables -A INPUT -d 172.16.1.100 -p tcp --dport 80 -m iprange --srcrange 172.16.1.5-172.16.1.10 -j DROP
icmp协议在网络层 网络层没有端口
iptables -A INPUT -s 192.168.37.6 -p tcp --syn -j REJECT
(curl 就用不了了,因为curl走的时候tcp协议)
tcp协议有端口
icmp协议中 编号中 0是返回报文 8是请求报文
iptables -I INPUT 6 -s 192.168.63.251 -p icmp --icmp-type 0 -j ACCEPT
250可以ping通251 251ping不通250
- mac扩展 指明源MAC地址 适用于:PREROUTING, FORWARD,INPUT chains
–mac-source XX:XX:XX:XX:XX:XX
示例: iptables -A INPUT -s 172.16.0.100 -m mac --mac-source 00:50:56:12:34:56 -j ACCEPT iptables -A INPUT -s 172.16.0.100 -j REJECT
5. string拓展
string拓展 前62个应该是不会出现google字样了 、在传输层往后了
数据帧:8个字节前导信息,6个字节目的mac06个字节目的mac、再加上两个字节type类型、然后到了ip头有固定了20个字节,tcp头又有20个
对报文中的应用层数据做字符串模式匹配检测 --algo {bm|kmp}
字符串匹配检测算法 bm:Boyer-Moore kmp:Knuth-Pratt-Morris
–from offset 开始偏移 --to offset 结束偏移
–string pattern 要检测的字符串模式
–hex-string pattern要检测字符串模式,16进制格式 示例: iptables -A OUTPUT -s 172.16.100.10 -d 0/0 -p tcp --sport 80 -m string - -algo bm --string “google" -j REJECT
6. time扩展 根据将报文到达的时间与指定的时间范围进行匹配
–datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期
–datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
–timestart hh:mm[:ss] 时间
–timestop hh:mm[:ss] [!] --monthdays day[,day…] 每个月的几号
–weekdays day[,day…] 星期几,1 – 7 分别表示星期一到星期日
–kerneltz:内核时区,不建议使用,
CentOS7系统默认为UTC 注意: centos6 不支持kerneltz ,–localtz指定本地时区(默认) 示例:本地时-8个小时 例如本地要写早9点就写1:00
iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp --dport 80 -m time - -timestart 14:30 --timestop 18:30 --weekdays Sat,Sun --kerneltz -j DROP
7. connlimit扩展
根据每客户端IP做并发连接数数量匹配
可防止CC(Challenge Collapsar挑战黑洞)攻击
–connlimit-upto #:连接的数量小于等于#时匹配
–connlimit-above #:连接的数量大于#时匹配
通常分别与默认的拒绝或允许策略配合使用
本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。
最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。
最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。
学习路线图
其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。
相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。
网络安全工具箱
当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。
项目实战
最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~
面试题
归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!