1.周知端口
范围从0到1023
2.动态端口
从49152到65535
一般不固定分配某种服务,而是动态分配
3.注册端口
端口1024到49151,分配给用户进程或应用程序
常用端口
http 80
https 443
ftp 21
ssh 22
远程桌面 3389
mysql 3306
redis 4389
memcahce 11211
smtp 25
pop3 110
===============================
端口与防火墙
window下在
出站 入站配置
Linux下
查看
iptables -L -n
修改
vim /etc/sysconfig/iptables
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
保存后重启iptables
service iptables restart
iptables 参数说明
INPUT 入站 --dport 入站端口 -d 入站IP
OUTPUT 出站 --sport 出站端口 -s 出站IP
-j 接受类型 ACCEPT 和 DROP
-p 协议 tcp或udp 等等
多端口配置 用逗号分隔
iptables -A INPUT -p tcp --dports 21,20,25,53,80 -j ACCEPT
iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.
–syn
只匹配那些设置了SYN位而清除了ACK和FIN位的TCP包。这些包用于TCP连接初始化时发出请求;
例如,大量的这种包进入一个接口发生堵塞时会阻止进入的TCP连接,而出去的TCP连接不会受到影响。
这等于 --tcp-flags SYN,RST,ACK SYN。如果"–syn"前面有"!"标记,表示相反的意思。
–state state
这里state是一个逗号分割的匹配连接状态列表。可能的状态是:INVALID表示包是未知连接,ESTABLISHED表示是双向传送的连接,
NEW表示包为新的连接,否则是非双向传送的,而RELATED表示包由新连接开始,但是和一个已存在的连接在一起,
如FTP数据传送,或者一个ICMP错误
-m connlimit --connlimit-above n
为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃.
iptables -A INPUT -s 192.186.1.0/24 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
iptables -A INPUT -s 192.186.1.0/24 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
防止DoS攻击
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
上述例子中:
-m limit: 启用limit扩展
–limit 25/minute: 允许最多每分钟25个连接(根据需求更改)。
–limit-burst 100: 只有当连接达到limit-burst水平(此例为100)时才启用上述limit/minute限制。
负载平衡传入的网络流量
使用iptables可以实现传入web流量的负载均衡,我们可以传入web流量负载平衡使用iptables防火墙规则。
例:使用iptables nth将HTTPS流量负载平衡至三个不同的ip地址。
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443
允许来自指定网络的MySQL连接请求
很多情况下,MySQL数据库与web服务跑在同一台服务器上。有时候我们仅希望DBA和开发人员从内部网络(192.168.100.0/24)直接登录数据库,可尝试以下命令:
iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT