首页 > 系统相关 >iptables简单配置

iptables简单配置

时间:2023-02-20 09:55:05浏览次数:29  
标签:iptables 配置 -- REJECT DROP 简单 ICMP

1. 什么是iptables?

iptables 是 Linux 防火墙工作在用户空间的管理工具,是 netfilter/iptablesIP 信息包过滤系统是一部分,用来设置、维护和检查 Linux 内核的 IP 数据包过滤规则。

2. iptables常用参数

2.1 常用参数介绍

  • iptables -A 将一个规则添加到链末尾
  • iptables -D 将指定的链中删除规则
  • iptables -F 将指定的链中删除所有规则
  • iptables -I 将在指定链的指定编号位置插入一个规则,默认添加位置为第一行
  • iptables -L 列出指定链中所有规则
  • iptables -t nat -L 列出所有NAT链中所有规则
  • iptables -N 建立用户定义链
  • iptables -X 删除用户定义链
  • iptables -P 修改链的默认设置,如将iptables -P INPUT DROP (将INPUT链设置为DROP)

2.2 常用规则介绍

  • --dport 指定目标TCP/IP端口 如 –dport 80
  • --sport 指定源TCP/IP端口 如 –sport 80
  • -p tcp 指定协议为tcp
  • -p icmp 指定协议为ICMP
  • -p udp 指定协议为UDP
  • -j DROP 拒绝
  • -j ACCEPT 允许
  • -j REJECT 拒绝并向发出消息的计算机发一个消息
  • -j LOG 在/var/log/messages中登记分组匹配的记录
  • -m mac –mac 绑定MAC地址
  • -m limit –limit 1/s 1/m 设置时间策列
  • -s 10.10.0.0或10.10.0.0/16 指定源地址或地址段
  • -d 10.10.0.0或10.10.0.0/16 指定目标地址或地址段
  • -s ! 10.10.0.0 指定源地址以外的

3. 配置之前注意事项

3.1 增加保险

如果对iptables不太熟悉,请先配置一个防火墙策略的清除策略,以防配置失误时,无法登录系统。

# 1. 创建清除策略脚本
vi iptables.sh
source /etc/profile
iptables -F
# 2. 增加可执行权限
chmod +x iptables.sh
# 3. 将脚本配置进计划任务中,5分钟或10分钟执行一次
# 3.1 配置执行脚本
*/10 * * * * sh /root/iptables.sh
# 3.2 双保险,以防脚本执行失败
*/10 * * * * /sbin/iptables -F

3.2 白名单模式配置前需知

白名单模式就是只允许放行的策略通过,其余策略均拒绝(DROP 或者 REJECT)。
所以,在配置DROP或REJECT之前,一定先配置好ssh允许访问的策略,如果没有配置好,则会导致无法远程登录,如果人不在机房,只能通知机房人员远程操作或者重启服务器(在未保存的情况下,策略重启会消失)

4. 常用配置命令

4.1 在配置前须配置的策略

下文中的192.168.1.1地址为示例地址,请根据自己的需求调整。

# 白名单模式配置如下
# 允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# 配置ssh远程登录端口
iptables -A INPUT -s 192.168.1.1 -p tcp --dport 22 -j ACCEPT
# 最后再配置拒绝登录(一定注意,在配置下面这条策略前,该打开的端口都打开了!!!否则会影响应用的访问)
iptables -A INPUT -j DROP
# 配置出站规则全部允许(偷懒的做法,无法判断安全性)
iptables -A OUTPUT -j ACCEPT

4.2 其它配置

# 当配置了白名单后,需要新增策略时,就不能使用参数-A了。
# 因为防火墙是从上向下查找策略的,当查找到符合规则的策略时,就会直接返回,不会再向下执行下面的策略。
# 由于-A是在最后一行增加策略,所以使用-A增加的策略会加到iptables -A INPUT -j DROP之后,就不会生效。

# 对某个地址开放所有端口
iptable -I INPUT -s 192.168.1.1 -j ACCEPT
# 开放一个端口,任意地址都可访问此端口,如80端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
# 将策略添加到指定位置,原来的策略会顺序下移
iptables -I INPUT 10 -p tcp --dport 80 -j ACCEPT
# 禁止全部ping操作
iptables -I INPUT 1 -p icmp --icmp-type echo-request -j DROP
# 只允许某ip可以ping操作(禁止的话把ACCEPT改为DROP或REJECT即可)
iptables -I INPUT -p icmp --icmp-type echo-request -s 192.168.1.1 -j ACCEPT

5. DROP与REJECT的区别

5.1 REJECT动作

REJECT动作会返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。
连接马上断开,Client会认为访问的主机不存在。
REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。

5.2 DROP动作

DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。
至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合:

5.3 DROP与REJECT对比

  • REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;
  • DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能
    会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路故障。

5.4 DROP与REJECT配置建议

  • 在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;
    而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长。

6. 修复漏洞使用的策略

6.1 漏洞名称:允许Traceroute探测

解决方法:在防火墙出站规则中禁用echo-reply(type 0)、time-exceeded(type 11)、destination-unreachable(type 3)类型的ICMP包。

# 我在配置此策略后,漏扫设备还是可以扫描到此漏洞,无法确定是误报还是未生效
# 配置进站规则(漏扫设备说在出站规则中禁用,但我出入站都配置了还是会扫到此漏洞)
iptables -I OUTPUT -s 10.1.250.221 -p ICMP --icmp-type time-exceeded -j DROP
iptables -I OUTPUT -s 10.1.250.221 -p ICMP --icmp-type echo-reply -j DROP
iptables -I OUTPUT -s 10.1.250.221 -p ICMP --icmp-type destination-unreachable -j DROP
# 配置出站规则
iptables -I OUTPUT -s 10.1.250.221 -p ICMP --icmp-type time-exceeded -j DROP
iptables -I OUTPUT -s 10.1.250.221 -p ICMP --icmp-type echo-reply -j DROP
iptables -I OUTPUT -s 10.1.250.221 -p ICMP --icmp-type destination-unreachable -j DROP

6.2 漏洞名称:ICMP timestamp请求响应漏洞

# 配置进站规则
iptables -I INPUT -s 10.1.250.221 -p ICMP --icmp-type timestamp-request -j DROP
# 配置出站规则
iptables -I OUTPUT -s 10.1.250.221 -p ICMP --icmp-type timestamp-request -j DROP

标签:iptables,配置,--,REJECT,DROP,简单,ICMP
From: https://www.cnblogs.com/smyz/p/17136342.html

相关文章