iptables和ip6tables用于在Linux内核中建立,维护和检查IPv4和IPv6数据包过滤器思想表。可以定义几个不同的表。每个表都包含一定数量的内置链,也可能包含人员概述的链。让我们探讨一下如何在Linux中使用Iptables管理系统防火墙。
要安装IP表,请使用以下命令-
$sudo apt-get install iptables
样本输出应如下所示–
Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: libecap3 squid-common squid-langpack Use 'sudo apt autoremove' to remove them. The following NEW packages will be installed: iptables 0 upgraded, 1 newly installed, 0 to remove and 261 not upgraded. Need to get 266 kB of archives. After this operation, 1,663 kB of additional disk space will be used. Get:1 http://in.archive.ubuntu.com/ubuntu xenial/main amd64 iptables amd64 1.6.0-2ubuntu3 [266 kB] ...........................................................................
要获取有关IP表的更多选项,请使用以下命令-
$ iptables --help
样本输出应如下所示–
iptables v1.6.0 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 chainAppend to chain --check -C chainCheck for the existence of a rule --delete -D chainDelete 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]] ..............................................................................
要显示防火墙的状态,请使用以下命令–
$ sudo iptables -L -n -v
样本输出应如下所示–
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
要启动防火墙,请使用以下命令–
$ sudo service iptables start
要停止防火墙,请使用以下命令–
$ sudo service iptables stop
要重新启动防火墙,请使用以下命令–
$sudo service iptables restart
要阻止来自IP地址的所有连接,请使用以下命令-
$ sudo iptables -A INPUT -s 100.100.100.100 -j DROP
在上述命令中,IP地址示例为100.100.100.100。
要阻止特定站点,请使用以下命令–
$ sudo iptables -A OUTPUT -p tcp -d 100.100.100.100/20 -j DROP
在上面的命令中,100.100.100.100/20是特定IP地址的端口。
例如,要阻止名为的网站www.orkut.com
,请使用以下命令行–
$ sudo whois 104.198.199.158
在上述命令中,104.198.199.158
指示Orkut.com的IP,结果应如下所示–
........................... NetRange: 104.196.0.0 - 104.199.255.255CIDR: 104.196.0.0/14NetName: GOOGLE-CLOUD NetHandle: NET-104-196-0-0-1 Parent: NET104 (NET-104-0-0-0-0) NetType: Direct Allocation OriginAS: AS15169 Organization: Google Inc. (GOOGL-2) RegDate: 2014-08-27 Updated: 2015-09-21 .................................................
复制CIDR并使用以下命令阻止orkut.com,如下所示–
$sudo iptables -A OUTPUT -p tcp -d 104.196.0.0/14 -j DROP
要保存上述规则,请使用以下命令–
$ sudo /sbin/iptables-save
样本输出应如下所示–
# Generated by iptables-save v1.6.0 on Tue Jan 24 11:14:39 2017 *filter :INPUT ACCEPT [258:45283] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [233:43953] -A INPUT -s 10.10.10.10/32 -j DROP -A OUTPUT -d 104.196.0.0/14 -p tcp -j DROP -A OUTPUT -d 104.196.0.0/14 -p tcp -j DROP COMMIT # Completed on Tue Jan 24 11:14:39 2017
要阻止传入的ping请求,请使用以下命令-
$ sudo iptables -A INPUT -p icmp -i eth0 -j DROP
要丢弃IP表中未使用的数据包,请使用以下命令-
$sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
要记录并阻止公共IP欺骗,请使用以下命令-
$sudo iptables -A INPUT -i eth1 -s 100.100.100.100/24 -j LOG --log-prefix "IP_SPOOF A:" $sudo iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
要接受来自mac地址的流量,请使用以下命令-
$sudo iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:0F:EA:91:04:07 -j ACCEPT
要阻止来自mac地址的流量,请使用以下命令-
$sudo iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP
要接受端口的开放范围,请使用以下命令-
$sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT
要将HTTP请求设置为iptables,请使用以下命令-
$ sudo iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 50 --connlimit-mask 24 -j DROP
在上面的命令中,我们给了50个请求权限。
要为每个客户端主机设置ssh连接,请使用以下命令-
$sudo iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 10 -j REJECT
在上面的命令中,我们为每个客户端主机提供了10个ssh连接。
要刷新所有IP表规则,请使用以下命令-
$ sudo iptables --flush
在以上文章中,我们了解了–了解如何在Linux中使用iptables管理系统防火墙。在我们的下一篇文章中,我们将提出更多基于Linux的技巧。继续阅读。