CentOS7安裝和配置iptables防火墻

從CentOS7(RHEL7)開始,官方的標(biāo)準(zhǔn)防火墻設(shè)置軟件從iptables變更為firewalld。需禁用自帶的firewalld服務(wù),同時(shí)安裝iptables服務(wù)。
在使用Docker時(shí),啟用centos7默認(rèn)的firewall,啟動(dòng)端口映射時(shí),防火墻規(guī)則不生效。docker默認(rèn)使用了iptables防火墻機(jī)制。所以需要關(guān)閉firewall使用iptables解決。

1.關(guān)閉默認(rèn)的firewall防火墻

    systemctl stop firewalld.service 關(guān)閉防火墻
    systemctl disable firewalld.service 關(guān)閉開機(jī)啟動(dòng)

2.開啟iptables

    yum install iptables (根據(jù)centOS7的版本和內(nèi)核,有些版本已經(jīng)裝過,可以跳過此命令)
    yum install iptables-services

3.基本操作

查看防火墻狀態(tài)

    service iptables status  

停止防火墻

    service iptables stop  

啟動(dòng)防火墻

    service iptables start  

重啟防火墻

    service iptables restart  

永久關(guān)閉防火墻

    chkconfig iptables off  

永久關(guān)閉后重啟

    chkconfig iptables on  

開機(jī)自啟

    systemctl enable iptables.service

3.編輯防火墻文件(開啟了21,22,80,3306端口)

vim /etc/sysconfig/iptables
 
# sampleconfiguration for iptables service 
# # you can edit thismanually or use system-config-firewall 
# # please do not askus to add additional ports/services to this default configuration 
*filter 
:INPUT ACCEPT [0:0] 
:FORWARD ACCEPT [0:0] 
:OUTPUT ACCEPT [0:0] 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT 

添加防火墻命令

    /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

查看本機(jī)關(guān)于IPTABLES的設(shè)置情況

    iptables -L -n

腳本說明

表示先允許所有的輸入通過防火墻,以防遠(yuǎn)程連接斷開。

    iptables -P INPUT ACCEPT

表示清空所有默認(rèn)規(guī)則。

    iptables -F

表示清空所有自定義規(guī)則。

    iptables -X

表示將所有計(jì)數(shù)器歸0。

    iptables -Z

表示允許來自于lo接口(本地訪問)的數(shù)據(jù)包

    iptables -A INPUT -i lo -j ACCEPT

表示開放22端口(SSH)。

    iptables -A INPUT -p tcp --dport 22 -j ACCEPT

表示開放80端口(HTTP)

    iptables -A INPUT -p tcp --dport 80 -j ACCEPT

表示開放443端口(HTTPS)

    iptables -A INPUT -p tcp --dport 443 -j ACCEPT

表示允許接受本機(jī)請(qǐng)求之后的返回?cái)?shù)據(jù)。

    iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT

表示所有被丟棄的包都會(huì)被記錄到/var/log/iptables.log文件中,且每條記錄會(huì)以”iptables denied”作為前綴。

    iptables -A INPUT  -p tcp -j LOG --log-prefix "iptables denied"

表示其他入站一律丟棄

    iptables -P INPUT DROP

表示所有出站一律通過

    iptables -P OUTPUT ACCEPT

表示所有轉(zhuǎn)發(fā)一律通過

    iptables -P FORWARD DROP

設(shè)定其他規(guī)則

如果要添加可信任網(wǎng)段:192.168.0.1/24,接受其所有請(qǐng)求。

    iptables -A INPUT -s 192.168.0.1/24 -j ACCEPT

如果要添加可信任ip:192.168.0.1,接受其所有TCP請(qǐng)求。

    iptables -A INPUT -p tcp -s 192.168.0.1 -j ACCEPT

如果要添加可信任ip:192.168.0.1,接受其對(duì)某個(gè)端口:3306的所有TCP請(qǐng)求。

    iptables -I INPUT -p tcp -s 192.168.0.1 --dport 3306 -j ACCEPT

如果要封停一個(gè)IP:192.168.0.1。

    iptables -I INPUT -s 192.168.0.1 -j DROP
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容