1.iptables 命令帮助参数

root@controller1:~# iptables --help
iptables v1.6.1

Usage: iptables -[ACD] chain rule-specification [options]
       iptables -I chain [rulenum] rule-specification [options]
       iptables -R chain rulenum rule-specification [options]
       iptables -D chain rulenum [options]
       iptables -[LS] [chain [rulenum]] [options]
       iptables -[FZ] [chain] [options]
       iptables -[NX] chain
       iptables -E old-chain-name new-chain-name
       iptables -P chain target [options]
       iptables -h (print this help information)

Commands:
Either long or short options are allowed.
  --append  -A chain            Append to chain
  --check   -C chain            Check for the existence of a rule
  --delete  -D chain            Delete matching rule from chain
  --delete  -D chain rulenum
                                Delete rule rulenum (1 = first) from chain
  --insert  -I chain [rulenum]
                                Insert in chain as rulenum (default 1=first)
  --replace -R chain rulenum
                                Replace rule rulenum (1 = first) in chain
  --list    -L [chain [rulenum]]
                                List the rules in a chain or all chains
  --list-rules -S [chain [rulenum]]
                                Print the rules in a chain or all chains
  --flush   -F [chain]          Delete all rules in  chain or all chains
  --zero    -Z [chain [rulenum]]
                                Zero counters in chain or all chains
  --new     -N chain            Create a new user-defined chain
  --delete-chain
            -X [chain]          Delete a user-defined chain
  --policy  -P chain target
                                Change policy on chain to target
  --rename-chain
            -E old-chain new-chain
                                Change chain name, (moving any references)
Options:
    --ipv4      -4              Nothing (line is ignored by ip6tables-restore)
    --ipv6      -6              Error (line is ignored by iptables-restore)
[!] --protocol  -p proto        protocol: by number or name, eg. `tcp'
[!] --source    -s address[/mask][...]
                                source specification
[!] --destination -d address[/mask][...]
                                destination specification
[!] --in-interface -i input name[+]
                                network interface name ([+] for wildcard)
 --jump -j target
                                target for rule (may load target extension)
  --goto      -g chain
                              jump to chain with no return
  --match       -m match
                                extended match (may load extension)
  --numeric     -n              numeric output of addresses and ports
[!] --out-interface -o output name[+]
                                network interface name ([+] for wildcard)
  --table       -t table        table to manipulate (default: `filter')
  --verbose     -v              verbose mode
  --wait        -w [seconds]    maximum wait to acquire xtables lock before give up
  --wait-interval -W [usecs]    wait time to try to acquire xtables lock
                                default is 1 second
  --line-numbers                print line numbers when listing
  --exact       -x              expand numbers (display exact values)
[!] --fragment  -f              match second or further fragments only
  --modprobe=<command>          try to insert modules using this command
  --set-counters PKTS BYTES     set the counter during insert/append
[!] --version   -V              print package version.

2.iptables 常用参数

  1. -L, --list
  • 列出所有规则链。
  • 示例:iptables -L 列出所有链的默认规则。
  1. -A, --append
  • 向指定链追加一条规则。
  • 示例:iptables -A INPUT -p tcp --dport 22 -j ACCEPT 向 INPUT 链追加一条规则,允许所有到 TCP 端口 22 的连接。
  1. -D, --delete
  • 删除链中的一条规则。
  • 示例:iptables -D INPUT -p tcp --dport 22 -j ACCEPT 删除 INPUT 链中允许 TCP 端口 22 的规则。
  1. -I, --insert
  • 在链的指定位置插入一条规则。
  • 示例:iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT 在 INPUT 链的第一条规则之前插入一条允许 TCP 端口 80 的规则。
  1. -R, --replace
  • 替换链中的一条规则。
  • 示例:iptables -R INPUT 1 -p tcp --dport 8080 -j ACCEPT 替换 INPUT 链中第一条规则为允许 TCP 端口 8080 的规则。
  1. -F, --flush
  • 删除链中的所有规则。
  • 示例:iptables -F INPUT 删除 INPUT 链中的所有规则。
  1. -N, --new-chain
  • 创建一个新的用户自定义链。
  • 示例:iptables -N MYCHAIN 创建一个名为 MYCHAIN 的新链。
  1. -X, --delete-chain
  • 删除一个用户自定义链。
  • 示例:iptables -X MYCHAIN 删除名为 MYCHAIN 的链。
  1. -P, --policy
  • 设置链的默认策略。
  • 示例:iptables -P INPUT DROP 将 INPUT 链的默认策略设置为 DROP。
  1. -j, --jump
  • 指定匹配的数据包应该跳转到的目标。
  • 示例:iptables -A INPUT -p tcp --dport 22 -j ACCEPT 匹配的数据包将被接受(ACCEPT)。

  11. -v, --verbose

  • 显示更详细的信息。这通常包括每个规则的匹配次数、数据包数、字节数等统计信息。

3.常用命令

  1.删除现有规则

iptables -F
(OR)
iptables --flush

  2.屏蔽指定的IP地址

  以下规则将屏蔽BLOCK_THIS_IP所指定的IP地址访问本地主机:

BLOCK_THIS_IP="x.x.x.x"
iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
(或者仅屏蔽来自该IP的TCP数据包)
iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

  3.允许来自外部的ping测试

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

  4.允许从本机ping外部主机

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

  5.允许环回(loopback)访问

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

  6.允许 SSH 访问

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

  7.允许 HTTP 访问

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

  8.拒绝所有其他入站连接

iptables -P INPUT DROP

  注意:这里使用了 -P INPUT DROP 来设置 INPUT 链的默认策略为 DROP,这意味着除非明确允许,否则所有入站连接都将被拒绝。