WEB應用服務器配置及安全應用指南_第1頁
WEB應用服務器配置及安全應用指南_第2頁
WEB應用服務器配置及安全應用指南_第3頁
WEB應用服務器配置及安全應用指南_第4頁
WEB應用服務器配置及安全應用指南_第5頁
已閱讀5頁,還剩71頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、WEB應用服務器配置及安全應用指南技術創新 變革未來課程大綱Apache服務器安全加固Nginx 服務器安全加固Tomcat安全加固Web應用服務器加固思路Apache服務安全加固一.賬號設置以專門的用戶帳號和組運行 Apache。根據需要為 Apache 創建用戶、組參考配置操作 如果沒有設置用戶和組,則新建用戶,并在 Apache 配置文件中指定 (1) 創建 apache 組:groupadd apache(2) 創建 apache 用戶并加入 apache 組:useradd apache g apache(3) 將下面兩行加入 Apache 配置文件 httpd.conf 中檢查 h

2、ttpd.conf 配置文件。 檢查是否使用非專用賬戶(如 root)運行 apache默認一般符合要求,Linux下默認apache或者nobody用戶,Unix默認為daemon用戶Apache服務安全加固授權設置嚴格控制Apache主目錄的訪問權限,非超級用戶不能修改該目錄中的內容Apache 的 主目錄對應于 Apache Server配置文件 httpd.conf 的Server Root控制項中應為:判定條件非超級用戶不能修改該目錄中的內容檢測操作嘗試修改,看是否能修改一般為/etc/httpd目錄,默認情況下屬主為root:root,其它用戶不能修改文件,默認一般符合要求嚴格設置

3、配置文件和日志文件的權限,防止未授權訪問。chmod 600 /etc/httpd/conf/httpd.conf”設置配置文件為屬主可讀寫,其他用戶無權限。使用命令”chmod 644 /var/log/httpd/*.log”設置日志文件為屬主可讀寫,其他用戶只讀權限。/etc/httpd/conf/httpd.conf默認權限是644,可根據需要修改權限為600。/var/log/httpd/*.log默認權限為644,默認一般符合要求。Apache服務安全加固日志設置設備應配置日志功能,對運行錯誤、用戶訪問等進行記錄,記錄內容包括時間,用戶使用的 IP 地址等內容。編輯 httpd.c

4、onf 配置文件,設置日志記錄文件、記錄內容、記錄 格式。其中,錯誤日志:ErrorLog 指令設置錯誤日志文件名和位置。錯誤日志是最重要的 日志文件,Apache httpd 將在這個文件中存放診斷信息和處理請 求中出現的錯誤。若要將錯誤日志送到 Syslog,則設置: ErrorLog syslog。CustomLog 指令指定了保存日志文件的具體位置以及日志的格式。訪問日志中會記錄服務器所處理的所有請求。LogFormat 設置日志格式,建議設置為 combined 格式。LogLevel 用于調整記錄在錯誤日志中的信息的詳細程度,建議設置為notice。日志的級別,默認是warn,no

5、tice級別比較詳細,在實際中由于日志會占用大量硬盤空間,一般沒有設置Apache服務安全加固禁止訪問外部文件禁止 Apache 訪問 Web 目錄之外的任何文件。參考配置操作編輯 httpd.conf 配置文件:設置可訪問目錄其中/web 為網站根目錄默認配置如下:一般可根據業務需要設置Apache服務安全加固禁止目錄列出目錄列出會導致明顯信息泄露或下載,禁止 Apache 列表顯示文件,編輯 httpd.conf 配置文件:將Options Indexes FollowSymLinks 中的 Indexes 去掉,就可以禁 止 Apache 顯示該目錄結構。 Indexes 的作用就是當該

6、目錄下沒 有 index.html 文件時,就顯示目錄結構。重新啟動 Apache 服務可以設置 /etc/httpd/httpd.conf 段中刪除Options的Indexes設置 一般可根據業務需要設置Apache服務安全加固錯誤頁面重定向Apache 錯誤頁面重定向功能防止敏感信息泄露修改 httpd.conf 配置文件:重新啟動 Apache 服務此項需要應用系統設有錯誤頁面,或者不在httpd中設置完全由業務邏輯實現,可根據業務需求加固。Apache服務安全加固拒絕服務防范根據業務需要,合理設置 session 時間,防止拒絕服務攻擊編輯 httpd.conf 配置文件:重新啟動

7、Apache 服務默認Timeout 120 KeepAlive Off,KeepAliveTimeout 15,該項設置涉及性能調整,一般不做。Apache服務安全加固隱藏 Apache 的版本號隱藏 Apache 的版本號及其它敏感信息。1.配置操作修改 httpd.conf 配置文件:網絡通信的分層模型Apache服務安全加固關閉 TRACE功能關閉 TRACE,防止 TRACE 方法被訪問者惡意利用。配置修改vim /etc/httpd/conf/httpd.conf網絡通信的分層模型Apache服務安全加固禁用 CGI如果服務器上不需要運行 CGI 程序,建議禁用 CGI1.修改配置

8、vim /etc/httpd/conf/httpd.conf,把 cgi-bin 目錄的配置和模塊都注釋掉.根據需要設置,如果沒有CGI程序,可以關閉Apache服務安全加固監聽地址綁定服務器有多個 IP 地址時,只監聽提供服務的 IP 地址1.使用命令查看是否綁定IP地址修改配置vim /etc/httpd/conf/httpd.conf 修改默認設置是Listen 80監聽所有地址,如果服務器只有一個IP地址可不做該項設置,如果有多個IP可以按照需要設 網絡通信的分層模型Apache服務安全加固刪除缺省安裝的無用文件刪除缺省安裝的無用文件.參考配置操作刪除缺省 HTML 文件刪除缺省的CG

9、I腳本刪除 Apache 說明文件刪除源代碼文件刪除CGI 可根據實際情況刪除,一般是 /var/www/html /var/www/cgi-bin 默認就是空的Apache服務安全加固禁用非法 HTTP 方法禁用PUT、DELETE等危險的HTTP 方法.編輯 httpd.conf 文件,只允許 get、post 方法根據需要可設置,如果沒有不需要用到put delete HTTP 方法的話,加在/etc/httpd/conf/httpd.conf的段中。 編譯安裝nginx(使用CentOS 5.8)依賴包:pcre-devel、zlib-devel默認以nobody身份運行,建議使用專有

10、賬號nginxNginx安裝及服務控制3-1rootlocalhost # yum -y install pcre-devel zlib-develrootlocalhost # useradd -M -s /sbin/nologin nginxrootlocalhost # tar zxf nginx-1.0.8.tar.gzrootlocalhost # cd nginx-1.0.8rootlocalhost nginx-1.0.8# ./configure -prefix=/usr/local/nginx -user=nginx -group=nginx -with-http_stub_

11、status_modulerootlocalhost nginx-1.0.8# makerootlocalhost nginx-1.0.8# make installrootlocalhost nginx-1.0.8# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/啟用狀態統計模塊建立符號鏈接Nginx的運行控制語法檢查:nginx -t -c 配置文件啟動程序:nginx -c 配置文件關閉/殺死程序:發送QUIT/KILL進程信號重載配置:發送HUP進程信號Nginx安裝及服務控制3-2rootlocalhost # nginx -tn

12、ginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successfulrootlocalhost # nginxrootlocalhost # netstat -anpt | grep nginxtcp 0 0 :80 :* LISTEN 26088/nginx: masterrootlocalhost # cat /usr/local/nginx/logs/ngi

13、nx.pid22378rootlocalhost # kill -s QUIT 22378等同于 killall -s QUIT nginx添加nginx服務編寫/etc/init.d/nginx腳本使用chkconfig添加為系統服務Nginx安裝及服務控制3-3rootlocalhost # vi /etc/init.d/nginx#!/bin/bash# chkconfig: - 99 20case $1 in start) /usr/local/nginx/sbin/nginx ; stop) kill -s QUIT $(cat /usr/local/nginx/logs/nginx

14、.pid) ;rootlocalhost # chmod +x /etc/init.d/nginxrootlocalhost # chkconfig -add nginx全局配置、I/O事件配置nginx.conf配置文件 2-1rootlocalhost # vi /usr/local/nginx/conf/nginx.conf#user nobody;worker_processes 1;#error_log logs/error.log;#pid logs/nginx.pid;events use epoll; worker_connections 4096;工作進程數量日志文件位置I/

15、O事件模型每進程連接數HTTP監聽配置nginx.conf配置文件 2-2rootlocalhost # vi /usr/local/nginx/conf/nginx.confhttp access_log logs/access.log main; sendfile on; keepalive_timeout 65; server listen 80; server_name ; charset utf-8; location / root html; index index.html index.php; 網站根目錄位置監聽地址及端口啟用統計頁面 location /status stub

16、_status on; access_log off; 訪問統計頁面http:/YourServer/statusNginx的訪問狀態統計請思考:Nginx與Apache相比,具有哪些優勢?如何啟動、關閉Nginx服務程序?如何修改Nginx服務器的監聽地址、網站目錄?小結基于域名的虛擬主機多個server 區域不同的server_name、root設置虛擬Web主機2-1http server server_name ; location / root /var/www/benet; index index.html index.php; server server_name ; locat

17、ion / root /var/www/accp; index index.html index.php; 第1個虛擬主機第2個虛擬主機基于IP地址的虛擬主機多個server 區域不同的listen、server_name、root設置虛擬Web主機2-2http server listen 1:80; server_name ; server listen 2:80; server_name ; 如果直接通過IP地址訪問,各虛擬主機的域名也可以相同Nginx 服務器安全加固默認配置文件和Nginx端口/usr/local/nginx/conf/ Nginx配置文件目錄,/usr/local/

18、nginx/conf/nginx.conf是主配置文件/usr/local/nginx/html/ 默認網站文件位置/usr/local/nginx/logs/ 默認日志文件位置Nginx HTTP默認端口 : TCP 80Nginx HTTPS默認端口: TCP 443你可以使用以下命令來測試Nginx配置文件準確性。/usr/local/nginx/sbin/nginx -t將會輸出:the configuration file /usr/local/nginx/conf/nginx.conf syntax is okconfiguration file /usr/local/nginx/

19、conf/nginx.conf test is successful執行以下命令來重新加載配置文件。/usr/local/nginx/sbin/nginx -s reload執行以下命令來停止服務器。/usr/local/nginx/sbin/nginx -s stopNginx 服務器安全加固一、配置SELinux注意:對于云服務器 ECS,參閱ECS 使用須知,基于兼容性、穩定性考慮,請勿開啟 SELinux。安全增強型 Linux(SELinux)的是一個Linux內核的功能,它提供支持訪問控制的安全政策保護機制。它可以大部分的攻擊。下面我們來看如何啟動基于centos/RHEL系統的S

20、ELinux。安裝SELinuxrpm -qa | grep selinuxlibselinux-1.23.10-2selinux-policy-targeted-1.23.16-6如果沒有返回任何結果,代表沒有安裝 SELinux,如果返回了類似上面的結果,則說明系統安裝了 SELinux。布什值鎖定運行命令getsebool -a來鎖定系統。getsebool -a | lessgetsebool -a | grep offgetsebool -a | grep o Nginx 服務器安全加固通過分區掛載允許最少特權服務器上的網頁/html/php文件單獨分區。例如,新建一個分區/dev/

21、sda5(第一邏輯分區),并且掛載在/nginx。確保 /nginx是以noexec, nodev and nosetuid的權限掛載。以下是我的/etc/fstab的掛載/nginx的信息:LABEL=/nginx /nginx ext3 defaults,nosuid,noexec,nodev 1 2注意:你需要使用fdisk和mkfs.ext3命令創建一個新分區。 Nginx 服務器安全加固配置/etc/sysctl.conf強化Linux安全你可以通過編輯/etc/sysctl.conf來控制和配置Linux內核、網絡設置。# Avoid a smurf attacknet.ipv4.

22、icmp_echo_ignore_broadcasts = 1# Turn on protection for bad icmp error messagesnet.ipv4.icmp_ignore_bogus_error_responses = 1# Turn on syncookies for SYN flood attack protectionnet.ipv4.tcp_syncookies = 1# Turn on and log spoofed, source routed, and redirect packetsnet.ipv4.conf.all.log_martians = 1

23、net.ipv4.conf.default.log_martians = 1# No source routed packets herenet.ipv4.conf.all.accept_source_route = 0net.ipv4.conf.default.accept_source_route = 0Nginx 服務器安全加固配置/etc/sysctl.conf強化Linux安全你可以通過編輯/etc/sysctl.conf來控制和配置Linux內核、網絡設置。# Make sure no one can alter the routing tablesnet.ipv4.conf.al

24、l.accept_redirects = 0net.ipv4.conf.default.accept_redirects = 0net.ipv4.conf.all.secure_redirects = 0net.ipv4.conf.default.secure_redirects = 0# Dont act as a routernet.ipv4.ip_forward = 0net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0# Turn on execshildkernel.exec-shie

25、ld = 1kernel.randomize_va_space = 1Nginx 服務器安全加固配置/etc/sysctl.conf強化Linux安全你可以通過編輯/etc/sysctl.conf來控制和配置Linux內核、網絡設置。# Turn on execshildkernel.exec-shield = 1kernel.randomize_va_space = 1# Tuen IPv6net.ipv6.conf.default.router_solicitations = 0net.ipv6.conf.default.accept_ra_rtr_pref = 0net.ipv6.con

26、f.default.accept_ra_pinfo = 0net.ipv6.conf.default.accept_ra_defrtr = 0net.ipv6.conf.default.autoconf = 0net.ipv6.conf.default.dad_transmits = 0net.ipv6.conf.default.max_addresses = 1# Optimization for port usefor LBs# Increase system file descriptor limitfs.file-max = 65535Nginx 服務器安全加固配置/etc/sysct

27、l.conf強化Linux安全你可以通過編輯/etc/sysctl.conf來控制和配置Linux內核、網絡設置。# Allow for more PIDs (to reduce rollover problems); may break some programs 32768kernel.pid_max = 65536# Increase system IP port limitsnet.ipv4.ip_local_port_range = 2000 65000# Increase TCP max buffer size setable using setsockopt()net.ipv4.

28、tcp_rmem = 4096 87380 8388608net.ipv4.tcp_wmem = 4096 87380 8388608# Increase Linux auto tuning TCP buffer limits# min, default, and max number of bytes to use# set max to at least 4MB, or higher if you use very high BDP paths# Tcp Windows etcnet.core.rmem_max = 8388608net.core.wmem_max = 8388608dev

29、_max_backlog = 5000net.ipv4.tcp_window_scaling = 1 Nginx 服務器安全加固刪除所有不需要的Nginx模塊你需要直接通過編譯Nginx源代碼使模塊數量最少化。通過限制只允許web服務器訪問模塊把風險降到最低。你可以只配置安裝nginx你所需要的模塊。例如,禁用SSL和autoindex模塊你可以執行以下命令:./configure without-http_autoindex_module without-http_ssi_modulemakemake install通過以下命令來查看當編譯nginx服務器時哪個模塊能開戶或關閉:./conf

30、igure help | less禁用你用不到的nginx模塊。(可選項)更改nginx版本名稱。編輯文件/http/ngx_http_header_filter_module.c:vi +48 src/http/ngx_http_header_filter_module.c找到行:static char ngx_http_server_string = “Server: nginx” CRLF;static char ngx_http_server_full_string = “Server: ” NGINX_VER CRLF;按照以下行修改:static char ngx_http_ser

31、ver_string = “Server: Ninja Web Server” CRLF;static char ngx_http_server_full_string = “Server: Ninja Web Server” CRLF;保存并關閉文件。現在你可以編輯服務器了。增加以下代碼到nginx.conf文件來關閉nginx版本號的顯示。server_tokens offNginx 服務器安全加固使用mod_security(只適合后端Apache服務器)mod_security為Apache提供一個應用程序級的防火墻。為后端Apache Web服務器安裝mod_security,這會阻

32、止很多注入式攻擊。安裝SELinux策略以強化Nginx Web服務器默認的SELinux不會保護Nginx Web服務器,但是你可以安裝和編譯保護軟件。1、安裝編譯SELinux所需環境支持yum -y install selinux-policy-targeted selinux-policy-devel2、下載SELinux策略以強化Nginx Web服務器。cd /optwget /project/selinuxnginx/se-ngix_1_0_10.tar.gz?use_mirror=nchc3、解壓文件tar -zxvf se-ngix_1_0_10.tar.gzNginx 服務

33、器安全加固安裝SELinux策略以強化Nginx Web服務器4、編譯文件cd se-ngix_1_0_10/nginxmake將會輸出如下:Compiling targeted nginx module/usr/bin/checkmodule: loading policy configuration from tmp/nginx.tmp/usr/bin/checkmodule: policy configuration loaded/usr/bin/checkmodule: writing binary representation (version 6) to tmp/nginx.mod

34、Creating targeted nginx.pp policy packagerm tmp/nginx.mod.fc tmp/nginx.mod5、安裝生成的nginx.pp SELinux模塊:/usr/sbin/semodule -i nginx.ppNginx 服務器安全加固基于Iptables防火墻的限制下面的防火墻腳本阻止任何除了允許:來自HTTP(TCP端口80)的請求來自ICMP ping的請求ntp(端口123)的請求輸出smtp(TCP端口25)的請求輸出#!/bin/bashIPT=”/sbin/iptables”# IPS # Get server public ip

35、SERVER_IP=$(ifconfig eth0 | grep inet addr: | awk -Finet addr: print $2 | awk print $1)LB1_IP=”LB2_IP=”# Do some smart logic so that we can use damm script on LB2 tooOTHER_LB=”SERVER_IP=” $SERVER_IP = $LB1_IP & OTHER_LB=”$LB2_IP” | OTHER_LB=”$LB1_IP” $OTHER_LB = $LB2_IP & OPP_LB=”$LB1_IP” | OPP_LB=”

36、$LB2_IP”# IPs #PUB_SSH_ONLY=”122.xx.yy.zz/29# FILES #BLOCKED_IP_TDB=/root/.fw/blocked.ip.txtSPOOFIP=”/8 /16 /12 /8 /16 /8 /4 55/32 /16 /4 /5 /5 /24BADIPS=$( -f $BLOCKED_IP_TDB & egrep -v “#|$” $BLOCKED_IP_TDB)# Interfaces #PUB_IF=”eth0 # public interfaceLO_IF=”lo” # loopbackVPN_IF=”eth1 # vpn / priv

37、ate net# start firewall #echo “Setting LB1 $(hostname) Firewall”# DROP and close everything$IPT -P INPUT DROP$IPT -P OUTPUT DROP$IPT -P FORWARD DROP# Unlimited lo access$IPT -A INPUT -i $LO_IF -j ACCEPT$IPT -A OUTPUT -o $LO_IF -j ACCEPT# Unlimited vpn / pnet access$IPT -A INPUT -i $VPN_IF -j ACCEPT$

38、IPT -A OUTPUT -o $VPN_IF -j ACCEPT# Drop sync$IPT -A INPUT -i $PUB_IF -p tcp ! syn -m state state NEW -j DROP# Drop Fragments$IPT -A INPUT -i $PUB_IF -f -j DROP$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags ALL FIN,URG,PSH -j DROP$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags ALL ALL -j DROP# Drop NULL packet

39、s$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags ALL NONE -m limit limit 5/m limit-burst 7 -j LOG log-prefix ” NULL Packets “$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags ALL NONE -j DROP$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags SYN,RST SYN,RST -j DROP# Drop XMAS$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags SYN,F

40、IN SYN,FIN -m limit limit 5/m limit-burst 7 -j LOG log-prefix ” XMAS Packets “$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags SYN,FIN SYN,FIN -j DROP# Drop FIN packet scans$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags FIN,ACK FIN -m limit limit 5/m limit-burst 7 -j LOG log-prefix ” Fin Packets Scan “$IPT -A I

41、NPUT -i $PUB_IF -p tcp tcp-flags FIN,ACK FIN -j DROP$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP# Log and get rid of broadcast / multicast and invalid$IPT -A INPUT -i $PUB_IF -m pkttype pkt-type broadcast -j LOG log-prefix ” Broadcast “$IPT -A INPUT -i $PUB_IF -m pkttype

42、 pkt-type broadcast -j DROP$IPT -A INPUT -i $PUB_IF -m pkttype pkt-type multicast -j LOG log-prefix ” Multicast “$IPT -A INPUT -i $PUB_IF -m pkttype pkt-type multicast -j DROP$IPT -A INPUT -i $PUB_IF -m state state INVALID -j LOG log-prefix ” Invalid “$IPT -A INPUT -i $PUB_IF -m state state INVALID

43、-j DROP# Log and block spoofed ips$IPT -N spooflistfor ipblock in $SPOOFIPdo$IPT -A spooflist -i $PUB_IF -s $ipblock -j LOG log-prefix ” SPOOF List Block “$IPT -A spooflist -i $PUB_IF -s $ipblock -j DROPdone$IPT -I INPUT -j spooflist$IPT -I OUTPUT -j spooflist$IPT -I FORWARD -j spooflist# Allow ssh

44、only from selected public ipsfor ip in $PUB_SSH_ONLYdo$IPT -A INPUT -i $PUB_IF -s $ip -p tcp -d $SERVER_IP destination-port 22 -j ACCEPT$IPT -A OUTPUT -o $PUB_IF -d $ip -p tcp -s $SERVER_IP sport 22 -j ACCEPTdone# allow incoming ICMP ping pong stuff$IPT -A INPUT -i $PUB_IF -p icmp icmp-type 8 -s 0/0

45、 -m state state NEW,ESTABLISHED,RELATED -m limit limit 30/sec -j ACCEPT$IPT -A OUTPUT -o $PUB_IF -p icmp icmp-type 0 -d 0/0 -m state state ESTABLISHED,RELATED -j ACCEPT# allow incoming HTTP port 80$IPT -A INPUT -i $PUB_IF -p tcp -s 0/0 sport 1024:65535 dport 80 -m state state NEW,ESTABLISHED -j ACCE

46、PT$IPT -A OUTPUT -o $PUB_IF -p tcp sport 80 -d 0/0 dport 1024:65535 -m state state ESTABLISHED -j ACCEPT# allow outgoing ntp$IPT -A OUTPUT -o $PUB_IF -p udp dport 123 -m state state NEW,ESTABLISHED -j ACCEPT$IPT -A INPUT -i $PUB_IF -p udp sport 123 -m state state ESTABLISHED -j ACCEPT# allow outgoin

47、g smtp$IPT -A OUTPUT -o $PUB_IF -p tcp dport 25 -m state state NEW,ESTABLISHED -j ACCEPT$IPT -A INPUT -i $PUB_IF -p tcp sport 25 -m state state ESTABLISHED -j ACCEPT# add your other rules here # drop and log everything else$IPT -A INPUT -m limit limit 5/m limit-burst 7 -j LOG log-prefix ” DEFAULT DR

48、OP “$IPT -A INPUT -j DROPexit 0Nginx 服務器安全加固基于Iptables防火墻的限制# IPs #PUB_SSH_ONLY=”122.xx.yy.zz/29# FILES #BLOCKED_IP_TDB=/root/.fw/blocked.ip.txtSPOOFIP=”/8 /16 /12 /8 /16 /8 /4 55/32 /16 /4 /5 /5 /24BADIPS=$( -f $BLOCKED_IP_TDB & egrep -v “#|$” $BLOCKED_IP_TDB)# Interfaces #PUB_IF=”eth0 # public int

49、erfaceLO_IF=”lo” # loopbackVPN_IF=”eth1 # vpn / private net# start firewall #echo “Setting LB1 $(hostname) Firewall”# DROP and close everything$IPT -P INPUT DROP$IPT -P OUTPUT DROP$IPT -P FORWARD DROP# Unlimited lo access$IPT -A INPUT -i $LO_IF -j ACCEPT$IPT -A OUTPUT -o $LO_IF -j ACCEPT# Unlimited

50、vpn / pnet access$IPT -A INPUT -i $VPN_IF -j ACCEPT$IPT -A OUTPUT -o $VPN_IF -j ACCEPT# Drop sync$IPT -A INPUT -i $PUB_IF -p tcp ! syn -m state state NEW -j DROP# Drop Fragments$IPT -A INPUT -i $PUB_IF -f -j DROP$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags ALL FIN,URG,PSH -j DROP$IPT -A INPUT -i $PUB_I

51、F -p tcp tcp-flags ALL ALL -j DROP# Drop NULL packets$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags ALL NONE -m limit limit 5/m limit-burst 7 -j LOG log-prefix ” NULL Packets “$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags ALL NONE -j DROP$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags SYN,RST SYN,RST -j DROP# Drop

52、 XMAS$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags SYN,FIN SYN,FIN -m limit limit 5/m limit-burst 7 -j LOG log-prefix ” XMAS Packets “$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags SYN,FIN SYN,FIN -j DROP# Drop FIN packet scans$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags FIN,ACK FIN -m limit limit 5/m limit-bur

53、st 7 -j LOG log-prefix ” Fin Packets Scan “$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags FIN,ACK FIN -j DROP$IPT -A INPUT -i $PUB_IF -p tcp tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP# Log and get rid of broadcast / multicast and invalid$IPT -A INPUT -i $PUB_IF -m pkttype pkt-type broadcast -j LOG log-pre

54、fix ” Broadcast “$IPT -A INPUT -i $PUB_IF -m pkttype pkt-type broadcast -j DROP$IPT -A INPUT -i $PUB_IF -m pkttype pkt-type multicast -j LOG log-prefix ” Multicast “$IPT -A INPUT -i $PUB_IF -m pkttype pkt-type multicast -j DROP$IPT -A INPUT -i $PUB_IF -m state state INVALID -j LOG log-prefix ” Inval

55、id “$IPT -A INPUT -i $PUB_IF -m state state INVALID -j DROP# Log and block spoofed ips$IPT -N spooflistfor ipblock in $SPOOFIPdo$IPT -A spooflist -i $PUB_IF -s $ipblock -j LOG log-prefix ” SPOOF List Block “$IPT -A spooflist -i $PUB_IF -s $ipblock -j DROPdone$IPT -I INPUT -j spooflist$IPT -I OUTPUT

56、-j spooflist$IPT -I FORWARD -j spooflist# Allow ssh only from selected public ipsfor ip in $PUB_SSH_ONLYdo$IPT -A INPUT -i $PUB_IF -s $ip -p tcp -d $SERVER_IP destination-port 22 -j ACCEPT$IPT -A OUTPUT -o $PUB_IF -d $ip -p tcp -s $SERVER_IP sport 22 -j ACCEPTdone# allow incoming ICMP ping pong stuf

57、f$IPT -A INPUT -i $PUB_IF -p icmp icmp-type 8 -s 0/0 -m state state NEW,ESTABLISHED,RELATED -m limit limit 30/sec -j ACCEPT$IPT -A OUTPUT -o $PUB_IF -p icmp icmp-type 0 -d 0/0 -m state state ESTABLISHED,RELATED -j ACCEPT# allow incoming HTTP port 80$IPT -A INPUT -i $PUB_IF -p tcp -s 0/0 sport 1024:6

58、5535 dport 80 -m state state NEW,ESTABLISHED -j ACCEPT$IPT -A OUTPUT -o $PUB_IF -p tcp sport 80 -d 0/0 dport 1024:65535 -m state state ESTABLISHED -j ACCEPT# allow outgoing ntp$IPT -A OUTPUT -o $PUB_IF -p udp dport 123 -m state state NEW,ESTABLISHED -j ACCEPT$IPT -A INPUT -i $PUB_IF -p udp sport 123

59、 -m state state ESTABLISHED -j ACCEPT# allow outgoing smtp$IPT -A OUTPUT -o $PUB_IF -p tcp dport 25 -m state state NEW,ESTABLISHED -j ACCEPT$IPT -A INPUT -i $PUB_IF -p tcp sport 25 -m state state ESTABLISHED -j ACCEPT# add your other rules here # drop and log everything else$IPT -A INPUT -m limit limit 5/m limit-burst 7 -j LOG log-prefix ” DEFAULT DROP “$IPT -A INPUT -j DROPexit 0Nginx 服務器安全加固基于Iptables防火墻的限制# Unlimited lo access$IPT -A INPUT -i $LO_IF -j ACCEPT$IPT -A OUTPUT -o $LO_IF -j ACCEPT# Unlimited vpn / pnet access$IPT -A INPUT -i $VPN_IF -j ACCEPT$IPT -A OUTPUT -o $VPN_IF -j A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論