学习笔记-Ubuntu16.04配置iptables

1、新建规则文件
mkdir /etc/iptables
vim /etc/iptables/rules.v4

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [8:496]
#以上三条规则链的默认策略均为阻断,也就是找不到匹配规则之后的拒绝所有

#允许进入的数据包只能是刚刚我发出去的数据包的回应,ESTABLISHED:已建立的链接状态。
RELATED:该数据包与本机发出的数据包有关。比如用本机作为客户端去连接ftp服务端的时候就很有用。
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

#放行ping包
-A INPUT -p icmp -j ACCEPT

#从本地网卡进入的数据放行,-i为指定网卡入口
-A INPUT -i lo -j ACCEPT

#指定来源IP段到目的IP段的放行,可以看到以下两条都是对自身Ip的放行
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A INPUT -s 172.16.0.200/32 -d 172.16.0.200/32 -j ACCEPT

#允许服务器自己的SSH(对外部请求来说服务器是目标所以使用–dport)
-A INPUT -p tcp –dport 22 -j ACCEPT

#放行服务器网站访问端口
-A INPUT -p tcp –dport 80 -j ACCEPT
-A INPUT -p tcp –dport 443 -j ACCEPT

#指定IP来源为172.16.0.15且从eth0网卡进来的可以连接3306端口,也就是mysql
-A INPUT -s 172.16.0.15 -i eth0 -p tcp -m tcp –dport 3306 -j ACCEPT

#在FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机。
-A FORWARD -j REJECT –reject-with icmp-host-prohibited

#53端口是DNS相关,TCP和UDP都要配置
-A INPUT -p tcp -m tcp –dport 53 -j ACCEPT
-A INPUT -p udp -m udp –dport 53 -j ACCEPT

#ping包有来有回所以OUTPUT中也要设置放行
-A OUTPUT -p icmp -j ACCEPT

#同理
-A OUTPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A OUTPUT -s 172.16.0.200/32 -d 172.16.0.200/32 -j ACCEPT

#允许服务器SSH到其他机器(使用外部端口就使用–dport)
-A OUTPUT -p tcp -m tcp –dport 22 -j ACCEPT

#允许服务器自己的SSH(自已为源输出就使用–sport)
-A OUTPUT -p tcp -m tcp –sport 22 -j ACCEPT

#访问外部网站80端口(使用外部端口就使用–dport)
-A OUTPUT -p tcp -m tcp –dport 80 -j ACCEPT

#如果服务器需要访问外部网站,那么OUTPUT也需要配置53端口(使用外部端口就使用–dport)
-A OUTPUT -p tcp -m tcp –dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp –dport 53 -j ACCEPT
#如果有访问外部邮箱,那么打开邮箱相关端口(使用外部端口就使用–dport)
-A OUTPUT -p tcp -m tcp –dport 465 -j ACCEPT
-A OUTPUT -p tcp -m tcp –dport 25 -j ACCEPT
-A OUTPUT -p tcp -m tcp –dport 110 -j ACCEPT
#服务器从80和3306端口访问外面(自已为源输出就使用–sport)
-A OUTPUT -p tcp -m tcp –sport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp –sport 3306 -j ACCEPT
COMMIT

2、使防火墙生效,每次修改rules.v4后须执行生效

iptables-restore < /etc/iptables/rules.v4

3、防火墙开机启动

vim /etc/network/if-pre-up.d/iptables
#!/bin/bash
iptables-restore < /etc/iptables/rules.v4

4、添加执行权限

chmod +x /etc/network/if-pre-up.d/iptables

5、查看规则是否生效

iptables -L -n

6针对某IP进行单独开放端口可以如下配置:
如果我需要对内网某机器单独开放mysql端口,应该如下配置:

iptables -A INPUT -s 192.168.2.6 -p tcp -m tcp --dport 3306 -j ACCEPT   
iptables -A OUTPUT -s 192.168.2.6 -p tcp -m tcp --sport 3306 -j ACCEPT  

7.彻底禁止某IP访问:

#屏蔽单个IP的命令是   
iptables -I INPUT -s 123.45.6.7 -j DROP   
#封整个段即从123.0.0.1到123.255.255.254的命令   
iptables -I INPUT -s 123.0.0.0/8 -j DROP   
#封IP段即从123.45.0.1到123.45.255.254的命令   
iptables -I INPUT -s 124.45.0.0/16 -j DROP   
#封IP段即从123.45.6.1到123.45.6.254的命令是   
iptables -I INPUT -s 123.45.6.0/24 -j DROP   

8、关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

9、常用端口
21 FTP FTP 服务所开放的端口,用于上传、下载文件。
  22 SSH SSH 端口,用于通过命令行模式 远程连接 Linux 服务器或vps。
  23 Telnet Telnet 端口,用于 Telnet 远程登录服务器。
  25 SMTP SMTP 服务所开放的端口,用于发送邮件。
  80 HTTP 用于 HTTP 服务提供访问功能,例如,IIS、Apache、Nginx 等服务。您可以参阅 检查 TCP 80 端口是否正常工作 排查 80 端口故障。
  110 POP3 用于 POP3 协议,POP3 是电子邮件收发的协议。
  143 IMAP 用于 IMAP(Internet Message Access Protocol)协议,IMAP 是用于电子邮件的接收的协议。
  443 HTTPS 用于 HTTPS 服务提供访问功能。HTTPS 是一种能提供加密和通过安全端口传输的一种协议。
  1433 SQL Server SQL Server 的 TCP 端口,用于供 SQL Server 对外提供服务。
  1434 SQL Server SQL Server 的 UDP 端口,用于返回 SQL Server 使用了哪个 TCP/IP 端口。
  1521 Oracle Oracle 通信端口,服务器上部署了 Oracle SQL 需要放行的端口。
  3306 MySQL MySQL 数据库对外提供服务的端口。
  3389 Windows Server Remote Desktop Services Windows Server Remote Desktop Services(远程桌面服务)端口,可以通过这个端口远程连接服务器
  8080 代理端口 同 80 端口一样,8080 端口常用于 WWW 代理服务,实现网页浏览。如果您使用了 8080 端口,访问网站或使用代理服务器时,需要在 IP 地址后面加上 :8080。安装 Apache Tomcat 服务后,默认服务端口为 8080。
  137、138、139 NetBIOS 协议 137、138 为 UDP 端口,通过网上邻居传输文件时使用的端口。139 通过这个端口进入的连接试图获得 NetBIOS/SMB 服务。NetBIOS 协议常被用于 Windows 文件、打印机共享和 Samba。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容