mirror of
https://github.com/hardenedlinux/harbian-audit.git
synced 2025-07-28 08:04:57 +02:00
Add use case: apache2 service.
This commit is contained in:
parent
97d921c2c6
commit
5abbbc849f
28
docs/use-cases/apache2-usecase/Readme.mkd
Normal file
28
docs/use-cases/apache2-usecase/Readme.mkd
Normal file
@ -0,0 +1,28 @@
|
||||
# Apache2 deploy
|
||||
|
||||
## Install
|
||||
```
|
||||
sudo apt-get install apache2
|
||||
```
|
||||
|
||||
# How to use harbian-audit to audit and apply
|
||||
|
||||
## Set firewall
|
||||
```
|
||||
sed -i 's/PUB_IFS=.*/PUB_IFS="interface of machine"/g' ./etc.iptables.rules.v4.4http.sh
|
||||
sudo bash ./etc.iptables.rules.v4.4http.sh
|
||||
```
|
||||
|
||||
## Audit and apply
|
||||
See the documentation for more details:
|
||||
[harbian-audit-readme](https://github.com/hardenedlinux/harbian-audit/blob/master/README.md)
|
||||
|
||||
```
|
||||
sudo bash bin/hardening.sh --audit-all
|
||||
# This is set special service to exception(6.10)
|
||||
sudo bash bin/hardening.sh --set-hardening-level 5 --allow-service http
|
||||
sudo bash bin/hardening.sh --audit-all
|
||||
sudo bash bin/hardening.sh --apply
|
||||
```
|
||||
|
||||
|
@ -0,0 +1,99 @@
|
||||
#!/bin/bash
|
||||
IPT="/sbin/iptables"
|
||||
|
||||
echo "Starting IPv4 Wall..."
|
||||
$IPT -F
|
||||
$IPT -X
|
||||
$IPT -t nat -F
|
||||
$IPT -t nat -X
|
||||
$IPT -t mangle -F
|
||||
$IPT -t mangle -X
|
||||
$IPT -N LOGDROP
|
||||
modprobe ip_conntrack
|
||||
|
||||
PUB_IFS="eth0"
|
||||
|
||||
# DROP all incomming traffic
|
||||
$IPT -P INPUT DROP
|
||||
$IPT -P OUTPUT DROP
|
||||
$IPT -P FORWARD DROP
|
||||
|
||||
#unlimited
|
||||
$IPT -A INPUT -i lo -j ACCEPT
|
||||
$IPT -A OUTPUT -o lo -j ACCEPT
|
||||
$IPT -A INPUT -s 127.0.0.0/8 -j DROP
|
||||
|
||||
$IPT -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
|
||||
$IPT -A OUTPUT -p udp -m state --state NEW,ESTABLISHED -j ACCEPT
|
||||
$IPT -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
|
||||
$IPT -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
|
||||
$IPT -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT
|
||||
$IPT -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT
|
||||
$IPT -A INPUT -p icmp -m state --state RELATED -j ACCEPT
|
||||
|
||||
|
||||
$IPT -A INPUT -m limit --limit 3/min -j LOG --log-prefix "SFW2-IN-ILL-TARGET " --log-tcp-options --log-ip-options
|
||||
$IPT -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT
|
||||
$IPT -A FORWARD -m limit --limit 3/min -j LOG --log-prefix "SFW2-FWD-ILL-ROUTING " --log-tcp-options --log-ip-options
|
||||
|
||||
for PUB_IF in $PUB_IFS
|
||||
do
|
||||
# sync
|
||||
$IPT -A INPUT -i ${PUB_IF} -p tcp ! --syn -m state --state NEW -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "Drop Syn"
|
||||
$IPT -A INPUT -i ${PUB_IF} -p tcp ! --syn -m state --state NEW -j DROP
|
||||
|
||||
# Fragments
|
||||
$IPT -A INPUT -i ${PUB_IF} -f -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "Fragments Packets"
|
||||
$IPT -A INPUT -i ${PUB_IF} -f -j DROP
|
||||
|
||||
|
||||
# block bad stuff
|
||||
$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
|
||||
|
||||
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL NONE -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "NULL Packets"
|
||||
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL NONE -j DROP # NULL packets
|
||||
|
||||
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
|
||||
|
||||
$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-level 4 --log-prefix "XMAS Packets"
|
||||
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP #XMAS
|
||||
|
||||
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags FIN,ACK FIN -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "Fin Packets Scan"
|
||||
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags FIN,ACK FIN -j DROP # FIN packet scans
|
||||
|
||||
$IPT -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
|
||||
|
||||
# No smb/windows sharing packets - too much logging
|
||||
$IPT -A INPUT -p tcp -i ${PUB_IF} --dport 137:139 -j REJECT
|
||||
$IPT -A INPUT -p udp -i ${PUB_IF} --dport 137:139 -j REJECT
|
||||
$IPT -I INPUT -p tcp --dport 22 -i ${PUB_IF} -m state --state NEW -m recent --set
|
||||
$IPT -I INPUT -p tcp --dport 22 -i ${PUB_IF} -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j LOGDROP
|
||||
done
|
||||
# Allow full outgoing connection but no incomming stuff
|
||||
$IPT -A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
|
||||
$IPT -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
|
||||
|
||||
# allow ssh/http only
|
||||
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
|
||||
$IPT -A INPUT -p udp --dport 123 -m state --state NEW -j ACCEPT
|
||||
$IPT -A INPUT -p udp --dport 68 -m state --state NEW -j ACCEPT
|
||||
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
|
||||
# $IPT -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
|
||||
|
||||
# allow incoming ICMP ping pong stuff
|
||||
$IPT -A INPUT -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
|
||||
$IPT -A OUTPUT -p icmp --icmp-type 0 -m state --state ESTABLISHED,RELATED -j ACCEPT
|
||||
|
||||
# prevent ssh brute force attack
|
||||
$IPT -A LOGDROP -j LOG
|
||||
$IPT -A LOGDROP -j DROP
|
||||
|
||||
# Log everything else
|
||||
# *** Required for psad ****
|
||||
$IPT -A INPUT -j LOG
|
||||
$IPT -A FORWARD -j LOG
|
||||
$IPT -A INPUT -j DROP
|
||||
|
||||
exit 0
|
||||
|
Loading…
x
Reference in New Issue
Block a user