iptables简单操作

启动、停止iptables,命令的格式,以及增减规则的操作。

CentOS系统默认使用firewalld防火墙,两者不能同时使用。

在某些低配vps中,内存容量不够大,cpu也很烂,可以考虑用iptables,可以节省约30M内存和部分cpu。

如果安装了firewalld要先卸载,否则起冲突只能运行firewalld:

systemctl stop firewalld
systemctl disable firewalld
yum remove firewalld

安装iptables和ipset的服务,否则开机不能自启动:

yum install iptables-services ipset-service -y

设置iptables和ipset开机启动(iptables服务含ip6tables):

systemctl enable iptables
systemctl enable ip6tables
systemctl enable ipset

启动iptables ip6tables ipset:

systemctl start iptables
systemctl start ip6tables
systemctl start ipset

获取当前的防火墙规则:

iptables -nvL

可以获得默认的防火墙规则:

这里面的规则可以全部自定义,但是要了解的东西很多,建议熟悉了iptables的规则后再自己定制。

自己定制iptables规则,要知道需要过滤的IP地址、端口号,协议信息。iptables里的规则只能匹配一次,匹配到了就按照对应的动作执行放行、丢弃、回绝还是别的。

如果没有规则被匹配到,就用默认策略(即policy ACCEPT)!

如果输入的iptables命令里没有指定IP地址、端口号,协议,那默认就是全部匹配(全部IP地址、全部端口号,全部协议)。

iptables常用的动作:
ACCEPT(接受)
REJECT(回绝)
DROP(扔掉)

例如,改了SSH端口后需要在防火墙里放行新的端口:

iptables -I INPUT -p tcp --dport 60000 -j ACCEPT
iptables命令后面跟着如何操作链:
-I(大写的i)意思是插入,默认为插入到链的最前面,在链的名字后面可以跟个数字指定插入到第几行;
-A                      意思是附加在链的最后面;
-D                      意思是删除,链名后可以跟个数字表示删除第几行;
-R                      意思是替换,链名后面跟这一个数字表示替换第几行;
-F                      意思是删除链里面的所有规则;
-Z                      将链的计数器归零。

上面的参数后面必须跟着链名,链名后面再跟数字!

例如:

iptables -D INPUT 4

意思是删除filter表的input链的第四行。

显示规则的行号(加入–line参数):

iptables -nvL --line

就会在最左边(num)显示行号:

iptables指定IP地址、端口号、动作和协议的参数:

-d        目的地IP地址,不指定就默认目的地是本机。
--dport   目的地端口号(一般指本机想要开放的端口)
-s        源IP地址(即客户端的IP),可用于制作白名单
--sport   源端口号(即客户端的端口号),可做特殊的过滤
-p        协议,可以为tcp、udp、icmp
-j        执行动作(DROP、ACCEPT、REJECT等)

例如,将SSH端口号改成60000后要添加允许60000端口并将原来的22端口封掉:

先添加60000端口(SSH使用TCP协议):

iptables -I INPUT -p tcp --dport 60000 -j ACCEPT

列出所有规则后是这样:

然后删除原先的规则,可以按照行号删,但是千万注意
删之前看一下行号别删错,不然可能会被关在外面!

上面22端口所在规则的行号为5,删除就好:

iptables -D INPUT 5

最终结果:

保存iptables规则重启不会丢失:

service iptables save

关闭iptables、ip6tables和ipset:

systemctl stop iptables
systemctl stop ip6tables
systemctl stop ipset

当然了,以上操作是绝对不够的,还要学习更多才能加固你的系统!

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注