iptables的四表五链: 四表:raw,mongon,nat,filter 五链:PREROUTING, POSTROUTING, FORWAROD, INPUT, OUTPUT
iptables 后的几种状态: ACCEPT 接收 REJECT 拒绝 DROP 丢弃 默认为 DROP -A 在链尾追加一条新的规则 append -I 在指定位置插入一条新的服务 insert -R 修改、替换指定位置或内容的规则 replace 拒绝性 reject 给与回复 -P 设置指定链的默认策略 -L 列表查看各条规则信息 –line-numbers 查看规则信息时显示股则的行号 -n 以数字形式显示 IP 地址、端口等信息 -v 显示数据包个数、字节数等详细信息 –sport 源端口 –dport 目的端口 –sport 源端口:目标端口 一个端口范围 -m multiport 加载多端口的模块 m:match -m iprange --src-range 规定一个网段 * iptables 常见的操作命令 链名必须放在前面并且大写 * iptables 语法格式: iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 目标动作或则跳转] iptables -L -t 表名 可以查看表中使用了哪些链 iptables -L 默认查看 filter 表 iptables -L --line-num -v 显示规则的编号 -v 显示规则的详细信息 iptables -I INPUT 1 -s 192.168.29.124/32 -p tcp --dport 80 -j ACCEPT 插入数据放在第一 行 iptables -L --line -v -n 可以查看规则 用数字并且显示详细信息 iptables -I INPUT 1 -s 192.168.29.24/24 -p tcp --dport 22 -j ACCEPT iptables -R INPUT 1 -s 192.168.29.24/24 -p tcp --dport 22 -j ACCEPT 修改这个规则 iptables -P INPUT ACCEPT 修改默认规则 iptables -F 清除的规则是不会清除默认的规则的 需要 iptables -P 链名 状态 iptables -A INPUT -s 192.168.24.29 -j DROP 丢弃针对一个 IP 地址 iptables -A INPUT -s 192.168.24.29/32 -j DROP 丢弃针对一个 IP 地址 iptables -A INPUT -s 192.168.24.29/24 -j DROP 丢弃针对一个 IP 网段 iptables -I INPUT -p icmp --icmp-type 0 -j ACCEPT 可以接收 可以 ping 的通 iptables -I INPUT -p icmp --icmp-type 0 -j DROP 不可以接收 iptables -I INPUT -p icmp -j LOG 可以形成 log 日志 tailf /var/log/messages iptables -D INPUT 4 删除第 4 条规则
Linux内核是linux内部最核心的软件 包括过滤机制netfilter:是linux内核里面的一个模块,对进出网卡的数据进行管理 iptables给netfilter传参(人–》iptables–》netfilter)
firewalld 新式防火墙 iptables 老式防火墙 firewalld 是对iptables进行新的封装,底层仍然是是使用的是iptables的基本命令
uname -r 查看linux内核版本 防火墙是防止别人攻击,对进出的数据进行限制。防火墙不能检查病毒,查看病毒
sys和user iptables的四表五链
四表
mangle表:–》给数据打标记 nat表:–》dnat和snat 表是链的集合 表的优先级:raw–>mangle–>nat–>filter
-L list 列出来 -t 指定名字 nat 具体表的名字 iptables -t 表名 -L(查看表里的链规则)
数据包的流走机制:表是链的集合 表的优先级:raw–>mangle–>nat–>filter
#!/bin/bash
#清空iptables规则 iptables -t filter -F
#不允许其他机器ping本机,但是本机可以ping其他机器 iptables -t filter -A INPUT -p icmp --icmp-type 8 -j DROP
#不允许访问80端口 iptables -t filter -A INPUT -p tcp --dport 80 -j DROP
设置INPUT链的默认规则为DROP
iptables -P INPUT DROP
iptables -t filter -A INPUT -s 192.168.100.88 -p tcp --dport 22 -j ACCEPT
tcpdump -i ens33 -p tcp --dport 3306
#!/bin/bash
清空iptables和nat表的里面的规则
iptables -t filter -F iptables -t nat -F
设置filter表的默认策略为ACCEPT
iptables -t filter -P INPUT ACCEPT
iptables的命令选项:
-A(为追加,放到末尾) -I(指定位置添加)
可以man一下iptables查看更多信息
docker 在iptables新建自定义链
-j 有四种选项 ACCEPT DROP(直接丢弃,不给回复) REJECT(拒绝但是给回复) LOG(记录日志功能)
iptables的条件
不允许新的连接过来
总结下iptables的命令语法 [root@web-server nginx]# tcpdump -i ens33 -p icmp -n 抓包 协议: tcp 、udp、icmp、arp等网络层和传输层 -p tcp -p icmp -p arp
ip地址:源ip和目的ip
端口号: 源端口和目的端口
src port
dst port
mac地址:源mac和目的mac
=== tcpdump - dump traffic on a networt 导出网络流量的工具
src host 源主机--》源ip source
dst host 目的主机 --》目的ip destination
src net 源网段--》源ip source 192.168.10.0/24
dst net 目的网段 --》目的ip destination
=========== iptables的条件: 1.协议:tcp udp icmp -p protocol 小写的p -p icmp --icmp-type 8 ping请求报文 -p icmp --icmp-type 0 ping响应报文 2.端口号: -p tcp --sport -p tcp --dport -p udp --sport -p udp --dport -p tcp --sport 20:80 iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT 3.ip地址 -s source -d destination iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP 4.mac地址 5.状态 6.其他 -i in-interface -o out-interface
iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT ens33接口上不接收tcp三次握手的第一个包–》不允许新的连接产生了
-m 加模块 [root@localhost ~]# iptables -A FORWARD -m mac --mac-source 00:0C:29:27:55:3F -j DROP [root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT [root@localhost ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
/var/log/message(内核记录的日志)
iptables -t filter -N SWY(新建一个链) iptables -t filter -A SWY -p tcp --dport 22 -j ACCEPT (给SWY这条链加一条策略) iptables -A INPUT -p tcp --dport 22 -j SWY(INPUT链把22号端口的tcp协议给SWY这个链处理)
内核的最大并发数:1024个
如何开机让linux去加载保存的iptables配置文件? iptables-restore < /etc/sysconfig/iptables-config(手动重新加载) 开机手动执行脚本(放到/etc/rc.local里面就开机自动执行脚本)
状态机制:
ftp的连接:service先yum install vsftpd -y 再 service vsftpd start client先yum install ftp lftp -y 再ftp service的IP名 会产生一个新的传输数据的链路,且数据端口随机
lsmod(查看内核加载了哪些模块) modprobe(加载模块)
采用状态机制来开放ftp服务的iptables规则 #!/bin/bash iptables -P INPUT DROP
open ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
open ftp
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
open ftp data link
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
让linux内核加载支持ftp状态的检查的模块
modprobe nf_conntrack_ftp modprobe nf_nat_ftp
存放linux内核模块路径 /lib/modules/4.18.0-193.el8.x86_64/kernel/net/netfilter
ftp:文件传输协议–》搭建一个文件服务器–》有大量的视频,文档需要共享 linux:ftp,lftp windows:ftp://ip地址 匿名用户访问会访问到:/var/ftp/pub里(使用的是ftp用户,他的家目录就是/var/ftp/pub) 普通用户访问是到自己的家目录下 root用户是不允许访问的
ftp的主动模式: 命令链路是21号端口 数据链路是20号端口000
脚本:、 #!/bin/bash
截取出日志里面的访问root用户的ip地址
/tmp/denv_ip.txt是专门存放的iptables阻止过的黑名单
for i in $(cat /var/log/secure |awk ‘/Failed password for root/{print $11}’|sort|uniq -c |sort -nr|awk ‘{print $2}’) do if grep $i /tmp/deny_ip.txt;then echo “此ip $i 已经在iptables防火墙里阻止了” else iptables -I INPUT -s $i -p tcp --dport 22 -j DROP echo $i >> /tmp/deny_ip.txt fi done
(iptables -I INPUT 放到第一条,如果iptables -A INPUT 追加到末尾的话会被第一条规则给覆盖)
统计加排序命令:cat file |sort|uniq -c |sort -nr sort -u (去重) sort -n (排序) uniq -c (加统计相同的)
在写一个脚本clear的iptables(在规定的时间内)
grep 192.168.0.54 /var/log/secure(查看此文件里是否有此ip地址)
|