linux 火墻策略
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]
在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 火墻策略