iptables防火墙策略

Linux内核是linux内部最核心的软件
包括过滤机制netfilter:是linux内核里面的一个模块,对进出网卡的数据进行管理
iptables给netfilter传参(人–》iptables–》netfilter)

firewalld 新式防火墙 iptables 老式防火墙
firewalld 是对iptables进行新的封装,底层仍然是是使用的是iptables的基本命令
uname -r 查看linux内核版本
防火墙是防止别人攻击,对进出的数据进行限制。防火墙不能检查病毒,查看病毒

iptables的四表五链:
四表:raw,mongon,nat,filter
mangle表:–》给数据打标记
nat表:–》dnat和snat
数据包的流走机制:表是链的集合 表的优先级:raw–>mangle–>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 条规则

脚本实例:

#!/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

清空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的命令语法
[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

  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阻止过的黑名单

#!/bin/bash

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地址)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值