пятница, октября 19, 2012

gpg, nginx, key

При установке nginx (doc) в debian 6 вылезает ошибка:

W: GPG error: http://nginx.org squeeze Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ABF5BD827BD9BF62

Лечится так:

shell> gpg --keyserver hkp://keys.gnupg.net --recv-keys ABF5BD827BD9BF62
gpg: requesting key 7BD9BF62 from hkp server keys.gnupg.net
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 7BD9BF62: public key "nginx signing key " imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
shell> gpg -a --export 7BD9BF62 | apt-key add -
OK

вторник, октября 02, 2012

NAT

Задача: разрешить пользователям локальной сети иметь доступ к ресурсам глобальной сети (Internet).

ОС: CentOS v5.8

Все действия выполняются от пользователя root. Настроим NAT. eth0 - локальная сеть, eth1 - интернет.:

shell> iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
shell> echo 1 > /proc/sys/net/ipv4/ip_forward
shell> /etc/init.d/iptables restart

MASQUERADE - удобно использовать, если у вас динамический IP. Отредактировать в файле /etc/sysctl.conf параметр:

net.ipv4.ip_forward = 1

Применить настройки:

shell> sysctl -p

Если требуется чтоб пользователи могли из локальной сети подключатся к удаленным VPN PPTP серверам тогда потребуется модуль ip_nat_pptp.. Для этого надо отредактировать файл /etc/sysconfig/iptables-config добавив нужные модули:

IPTABLES_MODULES="ip_nat_pptp ip_nat_ftp"

И перезапустить iptables:

/etc/init.d/iptables restart

После этого больше ничего делать не потребуется.

И напоследок минимальный скрипт, который дает доступ только к http/https и разрешает пинговать внешние ресурсы:

!/bin/bash

ipt="/sbin/iptables"
lan="eth0"                      # lan
wan="eth1"                      # wan
subnet="192.168.40.0/22"        # local subnet


# flush all
$ipt -F
$ipt -X
$ipt -t nat -F
$ipt -t nat -X


# policy default
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD DROP

# allow lo
$ipt -A INPUT -i lo -j ACCEPT

# permit established
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# permit ssh
$ipt -A INPUT -p tcp --dport 22 -j ACCEPT

# permit ports
$ipt -t filter -A FORWARD -s $subnet -p tcp -m multiport --dport http,https -j ACCEPT
$ipt -t filter -A FORWARD -s $subnet -p icmp -j ACCEPT

# NAT (lan -> wan)
$ipt -t nat -A POSTROUTING -o $wan -j MASQUERADE
$ipt -t filter -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# save iptables rules
service iptables save

Этот скрипт надо запускать каждый раз когда вы вносите в него изменения. После всех изменений сами правила для iptables будут сохранены в /etc/sysconfig/iptables. Именно его система будет загружать при загрузке системы.