首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要关于iptables的规则的建议

我需要关于iptables的规则的建议
EN

Ask Ubuntu用户
提问于 2016-12-09 17:17:28
回答 1查看 934关注 0票数 0

你能告诉我我的iptable脚本是否好吗?最后的规则可以防止DOS的攻击。它们有用吗?我没有服务器,我的电脑只用于上网。

这是我的剧本:

代码语言:javascript
复制
iptables -t filter -F
iptables -t filter -X
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -A INPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
or
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state ! --state INVALID -j ACCEPT
#if I want to open a port:
iptables -t filter -A INPUT -s 192.168.0.0/24 --dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -s 192.168.0.0/24 --sport 110 -j ACCEPT
#
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix   "iptables denied: " --log-level 7
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

提前谢谢。

所以我改变了剧本。

基本连接(没有服务器,没有路由器,没有DHCP,Ipv6被禁用)

我写了两个剧本。第二个,我希望,更安全。你认为如何?

脚本一:

代码语言:javascript
复制
  iptables -F
  iptables -X -t filter
  iptables -P INPUT DROP 
  iptables -P FORWARD DROP 
  iptables -P OUTPUT ACCEPT

  #lo
  iptables -A INPUT -i lo -j ACCEPT
  iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
  iptables -A OUTPUT -o lo -j ACCEPT

  #CONNECTION
  iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

  #PING ACCEPTED AND OPENING PORTS THAT I NEED
  iptables -A INPUT -p icmp --icmp-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT
  iptables -A INPUT -p tcp --dport xxxx -j ACCEPT
  iptables -A INPUT -p udp --dport xxxx -j ACCEPT

  #LOG
  iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
  iptables -A FORWARD -j LOG

脚本2(更安全):

代码语言:javascript
复制
  iptables -F
  iptables -X -t filter
  iptables -P INPUT -j DROP
  iptables -P FORWARD DROP 
  iptables -P OUTPUT -j DROP

  modprobe ip-conntrack

  #lo
  iptables -A INPUT -i lo -j ACCEPT
  iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
  iptables -A OUTPUT -o lo -j ACCEPT

  #connection
  iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
  iptables -A OUTPUT -m state ! --state INVALID -j ACCEPT

  #PING ACCEPTED AND OPENING PORTS THAT I NEED
  iptables -A INPUT -p icmp --icmp-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT
  iptables -A INPUT -d 0.0.0.0/0 -p tcp --sport xxxx -m state --state ESTABLISHED -j ACCEPT (I don't know if I must add 0.0.0.0/0 or 192.168.0.0/24)
  iptables -A INPUT -m limit --limit 7/s -j LOG

  #LOG
  iptables -A OUTPUT -m limit --limit 7/s -j LOG
  iptables -A FORWARD -m limit --limit 7/s -j LOG

提前谢谢。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2016-12-30 17:26:03

这个答案是针对第二组脚本中的第2号脚本的。

首先:在这里发布之前,请至少尝试加载您的脚本,并整理语法。

  • 您仍然在引用一个名为"filter“的表,该表并不存在。
  • 没有必要强制加载模块,它们一旦引用就会自动加载。
  • 我建议对每一行日志都使用唯一的日志前缀,因为这样可以更容易地将日志条目与脚本位置关联起来,以便进行调试,并且非常清晰。
  • 没有必要在您的特定端口行中指定目的地地址,但是您不希望使用dport而不是体育吗?
  • 无论如何,没有必要使用该行,因为以前的、更通用的、已建立的行意味着规则将永远不会被击中。
  • 我不知道你是否会有麻烦,只使用已建立,而不是相关,建立。
  • 如前所述,您不需要任何前向规则,但我知道您可能只是想记录它,以防万一。
  • 对于你的平的东西,我不清楚你是否会达到你的目标,虽然我承认我不知道你的目标是什么。我仍然能像你一样用洪水淹没电脑。也许您需要专门处理另一条路径,即不触发规则的路径。看看我做了什么。

所以,我要做的是:

代码语言:javascript
复制
#!/bin/sh
# See: http://askubuntu.com/questions/858878/i-need-advice-for-iptables-rules

iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

#lo
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
iptables -A OUTPUT -o lo -j ACCEPT

#PING ACCEPTED AND OPENING PORTS THAT I NEED
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

#connection
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state ! --state INVALID -j ACCEPT

#LOG
iptables -A INPUT -m limit --limit 7/s -j LOG --log-prefix "ICATCH:" --log-level info
iptables -A OUTPUT -m limit --limit 7/s -j LOG --log-prefix "OCATCH:" --log-level info
iptables -A FORWARD -m limit --limit 7/s -j LOG --log-prefix "FCATCH:" --log-level info

到目前为止,给出的是:

代码语言:javascript
复制
$ sudo iptables -v -x -n -L
Chain INPUT (policy DROP 218 packets, 21841 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       0        0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
       0        0 REJECT     all  --  !lo    *       0.0.0.0/0            127.0.0.0/8          reject-with icmp-port-unreachable
       5      420 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8 limit: avg 1/sec burst 1
     329    27636 DROP       icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8
    3081   206772 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state ESTABLISHED
     213    21380 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 7/sec burst 5 LOG flags 0 level 6 prefix "ICATCH:"

Chain FORWARD (policy DROP 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       0        0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 7/sec burst 5 LOG flags 0 level 6 prefix "FCATCH:"

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       0        0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0
    5726  7988360 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ! state INVALID
       0        0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 7/sec burst 5 LOG flags 0 level 6 prefix "OCATCH:"
票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/858878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档