linux下IPTABLES配置详解(转)

[root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则

让我们来看看。

[En]

Let’s take a look.

[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

现在什么都没有了,就像我们安装Linux时没有启动防火墙一样。(顺便说一下,这些配置就像用命令配置IP一样,重启将失去作用。)如何省钱。

[En]

There’s nothing left, just like we didn’t start the firewall when we installed linux. (by the way, these configurations are like configuring IP with commands, restarting will lose its effect.) how to save.

[root@tp ~]#/etc/rc.d/init.d/iptables save

因此,您可以将其写入/etc/sysconfig/iptabLes文件中。记得在写完后重新启动防火墙才能工作。

[En]

So you can write it in the / etc/sysconfig/iptables file. Remember to restart the firewall after writing in order to work.

[root@tp ~]# service iptables restart

既然iptabLes配置表中没有配置,我们就开始配置吧。

[En]

Now that there is no configuration in the IPTABLES configuration table, let’s start our configuration.

(3)设定预设规则

[root@tp ~]# iptables -p INPUT DROP

[root@tp ~]# iptables -p OUTPUT ACCEPT

[root@tp ~]# iptables -p FORWARD DROP
上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包

而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.

可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.

这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP.

注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则.

怎么办,去当地运营吧!

[En]

What to do, go to the local operation!

(4)添加规则.

首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链

为了能采用远程SSH登陆,我们要开启22端口.

[root@tp ~]# iptables -A INPUT -p tcp –dport 22 -j ACCEPT

[root@tp ~]# iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT (注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.

其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:

[root@tp ~]# iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT ,其他同理.)

如果做了WEB服务器,开启80端口.

[root@tp ~]# iptables -A INPUT -p tcp –dport 80 -j ACCEPT
如果做了邮件服务器,开启25,110端口.

[root@tp ~]# iptables -A INPUT -p tcp –dport 110 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp –dport 25 -j ACCEPT
如果做了FTP服务器,开启21端口

[root@tp ~]# iptables -A INPUT -p tcp –dport 21 -j ACCEPT

[root@tp ~]# iptables -A INPUT -p tcp –dport 20 -j ACCEPT

如果做了DNS服务器,开启53端口

[root@tp ~]# iptables -A INPUT -p tcp –dport 53 -j ACCEPT

如果你已经做了其他服务器,你需要打开哪个端口,只需写出来。

[En]

If you have made other servers, which port you need to open, just write it.

上面写的主要是输入链,所有不在上面规则中的都被丢弃。

[En]

What is written above is mainly INPUT chain, and all those that are not in the above rules are DROP.

允许icmp包通过,也就是允许ping,

[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)

[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)

接下来编写输出链,输出链的默认规则是Accept,所以我们编写需要丢弃的链。

[En]

Next write the OUTPUT chain, the default rule of the OUTPUT chain is ACCEPT, so we write the chain that needs DROP.

减少不安全的端口连接

[root@tp ~]# iptables -A OUTPUT -p tcp –sport 31337 -j DROP

[root@tp ~]# iptables -A OUTPUT -p tcp –dport 31337 -j DROP

一些特洛伊木马程序在端口31337到31340(黑客语言中的精英端口)上扫描服务。由于合法服务不使用这些非标准端口进行通信,因此阻止这些端口可以有效地减少网络上可能受感染的计算机与其远程主服务器独立通信的机会。

[En]

Some Trojans scan for services on ports 31337 to 31340 (the elite port in the hacker language). Since legitimate services do not use these non-standard ports to communicate, blocking these ports can effectively reduce the chances of potentially infected machines on your network communicating independently with their remote master servers.

还有其他端口,如:31335、27444、27665、20034 NetBus、9704、137139(SMB)、2049(网络文件系统)端口也应该被禁止,我在这里写的还不完整,有兴趣的朋友请查看相关信息。

[En]

There are also other ports, such as: 31335, 27444, 27665, 20034 NetBus, 9704, 137139 (smb), 2049 (NFS) ports should also be prohibited, I write here is not complete, interested friends should check the relevant information.

当然出入更安全的考虑你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加

允许SSH登陆一样.照着写就行了.

下面写一下更加细致的规则,就是限制到某台机器

如:我们只允许192.168.0.3的机器进行SSH连接

[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp –dport 22 -j ACCEPT

如果您想允许或限制一段IP地址,您可以使用192.168.0。0。

[En]

If you want to allow or restrict a segment of IP address, you can use 192.168.0. 0.

24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了.

-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.

或通过命令:

[En]

Or by command:

[root@tp ~]# iptables -D INPUT -p tcp –dport 22 -j ACCEPT

然后保存,我再说一遍,而不是通过命令,它只在那时生效,如果你想重新启动它,你必须保存它。写入/etc/sysconfig/iptabLes文件。

[En]

Then save, I say again, instead by command, which only takes effect at that time, and if you want to restart it, you have to save it. Write to the / etc/sysconfig/iptables file.

[root@tp ~]#/etc/rc.d/init.d/iptables save

这样写!192.168.0.3表示除IP地址192.168.0.3以外的其他地址

[En]

Write this way! 192.168.0.3 means except for the ip address of 192.168.0.3

其他常规连接也是如此。

[En]

The same is true for other regular connections.

在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控.

开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)

[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state –state RELATED,ESTABLISHED -j ACCEPT

[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT

丢弃坏的TCP包

[root@tp ~]#iptables -A FORWARD -p TCP ! –syn -m state –state NEW -j DROP

处理IP碎片数量,防止攻击,允许每秒100个

[root@tp ~]#iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT

设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.

[root@tp ~]#iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT

我只允许ICMP数据包在前面通过,因为我在这里有限制。

[En]

I only allow ICMP packets to pass in front because I have restrictions here.

二,配置一个NAT表放火墙

1,查看本机关于NAT的设置情况

[root@tp rc.d]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all — 192.168.0.0/24 anywhere to:211.101.46.235

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

我的NAT已经配置好(只提供最简单的代理访问功能,没有添加防火墙规则)。有关如何配置NAT,请参阅我的另一篇文章

[En]

My NAT has been configured (only provides the simplest proxy access function, has not added firewall rules). Refer to my other article on how to configure NAT

当然,如果您尚未配置NAT,则不必清除规则,因为默认情况下NAT没有任何内容。

[En]

Of course, if you haven’t configured NAT, you don’t have to clear the rules, because NAT has nothing by default.

如果你想清除,命令是

[root@tp ~]# iptables -F -t nat

[root@tp ~]# iptables -X -t nat

[root@tp ~]# iptables -Z -t nat

2,添加规则

添加基本的NAT地址转换,(关于如何配置NAT可以看我的另一篇文章),

添加规则,我们只添加DROP链.因为默认链全是ACCEPT.

防止外网用内网IP欺骗

[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)

Original: https://www.cnblogs.com/qq78292959/p/5101394.html
Author: 一个人的天空@
Title: linux下IPTABLES配置详解(转)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/7083/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部