среда, 21 июля 2010 г.

Proxy server on DEBIAN 5.0

Задача сервера: обеспечить безопасность внутренней сети от угроз из интернета и предоставить доступ сотрудникам до сети интернета, с введенными правилами ограничений.
Операционная система: Linux Debian 5.0

Установленное программное обеспечение:
- прокси сервер SQUID 3.0,
- SARG для генерации отчетов по использованию интернета сотрудниками отеля,
- web-сервер apache2.0 для просмотра отчетов через web браузер,
- файрволл iptables fw-script для обеспечения безопасности внутренней сети отеля из глобальной сети интернет.

Сотрудники разбиты на 3 группы:
1. Группа администраторов, нет ограничений.
2. Группа сотрудников с ограниченным доступом до интернета.
3. Группа с доступом только на разрешенные сайты.
Все остальные сотрудники не имеют доступ в интернет через сервер.

Ограничения для 2-й группы:
- запрет на доступ следующих ресурсов:
.fishki.net
.odnoklasniki.ru
.vkontakte.ru
.youtube.ru
.youtube.com
.depositfiles.com
.vip-file.com
- запрет на заход интернет порталов, где в доменном имени присутствуют: sex, porno, love.
- запрет на заход интернет порталов находящихся в домене net, tv, т.к. в этих доменах в основном находятся развлекательные ресурсы.
- запрет на скачивание видео и музыки следующих форматов: .mp3, .acf, .wma, .avi, .mpeg, .mpeg4, .wmv, .flv, .asf.

3-я группа может заходить на следующие сайты:
.yandex.ru
.rambler.ru
.rbc.ru

Решение:
настраиваем сетевые интерфейсы
# The loopback network interface
auto lo
iface lo inet loopback

# Внешний сетевой интерфейс
allow-hotplug eth0
iface eth0 inet static
address x.x.x.x
netmask 255.255.255.252
gateway x.x.x.
#Запуск скрипта firewall на внешнем интерфейсе
pre-up /etc/init.d/fw-script start

# внутренний интерфейс
allow-hotplug eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

создаем скрипт fw-script и кладем его /etc/init.d
#! /bin/sh

my_init() {
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -F
iptables -t nat -F
iptables -X
echo 1 > /proc/sys/net/ipv4/ip_forward
}
my_access() {
#################################################
echo "Create filter rules..."
echo "Create local rules..."
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP

iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
echo "Allow output tcp traffic..."
iptables -A OUTPUT -o eth0 -j ACCEPT

#forward packets
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

echo "Allow input ssh trafic on port 22..."
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
echo "Create input-output icmp traffic..."
iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -p icmp --icmp-type 0 -m state --state ESTABLISHED,RELATED -j ACCEPT


echo "Allow input traffic... rinetd is allow forwarding!!!!! not iptables!"

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 3389 -j ACCEPT

echo #allow traffic on squid#
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-port 3128

echo "Create main rules..."
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A OUTPUT -o eth0 -j ACCEPT

iptables -A INPUT -i eth0 -p UDP --dport 1194 -j ACCEPT

#NAT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source X.X.X.240 #Внешний ip

}
case "$1" in
start|restart|reload)
echo -n "Starting Firewall configuration by VITAL "
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
my_init
#GO
# my_traf
my_access
# rc_status -v
;;
stop)
echo -n "Shutting down Firewall "
iptables -F
iptables -t nat -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
rc_status -v
;;
status)
echo "Current Firewall-rules "
echo "Current iptables rules in the filter table:"
echo "-------------------------------------------"
iptables -v -L -n
echo " "
echo "Current iptables rules in the nat table:"
echo "-------------------------------------------"
iptables -v -n -t nat -L
# rc_status -v
;;
*)
echo "Usage: $0 (start|restart|reload|status)"
exit 1
;;
esac
#rc_exit

Для проброса портов во внутрь сети устанавливаем rinetd
apt-get install rinetd
В rinetd.conf прописываем от куда и куда проброс во внутрь сети
X.X.X.240 3389 192.168.1.11 3389

Устанавливаем squid
apt-get install squid3

Редактируем squid.conf
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8

#acl office src 192.168.1.0/24
# Admins full internet
acl admin_users src "/etc/squid3/adminusers"
# Allow Users Inet in Office with restrict sait
acl inet_users src "/etc/squid3/internetusers"
# Restrict Inet for Users
acl inet_restrict src "/etc/squid3/restrictusers"
acl sait_restrict dstdomain src "/etc/squid3/restrictsait"
# Deny inet users
acl deny_inet src "/etc/squid3/denyusers"

#Запрет на домены
acl deny_domain dstdomain "/etc/squid3/denydomain"
#Запрет вход в домены содержащие в домене след-е слова
acl adult dstdom_regex sex porno love
#Запрет заход на домены
acl regexdomain dstdom_regex \.net$ \.tv$
#Files for deny: video and sound
acl media urlpath_regex -i .mp3$ .acf$ .wma$ .avi$ .mpeg$ .mpeg4$ .wmv$ .flv$ .asf$

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

#Allow Inet for admin grups
http_access allow admin_users

# deny domain
http_access deny inet_users deny_domain
http_access deny inet_users adult
http_access deny inet_users regexdomain
http_access deny inet_users media
http_access allow inet_users

#Deny inet users
http_access deny deny_inet

#reeption
http_access allow inet_restrict sait_restrict
http_access deny inet_restrict

#http_access deny adult
#http_access deny regexdomain
#http_access deny deny_domain
#http_access allow office

http_access allow localhost
http_access deny all
icp_access deny all
htcp_access deny all
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid3/access.log squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern . 0 20% 4320
icp_port 3130
coredump_dir /var/spool/squid3

Создаем файлы командой touch
adminusers, denyusers и другие, в них через интер вводим нужные ip

Создаем denydomain
и вносим домены, куда доступ запрещен
.fishki.net
.odnoklasniki.ru
.vkontakte.ru
.youtube.ru
.youtube.com
.depositfiles.com
.vip-file.com

Создаем restrictsait
.yandex.ru
.rambler.ru
.rbc.ru

Все остальные настройки делаем по аналогии.

Сервер готов к работе!

четверг, 18 марта 2010 г.

Удаленная перезагрузка windows из под linux

linux debian
windows server 2003
Необходимо, чтобы в linux был пакет samba-common.
Если нет, то устанавливаем:
sudo apt-get install samba-common
Выключение windows:
net rpc shutdown -I [ip адресс] -U login%password
Если перезагрузка, то параметр -r

Все параметры данной команды:

net rpc info show basic info about a domain
net rpc join to join a domain
net rpc oldjoin to join a domain created in server manager
net rpc testjoin tests that a join is valid
net rpc user to add, delete and list users
net rpc password [] -Uadmin_username%admin_pass
net rpc group to list groups
net rpc share to add, delete, list and migrate shares
net rpc printer to list and migrate printers
net rpc file to list open files
net rpc changetrustpw to change the trust account password
net rpc getsid fetch the domain sid into the local secrets.tdb
net rpc vampire syncronise an NT PDC’s users and groups into the local passdb
net rpc samdump diplay an NT PDC’s users, groups and other data
net rpc trustdom to create trusting domain’s account or establish trust
net rpc abortshutdown to abort the shutdown of a remote server
net rpc shutdown to shutdown a remote server
net rpc rights to manage privileges assigned to SIDs
net rpc registry to manage registry hives
net rpc service to start, stop and query services
net rpc audit to modify global auditing settings
net rpc shell to open an interactive shell for remote server/account management

‘net rpc shutdown’ also accepts the following miscellaneous options:
-r or –reboot request remote server reboot on shutdown
-f or –force request the remote server force its shutdown
-t or –timeout= number of seconds before shutdown
-C or –comment= text message to display on impending shutdown