1. 程式人生 > >linux 火墻策略

linux 火墻策略

linux 基礎 運維學習

  1. iptables命令

-t
指定表名稱
DROP
丟棄
-n
不做解析
-N
增加鏈
-L
列出指定表的策略
-E
修改鏈名稱
-A
增加策略
-X
刪除鏈
--dport
端口
-D
刪除指定策略
-s
數據來源
-I
插入
-j
動作
-R
修改策略
ACCEPT
允許
-P(大寫)
修改默認策略
REJECT
拒絕
-p(小寫)
端口

例如:如下基本操作命令

iptables  -t filter -nL    #查看filter表中的策略
iptable  -F                #刷掉filter表中的所有策略,當沒有用-t指定表名稱時默認時filter
service iptables save      #保存當前策略
iptables -A INPUT -i lo -j ACCEPT    #允許lo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT    ##允許訪問22端口
iptables -A INPUT -s 172.25.254.231 -j ACCEPT    ##允許250主機訪問本機所有端口
iptables -A INPUT -j REJECT  ##拒絕所有主機的數據來源
iptables -N redhat           ##增加鏈redhat
iptables -E redhat westos    ##改變鏈名稱
iptables -X westos    ##刪除westos鏈
iptable -D INPUT 2    ##刪除INPUT鏈中的第二條策略
iptables -I INPUT  -p tcp --dport 80  -j REJECT    ##插入策略到INPUT中的第一條
iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT    ##修改第一條策略
iptable -P INPUT DROP ##把INPUT表中的默認策略改為drop

2.iptables火墻策略

2.1 加快數據傳輸速度

也就是當第一次數據傳輸被server接收之後,以後的數據如果是相同類型的,則就為RELATED和ESTABLISHED兩種類型的,下面是此種火墻策略的簡單例子。

RELATED:第二次

ESTABLISHED:正在建立連接的

iptables -A INPUT -m state --state RELATED,ESTABLISHED  -j ACCEPT
iptables -A INPUT -i lo -m state --state NEW -j ACCEPT 
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -j REJECT

2.2 SANT 火墻策略

SANT相當於一個漏由的功能,他就是將server作為一個網橋。相當與內網(client)和外網不同,這時有一個漏由(server)可以連接外網(就是下面中的172.25.254的網段)

在server上作如下配置

配置server的網卡有兩塊,一塊為私有網段,分別為:
eth0:172.25.254.231
eth1:172.25.31.231
[[email protected] ~]# sysctl -a | grep forward
net.ipv4.ip_forward = 0
#這個是主機的漏由功能,將下面的語句寫入/etc/sysctl.conf,相當於打開主機的漏由功能
[[email protected]
/* */ ~]# echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf [[email protected] ~]# sysctl -p [[email protected] ~]# iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 172.25.254.231

在client 上作如下配置

配client的網卡為私有網段為172.25.31.131
添加網關:172.25.31.231

測試:當你沒有作這個火墻策略,你ping不通172.25.254這個網段。除了server的IP。

技術分享

做完SNAT策略之後你可以ping 172.25.254網段的ip的網段,你可以看到他是從172.25.254.231出去的。

技術分享

用你client連接172.25.254.31時,會顯示你是用172.25.254.231連接的,而不是你的client

技術分享

2.3 DNAT 火墻策略

DNAT就是當有人連接你的主機的時候,你如果不想讓他連接,你可以直接連接到其他的主機,就是將這個請求的目標地址轉換成其他的目標地址

iptables -t nat -A PREROUTING  -i eth0 -j DNAT --to-dest 172.25.31.131
#也就是有人連接我server上邊eth0的時候我讓他連接我的客戶端。

用172.25.254.31連接你的server,他會連接到172.25.31.131上,就是你的client

技術分享

2.firewall火墻策略

2.1 firewall的zone的分類

drop丟棄所有進入的包,而不給出任何響應

block

拒絕所有外部發起的連接,允許內部發起的連接
public
允許指定的進入連接
external
出去的ipv4網絡連接通過此區域偽裝和轉發,僅接受ssh服務連接誒
dmz
僅接受ssh服務連接
work
一般用於工作區域,僅接受ssh ipp-client samba-client dhcpv6-client
home
同上,類似 用於家庭網絡
internal
同上,類似,用於內部網絡
trusted
信任所有連接

2.2 文件添加基本的火墻策略

在文件中/etc/firewalld/zones/public.xml 中就是你火墻開啟的服務,如下舉例

[[email protected] ~]# firewall-cmd --list-all
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
#這時我們查看/etc/firewalld/zones/public.xml這個文件的內容
[[email protected] ~]# cat  /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="dhcpv6-client"/>
  <service name="ssh"/>
  #這裏就只允許ssh服務,如果我們添加一個服務,http就直接將這個寫入此文件中  <service name="http"/>
</zone>

如果我們打開http服務,這時火墻就會加載這個目錄下的文件愛。

在 /usr/lib/firewalld/services/目錄下有很多服務的配置文件,這裏就不列出了,以http為例
[[email protected] ~]# ll /usr/lib/firewalld/services/ |grep http
-rw-r-----. 1 root root 448 Feb 28  2014 https.xml
-rw-r-----. 1 root root 353 Feb 28  2014 http.xml
-rw-r-----. 1 root root 310 Feb 28  2014 wbem-https.xml
[[email protected] ~]# cat  /usr/lib/firewalld/services/http.xml 
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>WWW (HTTP)</short>
  <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
  <port protocol="tcp" port="80"/>
</service>
#這裏面指明了http的端口和所使用的通信協議。

2.3 用命令添加一些基本的火墻策略

[[email protected] ~]# firewall-cmd --get-zones
ROL block dmz drop external home internal public trusted work
#查看firewall的zone
[[email protected] ~]# firewall-cmd --set-default-zone=trusted
success
#修改默認的firewall的zone
[[email protected] ~]# firewall-cmd --list-all
trusted (default, active)
  interfaces: eth0
  sources: 
  services: 
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
#查看firewall的火墻策略
[[email protected] ~]# firewall-cmd --reload 
success
#重新加載firewall的火墻策略
[[email protected] ~]# firewall-cmd --complete-reload 
success
#他也是重新加載火墻策略,就是他是即時生效。
[[email protected] ~]# firewall-cmd --permanent --add-port=8080/tcp
success
#將tcp協議的8080端口永久的加入到火墻策略中
#--permanent是永久修改的意思
[[email protected] ~]# firewall-cmd --permanent --add-source=172.25.254.231 --zone=trusted
success 
#接受來自172.25.254.231的所有請求
[[email protected] ~]# firewall-cmd --permanent --add-interface=eth0 --zone=public
success
#將eth0網卡的zone類型永久修改成public類型的
[[email protected]  ~]# firewall-cmd --permanent  --remove-rich-rule="rule family=ipv4 source address=172.25.254.31 forward-port port=22 protocol=tcp to-port=22 to-addr=172.25.254.131"
#永久刪除一條rich rule策略

2.4 firewall Direct Rules工具添加火墻策略

[[email protected] ~]# firewall-cmd --permanent --direct --add-rule  ipv4 filter INPUT  0 ! -s 172.25.254.231  -p tcp --dport 22 -j ACCEPT
success
#接受所有來自22端口的tcp協議請求,除了來自172.25.254.231這個主機的,但是也沒有拒絕這臺主機,
#這條策略和他沒有關系

2.4 firewall 的Rich Rules(就是iptables的SNAT和DNAT這裏就不再多講)

[[email protected] ~]# firewall-cmd --permanent --add-rich-rule=‘rule family=ipv4 source address=172.25.254.231 masquerade‘
success
#讓所有進入client的網從172.25.254.231出去
[[email protected] ~]# firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=172.25.254.31 forward-port port=22 protocol=tcp to-port=22 to-addr=172.25.254.131"
success
#從172.25.254.31來的22端口的tcp協議請求,將這個請求轉發到172.25.254.131的22端口的tcp。


本文出自 “13122323” 博客,請務必保留此出處http://13132323.blog.51cto.com/13122323/1957669

linux 火墻策略