1· 如果centos7有安装firewalld防火墙及其他防火墙先关掉或者卸载掉,没有就忽略。
关闭firewalld
systemctl stop firewalld
安装iptables
yum install -y iptables
启动iptables
systemctl start iptables.service
停止iptables
systemctl stop iptables.service
设置开机自启
systemctl enable iptables.service
关闭开机自启
systemctl disable iptables.service
2· 用下面的命令先放行ssh的22端口,(一般默认都放行的)。
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
3· iptables的表和链
配置iptables时,不指定表,就是使用filter表。
可以向规则链中加入很多规则,数据包进入该链时,从上向下匹配,匹配即停止,开始应用规则。如果全都不匹配,则应用默认规则。
4· 查看iptables默认规则,(--line 列出序号)。
iptables -nL --line
filter中的三条链
• INPUT:(入站)数据包的目标地址是自己,则进入INPUT链
• OUTPUT:(出站)数据包的源地址是自己,则进入OUTPUT链
• FORWARD:(转发)数据包穿过自己,则进入FORWARD链
常用的ACTION:
DROP:丢弃
REJECT:明示拒绝
ACCEPT:接受
如下图,默认都是ACCEPT
– 可以设置默认拒绝,然后明确允许
– 也可以设置默认允许,然后明确拒绝
注意:通过ssh连接的话,一定要先用上面的命令先把22放行,才执行下面的命令。
设置INPUT链默认拒绝,然后明确允许。
iptables -P INPUT DROP
5· 在INPUT链放行某个端口示例,比如放行TCP80端口,
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
6· 在INPUT链放行某个端口示例,比如放行UDP4500端口,
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
7· 在INPUT链删除某一条规则示例,比如删掉下图的TCP80端口。
iptables -D INPUT 5
然后再查询iptables规则,TCP80就没有了。
iptables -nL --line
8· iptables -A INPUT 是添加规则到链的结尾。
9· iptables -I INPUT 2 指定位置插入规则,插入到规则链的第2条,越靠前的规则优先级越高。
10· 插入一条规则示例,比如将TCP80插入到INPUT链的第一条。
iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
11· 禁ping的示例,将规则插到INPUT链的第一条,DROP是直接丢弃。就ping不通了。
iptables -I INPUT 1 -p icmp -j DROP
12· 允许ping的示例,将规则插到INPUT链的第一条,ACCEPT是接受。就可以ping通。
iptables -I INPUT 1 -p icmp -j ACCEPT
13· 匹配网络状态,发出的数据然后返回给你数据也得允许进入。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
14· 放行多个端口或者连续的端口,比如放行不连续的端口22,80,443,8000,放行连续端口500:600端口(放行500到600之间的连续端口)
iptables -A INPUT -p tcp -m multiport --dport 22,80,443,8000,500:600 -j ACCEPT
15· 保存iptables配置,如果不保存,重启机器或者重启iptables后之前添加的规则就没有了。
service iptables save
评论 (0)