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)。