首页
centos
常用命令linux_系统
Centos后台运行程序命令nohup
CentOS7启用阿里源yum安装Nginx
使用清华大学yum源
使用国内yum源
Linux script(录制) 命令
Linux内核参数中的配置项
Linux 系统生成或重置机器 ID
centos7系统安装
Centos7配置开机自启动脚本
CentOS忘记密码
Linux的服务、程序
系统优化+模板制作
CentOS设置环境变量
CentOS7的systemd
Linux常用命令记录
Centos 7查看系统最近一次启动时间和运行时间
Linux命令 之 watch命令
Centos7下date怎么英文格式输出
linux 使用 rz 和 sz 上传下载文件
Linux下的压缩/解压缩
常用命令linux_文本处理
计划任务crontab
CentOS7 SElinux和防火墙Firewall
Centos firewall-cmd配置软路由
CentOS7系统中使用iptables
iptables配置
iptables基础操作
使用iptables设置端口敲门(port knocking)后转发
Centos7 SSH登录日志分析
CentOS下查看tcp的网络连接状态数 netstat + awk
CentOS7上安装 Fail2Ban防SSH爆破
Fail2Ban开启邮件告警
LDAP
文件存储
ZFS
SSH
CentOS 7 SSH配置免密码登录
CentOS7开启SSH访问配置
删除ssh客户端记录的主机密钥标识(指纹)
sshd启动失败解决
添加用户,设置sudo权限
ssh公钥、机器指纹
ssh客户端提示:找不到对应主机密钥类型
shell脚本
示例:jumpserver一键安装脚本
centos中使用ping日志记录网络通断
盘符挂载硬盘导致重启系统失败
CentOS_网络
centos路由配置
Linux 系统添加永久静态路由
centos 添加删除路由
Linux下使用TC实现网络限流
linux系统下的wifi启动不了
hosts文件配置
网络端口
Centos 网卡命名规则
Centos命令行中nmtui调用图形界面设置网卡
查看CentOS网口的使用带宽
linux抓包工具tcpdump
定时备份删除文件
定时删除n日前的文件
备份指定目录下的文件
检查定时备份是否执行
inotify+rsync实时同步
rsync+lsync
CentOS7 使用SMTP发送邮件
Centos7部署开源SSH蜜罐cowrie
Centos7磁盘相关命令
centos 7 新增硬盘 分区并挂载
centos7加硬盘给根分区扩容--lvm模式
Linux中对lvm逻辑卷分区大小的调整(针对xfs与ext4不同文件系统)
CentOS7挂载4T磁盘
Centos7_NFS
CentOS7挂载samba共享文件夹
vsftpd主动模式和被动模式
CentOS清除旧硬盘格式
CentOS磁盘读写性能测试
硬盘IO查看分析工具iostat
Linux迁移home目录到根目录-需LVM分区
使用 smartctl 命令检查硬盘的状态
lsof列出正在使用某个文件夹
/dev/disk 目录
本文档由 内网文摘 发布,转载请注明出处
-
+
首页
iptables配置
原文:[iptables详解](https://blog.csdn.net/hiolb/article/details/106334888 "iptables详解") 一、iptables介绍 iptables :包过滤防火墙,是内核防火墙netfilter的管理工具。 核心:四表五链 ``` iptables并不是真正意义上的防火墙,可以将它理解为一个客户端工具。 用户通过iptables这个客户端,将用户的安全设定执行到对应的“安全框架”--netfilter中。 netfilter才是正在的防火墙,netfilter位于内核空间。 而iptables是一个命令行工具,位于用户空间,通过这个命令行工具来操作netfilter。 netfilter/iptables组成Linux平台下的包过滤防火墙,它可以完成封包过滤、封包重定向和网络地址转换(NAT)等功能. ``` ![](/media/202205/2022-05-24_093438.png) 原文:[iptables配置](https://www.cnblogs.com/wl416896401/p/15988765.html "iptables配置") 一、名字解释 ACCEPT:允许数据包通过。 DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。 REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。 SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。 MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。 DNAT:目标地址转换。 REDIRECT:在本机做端口映射。 LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配。 二、查询 ``` iptables -t 表名 -L 查看对应表的所有规则,-t选项指定要操作的表,省略”-t 表名”时,默认表示操作filter表,-L表示列出规则,即查看规则。 iptables -t 表名 -L 链名 查看指定表的指定链中的规则。 iptables -t 表名 -v -L 查看指定表的所有规则,并且显示更详细的信息(更多字段),一般简写为iptables -t 表名 -vL。 iptables -t 表名 -n -L 查看表的所有规则,并且在显示规则时,不对规则中的IP或者端口进行名称反解,-n选项表示不解析IP地址。 iptables --line-numbers -t 表名 -L 查看表的所有规则,并且显示规则的序号 iptables -t 表名 -v -x -L 查看表中的所有规则,-x选项表示显示计数器的精确值。为了方便可以一起使用iptables --line -t filter -nvxL ``` 三、设置指定表的指定链的默认策略(默认动作) ``` 将filter表中FORWARD链的默认策略设置为ACCEPT 命令语法:iptables -t 表名 -P 链名 动作 示例:iptables -t filter -P FORWARD ACCEPT ``` 四、添加规则 ``` 在指定表的指定链的尾部添加一条规则,-A选项表示在对应链的末尾添加规则,省略-t选项时,表示默认操作filter表中的规则。 iptables -t 表名 -A 链名 匹配条件 -j 动作 示例:iptables -t filter -A INPUT -s 192.168.1.146 -j DROP 在指定表的指定链的首部添加一条规则,-I选型表示在对应链的开头添加规则。 命令语法:iptables -t 表名 -I 链名 匹配条件 -j 动作 示例:iptables -t filter -I INPUT -s 192.168.1.146 -j ACCEPT 在指定表的指定链的指定位置添加一条规则 命令语法:iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作 示例:iptables -t filter -I INPUT 5 -s 192.168.1.146 -j REJECT ``` 五、删除规则 ``` 按照规则序号删除规则,删除指定表的指定链的指定规则,-D选项表示删除对应链中的规则。 命令语法:iptables -t 表名 -D 链名 规则序号 示例:iptables -t filter -D INPUT 3 按照具体的匹配条件与动作删除规则,删除指定表的指定链的指定规则。 命令语法:iptables -t 表名 -D 链名 匹配条件 -j 动作 示例:iptables -t filter -D INPUT -s 192.168.1.146 -j DROP 删除指定表的指定链中的所有规则,-F选项表示清空对应链中的规则,执行时需三思。 命令语法:iptables -t 表名 -F 链名 示例:iptables -t filter -F INPUT 删除指定表中的所有规则,执行时需三思。 命令语法:iptables -t 表名 -F 示例:iptables -t filter -F ``` 六、修改规则 ``` 修改指定表中指定链的指定规则,-R选项表示修改对应链中的规则,使用-R选项时要同时指定对应的链以及规则对应的序号,并且规则中原本的匹配条件不可省略。 命令语法:iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作 示例:iptables -t filter -R INPUT 3 -s 192.168.1.146 -j ACCEPT 上述示例表示修改filter表中INPUT链的第3条规则,将这条规则的动作修改为ACCEPT, -s 192.168.1.146为这条规则中原本的匹配条件,如果省略此匹配条件,修改后的规则中的源地址可能会变为0.0.0.0/0。 修改指定表的指定链的默认策略(默认动作),并非修改规则 命令语法:iptables -t 表名 -P 链名 动作 示例:iptables -t filter -P FORWARD ACCEPT ``` 七、保存规则 ``` service iptables save iptables-save > /etc/sysconfig/iptables ``` 八、载入规则 ``` iptables-restore < /etc/sysconfig/iptables ``` 九、匹配条件 - 基本匹配条件 ``` -s用于匹配报文的源地址,可以同时指定多个源地址,每个IP之间用逗号隔开,也可以指定为一个网段。 #示例如下 iptables -t filter -I INPUT -s 192.168.1.111,192.168.1.118 -j DROP iptables -t filter -I INPUT -s 192.168.1.0/24 -j ACCEPT iptables -t filter -I INPUT ! -s 192.168.1.0/24 -j ACCEPT -d用于匹配报文的目标地址,可以同时指定多个目标地址,每个IP之间用逗号隔开,也可以指定为一个网段。 #示例如下 iptables -t filter -I OUTPUT -d 192.168.1.111,192.168.1.118 -j DROP iptables -t filter -I INPUT -d 192.168.1.0/24 -j ACCEPT iptables -t filter -I INPUT ! -d 192.168.1.0/24 -j ACCEPT -p用于匹配报文的协议类型,可以匹配的协议类型tcp、udp、udplite、icmp、esp、ah、sctp等(centos7中还支持icmpv6、mh)。 #示例如下 iptables -t filter -I INPUT -p tcp -s 192.168.1.146 -j ACCEPT iptables -t filter -I INPUT ! -p udp -s 192.168.1.146 -j ACCEPT -i用于匹配报文是从哪个网卡接口流入本机的,由于匹配条件只是用于匹配报文流入的网卡,所以在OUTPUT链与POSTROUTING链中不能使用此选项。 #示例如下 iptables -t filter -I INPUT -p icmp -i eth4 -j DROP iptables -t filter -I INPUT -p icmp ! -i eth4 -j DROP -o用于匹配报文将要从哪个网卡接口流出本机,于匹配条件只是用于匹配报文流出的网卡,所以在INPUT链与PREROUTING链中不能使用此选项。 #示例如下 iptables -t filter -I OUTPUT -p icmp -o eth4 -j DROP iptables -t filter -I OUTPUT -p icmp ! -o eth4 -j DROP ``` - 扩展匹配条件 ``` tcp扩展模块 常用的扩展匹配条件如下: -p tcp -m tcp –sport 用于匹配tcp协议报文的源端口,可以使用冒号指定一个连续的端口范围 -p tcp -m tcp –dport 用于匹配tcp协议报文的目标端口,可以使用冒号指定一个连续的端口范围 #示例如下 iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp --sport 22 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 22:25 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport :22 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 80: -j REJECT iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp ! --sport 22 -j ACCEPT multiport扩展模块 常用的扩展匹配条件如下: -p tcp -m multiport –sports 用于匹配报文的源端口,可以指定离散的多个端口号,端口之间用”逗号”隔开 -p udp -m multiport –dports 用于匹配报文的目标端口,可以指定离散的多个端口号,端口之间用”逗号”隔开 #示例如下 iptables -t filter -I OUTPUT -d 192.168.1.146 -p udp -m multiport --sports 137,138 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport ! --dports 22,80 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 80:88 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80:88 -j REJECT –tcp-flags 用于匹配报文的tcp头的标志位 #示例 iptables -t filter -I INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN -j REJECT iptables -t filter -I OUTPUT -p tcp -m tcp --sport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN,ACK -j REJECT iptables -t filter -I INPUT -p tcp -m tcp --dport 22 --tcp-flags ALL SYN -j REJECT iptables -t filter -I OUTPUT -p tcp -m tcp --sport 22 --tcp-flags ALL SYN,ACK -j REJECT –syn 用于匹配tcp新建连接的请求报文,相当于使用”–tcp-flags SYN,RST,ACK,FIN SYN” #示例 iptables -t filter -I INPUT -p tcp -m tcp --dport 22 --syn -j REJECT ``` 十、常用扩展模板 - iprange扩展模块 ``` 包含的扩展匹配条件如下 –src-range:指定连续的源地址范围 –dst-range:指定连续的目标地址范围 #示例 iptables -t filter -I INPUT -m iprange --src-range 192.168.1.127-192.168.1.146 -j DROP iptables -t filter -I OUTPUT -m iprange --dst-range 192.168.1.127-192.168.1.146 -j DROP iptables -t filter -I INPUT -m iprange ! --src-range 192.168.1.127-192.168.1.146 -j DR ``` - string扩展模块 ``` 常用扩展匹配条件如下 –algo:指定对应的匹配算法,可用算法为bm、kmp,此选项为必需选项。 –string:指定需要匹配的字符串 #示例 iptables -t filter -I INPUT -p tcp --sport 80 -m string --algo bm --string "OOXX" -j REJECT iptables -t filter -I INPUT -p tcp --sport 80 -m string --algo bm --string "OOXX" -j REJECT ``` - time扩展模块 ``` 常用扩展匹配条件如下 –timestart:用于指定时间范围的开始时间,不可取反 –timestop:用于指定时间范围的结束时间,不可取反 –weekdays:用于指定”星期几”,可取反 –monthdays:用于指定”几号”,可取反 –datestart:用于指定日期范围的开始日期,不可取反 –datestop:用于指定日期范围的结束时间,不可取反 #示例 iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --timestart 09:00:00 --timestop 19:00:00 -j REJECT iptables -t filter -I OUTPUT -p tcp --dport 443 -m time --timestart 09:00:00 --timestop 19:00:00 -j REJECT iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --weekdays 6,7 -j REJECT iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --monthdays 22,23 -j REJECT iptables -t filter -I OUTPUT -p tcp --dport 80 -m time ! --monthdays 22,23 -j REJECT iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --timestart 09:00:00 --timestop 18:00:00 --weekdays 6,7 -j REJECT iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --weekdays 5 --monthdays 22,23,24,25,26,27,28 -j REJECT iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --datestart 2017-12-24 --datestop 2017-12-27 -j REJECT ``` - connlimit扩展模块 ``` 常用的扩展匹配条件如下 –connlimit-above:单独使用此选项时,表示限制每个IP的链接数量。 –connlimit-mask:此选项不能单独使用,在使用–connlimit-above选项时,配合此选项,则可以针对”某类IP段内的一定数量的IP”进行连接数量的限制。 #示例 iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j REJECT iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 10 --connlimit-mask 27 -j REJECT ``` - limit扩展模块 ``` 常用的扩展匹配条件如下 –limit-burst:类比”令牌桶”算法,此选项用于指定令牌桶中令牌的最大数量, –limit:类比”令牌桶”算法,此选项用于指定令牌桶中生成新令牌的频率,可用时间单位有second、minute 、hour、day。 #示例 #注意,如下两条规则需配合使用 iptables -t filter -I INPUT -p icmp -m limit --limit-burst 3 --limit 10/minute -j ACCEPT iptables -t filter -A INPUT -p icmp -j REJECT ``` - udp和icmo扩展模块 ``` udp扩展 常用的扩展匹配条件 –sport:匹配udp报文的源地址 –dport:匹配udp报文的目标地址 #示例 iptables -t filter -I INPUT -p udp -m udp --dport 137 -j ACCEPT iptables -t filter -I INPUT -p udp -m udp --dport 137:157 -j ACCEPT #可以结合multiport模块指定多个离散的端口 icmp扩展 常用的扩展匹配条件 –icmp-type:匹配icmp报文的具体类型 #示例 iptables -t filter -I INPUT -p icmp -m icmp --icmp-type 8/0 -j REJECT iptables -t filter -I INPUT -p icmp --icmp-type 8 -j REJECT iptables -t filter -I OUTPUT -p icmp -m icmp --icmp-type 0/0 -j REJECT iptables -t filter -I OUTPUT -p icmp --icmp-type 0 -j REJECT iptables -t filter -I INPUT -p icmp --icmp-type "echo-request" -j REJECT ``` - state扩展模块 ``` --state NEW 建立新的连接 --state ESTABLISHED 已建立连接 --state RELATED 相关的 --state INVALID 无效的 iptables -t filter -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 放行已经建立连接的ip ``` 十一、自定义链 ``` 创建自定义链 #示例:在filter表中创建IN_WEB自定义链 iptables -t filter -N IN_WEB 引用自定义链 #示例:在INPUT链中引用刚才创建的自定义链 iptables -t filter -I INPUT -p tcp --dport 80 -j IN_WEB 重命名自定义链 #示例:将IN_WEB自定义链重命名为WEB iptables -E IN_WEB WEB 删除自定义链 删除自定义链需要满足两个条件 1、自定义链没有被引用 2、自定义链中没有任何规则 #示例:删除引用计数为0并且不包含任何规则的WEB链 iptables -X WEB ``` 十二、网络防火墙 ``` #如果想要iptables作为网络防火墙,iptables所在主机开启核心转发功能,以便能够转发报文。 #使用如下命令查看当前主机是否已经开启了核心转发,0表示为开启,1表示已开启 cat /proc/sys/net/ipv4/ip_forward #使用如下两种方法均可临时开启核心转发,立即生效,但是重启网络配置后会失效。 方法一:echo 1 > /proc/sys/net/ipv4/ip_forward 方法二:sysctl -w net.ipv4.ip_forward=1 #使用如下方法开启核心转发功能,重启网络服务后永久生效。 配置/etc/sysctl.conf文件(centos7中配置/usr/lib/sysctl.d/00-system.conf文件),在配置文件中将 net.ipv4.ip_forward设置为1 #由于iptables此时的角色为"网络防火墙",所以需要在filter表中的FORWARD链中设置规则。 #可以使用"白名单机制",先添加一条默认拒绝的规则,然后再为需要放行的报文设置规则。 #配置规则时需要考虑"方向问题",针对请求报文与回应报文,考虑报文的源地址与目标地址,源端口与目标端口等。 #示例为允许网络内主机访问网络外主机的web服务与sshd服务。 iptables -A FORWARD -j REJECT iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 80 -j ACCEPT iptables -I FORWARD -d 10.1.0.0/16 -p tcp --sport 80 -j ACCEPT iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 22 -j ACCEPT iptables -I FORWARD -d 10.1.0.0/16 -p tcp --sport 22 -j ACCEPT #可以使用state扩展模块,对上述规则进行优化,使用如下配置可以省略许多"回应报文放行规则"。 iptables -A FORWARD -j REJECT iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 80 -j ACCEPT iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 22 -j ACCEPT iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ``` 十三、NAT ``` 如果想要NAT功能能够正常使用,需要开启Linux主机的核心转发功能。 echo 1 > /proc/sys/net/ipv4/ip_forward SNAT相关操作 配置SNAT,可以隐藏网内主机的IP地址,也可以共享公网IP,访问互联网,如果只是共享IP的话,只配置如下SNAT规则即可。 iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -j SNAT --to-source 公网IP 如果公网IP是动态获取的,不是固定的,则可以使用MASQUERADE进行动态的SNAT操作,如下命令表示将10.1网段的报文的源IP修改为eth0网卡中可用的地址。 iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -o eth0 -j MASQUERADE DNAT相关操作 配置DNAT,可以通过公网IP访问局域网内的服务。 注:理论上来说,只要配置DNAT规则,不需要对应的SNAT规则即可达到DNAT效果。 但是在测试DNAT时,对应SNAT规则也需要配置,才能正常DNAT,可以先尝试只配置DNAT规则,如果无法正常DNAT,再尝试添加对应的SNAT规则,SNAT规则配置一条即可,DNAT规则需要根据实际情况配置不同的DNAT规则。 iptables -t nat -I PREROUTING -d 公网IP -p tcp --dport 公网端口 -j DNAT --to-destination 私网IP:端口号 iptables -t nat -I PREROUTING -d 公网IP -p tcp --dport 8080 -j DNAT --to-destination 10.1.0.1:80 iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -j SNAT --to-source 公网IP 在本机进行目标端口映射时可以使用REDIRECT动作。 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 配置完成上述规则后,其他机器访问本机的80端口时,会被映射到8080端口。 ```
local
2022年5月24日 09:34
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 LocalNetwork
LocalNetwork
是由mrdoc开源
LocalNetwork.cn
修改的在线文档系统,作为个人和小型团队的云笔记、文档和知识库管理工具。
如果此文档给你或你的团队带来了帮助,欢迎支持作者持续投入精力更新和维护!内网文摘 & LocalNetwork
>>>主页
logo
logo
下载Markdown文件
分享
链接
类型
密码
更新密码