Linux – 防火牆 iptables

Loading

我們的 Server 需要 24小時不斷電的開機,在網路上很容易受到攻擊,所以有必要設定防火牆,在 Linux下常用的就是 iptables.而在 Cent OS 設定 iptables 也是很簡單.方法如下

[root@benjr ~]# system-config-securitylevel

fireware
信任服務: 就是只有哪些服務可以透過防火牆(iptables)下的情況還繼續工作.

只要開啟我們想要開放的 port 即可,基本上要開的 port 也只有 WWW SMTP SSH 而已其他你可以依據需求來開啟.在開啟 www (HTTP) 要順便把 HTTPS(443:tcp) 也開啟的.至於 SMTP 是因為要寄認證信給使用者所以要開, SSH 則可以透過遠端管理 Server.

但是信任裝置是什麼呢!一開始我還天真的以為勾選的裝置都會受到防火牆(iptables)的保護!!但是全錯有 勾選的裝置是不受到防火牆(iptables)的保護!!所以如果你的 eth0 也是要受到相同的防火牆(iptables)的限制就不要去勾選他了!!是我太傻太天真了嗎??這麼久才發現.

如果你是透過遠端的 SSH 這邊還有一個可以在 Text mode 下執行的.

[root@benjr ~]# system-config-securitylevel

fireware02
因為設定方式差不多,所以這裡就不多加以說明了.

而設定檔會存放在 /etc/sysconfig/iptables

[root@benjr ~]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT – [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -i ppp0 -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp –icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp –dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp –dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 139 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m udp -p udp –dport 137:138 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited
COMMIT

說明:

  • port 443是 https 的通訊協定,因為網頁瀏覽會用到所以將它保留下來.
    -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT
  • port 22 是 SSH 的通訊協定,這是比傳統 telnet 還要好用而且安全的遠端連線.
    -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
  • port 25 是 SMTP 的通訊協定,因為所以會寄註冊信給使用者所以這一個 port 也會開啟.
    -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 25 -j ACCEPT
  • port 80是 http 的通訊協定,因為網頁瀏覽會用到所以將它保留下來.
    -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
  • 下面是有關於 samba 的協定 port.你可以依據自己的需求選擇要不要手動加入.
    -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 139 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state –state NEW -m udp -p udp –dport 137:138 -j ACCEPT

如果要開機時就啟動 iptables ,使用下面這個指令,就會在每次開機時啟動 iptables

[root@benjr ~]# chkconfig iptables on

當然我不希望現在再重開機所以直接用下面的指令將 iptables 打開.

[root@benjr ~]# service iptables start
Starting httpd [OK]

將目前的 iptables 設定儲存下來,設定檔將儲存在 /etc/sysconfig/iptables

[root@benjr ~]# /sbin/service iptables save
沒有解決問題,試試搜尋本站其他內容

5 thoughts on “Linux – 防火牆 iptables

  1. 自動引用通知: services | Benjr.tw
  2. 自動引用通知: Drupal | Benjr.tw
  3. 自動引用通知: 安裝 RHEL VM | Benjr.tw

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料