{"id":617,"date":"2016-02-06T14:21:00","date_gmt":"2016-02-06T06:21:00","guid":{"rendered":"http:\/\/note.systw.net\/note\/?p=617"},"modified":"2023-11-04T14:24:19","modified_gmt":"2023-11-04T06:24:19","slug":"iptables","status":"publish","type":"post","link":"https:\/\/systw.net\/note\/archives\/617","title":{"rendered":"iptables"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>IPTABLES<\/strong><br>\u7528\u4f86\u8a2d\u5b9anetfilter\u7684User Space\u5de5\u5177<br>ps:netfilter\u70balinux\u8ca0\u8cac\u8655\u7406\u7db2\u8def\u5c01\u5305\u4e4b\u7cfb\u7d71&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5217\u51fatable<br>iptables [-t table] -L [-nv]<br>\u53c3\u6578\uff1a<br>-t table\uff1a\u9078\u64c7table,\u6709filter\u53canat,mangle,\u9810\u8a2d\u70bafilter<br>-L\uff1a\u5217\u51fatable\u898f\u5247<br>-n\uff1a\u4e0d\u9032\u884cIP\u8207HOSTNAME\u7684\u53cd\u67e5<br>-v\uff1a\u5217\u51fa\u66f4\u591a\u7684\u8cc7\u8a0a<br><br>\u522a\u9664<br>iptables [-t table] [-FXZ]<br>-F\uff1a\u6e05\u9664\u6240\u6709\u7684\u5df2\u8a02\u5b9a\u7684\u898f\u5247<br>-X\uff1a\u6bba\u6389\u6240\u6709\u4f7f\u7528\u8005\u81ea\u8a02\u7684chain<br>-Z\uff1a\u5c07\u6240\u6709\u7684chain\u7684\u8a08\u6578\u8207\u6d41\u91cf\u7d71\u8a08\u90fd\u6b780<br>-N:\u81ea\u8a02\u4e00\u689d\u65b0\u7684chain<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b58\u6a94\u548c\u8b80\u6a94<br>iptables-save &gt; file \uff1a\u5c07iptables\u7684\u898f\u5247\u8a2d\u5b9a\u5132\u5b58\u5728file\u7684\u6a94\u6848\u88e1<br>iptables-restore &lt; file :\u5c07iptables\u7684\u898f\u5247\u8a2d\u5b9a\u6a94\u8b80\u9032\u4f86<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9a\u7fa9chain\u7684\u653f\u7b56<br>iptables [-t table] -P chain value<br>-P:\u5b9a\u7fa9\u653f\u7b56<br>-P chain value:\u53ef\u9078\u64c7\u7684chain\u6709INPUT,OUPUT,FORWARD,\u800cvalue\u6709ACCEPT,DROP<br>&nbsp;&nbsp; ex:iptables -P INPUT DROP&nbsp; \u5247\u6240\u6709\u9032\u5165\u7684\u5c01\u5305\u90fd\u6703\u88ab\u4e22\u68c4<br>\u82e5table\u662fnat,\u5247chain\u6709OUTPUT,POSTROUTING,PREROUTING<br>\u82e5table\u662fmangle,\u5247chain\u6709PREROUTING,POSTROUTING,INPUT,OUTPUT<br><br>\u5c01\u5305\u9032\u5165\u6642\u7684\u7d93\u904e\u7684chain\u9806\u5e8f\u70ba<br>1mangle(prerouting)&gt;nat(prerouting)&gt;\u4f9d\u662f\u5426\u8f49\u905e\u5c01\u5305\u52302a\u62162b<br>&nbsp;2a\u9032\u884c\u5c01\u5305\u8f49\u905e mangle(forward)&gt;filter(forward)&gt;\u5230\u9806\u5e8f3<br>&nbsp;2b\u7121,\u5c01\u5305\u9032\u5165\u4e3b\u6a5f mangle(input)&gt;filter(input)&gt;\u4e3b\u6a5f,\u8def\u7531\u5224\u65b7&gt;mangle(output)&gt;nat(output)&gt;filter(output)&gt;\u5230\u9806\u5e8f3<br>3mangle(postrouting)&gt;nat(postrouting)<br><br>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br><br>\u8a2d\u5b9achain\u7684\u898f\u5247<br>iptables -[A|I] chain [-io] [-p] [-s] [-d] [-j]<br>-A chain:\u9644\u52a0\u4e00\u689d\u898f\u5247\u5728\u5f8c\u9762<br>-I chain:\u5dee\u5165\u4e00\u689d\u898f\u5247\u5728\u524d\u9762<br>-R chain n\uff1a\u6539\u8b8a\u7b2cn\u689d\u898f\u5247<br>-D chain n\uff1a\u522a\u9664\u7b2cn\u689d\u898f\u5247<br>-D \u90e8\u4efdrule :\u522a\u9664\u7b2c\u4e00\u500b\u7b26\u5408rule\u7684\u503c<br>-D \u5b8c\u6574rule :\u522a\u9664\u548crule\u4e00\u6a23\u7684\u503c<br>-i interface:\u5c01\u5305\u9032\u5165\u7684interface,\u9700\u8207input\u914d\u5408,ex:lo,eth0<br>-o interface:\u540c\u4e0a,\u4f46\u9700\u8207output\u914d\u5408<br>-p protocol:\u8a2d\u5b9a\u898f\u5247\u9069\u7528\u65bc\u90a3\u500bprotocol,\u53ef\u9078tcp,udp,icmp,all<br>\u3000\u82e5protocol\u662ftcp\u6216udp\u5247\u53ef\u7528\u4ee5\u4e0b\u53c3\u6578<br>\u3000\u3000-s source:\u8a2d\u5b9a\u4f86\u6e90,source\u53ef\u4ee5\u662fip,ip\/mask,\u7db2\u57df,\u82e5\u5728sourec\u524d\u52a0\uff01\u8868\u793a\u62d2\u7d55<br>\u3000\u3000-d destination:\u8a2d\u5b9a\u76ee\u6a19,target\u7684\u503c\u540csource<br>\u3000\u3000&#8211;dport value1:value2 :\u6307\u5b9a\u76ee\u6a19port\u6216\u7a0b\u5f0f\u540d\u7a31,port\u865f\u53ef\u9078\u64c7\u4e00\u9023\u7e8c\u7bc4\u570d,\u9700\u642d\u914d-p<br>\u3000\u3000&#8211;sport value1:value2 :\u540c\u4e0a,\u4f46\u662f\u6307\u5b9a\u4f86\u6e90\uff0c\u9700\u642d\u914d-p<br>\u3000\u82e5protocol\u662ftcp\u53ef\u7528\u4ee5\u4e0b\u53c3\u6578<br>\u3000\u3000! -syn&nbsp; \u4e0d\u662fsyn\u5c01\u5305<br>\u3000\u3000&#8211;syn tcp\u7684syn\u4f4d\u5143\u88ab\u958b\u555f,\u4e5f\u5c31\u662fsyn\u5c01\u5305<br>\u3000\u3000&#8211;tcp-flags value \u6307\u5b9atcp\u7684flag,value\u53ef\u9078syn,ack,fin,rst,urg,psh,all,none<br>&nbsp;&nbsp;&nbsp; \u82e5protocol\u662ficmp\u53ef\u7528\u4ee5\u4e0b\u53c3\u6578<br>\u3000\u3000&#8211;icmp-type type:\u6307\u5b9aicmp\u7684type,ex:8=echo request<br>-j target:\u8a2d\u5b9a\u6b64\u898f\u5247\u8981\u5982\u4f55\u8655\u7406,\u53ef\u9078ACCEPT,DROP,TOS,LOG,\u81ea\u8a02chain<br>\u3000ex:iptables -A INPUT -i eth0 -s 192.168.1.10 -j DROP&nbsp;&nbsp;&nbsp; \u5c07\u5f9e192.168.1.10\u9032\u5230eth0\u4ecb\u9762\u7684\u5c01\u5305drop<br>\u3000ex:iptables -R INPUT 1 -i ppp0 -p tcp &#8211;sport 80 -j DROP&nbsp; \u5c07\u7b2c\u4e00\u500b\u898f\u5247\u6539\u6210\uff0c\u62d2\u7d55\u4efb\u4f55\u4f86\u6e90\u70baport80\u9032\u5165ppp0\u7684\u754c\u9762<br>\u3000ex:iptables -I INPUT -i ppp0 -p tcp &#8211;dport 80 -j ACCEPT \u5c01\u5305\u7684\u76ee\u6a19port\u82e5\u662f80\u800c\u4e14\u8981\u9032\u5165ppp0\u4ecb\u9762\u5247\u5141\u8a31\u901a\u884c<br>\u3000ex:iptables -A INPUT -p icmp &#8211;icmp-type 8 -j DROP&nbsp; \u4e0d\u63a5\u53d7ping\u7684\u56de\u61c9<br>\u3000\u82e5target\u70balog,\u53ef\u7528\u4ee5\u4e0b\u53c3\u6578<br>\u3000\u3000&#8211;log-level value \u8981\u8a18\u9304\u5230syslog\u7684\u7b49\u7d1a,\u7b49\u7d1a\u53ef\u53c3\u8003syslog.conf<br>\u3000\u3000&#8211;log-prefix value \u6703\u5728\u6bcf\u7b46log\u524d\u52a0\u6307\u5b9a\u5b57\u4e32<br>\u3000\u3000&#8211;log-tcp-options \u8a18\u9304tcp header\u76f8\u95dc\u8a0a\u606f<br>\u3000\u3000&#8211;log-ip-options \u8a18\u9304ip header\u76f8\u95dc\u8a0a\u606f<br>\u3000ps:log\u6703\u8a18\u9304\u5230\/var\/log\/messages<br>\u3000ps:\u82e5\u8a2d\u5b9a&#8211;log-level debug,\u4e26\u5728syslog.conf\u5167\u52a0\u5165kern.=debug \/var\/log\/iptableslog,\u91cd\u555fsyslog\u5247\u53ef\u5c07log\u8a18\u5728iptableslog\u5167<br>\u3000ps:iptables log\u5206\u6790\u5668\u3000http:\/\/iptablelog.sourceforge.net\/\u3000<br>\u3000ex:iptables -I INPUT -p tcp &#8211;dport 80 -j LOG &#8211;log-prefix=flog \u82e5\u7b26\u5408\u5247\u8a18\u9304\u5230log\u4e2d,\u4e26\u5728\u6bcf\u7b46\u8a18\u9304\u524d\u52a0flog<br>&nbsp; \u82e5target\u70batos,\u53ef\u7528\u4ee5\u4e0b\u53c3\u6578<br>&nbsp;&nbsp;&nbsp;&nbsp; &#8211;set-tos Mzximize-Throughput&nbsp; \u8b93\u901a\u904e\u91cf\u6700\u5927<br>&nbsp;&nbsp;&nbsp;&nbsp; &#8211;set-tos Minimize-Delay \u53ef\u7372\u5f97\u66f4\u591a\u53cd\u61c9<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u61c9\u7528:\u9632\u6b62 port scan<br><strong># NMAP FIN\/URG\/PSH<\/strong><br>iptables -A INPUT -i eth0 -p tcp &#8211;tcp-flags ALL FIN,URG,PSH -j DROP<br><strong># Xmas Tree<\/strong><br>iptables -A INPUT -i eth0 -p tcp &#8211;tcp-flags ALL ALL -j DROP<br><strong># Another Xmas Tree<\/strong><br>iptables -A INPUT -i eth0 -p tcp &#8211;tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP<br><strong># Null Scan(possibly)<\/strong><br>iptables -A INPUT -i eth0 -p tcp &#8211;tcp-flags ALL NONE -j DROP<br><strong># SYN\/RST<\/strong><br>iptables -A INPUT -i eth0 -p tcp &#8211;tcp-flags SYN,RST SYN,RST -j DROP<br><strong># SYN\/FIN &#8212; Scan(possibly)<\/strong><br>iptables -A INPUT -i eth0 -p tcp &#8211;tcp-flags SYN,FIN SYN,FIN -j DROP&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ps:<br>-j target\u7684\u5176\u4ed6\u53c3\u6578<br>RETURN:\u4e0d\u4f7f\u7528\u76ee\u524dchain\u898f\u5247,\u4e14\u76f4\u63a5\u8fd4\u56de\u4e26\u5230\u4e0b\u500bchain\u6216\u5176\u4ed6\u4f4d\u5740<br>\u7d50\u675f\u5728\u76ee\u524dchain\u4e2d\u7684\u904e\u6ffe\u7a0b\u5e8f\uff0c\u8fd4\u56de\u4e3bchain\u7e7c\u7e8c\u904e\u6ffe<br>ps:\u82e5\u628a\u81ea\u8a02chain\u770b\u505a\u526f\u7a0b\u5f0f,\u90a3return\u5c31\u76f8\u7576\u65bc\u63d0\u65e9\u7d50\u675f\u526f\u7a0b\u5f0f\u4e26\u8fd4\u56de\u5230\u4e3b\u7a0b\u5f0f\u4e2d<br>QUEUE:\u5c07packet\u9001\u5230\u6307\u5b9a\u7684\u61c9\u7528\u7a0b\u5f0f\u8655\u7406 &nbsp;&nbsp; \u3000<br>MARK:\u5c07packet\u6a19\u4e0a\u67d0\u500b\u7de8\u865f,\u7d66\u5f8c\u7e8c\u904e\u6ffe\u7684\u52d5\u4f5c\u53c3\u8003<br>ex:iptables -t mangle -A PREROUTING -p tcp &#8211;dport 80 -j MARK &#8211;set-mark 2<br>REJECT:\u963b\u64cb\u8a72packet,\u4e26\u56de\u50b3\u8a0a\u606f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br><br>\u4f7f\u7528\u6a21\u7d44<br>iptables -[A|I] chain -m module &#8211;module [-j]<br>module\u6709:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.state(\u72c0\u614b\u6a21\u7d44),\u7528\u6cd5:<\/strong><br>-m state &#8211;state value1,value2 :\u6307\u5b9a\u5c01\u5305\u7684\u72c0\u614b,value\u6709<br>\u3000INVALID\uff1a\u7121\u6548\u7684\u5c01\u5305\uff0c\u4f8b\u5982\u8cc7\u6599\u7834\u640d\u7684\u5c01\u5305\u72c0\u614b<br>\u3000ESTABLISHED\uff1a\u5df2\u7d93\u9023\u7dda\u6210\u529f\u7684\u9023\u7dda\u72c0\u614b<br>\u3000NEW\uff1a\u60f3\u8981\u65b0\u5efa\u7acb\u9023\u7dda\u7684\u5c01\u5305\u72c0\u614b,\u5c31\u662f\u7b2c\u4e00\u500b\u4f86\u7684\u5c01\u5305,tcp\u9023\u7dda\u958b\u59cb\u6703\u5148\u9001syn\u5c01\u5305<br>\u3000RELATED\uff1a\u6700\u5e38\u7528,\u8868\u793a\u6b64\u5c01\u5305\u662f\u8207\u6211\u5011\u4e3b\u6a5f\u767c\u9001\u51fa\u53bb\u7684\u5c01\u5305\u6709\u95dc<br>\u3000ex:iptables -A INPUT -m state &#8211;state RELATED,ESTABLISHED -j ACCEPT \u53ea\u8981\u5df1\u5efa\u7acb\u6216\u76f8\u95dc\u5c01\u5305\u5c31\u7d66\u4e88\u901a\u904e<br>\u3000ex:iptables -A INPUT -p tcp ! -syn -m state &#8211;state NEW -j DORP \u7b2c\u4e00\u500b\u4f86\u7684tcp\u5c01\u5305\u4e0d\u662fsyn\u5247\u62d2\u7d55<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2.mac(\u7db2\u8def\u5361\u786c\u9ad4\u4f4d\u7f6e),\u7528\u6cd5:<\/strong><br>-m mac &#8211;mac-source value :\u6307\u5b9a\u4e3b\u6a5f(value\u70ba\u7db2\u5361\u5361\u865f)<br>ex:iptables -A INPUT -m mac &#8211;mac-source aa:bb:cc:dd:ee:ff -j ACCEPT \u82e5\u8981\u9032\u5165\u6b64\u7db2\u5361\u5247\u53ef\u901a\u884c<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3.limit<\/strong><strong>(\u9650\u5236),\u7528\u6cd5<\/strong><br>-m limit &#8211;limit value\/unit \u6bd4\u5c0d\u67d0\u6bb5\u6642\u9593\u5167\u5c01\u5305\u7684\u5e73\u5747\u6d41\u91cf,unit\u6709day,hour,minute,second<br>ex:iptables -A INPUT -m limit &#8211;limit 3\/hour\u3000\u6bcf\u5c0f\u6642\u5e73\u5747\u53ea\u80fd\u8655\u74063\u500b\u5c01\u5305<br>-m limit &#8211;limit-burst\u3000\u82e5\u540c\u6642\u9032\u4f86\u591a\u500b\u5c01\u5305,\u53ea\u6709\u5c11\u6578\u5e7e\u500b\u80fd\u653e\u5165\u7de9\u885d\u5340 ,\u5176\u9918\u4e1f\u68c4<br>ex:iptables -A INPUT -m limit &#8211;limit-burst 5\u3000\u82e5\u540c\u6642\u9032\u4f86\u591a\u500b\u5c01\u5305,\u53ea\u67095\u500b\u5c01\u5305\u653e\u5165\u7de9\u885d\u5340,\u5176\u9918\u4e1f\u68c4<br>ex:iptables -A INPUT -p icmp &#8211;icmp-type 8 -m limit &#8211;limit 6\/m &#8211;limit burst 10 -j ACCEPT \u82e5\u6bcf\u5206\u9418\u8d85\u904e10\u500bicmp\u5c01\u5305\u5247\u6bcf\u5206\u9418\u53ea\u80fd\u9032\u4f866\u500bicmp\u5c01\u5305<br>\u4fdd\u8b77ssh<br>to limit the the number of connections to the ssh port to 3 per minute:&nbsp;<br>ex:<br>iptables -A INPUT -p tcp &#8211;dport 22 &#8211;syn -m limit &#8211;limit 1\/m &#8211;limit-burst 3 -j ACCEPT<br>iptables -A INPUT -p tcp &#8211;dport 22 &#8211;syn -j DROP&nbsp;<br>rule 1<br>will accept new connections on port 22 provided that IP address hasn&#8217;t made more than 3 connection attempts in the last minute.<br>rule 2<br>If more than 3 connection attempts have been made within the last minute, then rule2&nbsp;will DROP the connection<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4.mark\u7528\u6cd5<\/strong><br>-m mark &#8211;mark value \u6bd4\u5c0d\u6b64\u5c01\u5305\u88ab-j MARK &#8211;set-mark\u7684value<br>ex:iptables -t mangle -A INPUT -m mark &#8211;mark 1000 \u6bd4\u5c0d\u5c01\u5305\u662f\u5426\u88ab\u6a19\u4e0a1000\u7684\u7de8\u865f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5.recent\u7528\u6cd5<\/strong><br>\u53c3\u6578\u5982\u4e0b<br>-seconds &lt; num&gt;\u6bd4\u5c0d\u5c0f\u65bc\u6b64\u79d2\u6578\u7684\u8a18\u9304\u624d\u52d5\u4f5c\u3000<br>-hitcount &lt; num&gt;\u91cd\u8986\u767c\u751f\u5e7e\u6b21<br>-name &lt; name&gt; \u5132\u5b58\u8cc7\u8a0a\u7684\u8a18\u9304\u6a94\u540d\u7a31\uff0c\u901a\u5e38\u5b58\u5728\u76ee\u9304\/proc\/net\/ipt_recent\/\u3000<br>-set &lt; name&gt; \u7576\u7b26\u5408\u689d\u4ef6\u6642\uff0c\u8981\u5132\u5b58\u5728\u6307\u5b9a\u7684\u8a18\u9304\u6a94\u540d\u7a31\u3000<br>-rcheck \u3000\u8207\u8a18\u9304\u6a94\u6bd4\u5c0d\uff0c\u4f46\u4e0d\u6703\u4fee\u6539\u66f4\u65b0<br>-update \u3000\u8207\u8a18\u9304\u6a94\u6bd4\u5c0d\uff0c\u6703\u4f5c\u4fee\u6539\u66f4\u65b0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fdd\u8b77ssh<br>prevent brute-force attacks by logging and blocking repeated attempts to login from the same IP address<br>ex:<br>iptables -A INPUT -p tcp &#8211;dport 22 -m recent &#8211;set &#8211;name ssh &#8211;rsource<br>iptables -A INPUT -p tcp &#8211;dport 22 -m recent ! &#8211;rcheck &#8211;seconds 60 &#8211;hitcount 4 &#8211;name ssh &#8211;rsource -j ACCEPT&nbsp;<br>rule 1&nbsp;<br>records the IP address of each attempt to access port 22 using the recent module.<br>records data usually is saved in \/proc\/net\/ipt_recent\/<br>rule 2<br>checks to see if that IP address has attempted to connect 4 or more times within the last 60 seconds,<br>and if not then the packet is accepted.&nbsp;<br>Note this rule would require a default policy of DROP on the input chain.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u572810\u79d2\u5167\u8d85\u904e6\u6b21icmp-type8\u5c31drop\uff0c\u4e26\u505a\u8a18\u9304<br>ex:<br>iptables -A INPUT -p icmp -icmp-type 8 -m recent -name ICMP_check -update -seconds 10 -hitcount 6 -j DROP<br>iptables -A INPUT -p icmp -icmp-type 8 -m recent -set -name ICMP_check<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">refer<br>http:\/\/ssorc.tw\/1053<br>http:\/\/ishm.idv.tw\/?p=188<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>6.connlimit\uff0c\u9650\u5236\u6bcf\u500b ip \u7684\u9023\u7dda\u6578<br><\/strong>\u53c3\u6578\u5982\u4e0b<br>-connlimit-above &lt; number&gt;<br>-connlimit-mask &lt; CIDR &gt;<strong><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9650\u5236\u6bcf\u500b ip \u53ea\u53ef\u4ee5\u6709 5 \u500b ssh \u9023\u7dda&nbsp;<br>ex:<br>iptables -A INPUT -p tcp -syn -dport 22 -m connlimit -connlimit-above 5 -j REJECT<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c07\u9023\u7dda\u6578\u5927\u65bc50\u7684\u505a\u653e\u5165message\u505a\u8a18\u9304<br>ex:<br>iptables -I INPUT -p tcp &#8211;syn &#8211;dport 80 -m connlimit &#8211;connlimit-above 50 -j LOG &#8211;log-prefix &#8220;CONNLIMIT: &#8221; &#8211;log-level warning&nbsp; \u3000<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">refer<br>http:\/\/www.phpini.com\/linux\/iptables-limit-ip-connections<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<br><br>\u6838\u5fc3\u7684\u7db2\u8def\u529f\u80fd<br>\u4e00\u500b\u529f\u80fd\u8868\u793a\u6210\u4e00\u500b\u6a94\u6848,\u6a94\u6848\u5167\u7684\u503c\u8a2d\u62101\u8868\u793a\u555f\u52d5<br><br>\u5728\u6b64\u76ee\u9304\/proc\/sys\/net\/ipv4\/\u6709:<br>tcp_syncookies&nbsp; \u907f\u514dSYN Flooding \u7684 DoS \u653b\u64ca<br>tcp_max_syn_backlog TCP\u5c01\u5305\u9023\u7dda\u6700\u4f73\u5316<br>tcp_synack_retries TCP\u5c01\u5305\u9023\u7dda\u6700\u4f73\u5316<br>tcp_abort_on_overflow TCP\u5c01\u5305\u9023\u7dda\u6700\u4f73\u5316<br>icmp_echo_ignore_broadcasts \u53ea\u52ff\u7565ping broadcast,\u53ef\u907f\u514dping flooding\u53caping of death<br>icmp_echo_ignore_all \u5168\u90e8\u7684ping\u90fd\u4e0d\u56de\u61c9,\u7f3a\u9ede\u662f\u96e3\u5224\u65b7\u4e3b\u6a5f\u662f\u5426\u5728\u7dda\u4e0a<br>icmp_ignore_bogus_error_responses \u555f\u52d5\u5ffd\u7565\u8a18\u9304\u529f\u80fd\u53ef\u907f\u514d\u4e00\u4e9b\u5047\u56de\u61c9\u5c0dsyslog\u9032\u884cDoS\u653b\u64ca<br>tcp_ecn \u81ea\u52d5\u64c1\u585e\u901a\u77e5,\u4e26\u975e\u6240\u6709ip\u652f\u63f4,\u5efa\u8b70\u95dc\u6389<br><br>\u5728\u6b64\u76ee\u9304\/proc\/sys\/net\/ipv4\/conf\/\u7db2\u8def\u4ecb\u9762\/*\u6709:<br>rp_filter \u9006\u5411\u8def\u5f91\u904e\u6ffe,\u5c07\u4e0d\u5408\u7406\u7684\u5c01\u5305\u4e1f\u68c4,\u53ef\u907f\u514d\u653b\u64ca\u8005\u507d\u88dd\u6210\u4fe1\u4efb\u7db2\u57df\u4f86\u6b3a\u9a19\u9632\u706b\u7246<br>log_martians \u5c07\u4e0d\u5408\u6cd5\u7684ip\u7d00\u9304\u5728\/var\/log\/messages<br>ex:echo &#8220;1&#8221; &gt; \/proc\/sys\/net\/ipv4\/tcp_syncookies \u555f\u52d5\u963b\u64cbsyn flooding\u6a5f\u5236<br>accept_redirects \u5efa\u8b70\u95dc\u9589<br>send_redirects \u5efa\u8b70\u95dc\u9589<br><br>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.<br><br>\u95dc\u65bcnat<br>\u76f8\u95dc\u6838\u5fc3\u7db2\u8def\u529f\u80fd\u6709:<br>\/proc\/sys\/net\/ipv4\/ip_forward&nbsp; \u6253\u958bLinux\u6838\u5fc3\u7684\u5c01\u5305\u8f49\u905e\u80fd\u529b,\u8b93linux\u5177router\u529f\u80fd<br>ps:\u53ef\u5728\/etc\/sysctl.conf\u5167\u52a0\u5165net.ipv4.ip_forward=1,\u5728\u57f7\u884csysctl -p\u8b93\u8a2d\u5b9a\u7acb\u5373\u751f\u6548<br><br>\u4f7f\u7528nat\u8868\u7684-j action\u5982\u679c\u662f<br>&nbsp;MASQUERADE,\u8868\u793a\u507d\u88ddip<br>&nbsp;SNAT &#8211;to,\u8868\u793a\u76f4\u63a5\u4fee\u6539ip\u8868\u982d,\u9700\u4f7f\u7528postrouting\u93c8<br>&nbsp;DNAT &#8211;to,\u8868\u793a\u76f4\u63a5\u4fee\u6539ip\u8868\u982d,\u9700\u4f7f\u7528prerouting\u93c8<br>&nbsp;REDICRECT &#8211;to-ports,\u9032\u884cport\u8f49\u63db<br>ex:iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth1 -j MASQUERADE\u3000\/\/\u82e5\u5c01\u5305\u5f9e192.168.1.2\u4f86\u4e14\u8981\u5f9eeth1\u4ecb\u9762\u51fa\u53bb,\u5247\u5c07\u5c01\u5305\u507d\u88dd<br>ex:iptables -t nat -A POSTROUTING -o eth1 -j SNAT &#8211;to 192.168.200.250&nbsp; \/\/\u628a\u8981\u5f9eeth1\u4ecb\u9762\u51fa\u53bb\u7684\u5c01\u5305,\u5c01\u5305\u4f86\u6e90\u6539\u70ba192.168.200.250<br>ex:iptables -t nat -A PREROUTING -p tcp -i eth1 &#8211;dport 80 -j DNAT &#8211;to 192.168.1.210:80&nbsp;<br>\u3000\/\/\u628a\u9032\u5165eth1\u4ecb\u9762\u4e14\u76ee\u6a19\u57e0\u70ba80\u7684\u5c01\u5305,\u5c01\u5305\u76ee\u6a19\u6539\u70ba192.168.1.210:80<br>ex:iptables -t nat -A PREROUTING -p tcp &#8211;dport 80 -j REDIRECT &#8211;to-ports 8080 \/\/\u82e5\u5c01\u5305\u9032\u4f86\u7684\u76ee\u6a19\u57e0\u70ba80,\u5247\u6539\u70ba8080<br><br><br>nat\u4e3b\u6a5f\u9700\u8a2d\u5b9a\u7684\u6709<br>echo &#8220;1&#8221; &gt; \/proc\/sys\/net\/ipv4\/ip_forward<br>modprobe ip_tables<br>modprobe ip_nat_ftp<br>modprobe ip_nat_irc<br>modprobe ip_conntrack<br>modprobe ip_conntrack_ftp<br>modprobe ip_conntrack_irc<br>\u82e5ppp0\u4ecb\u9762\u5c0d\u5916,\u4e14\u5c0d\u5167\u7db2\u8def\u70ba192.168.1.0\/24<br>iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.0\/24 -j MASQUERADE<br>ps:\u4ee5\u4e0a\u8a2d\u5b9a\u90fd\u5728nat\u7684\u5c0d\u5167\u7db2\u8def\u5df1\u9023\u7dda,\u4e14\u9810\u8a2d\u9598\u9053\u70ba\u5916\u7db2\u4ecb\u9762\u7684\u60c5\u6cc1\u4e0b<br>ps:\u8981\u900f\u904enat\u7684\u4e3b\u6a5f,client\u7aef\u9598\u9053\u8981\u8a2dnat\u4e3b\u6a5f,\u901a\u5e38dns\u4e5f\u9700\u8981\u8a2d\u5b9a<br><br>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br><br>\u5e38\u7528\u7bc4\u4f8b<br><br>basic mode:<br>\u4f7f\u7528iptables\u6642\u5efa\u8b70\u958b\u555f\u9019\u4e9b\u529f\u80fd<br>echo 1 &gt; \/proc\/sys\/net\/ipv4\/tcp_syncookies<br>echo 1 &gt; \/proc\/sys\/net\/ipv4\/tcp_max_syn_backlog<br>echo 1 &gt; \/proc\/sys\/net\/ipv4\/tcp_synack_retries<br>echo 1 &gt; \/proc\/sys\/net\/ipv4\/tcp_abort_on_overflow<br>echo 1 &gt; \/proc\/sys\/net\/ipv4\/icmp_echo_ignore_all<br>echo 1 &gt; \/proc\/sys\/net\/ipv4\/conf\/all\/rp_filter<br>echo 1 &gt; \/proc\/sys\/net\/ipv4\/conf\/all\/log_martians<br><br>client mode:<br>client\u7aef\u96fb\u8166\u5efa\u8b70\u8a2d\u5b9a\u65b9\u5f0f<br>ps:\u5047\u8a2d\u9023\u5916\u7db2\u5361\u70baeth0<br>iptables -P INPUT DROP<br>iptables -P OUTPUT ACCEPT<br>iptables -P FORWARD ACCEPT<br>iptables -A INPUT -i lo -j ACCEPT<br>iptables -A INPUT -i eth0 -m state &#8211;state RELATED,ESTABLISHED -j ACCEPT<br>\u4efb\u4f55\u4e3b\u52d5\u9023\u7dda\u5230client\u7aef\u96fb\u8166\u90fd\u6703\u88ab\u62d2\u7d55,\u9664\u975e\u662f\u7531client\u7aef\u767c\u8d77\u7684\u9023\u7dda\u6216\u5df2\u5b58\u5728\u7684\u9023\u7dda\u624d\u51c6\u8a31\u901a\u904e<br><br>\u4f7f\u7528forward\u7684strict nat mode:<br>ps:\u5047\u8a2dnat\u5df1\u8a2d\u5b9a\u597d\u53ef\u6b63\u5e38\u4f7f\u7528,\u9023\u5916\u7db2\u5361\u70baeth0<br>iptables -P FORWARD DROP<br>iptables -I FORWARD -o eth0 -p tcp &#8211;dport 80 -j ACCEPT<br>iptables -I FORWARD -o eth0 -p tcp &#8211;dport 443 -j ACCEPT<br>iptables -I FORWARD -o eth0 -p tcp &#8211;dport 53 -j ACCEPT<br>iptables -I FORWARD -o eth0 -p udp &#8211;dport 53 -j ACCEPT<br>iptables -I FORWARD -o eth0 -p tcp &#8211;dport 21 -j ACCEPT<br>iptables -I FORWARD -o eth0 -p tcp &#8211;dport 20 -j ACCEPT<br>iptables -A FORWARD -i eth0 -m state &#8211;state RELATED,ESTABLISHED -j ACCEPT<br>\u4f7f\u7528\u8005\u53ea\u53ef\u700f\u89bd\u7db2\u9801\u4ee5\u53caftp<br>iptables -A FORWARD -o eth0 -j LOG &#8211;log-prefix=natdeny<br>\u8a18\u9304\u4f7f\u7528\u8005\u4f7f\u7528\u90a3\u4e9bport\u88ab\u64cb\u6389,\u57f7\u884ccat \/var\/log\/message | grep natdeny\u53ef\u601d\u8003\u90a3\u4e9bport\u53ef\u958b\u653e<br><br>\u4f7f\u7528mangle\u7684strict nat mode<br>ps:\u5047\u8a2dnat\u5df1\u8a2d\u5b9a\u597d\u53ef\u6b63\u5e38\u4f7f\u7528,\u4e14lan\u4ecb\u9762\u70baeth0,wan\u4ecb\u9762\u70bappp0<br>iptables -t mangle -P PREROUTING DROP<br>iptables -t mangle -I PREROUTING -i lo -j ACCEPT<br>iptables -t mangle -I PREROUTING -i eth0 -p udp &#8211;dport 53 -j ACCEPT<br>iptables -t mangle -I PREROUTING -i eth0 -p tcp &#8211;dport 53 -j ACCEPT<br>iptables -t mangle -I PREROUTING -i eth0 -p tcp &#8211;dport 80 -j ACCEPT<br>iptables -t mangle -I PREROUTING -i eth0 -p tcp &#8211;dport 443 -j ACCEPT<br>iptables -t mangle -I PREROUTING -i eth0 -p tcp &#8211;dport 20 -j ACCEPT<br>iptables -t mangle -I PREROUTING -i eth0 -p tcp &#8211;dport 21 -j ACCEPT<br>iptables -t mangle -I PREROUTING -i eth0 -p tcp &#8211;dport 22 -j ACCEPT<br>iptables -t mangle -A PREROUTING -i ppp0 -m state &#8211;state RELATED,ESTABLISHED -j ACCEPT<br>\u4f7f\u7528\u8005\u53ea\u53ef\u700f\u89bd\u7db2\u9801\u4ee5\u53caftp<br>iptables -t mangle -A PREROUTING -i eth0 -j LOG &#8211;log-prefix=natdeny<br>\u8a18\u9304\u4f7f\u7528\u8005\u4f7f\u7528\u90a3\u4e9bport\u88ab\u64cb\u6389,\u57f7\u884ccat \/var\/log\/message | grep natdeny\u53ef\u601d\u8003\u90a3\u4e9bport\u53ef\u958b\u653e<br><br>server mode<br>\u5047\u8a2d\u9032\u5165\u5167\u90e8\u7684\u4ecb\u9762\u70baeth0<br>iptables -P INPUT DROP<br>iptables -P OUTPUT DROP<br>iptables -I OUTPUT -o eth0 -m state &#8211;state RELATED,ESTABLISHED -j ACCEPT<br>#\u82e5\u6709web server\u8981\u52a0\u5165<br>iptables -I INPUT -i eth0 -p tcp &#8211;dport 80 -j ACCEPT<br>iptables -I INPUT -i eth0 -p tcp &#8211;dport 443 -j ACCEPT<br>#\u82e5\u6709ftp server\u8981\u52a0\u5165<br>iptables -I INPUT -i eth0 -p tcp &#8211;dport 20 -j ACCEPT<br>iptables -I INPUT -i eth0 -p tcp &#8211;dport 21 -j ACCEPT<br>#\u82e5\u6709dns server\u8981\u52a0\u5165<br>iptables -I INPUT -i eth0 -p tcp &#8211;dport 53 -j ACCEPT<br>iptables -I INPUT -i eth0 -p udp &#8211;dport 53 -j ACCEPT<br>#\u82e5\u6709mail server\u8981\u52a0\u5165<br>iptables -I OUTPUT -i eth0 -p tcp &#8211;dport 25 -j ACCEPT<br>iptables -I OUTPUT -o eth0 -p tcp &#8211;dport 25 -j ACCEPT<br>#\u82e5\u8981\u7528ssh\u7ba1\u7406\u8981\u52a0\u5165<br>iptables -I INPUT -i eth0 -p tcp &#8211;dport 22 -j ACCEPT<br><br><br><br>\u53c3\u8003\u8cc7\u6599<br>\u7db2\u8def\u76f8\u95dc\u6587\u4ef6\u53ca\u5404\u5927\u7db2\u7ad9<br>\u9632\u706b\u7246\u76f8\u95dc\u66f8\u7c4d<\/p>\n","protected":false},"excerpt":{"rendered":"<p>IPTABLES\u7528\u4f86\u8a2d\u5b9anetfilter\u7684User Spa &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[17],"tags":[],"class_list":["post-617","post","type-post","status-publish","format-standard","hentry","category-systemtool"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/comments?post=617"}],"version-history":[{"count":0,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/617\/revisions"}],"wp:attachment":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/media?parent=617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/categories?post=617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/tags?post=617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}