1. linux防火墙开放端口命令给指定ipCentOSLinux防火墙添加端口开放
首先可以查看有哪些端口是开放状态:
netstat -ntplCentos 7.0 之前的版本,防火墙用的是 iptables,7.0 之后使用 firewalld 代替了 iptables,那么我们来分别看看这两种防火墙的命令操作:
iptables
1. 查看防火墙状态
systemctl status firewalld
service iptables status
2. 暂时关闭防火墙
systemctl stop firewalld
service iptables stop
3. 永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
4. 重启防火墙
systemctl enable firewalld
service iptables restart
5. 开放指定端口
编辑文件: vi /etc/sysconfig/iptables
添加开放端口:iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT
保存配置:service iptables save
重启防火墙:service iptables restart
firewalld
1. 查看防火墙状态
systemctl status firewalld
firewall-cmd --state
2. 启动防火墙
systemctl start firewalld
3.禁用防火墙
systemctl stop firewalld
4.设置开机启动
systemctl enable firewalld
5.停止并禁用开机启动
sytemctl disable firewalld
6.重启防火墙
systemctl restart firewalld.service
firewall-cmd --reload
7. 开放指定端口
添加端口: firewall-cmd --zone=public --add-port=端口号/tcp --permanent
重启防火墙:systemctl restart firewalld.service
2. CentOS Linux防火墙配置及关闭方法
偶然看到防火墙的配置操作说明,感觉不错。执行”setup”命令启动文字模式配置实用程序,在”选择一种工具”中选择”防火墙配置”,然后选择”运行工具”按钮,出现防火墙配置界面,将”安全级别”设为”禁用”,然后选择”确定”即可.
或者用命令:
#/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
#/sbin/iptables -I INPUT -p tcp –dport 22 -j ACCEPT
#/etc/rc.d/init.d/iptables save
这样重启计算机后,防火墙默认已经开放了80和22端口
这里应该也可以不重启计算机:
#/etc/init.d/iptables restart
防火墙的关闭,关闭其服务即可:
查看防火墙信息:
#/etc/init.d/iptables status
关闭防火墙服务:
#/etc/init.d/iptables stop
永久关闭?不知道怎么个永久法:
#chkconfig –level 35 iptables off
看了好几个页面内容都有错,下面是正确方法:
#/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
#/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
然后保存:
#/etc/rc.d/init.d/iptables save
再查看是否已经有了:
[root@vcentos ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:80
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
服务器遭受到大量的大量SYN_RECV,80端号占死,网站打不开
没有硬防
有什么办法可以解决吗
1
sysctl -w net.ipv4.tcp_syncookies=1 #启用使用syncookies
sysctl -w net.ipv4.tcp_synack_retries=1 #降低syn重试次数
sysctl -w net.ipv4.tcp_syn_retries=1 #降低syn重试次数
sysctl -w net.ipv4.tcp_max_syn_backlog=6000 #最大半连接数
sysctl -w net.ipv4.conf.all.send_redirects=0
sysctl -w net.ipv4.conf.all.accept_redirects=0 #不接受重定向的icmp????br /sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_keepalive_time=60
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.ipv4.icmp_echo_ignore_all=1 #禁止ICMP
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 #ICMP禁止广播
2.限制单位时间内连接数
如
iptables -N syn-flood
iptables -A FORWARD -p tcp --syn -j syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -A syn-flood -p tcp --syn -m limit --limit 3/s --limit-burst 1 -j ACCEP
iptables -A syn-flood -j DROP
iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --syn -m state --state NEW -j DROP
3 如果还是不行,
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30 -j REJECT
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEP
如攻击过来的流量大于你的服务器的流量,那就没有什么办法了,如果流量不大,以上方法,可以暂时保证你的80可以访问
如果你的内核已经支持iptables connlimit可以使用, iptables 设定部份,也可以使用
iptables -I FORWARD -p tcp --syn -m connlimit --connlimit-above 5 -j DROP
或
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j REJECT
对付SYN FLOOD的话,真正起作用的是:
sysctl -w net.ipv4.tcp_syncookies=1 #启用使用syncookies
sysctl -w net.ipv4.tcp_synack_retries=1 #降低syn重试次数
其他IPTABLES的限制速度功能不能用来对付SYN FLOOD的(不能阻止拒绝服务,但是确实可以防止服务器CRASH)。