CentOS 7.X默認firewall防火牆改成iptables防火牆

CentOS 7 默認使用的是firewall做爲防火牆,這裏改成iptables防火牆。java

一、關閉firewall服務器

systemctl stop firewalld.service #中止firewall網絡

systemctl disable firewalld.service #禁止firewall開機啓動併發

二、安裝iptables防火牆less

yum install iptables-services #安裝tcp

vi /etc/sysconfig/iptables #編輯防火牆配置文件ide

**********************************************************************************************this

# Firewall configuration written by system-config-firewallspa

# Manual customization of this file is not recommended..net

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

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

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

**********************************************************************************************


:wq! #保存退出

systemctl restart iptables.service #最後重啓防火牆使配置生效

systemctl enable iptables.service #設置防火牆開機啓動


20條IPTables防火牆規則用法:



IPTables 包括一組內置和由用戶定義規則的「鏈」,管理員能夠在「鏈」上附加各類數據包處理規則。

  • FILTER 默認過濾表,內建的鏈有:

  • INPUT:處理流入本地的數據包

  • FORWARD:處理經過系統路由的數據包

  • OUTPUT:處理本地流出的數據包

  • NAT 實現網絡地址轉換的表,內建的鏈有:

  • PREROUTING:處理即將接收的數據包

  • OUTPUT:處理本地產生的數據包

  • POSTROUTING:處理即將傳出的數據包

  • MANGLE 此表用於改變數據包,共 5 條鏈:

  • PREROUTING:處理傳入鏈接

  • OUTPUT:處理本地生成的數據包

  • INPUT:處理報文

  • POSTROUTING:處理即將傳出數據包

  • FORWARD:處理經過本機轉發的數據包


接下來咱們將由簡入難介紹 25 條 Linux 管理員最常會用到的 IPTables 規則。


一、啓動、中止和重啓IPTables

雖然 IPTables 並非一項服務,但在 Linux 中仍是能夠像服務同樣對其狀態進行管理。

基於SystemD的系統

systemctl start iptablessystemctl stop iptablessystemctl restart iptables

基於SysVinit的系統

 /etc/init.d/iptables start/etc/init.d/iptables stop/etc/init.d/iptables restart

二、查看IPtables防火牆策略

你可使用以下命令來查看 IPtables 防火牆策略:

 iptables -L -n -v

以上命令應該返回數據下圖的輸出:

以上命令是查看默認的 FILTER 表,若是你只但願查看特定的表,能夠在 -t 參數後跟上要單獨查看的表名。例如只查看 NAT 表中的規則,可使用以下命令:

 iptables -t nat -L -v –n

三、屏蔽某個IP地址

若是你發佈有某個 IP 向服務器導入***或非正常流量,可使用以下規則屏蔽其 IP 地址:

 iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

注意須要將上述的 XXX 改爲要屏蔽的實際 IP 地址,其中的 -A 參數表示在 INPUT 鏈的最後追加本條規則。(IPTables 中的規則是從上到下匹配的,一旦匹配成功就再也不繼續往下匹配)

若是你只想屏蔽 TCP 流量,可使用 -p 參數的指定協議,例如:

iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP

四、解封某個IP地址

要解封對 IP 地址的屏蔽,可使用以下命令進行刪除:

 iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP

其中 -D 參數表示從鏈中刪除一條或多條規則。

五、使用IPtables關閉特定端口

不少時候,咱們須要阻止某個特定端口的網絡鏈接,可使用 IPtables 關閉特定端口。

阻止特定的傳出鏈接:

 iptables -A OUTPUT -p tcp --dport xxx -j DROP

阻止特定的傳入鏈接:

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

六、使用Multiport控制多端口

使用 multiport 咱們能夠一次性在單條規則中寫入多個端口,例如:

iptables -A INPUT  -p tcp -m multiport --dports 22,80,443 -j ACCEPTiptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT

七、在規則中使用 IP 地址範圍

在 IPtables 中 IP 地址範圍是能夠直接使用 CIDR 進行表示的,例如:

iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT

八、配置端口轉發

有時咱們須要將 Linux 服務器的某個服務流量轉發到另外一端口,此時可使用以下命令:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525

上述命令會將全部到達 eth0 網卡 25 端口的流量重定向轉發到 2525 端口。

九、屏蔽HTTP服務Flood***

有時會有用戶在某個服務,例如 HTTP 80 上發起大量鏈接請求,此時咱們能夠啓用以下規則:

iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT

上述命令會將鏈接限制到每分鐘 100 個,上限設定爲 200。

十、禁止PING

對 Linux 禁 PING 可使用以下規則屏蔽 ICMP 傳入鏈接:

iptables -A INPUT -p icmp -i eth0 -j DROP

十一、容許訪問迴環網卡

環回訪問(127.0.0.1)是比較重要的,建議你們都開放:

iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT

十二、屏蔽指定MAC地址

使用以下規則能夠屏蔽指定的 MAC 地址:

iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP

1三、限制併發鏈接數

若是你不但願來自特定端口的過多併發鏈接,可使用以下規則:

iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

以上規則限制每客戶端不超過 3 個鏈接。

1四、清空IPtables規則

要清空 IPtables 鏈可使用以下命令:

iptables -F

要清空特定的表可使用 -t 參數進行指定,例如:

iptables -t nat –F

1五、保存IPtables規則

默認狀況下,管理員對 IPtables 規則的操做會當即生效。但因爲規則都是保存在內存當中的,因此重啓系統會形成配置丟失,要永久保存 IPtables 規則可使用 iptables-save 命令:

iptables-save > ~/iptables.rules

保存的名稱你們能夠本身改。

1六、還原IPtables規則

有保存天然就對應有還原,你們可使用 iptables-restore 命令還原已保存的規則:

iptables-restore < ~/iptables.rules

1七、容許創建相關鏈接

隨着網絡流量的進出分離,要容許創建傳入相關鏈接,可使用以下規則:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

容許創建傳出相關鏈接的規則:

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

1八、丟棄無效數據包

不少網絡***都會嘗試用***自定義的非法數據包進行嘗試,咱們可使用以下命令來丟棄無效數據包:

iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

1九、IPtables屏蔽郵件發送規則

若是你的系統不會用於郵件發送,咱們能夠在規則中屏蔽 SMTP 傳出端口:

iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT

20、阻止鏈接到某塊網卡

若是你的系統有多塊網卡,咱們能夠限制 IP 範圍訪問某塊網卡:

iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP

源地址能夠是 IP 或 CIDR。

保存設置的規則到配置文件

service iptables save

iptables –F 

#刪除已經存在的規則 

iptables -P INPUT DROP 

#配置默認的拒絕規則。基本規則是:先拒絕全部的服務,而後根據須要再添加新的規則。 

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

#打開WEB服務端口的tcp協議 

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

#打開POP3服務端口的tcp協議 

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

#打開SMTP服務端口的tcp協議 

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

#打開FTP服務端口的tcp協議 

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

#容許IP地址爲202.106.12.130這臺主機鏈接本地的SSH服務端口 

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

#容許DNS服務端口的tcp數據包流入 

iptables -A INPUT -p udp --dport 53 -j ACCEPT 

#容許DNS服務端口的udp數據包流入 

iptables -A INPUT -p icmp -icmp-type echo-request -i eth1 -j DROP 

#防止死亡之ping,從接口eth1進入的icmp協議的請求所有丟棄。 

iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT 

#防止SYN Flood (拒絕服務***)

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.226 -j MASQUERADE

#容許 192.168.0.226經過eth1 IP假裝出外網

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.4 -p tcp --dport 25 -j MASQUERADE

#容許 192.168.0.4經過eth0 假裝訪問外網的 25端口


轉載來自來源: http://blog.csdn.net/gxp_java/article/details/53431269

相關文章
相關標籤/搜索