php动态网站模板/福建seo搜索引擎优化
前言
某天看见某内网服务器上有一些ptables转发规则,突然就想要总结一下iptables。。。
iptables的应用环境
简述一下了解到的目前 部分 公司 基本的安全措施:
<1>cisco、华为…硬件防火墙保护网络安全、安全策略、异常流量监控 (云服务器:安全组,云盾)
<2>jumpserver/堡垒机限制用户登录权限,操作记录 (云服务器:分配子账号进行权限控制)
<3>tcp_warpper对ssh,ftp等服务提供访问控制,iptables/firewalld进行数据包过滤 (云服务器:安全组)
<4>网络安全工程师或第三方网络安全公司 扫描网站,服务器排查漏洞和病毒 (云服务器:云盾,购买漏洞扫描服务)
<5>网站服务方面配置waf或直接使用openresty(云服务器:云waf或服务)
当然还有部分公司对安全更加重视,做的措施更多。
虽然现在大部分情况下用云服务器有安全组,用IDC服务器的有专门的网络安全工程师和硬件防火墙,基本上来说已经保障了安全。由于iptables配置的复杂性,导致开启了配置,安全虽然得到保障,但是大多数情况会因为某条配置(网络)的问题,导致服务的异常,且还得花费一定的时间进行排查(排除困难),有大并发时还会影响性能?因此当有外部的防火墙(硬件防火墙/安全组)使用,且服务器处于 内网环境 时,基本上都是对selinux及防火墙进行关闭,很少会配置iptables/firewalld防火墙,仅使用tcp_warpper和jumpserver/堡垒机等方式进行访问和登录的限制,通常情况下内网中 不对外网提供服务的 服务器基本上更不会去配置iptables。
当然还有少?部分情况,某个业务指定要使用某公司的云平台。 为了安全不同的服务分给了不同的公司,公司之间服务或数据的对接有可能走的外网或云平台内网,这时就可能需要使用iptables限制其他的ip访问了。
看上去似乎没有介绍iptables/firewalld的必要了,为什么还是要整理呢?
<1>使用Linux的人通常都会介绍一下iptables;
<2>部分企业和部门的确会需要配置一些iptables进行限制,对他们来说越安全越好(这个是看需求,等保有需求的话,得配置一点);
<3>需要iptables的部分功能。iptables并不是真正的防火墙,只是一个位于用户空间中的命令行工具(防火墙工具),我们利用这个软件操作netfilter内核模块,对数据包(流量)完成封包过滤、封包重定向和网络地址转换(NAT)等功能。我们通常用它来做网络地址转换,对于更需要保障安全性的服务器,实际上还是会使用防火墙功能的,当然配置的规则需要简单有效。
<4>当你在k8s或其他使用了iptables的环境时,可以尽快解决iptables引起的问题。
iptables使用汇总
如果使用iptables要对 登陆端口 的访问进行限制,建议在主机上先设置放开你的ip地址或网段对主机的访问
iptables是由上而下的进行规则匹配,放行规则需在禁行规则之前才能生效
<1>停止防火墙
/etc/init.d/iptables stop
or
service iptables stop
<2>查看防火墙状态
service iptables status
<3>永久关闭防火墙
chkconfig iptables off
<4>永久关闭后重启
chkconfig iptables on
<5>查看iptables版本
iptables -V
<6>保存iptables设置
如不保存。重启后,iptables配置会丢失
service iptables save
<7>清除防火墙默认规则
iptables -F
<8>清除防火墙自定义链
iptables -X
<9> 清空iptables计数器信息
iptables -Z
备注:通常清除iptables规则时, 7,8,9一起使用
<10>查询规则(以数字的方式显示一个链或所有链中的规则信息)
iptables -nL
<11>查询规则(可以显示规则序号,便于删除)
iptables -L -n --line-number
<12>根据行号清除某条规则
iptables -D INPUT 3
iptables -D FORWARD 2
<13>查看nat表规则
iptables -t nat -nL --line-number
<14>删除nat表中postrouting的第二条规则
iptables -t nat -D POSTROUTING 2
<15>清空nat表POSTROUTING所有规则
iptables -t nat -F POSTROUTING
<16>iptables规则导出
将规则导入一个文件
iptables-save > iptables.txt
<17>iptables规则导入
将导出的规则再次导入
iptables-restore iptables.txt
or
iptables-restore < iptables.txt
<18>防止远程配置规则时被踢出
iptables -t filter -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
<19>iptables默认规则配置
(根据需求配置,ACCEPT允许,DROP丢弃)
不允许进入(会导致远程连接的主机即无法连接,也无法上网)
iptables -P INPUT DROP允许转发
iptables -P FORWARD ACCEPT允许出
iptables -P OUTPUT ACCEPT
备注:
<1>使用第一条的前提。如果是在远程主机上操作,要先设置主机放开某一网段或ip对远程端口的访问。
设置完成,执行此命令后,禁止iptables -F清除规则,这样只会清除已配置好的ip,导致无法连接
<2>当执行第一条命令后,远程无法连接,请登陆主机或控制台执行如下命令先放开,再放开你网段对登陆端口的访问
iptables -P INPUT ACCEPT
<20>禁止其他主机ping此服务器
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A OUTPUT -p icmp --icmp-type 0 -j DROP
<21>禁止此服务器ping其他主机
iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp --icmp-type 0 -j DROP
<22>禁止icmp
既禁止其他主机ping此服务器,又禁止此服务器ping其他主机
iptables -A INPUT -p icmp -m icmp --icmp-type any -j DROP
iptables -A OUTPUT -p icmp -m icmp --icmp-type any -j DROP
<23>仅允许某IP或网段访问22端口
由于模式是filter表,不加-t filter也可,-t为指定表
允许某ip访问22端口
iptables -t filter -A INPUT -s 192.168.1.2 -p tcp --dport 22 -j ACCEPT禁止某网段访问22端口
iptables -t filter -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j DROP禁止 不是某ip的ip地址访问22端口
iptables -t filter -A INPUT ! -s 192.168.1.2 -p tcp --dport 22 -j ACCEPT
<24>允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
<25>允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
<26>当访问80端口的连接数达到100后,开始限制为最多允许每分钟25个链接(防止cc攻击)
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
<27>放开指定端口
iptables -A INPUT -p tcp -m multiport --dport 25,80,3306,443 -j ACCEPT
<28>禁止某IP或网段对多个端口的访问
禁止192.168.1.0网段ip访问80-3306的所有端口
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 80:3306 -j DROP禁止192.168.1.0网段ip访问22,25,3306端口
iptables -A INPUT -s 192.168.1.0/24 -m multiport -p tcp --dport 22,25,3306 -j DROP
<29>限制单个ip的并发访问(防止cc攻击)
和第26条类似,这是对单个ip或地址段进行限制
(通常使用第26条即可。如果发现某ip短时间内大量的建立连接,有可能是攻击,使用第28条,对此ip限制)
对192.168.1.8访问85端口建立连接的数量进行限制,最大数量为10个
iptables -I INPUT -p tcp --dport 85 -s 192.168.1.8 -m connlimit --connlimit-above 10 -j REJECT
备注:
关于-I和-A的区别 可以这样理解-I的规则默认会配置到最前面,也可以将规则插入指定的行 -A的规则是追加在最后一条规则的后面
<30>路由转发
使一台内网的服务器通过内网另外一台可访问外网的服务器,访问外网。
仅为示例:
A主机 内网eth1 192.168.1.121
B主机 内网eth1 192.168.1.111 外网eth0 10.10.30.51、B主机开启路由转发功能
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p2、A主机添加路由
route add default gw 192.168.1.1113、B主机添加SNAT规则
(将192.168.1.0/24网段的数据包的 源地址/出口IP 替换为eth0网口的10.10.30.5)
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j SNAT --to 10.10.30.5(实际上当你的网卡的ip并非固定,而是自动变化的。需要使用MASQUERADE,地址伪装,它会自动读取eth0现在的ip地址然后做snat出去)
iptables-t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE4、保存并重启iptables
service iptables save
/etc/init.d/iptables restart