一個簡單的iptable的應用
最近負責網站的華3的防火牆總是出問題,具體的表現就是外網透過防火牆訪問網站不通,但是在內網,直接訪問有時正常的,初步定在防火牆的NAT的連結數的限制問題,估計一時半會搞不好,我就直接把網站放在公網了,順便用iptable寫了一個簡單的包過濾的規則,如下:
#!/bin/bash
SYSCTL="/sbin/sysctl -w"
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/ip_forward
else
$SYSCTL net.ipv4.ip_forward="1"
fi
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
else
$SYSCTL net.ipv4.tcp_syncookies="1"
fi
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
else
$SYSCTL net.ipv4.conf.all.rp_filter="1"
fi
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
else
$SYSCTL net.ipv4.icmp_echo_ignore_broadcasts="1"
fi
if [ "$SYSCTL" = "" ]
then
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
else
$SYSCTL net.ipv4.conf.all.accept_source_route="0"
fi
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects
else
$SYSCTL net.ipv4.conf.all.secure_redirects="1"
fi
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
else
$SYSCTL net.ipv4.conf.all.log_martians="1"
fi
#IP
echo "1" > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo "1" > /proc/sys/net/ipv4/conf/eth0/log_martians
# ddos
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/tcp_synack_retries
echo "2048" > /proc/sys/net/ipv4/tcp_max_syn_backlog
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -A INPUT -p tcp -d 192.168.1.100 --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.1.100 --sport 22 -j ACCEPT
iptables -A INPUT -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.1.100 --sport 80 -j ACCEPT
iptables -A INPUT -p tcp -d WAN_IP --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -s WAN_IP --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 1521 -j ACCEPT
iptables -A INPUT -p tcp --sport 1521 -j ACCEPT
#DNS
#iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
#iptables -A INPUT -p udp --sport 53 -j ACCEPT
# LO loop interface
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -d 192.168.1.100 -j ACCEPT
iptables -A OUTPUT -s 192.168.1.100 -d 0.0.0.0/0 -j ACCEPT
#FTP enable
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
iptables -A INPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
#ip route add 10.1.0.0/16 via 10.1.2.1 dev eth0
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 30/m --limit-burst 2 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -p tcp --dport 1024:65000 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65000 -j ACCEPT
iptables -L -n --line-number -v -x
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
目前看來還比較問題,btw,要是blog能支援程式碼就好了 :)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8432937/viewspace-1028825/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一個簡單的 indexedDB 應用示例Index
- 用 Vue 建立一個簡單的 electron 桌面應用Vue
- 第一章 第一個簡單的iOS應用iOS
- 如何用TypeScript來建立一個簡單的Web應用TypeScriptWeb
- 分享一個簡單的 laravel 應用健康檢查命令Laravel
- 開發一個簡單的 HTTP 伺服器應用HTTP伺服器
- 開發和部署一個簡單的Clojure Web應用Web
- Spring Boot 之路(一):一個簡單的Spring Boot應用Spring Boot
- spring2.5的第一個簡單應用的學習Spring
- 用Scroller完成一個簡單的ViewPagerViewpager
- websoket的簡單應用Web
- npm的簡單應用NPM
- 對AVPlayer的一些簡單應用
- 在Java 11中建立一個簡單的模組化應用教程Java
- 一個“線上學習-練習“的簡單設計和應用
- 用 go 實現一個簡單的 mvcGoMVC
- 用java寫一個貪食蛇的簡單AIJavaAI
- 用 webpack 寫一個簡單的 JS SDKWebJS
- 用PHP寫一個簡單的日曆PHP
- 實現一個簡單的基於 WebAssembly 的圖片處理應用Web
- 使用vue-cli腳手架工具建立一個簡單的單頁應用Vue
- jsp的簡單應用JS
- 遞迴的簡單應用遞迴
- rename命令的簡單應用
- 使用 Vue.js 和 Iris 共建一個簡單的 Todo MVC 應用Vue.jsMVC
- [譯]使用 Rust 開發一個簡單的 Web 應用,第 1 部分RustWeb
- 一個簡單而美觀的跨平臺播客應用程式
- SimpleRAG:基於WPF與Semantic Kernel實現的一個簡單的RAG應用
- 一些常用的html、css、js的簡單應用HTMLCSSJS
- 用canvas實現一個簡單的畫板Canvas
- 用 Vue 做一個簡單的購物appVueAPP
- 用java做一個簡單的二維碼Java
- 用Python寫一個簡單的Web框架PythonWeb框架
- 用asio擼了一個簡單的Actor模型模型
- Thrift使用入門(2) - 用Thrift實現一個簡單的Server/Client應用程式Serverclient
- 快速構建一個shell型別的簡單應用 quick-shell.js型別UIJS
- 最簡單的nginx教程 - 如何把一個web應用部署到nginx上NginxWeb
- 鴻蒙系統應用開發之JS實現一個簡單的List鴻蒙JS