1) προς τις υπηρεσίες που θέλω να χρησιμοποιήσω σαν client και
2) προς τις υπηρεσίες που θέλω να προσφέρω σαν server.
στην προσπάθεια αυτή έκανα ένα μικρό script που με start/stop ξεκινά και σταματά το firewall. (Θέλω να είναι σε αυτήν την μορφή για να το αλλάζω εύκολα).
Όμως ενώ έχω ισχυρά την πεποίθηση ότι δεν κάνω κάποιο λάθος δεν μπορώ να ανοίξω τρύπα στο firewall για να χρησιμοποιώ το απλό έναν ssh client.
Παρακάτω είναι το script.
- Κώδικας: Επιλογή όλων
#!/bin/sh
#
# Initscript for firewall.
#
# description: Starts and stops firewall
#
### BEGIN INIT INFO
# Provides: firewall script
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Starts and stops firewall
### END INIT INFO
# Check if root is running this script
if [ $(id -u) -ne 0 ] ; then
echo "ERROR: Try to run this as root."
# LSB specification errorcode
exit 4
fi
modprobe ip_conntrack_ftp
INTERFACE="eth1"
LOOPBACK_INTERFACE="lo"
IPADDR="192.168.0.5"
LOOPBACK="127.0.0.1"
CLASS_A="10.0.0.0/8"
CLASS_B="172.16.0.0/12"
CLASS_C="192.168.0.0/16"
CLASS_D_MULTICAST="224.0.0.0/4"
CLASS_E_RESERVED_NET="240.0.0.0/5"
BROADCAST_SRC="0.0.0.0"
BROADCAST_DEST="255.255.255.255"
PRIVPORTS="0:1023"
UNPRIVPORTS="1024:65535"
#########################################
#Enable broadcast echo protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#Disable Source Routed Packets
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done
#Enable TCP SYN Cookie Protection
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#Disable ICMP Redirect Acceptance
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done
#Dont send redirect messages
for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo 0 > $f
done
#Drop Spoofed Packets
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done
#Log packets with impossible addresses
for f in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 1 > $f
done
#########################################
flush()
{
#Remove any existing rules from all chains
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush
}
accept_policy()
{
#set default policy to accept
iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT
iptables -t nat --policy PREROUTING ACCEPT
iptables -t nat --policy OUTPUT ACCEPT
iptables -t nat --policy POSTROUTING ACCEPT
iptables -t mangle --policy PREROUTING ACCEPT
iptables -t mangle --policy OUTPUT ACCEPT
}
drop_policy()
{
#set default policy to drop
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP
# iptables -t nat --policy PREROUTING DROP
# iptables -t nat --policy OUTPUT DROP
# iptables -t nat --policy POSTROUTING DROP
iptables -t mangle --policy PREROUTING DROP
iptables -t mangle --policy OUTPUT DROP
}
remove_user_chains()
{
iptables -X
iptables -t nat -X
iptables -t mangle -X
}
rules()
{
####### Allow ssh client to remote ssh server
# iptables -A OUTPUT -p tcp -s $IPADDR --sport $UNPRIVPORTS --dport 22 -j ACCEPT
# iptables -A INPUT -p tcp --sport 22 -d $IPADDR --dport $UNPRIVPORTS -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
##########################################################
}
start()
{
flush
#unlimited traffic on loopback interface
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
drop_policy
remove_user_chains
rules
}
stop()
{
flush
remove_user_chains
accept_policy
}
restart()
{
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
όλο το ζουμί είναι στην ρουτίνα rules().
Εκεί είναι οι κανόνες για να ανοίγω τρύπες στο firewall.
Τι λάθος κάνω;
