目录
linux默认使用的是firewalld ,使用iptables需要安装相应的应用软件
-t:指定操作的是呢个表(raw filter mangle nat)-t 表名
-p:指定匹配的数据包协议类型
-s:指定源地址 --source address/mask
-d:指定目的地址 --destination address/mask
-i:指定数据包来自哪一个接口(input froward prerouting)--in-interface name
-o:指定数据包出口接口(input froward prerouting)--out-interface name
-L:列出指定链上的规则,没有则列出所有链上的规则(-L chain)--list [chain]
-A:在指定chain的末尾插入指定的规则,规则会被放在最后 --append chain rule-specification
-I:在链的指定位置插入一个或多条规则,rulenum为1,指在链的头部插入(也是默认) --insert chain [rulenum] rule-specification
-D:在指定的链中删除一个或多个规则
-R:替换或者修改链的规则(--R chain rulenum rule-specification)
-P:指定target
-F:清空iptables链上的所有规则
-N:创建一个新链(--new-chain chain)
-X:删除指定的链,这个链中没有使用的规则(--delete-chain [chain])
-E:给指定的链重命名(--rename-chain old-chain new-chain)
-j:满足某个条件的时候,应该执行某个动作
-h:帮助信息
iptables 涉及到5链4表
5链:规则链,有相应的规则组成
prerouting:处理前,目的地址转换
input:流入的数据包
outpt:流出的数据包
forward:需要转发的数据包
postouting:处理后,用于源地址转换
4表:规则组成的表
filter:过滤表--用于数据包的过滤
3个动作:
ACCEPT:允许访问
REJECT:拒绝访问
DROP:丢弃数据的操作
REJECT:对访问服务器的流量进行拒绝,连接会马上断开,断开之后,客户端会认为访问的服务器不存在 DROP:丢弃数据包,不反馈给客户端任何反应,客户端会因为连接会话的超时,断开
[root@localhost ~]# curl 192.168.27.120:80 curl: (7) Failed connect to 192.168.27.120:80; Connection refused
[root@localhost ~]# curl 192.168.27.120:80 curl: (7) Failed connect to 192.168.27.120:80; Connection timed out
REJECT与DROP的使用场景: REJECT:REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题; DROP:DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。 由于drop是单方面拒绝连接,所以客户端并未接受到具体信息,会导致客户端只能等到会话超时才能断开。 并且当客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路故障。
在部署防火墙时,当客户端是企业内部或者是可信任的网络的时候使用REJECT,当面临危险网络或更高级别的防火墙规则部署时使用DROP
1.安装iptables
yum install -y ptables-services.x86_64
2.使用iptables的时候需要将firewalld停止
systemctl start iptables.service
3.iptables简单的查询命令
iptables -vnL #查看iptables的详细信息 iptables -L iptables -L --line-numbers #显示当前的iptables的规则的序号 iptables -t <链名> -L #只列出查看表的规则 iptables -D <链名> 规则链的序号 iptables -F #清空岁所有的规则链
4.开启iptables使浏览器可以访问httpd
开启httpd服务 systemctl restart httpd 编写规则链 iptables -I INPUT -P tcp --dport 80 -j ACCEPT 查看是否写入规则链中 iptables -vnL 将iptables 策略规则永久写入 service iptables save 注意:默认iptables不会永久写入,当iptables重启后,iptables规则就会被清空,所以如果需要将iptables永久写入到策略规则中需要使用service iptables save 确认 curl 192.168.27.120:80
5.另一台服务器(121)不可以远程连接主机(120)
iptables -I INPUT -p tcp -s 192.168.27.121 --dport 22 -j REJECT iptables -I INPUT -p tcp -s 192.168.27.121 --dport 22 -j DROP
6.本主机不可以远程访问另一台主机
iptables -I OUTPUT -p tcp -d 192.168.27.121 --dport 22 -j REJECT
7.禁止192.168.27.121访问本主机的80端口
iptables -I INPUT -p tcp -s 192.168.27.121 --dport 80 -j REJECT
可以使用两种方法:
1.-A:始终在链的末尾插入(建议使用-A)
2.-I:始终在链的最开始端插入
-I与-A不能同时写入一条规则中
当使用-A,先允许个例,在拒绝所有 iptables -A INPUT -p tcp -s ip --dport 22 -j 动作 iptables -A INPUT -p tcp --dport 22 -j 动作 当使用-I,先拒绝所有,在允许个例 iptables -I INPUT -p tcp --dport 22 -j 动作 iptables -I INPUT -p tcp -s ip --dport 22 -j 动作
iptables -A OUTPUT -p tcp --sport xxxx:xxxx -j DROP #本主机对某个流出流量做限制,不允许此端口流出相关流量。