Blog of Khlebalin Dmitriy

(Дорогу осилит идущий…)

КАК ПОКАЗАТЬ СПИСОК УСТАНОВЛЕННЫХ ПРОГРАММ ИЛИ ПАКЕТОВ В LINUX(UBUNTU), FREEBSD, OPENBSD.

Вчера в рамках настройки одного из серверов задался вопросом: А как посмотреть список уже установленных на этом сервере пакетов? И так как вариаций  nix платформ достаточно много, то сразу не смог понять, как это сделать…

По этому сегодня об этом…

Red Hat/Fedora Core/CentOS Linux (этот, как раз и оказался моим случаем)

В Red Hat/Fedora Core/CentOS Linux- подобных наберите следующую команду чтобы получить список установленных программ

# rpm -qa | less

Debian Linux

В Debian Linux список установленных пакетов можно увидеть так:

# dpkg —get-selections

Ubuntu Linux

В Ubuntu Linux список установленных программ смотрим так:

# sudo dpkg —get-selections

FreeBSD

В FreeBSD установленные программы можно посмотреть так:

# pkg_info | less
# pkg_info apache

Используйте команду pkg_version чтобы показать общий список версий всех установленных пакетов в FreeBSD:

# pkg_version | less
# pkg_version | grep ‘lsof’

OpenBSD

В OpenBSD команда use pkg_info так же ведет себя как и в FreeBSD и покажет список установленных пакетов:

# pkg_info | less
# pkg_info apache
Всем хорошей работы!!!

 

Реклама

05.12.2012 Posted by | linux and unix | Комментарии к записи КАК ПОКАЗАТЬ СПИСОК УСТАНОВЛЕННЫХ ПРОГРАММ ИЛИ ПАКЕТОВ В LINUX(UBUNTU), FREEBSD, OPENBSD. отключены

Основные команды freebsd.

 

Мое полугодовое интенсивное изучение freebsd подошло к концу. Понятно, что я не стал профессионалом в области nix систем (не пишу на Shell или Perl никаких скриптов), но наверное многое познал за последнее время. Самое печальное в этом всем, что через полгода я уже не буду помнить и половины того что помню сейчас. Юних как и Циска требует постоянного внимания к себе … Но по крайней мере уже не придется тупо смотреть в черный экран, как это было раньше. В качестве завершения хотелось бы еще раз опубликовать список основных команд по Юниху. Всем удачной работы.

Файлы и директории
cd /home перейти в директорию ‘/home’
cd .. перейти в директорию уровнем выше
cd ../.. перейти в директорию двумя уровнями выше
cd перейти в домашнюю директорию
cd ~user перейти в домашнюю директорию пользователя user
cd — перейти в директорию, в которой находились до перехода в текущую директорию
pwd показать текущюю директорию
ls отобразить содержимое текущей директории
ls -F отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих тип
ls -l показать детализированое представление файлов и директорий в текущей директории
ls -a показать скрытые файлы и директории в текущей директории
ls *[0-9]* показать файлы и директории содержащие в имени цифры
tree показать дерево файлов и директорий, начиная от корня (/)
lstree  
mkdir dir1 создать директорию с именем ‘dir1’
mkdir dir1 dir2 создать две директории одновременно
mkdir -p /tmp/dir1/dir2 создать дерево директорий
rm -f file1 удалить файл с именем ‘file1’
rmdir dir1 удалить директорию с именем ‘dir1’
rm -rf dir1 удалить директорию с именем ‘dir1’ и рекурсивно всё её содержимое
rm -rf dir1 dir2 удалить две директории и рекурсивно их содержимое
mv dir1 new_dir переименовать или переместить файл или директорию
cp file1 file2 сопировать файл file1 в файл file2
cp dir/* . копировать все файлы директории dir в текущую директорию
cp -a /tmp/dir1 . копировать директорию dir1 со всем содержимым в текущую директорию
cp -a dir1 dir2 копировать директорию dir1 в директорию dir2
ln -s file1 lnk1 создать символическую ссылку на файл или директорию
ln file1 lnk1 создать «жёсткую» (физическую) ссылку на файл или директорию
touch -t 0712250000 fileditest модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)
Поиск файлов  
find / -name file1 найти файлы и директории с именем file1. Поиск начать с корня (/)
find / -user user1 найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)
find /home/user1 -name «*.bin» Найти все файлы и директории, имена которых оканчиваются на ‘. bin’. Поиск начать с ‘/ home/user1’
find /usr/bin -type f -atime +100 найти все файлы в ‘/usr/bin’, время последнего обращения к которым  более 100 дней
find /usr/bin -type f -mtime -10 найти все файлы в ‘/usr/bin’, созданные или изменённые в течении последних 10 дней
find / -name *.rpm -exec chmod 755 ‘{}’ \; найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, и изменить права доступа к ним
find / -xdev -name «*.rpm» найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, игнорируя съёмные носители, такие как cdrom, floppy и т.п.
locate «*.ps» найти все файлы, сожержащие в имени ‘.ps’. Предварительно рекомендуется выполнить команду ‘updatedb’
whereis halt показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу ‘halt’
which halt отображает полный путь к файлу ‘halt’
Монтирование файловых систем
mount /dev/hda2 /mnt/hda2 монтирует раздел ‘hda2’ в точку монтирования ‘/mnt/hda2’. Убедитесь в наличии директории-точки монтирования ‘/mnt/hda2’
umount /dev/hda2 размонтирует раздел ‘hda2’. Перед выполнением, покиньте ‘/mnt/hda2’
fuser -km /mnt/hda2 принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем
umount -n /mnt/hda2 выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты «только чтение» или недостаточно места на диске
mount /dev/fd0 /mnt/floppy монтировать флоппи-диск
mount /dev/cdrom /mnt/cdrom монтировать CD или DVD
mount /dev/hdc /mnt/cdrecorder монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)
mount -o loop file.iso /mnt/cdrom смонтировать ISO-образ
mount -t vfat /dev/hda5 /mnt/hda5 монтировать файловую систему Windows FAT32
mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share монтировать сетевую файловую систему Windows (SMB/CIFS)
mount -o bind /home/user/prg /var/ftp/user «монтирует» директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в «песочнице» (chroot), когда симлинки сделать невозможно. Выполнение данной команды сделает копию содержимого /home/user/prg в /var/ftp/user
Дисковое пространство  
df -h отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства(Прим.переводчика. ключ —h работает не во всех *nix системах)
ls -lSr |more выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр
du -sh dir1 подсчитывает и выводит размер, занимаемый директорией ‘dir1’ (Прим.переводчика. ключ —h работает не во всех *nix системах)
du -sk * | sort -rn отображает размер и имена файлов и директорий, с соритровкой по размеру
rpm -q -a —qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)
dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.
Пользователи и группы
groupadd group_name создать новую группу с именем group_name
groupdel group_name удалить группу group_name
groupmod -n new_group_name old_group_name переименовать группу old_group_name в new_group_name
useradd -c «Nome Cognome» -g admin -d /home/user1 -s /bin/bash user1 создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell’а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome
useradd user1 создать пользователя user1
userdel -r user1 удалить пользователя user1 и его домашний каталог
usermod -c «User FTP» -g system -d /ftp/user1 -s /bin/nologin user1 изменить атрибуты пользователя
passwd сменить пароль
passwd user1 сменить пароль пользователя user1 (только root)
chage -E 2005-12-31 user1 установить дату окончания действия учётной записи пользователя user1
pwck проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow
grpck проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group
newgrp [-] group_name изменяет первичную группу текущего пользователя. Если указать «-«, ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd
Выставление/изменение полномочий на файлы  
ls -lh просмотр полномочий на файлы и директории в текущей директории
ls /tmp | pr -T5 -W$COLUMNS вывести содержимое директории /tmp и разделить вывод на пять колонок
chmod ugo+rwx directory1 добавить полномочия на директорию directory1 ugo(User Group Other)+rwx(Read Write eXecute) — всем полные права. Аналогичное можно сделать таким образом chmod 777 directory1
chmod go-rwx directory1 отобрать у группы и всех остальных все полномочия на директорию directory1.
chown user1 file1 назначить владельцем файла file1 пользователя user1
chown -R user1 directory1 назначить рекурсивно владельцем директории directory1 пользователя user1
chgrp group1 file1 сменить группу-владельца файла file1 на group1
chown user1:group1 file1 сменить владельца и группу владельца файла file1
find / -perm -u+s найти, начиная от корня, все файлы с выставленным SUID
chmod u+s /bin/binary_file назначить SUID-бит файлу /bin/binary_file. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла.
chmod u-s /bin/binary_file снять SUID-бит с файла /bin/binary_file.
chmod g+s /home/public назначить SGID-бит директории /home/public.
chmod g-s /home/public снять SGID-бит с директории /home/public.
chmod o+t /home/public назначить STIKY-бит директории /home/public. Позволяет удалять файлы только владельцам
chmod o-t /home/public снять STIKY-бит с директории /home/public
Специальные атрибуты файлов  
chattr +a file1 позволить открывать файл на запись только в режиме добавления
chattr +c file1 позволяет ядру автоматически сжимать/разжимать содержимое файла.
chattr +d file1 указавет утилите dump игнорировать данный файл во время выполнения backup’а
chattr +i file1 делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него.
chattr +s file1 позволяет сделать удаление файла безопасным, т.е. выставленный атрибут s говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращяет возможность восстановления данных.
chattr +S file1 указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync
chattr +u file1 данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановить
lsattr показать атрибуты файлов
Архивирование и сжатие файлов  
bunzip2 file1.bz2 разжимает файл ‘file1.gz’
gunzip file1.gz  
gzip file1 сжимает файл ‘file1’
bzip2 file1  
gzip -9 file1 сжать файл file1 с максимальным сжатием
rar a file1.rar test_file создать rar-архив ‘file1.rar’ и включить в него файл test_file
rar a file1.rar file1 file2 dir1 создать rar-архив ‘file1.rar’ и включить в него file1, file2 и dir1
rar x file1.rar распаковать rar-архив
unrar x file1.rar  
tar -cvf archive.tar file1 создать tar-архив archive.tar, содержащий файл file1
tar -cvf archive.tar file1 file2 dir1 создать tar-архив archive.tar, содержащий файл file1, file2 и dir1
tar -tf archive.tar показать содержимое архива
tar -xvf archive.tar распаковать архив
tar -xvf archive.tar -C /tmp распаковать архив в /tmp
tar -cvfj archive.tar.bz2 dir1 создать архив и сжать его с помощью bzip2(Прим.переводчика. ключ —j работает не во всех *nix системах)
tar -xvfj archive.tar.bz2 разжать архив и распаковать его(Прим.переводчика. ключ —j работает не во всех *nix системах)
tar -cvfz archive.tar.gz dir1 создать архив и сжать его с помощью gzip
tar -xvfz archive.tar.gz разжать архив и распаковать его
zip file1.zip file1 создать сжатый zip-архив
zip -r file1.zip file1 file2 dir1 создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий
unzip file1.zip разжать и распаковать zip-архив

23.08.2011 Posted by | linux and unix | Комментарии к записи Основные команды freebsd. отключены

Настройка IPFW в FreeBSD.

FreeBSD в качестве шлюза интернет с файрволом (брандмауэр) для сети предприятия (офиса). Для этого нам нужен компьютер с двумя сетевыми картами (интерфейсами) и установленной на этот компьютер операционной системой FreeBSD. Как установить FreeBSD подробно писал раннее. Как настроить сеть после установки также описывалось ранее. В качестве файрвола будем использовать Ipfirewall (IPFW). На мой взгляд эта тема самая запутанная для меня, так как правила не совсем такие как в ISA например, здесь все больше похоже на циску или наоборот.

ipfirewall — межсетевой экран, который встроен во FreeBSD начиная с версии 2.0. С его помощью можно, например, подсчитывать трафик по любым разумным правилам, основывающимся на данных заголовков пакетов протоколов стека TCP/IP, обрабатывать пакеты внешними программами, прятать за одним компьютером целую сеть и т. п.

ipfw — название пользовательской утилиты (запускаемой из командной строки) предназначенной для управления системой IPFW. С её помощью администраторы создают и изменяют правила, управляющие фильтрацией и перенаправлением пакетов.

Для начала нам необходимо включить поддержку ipfw в ядре FreeBSD. Для этого нужно включить несколько опций в файл ядра операционой системы и затем пересобрать ядро.

Добавление опций в ядро и его сборка

Переходим в каталог с нашим ядром

# cd /usr/src/sys/i386/conf

Копируем ядро с нашим именем. Лучше ничего не менять в дефолтном ядре.

# cp GENERIC MYKERNEL

Теперь редактируем MYKERNEL.

# ee MYKERNEL

Вставляем в конец файла такие опции:

options      IPFIREWALL                  # сам файрвол
options      IPFIREWALL_VERBOSE          # логгинг пакетов, если в правиле 
                                         # написано `log`
options      IPFIREWALL_VERBOSE_LIMIT=5  # ограничение логов (повторяющихся) - на 
                                         # случай атак типа флудинга
                                         # (я себе поставил 100)
options      IPFIREWALL_FORWARD          # перенаправление (форвардинг) пакетов
                                         # например, для прозрачного прокси
options      IPDIVERT                    # если нужен NAT (трансляция адресов)
options      DUMMYNET                    # если понадобится ограничивать скорость 
                                         # инета пользователям (обычно - да)
options      IPFIREWALL_DEFAULT_TO_ACCEPT  # дефолтовое правило (последнее)
                                         # будет разрешающим (во всех других)
                                         # случаях - запрещающее
 

Перед сохранением файла проверяем имя нашего ядра в строке

ident           GENERIC

Меняем на наше имя ядра

ident           MYKERNEL

Сохраняем и выполняем следующие команды чтоб пересобрать ядро:

  1. Перейдите в каталог /usr/src:
  2. Соберите ядро:
  3. Установите новое ядро:
# cd /usr/src
# make buildkernel KERNCONF=MYKERNEL
#make installkernel KERNCONF=MYKERNEL

После этого желательно перезагрузить операционную систему для применения нашего ядра.

Настройка файрвола IPFW

Создаем файл в директории etc с именем ipwf.rules

# cd /etc/
# touch ipfw.rules
# ee ipfw.rules

И вписываем туда такое содержимое. Я использую подключение к интернету через PPPoE и у меня в сервере две сетевые которые смотрят в разные подсети локальной сети. Прошу обратить на это внимание.

#!/bin/sh
#########################
# FreeBSD firewall script
#########################
# Основные переменные
# -------------------
# Путь к команде ipfw в системе
# Обычно всегда без изменений
# Совет: не убирайте "-q", если
# работаете удаленно по ssh
fw="/sbin/ipfw -q"
# Внутренний сетевой интерфейс подсети 100
inifd="re0"
# Внутренний сетевой интерфейс подсети 200
inifa="rl1"
# Внешний сетевой интерфейс
outif="tun0"
# Локальный IP адрес сервера для подсети 100
inipd="192.168.100.200"
# Локальный IP адрес сервера для подсети 200
inipa="192.168.200.200"
# IP адрес VPN MPD сервера подсети 111
inipvpn="192.168.111.221"
# IP адрес, получаемый от провайдера
# после иннициализации PPPoE соединения
outip="195.138.XXX.XXX"
# Адресация локальной сети для Office1
innetd="192.168.100.0/24"
# Адресация локальной сети для Office2
inneta="192.168.200.0/24"
# Адресация локальной сети для VPN MPD
innetvpn="192.168.111.0/24"
# IP адрес в локальной, на который
# проброшен порт RDP
admin="192.168.200.50"
#
##### Начнем-с... #####
# Сброс всех правил
${fw} -f flush
# Описываем таблицы (предварительно,
# сбрасывая их, чтобы не повторялись),
# в которых задаем список хостов/сетей:
# - для доступа по SSH
${fw} -f table 0 flush
${fw} table 0 add 193.391.193.396
# - для доступа по FTP
${fw} -f table 1 flush
${fw} table 1 add 154.451.154.452
# - для доступа по RDP к той машине,
# на которую проброшен порт RDP
${fw} -f table 2 flush
${fw} table 2 add 142.241.143.343
# - Список IP в подсети 100  с которых
# разрешено выходить в подсеть 200
${fw} -f table 3 flush
${fw} table 3 add 192.168.100.54
${fw} table 3 add 192.168.100.55
${fw} table 3 add 192.168.100.111
${fw} table 3 add 192.168.100.224
${fw} table 3 add 192.168.100.1
# - Список IP в подсети 200 с которых
# разрешено выходить в подсеть 100
${fw} -f table 4 flush
${fw} table 4 add 192.168.200.50
${fw} table 4 add 192.168.200.51
${fw} table 4 add 192.168.200.52
${fw} table 4 add 192.168.200.53
${fw} table 4 add 192.168.200.54
# - Список IP в подсети 200  с которых
# разрешено выходить в подсеть 100  по
# протоколу RDP
${fw} -f table 5 flush
${fw} table 5 add 192.168.200.100
#
##### Установки для localhost'а ####
${fw} add allow all from any to any via lo0
# Два нижеследующих правила - классика.
# Потому я тоже их сюда вставляю.
# Работают может быть только в одном случае:
# "ping -S 127.0.0.1 XXX.XXX.XXX.XXX".
# При каких условиях еще можно увидеть их
# срабатывание, я, честно говоря, не представляю.
${fw} add deny log all from any to 127.0.0.0/8
${fw} add deny log all from 127.0.0.0/8 to any
# Далее, создаем похожие классические запреты,
# при этом фиксируем все совпадения в лог-файле:
# - запрещаем автоконфигуренную сеть
# (адрес которой, обычно присваивает машина
# сама себе, если ей не задать настройки вручную,
# и не включить в сети DHCP сервер)
${fw} add deny log ip from any to 169.254.0.0/16 in via ${outif}
# - запрещаем частные сети на внешнем интерфейсе
${fw} add deny log ip from any to 0.0.0.0/8 in via ${outif}
${fw} add deny log ip from any to 192.168.0.0/16 in via ${outif}
${fw} add deny log ip from any to 172.16.0.0/12 in via ${outif}
${fw} add deny log ip from any to 10.0.0.0/8 in via ${outif}
# - запрещаем мультикаст запросы на внешнем интерфейсе
${fw} add deny log ip from any to 240.0.0.0/4 in via ${outif}
# - запрещаем фрагментированные ICMP запросы -
# иногда выручает от некоторых видов атак
${fw} add deny log icmp from any to any frag
# - запрещаем мультикастовые ICMP запросы на внешнем интерфейсе
${fw} add deny log icmp from any to 255.255.255.255 in via ${outif}
${fw} add deny log icmp from any to 255.255.255.255 out via ${outif}
#
##### Правила для обмена между подсетями 100 и 200 ####
# Запрещает порты DHCP
${fw} add deny udp from ${inneta} to ${innetd} 67,68 via ${inifa}
${fw} add deny udp from ${innetd} 67,68 to ${inneta} via ${inifa}
#
${fw} add allow all from table\(4\) to table\(3\) via ${inifd}
${fw} add allow all from table\(3\) to table\(4\) via ${inifd}
${fw} add allow all from table\(4\) to table\(3\) via ${inifa}
${fw} add allow all from table\(3\) to table\(4\) via ${inifa}
#
${fw} add allow all from table\(3\) to table\(5\) 3389 via ${inifd}
${fw} add allow all from table\(5\) 3389 to table\(3\) via ${inifd}
${fw} add allow all from table\(3\) to table\(5\) 3389 via ${inifa}
${fw} add allow all from table\(5\) 3389 to table\(3\) via ${inifa}
#
${fw} add deny all from ${inneta} to ${innetd} via ${inifa}
${fw} add deny all from ${innetd} to ${inneta} via ${inifa}
#
##### Правила для VPN MPD ####
#
${fw} add allow all from ${innetvpn} to ${innetd}
${fw} add allow all from ${innetd} to ${innetvpn}
#
${fw} add allow all from ${innetvpn} to ${inneta}
${fw} add allow all from ${inneta} to ${innetvpn}
#
##### Запускаем NAT ####
#Для подсети 100
${fw} add divert natd all from ${innetd} to any out via ${outif}
${fw} add divert natd all from any to ${outip} in via ${outif}
#Для подсети 200
${fw} add divert natd all from ${inneta} to any out via ${outif}
${fw} add divert natd all from any to ${outip} in via ${outif}
#
# Разрешаем первым делом все уже установленные соединения
${fw} add allow tcp from any to any via ${outif} established
# Разрешаем нашему серверу устанавливать
# tcp соединения в любом направлении
${fw} add allow tcp from ${inipd},${outip} to any out xmit ${outif} setup
${fw} add allow tcp from ${inipa},${outip} to any out xmit ${outif} setup
# Разрешаем трафик из локальной сети на
# внутреннем интерфейсе
#Для подсети 100
${fw} add allow all from ${innetd} to any out via ${inifd}
${fw} add allow all from any to ${innetd} in via ${inifd}
#Для подсети 200
${fw} add allow all from ${inneta} to any out via ${inifa}
${fw} add allow all from any to ${inneta} in via ${inifa}
#
# Разрешаем только правильные ICMP запросы
${fw} add allow icmp from any to any icmptypes 0,3,8,11
# Посылаем ответ RESET на попытку получить информацию
# от сервиса идентификации
${fw} add reset log tcp from any to any 113 in recv ${outif}
#
#### Правила для UDP протокола ####
#
# - для сервера
# Разрешаем все исходящие UDP запросы с самого сервера
# Без этого не работают такие команды как traceroute
# Хотя, как вариант, можно обойтись и без этого если
# использовать traceroute -P icmp
${fw} add allow udp from ${outip} to any out via ${outif}
# Разрешаем входящие DNS запросы к нашему DNS серверу
# если конечно таковой испольуется на этой машине.
${fw} add allow udp from any to ${outip} 53 in via ${outif}
# Разрешаем ответы от DNS серверов на запросы
# от нашего хоста.
${fw} add allow udp from any 53 to ${outip} in via ${outif}
# Разрешаем ответы от серверов времени на запросы
# от нашего хоста
${fw} add allow udp from any 123 to ${outip} in via ${outif}
#
# - для локальной сети
# Разрешаем DNS запросы/ответы для всей сети
${fw} add allow udp from ${innetd} to any 53
${fw} add allow udp from any 53 to ${innetd}
${fw} add allow udp from ${inneta} to any 53
${fw} add allow udp from any 53 to ${inneta}
# Разрешаем запросы/ответы к серверам времени для всей сети
${fw} add allow udp from ${innetd} to any 123
${fw} add allow udp from any 123 to ${innetd}
${fw} add allow udp from ${inneta} to any 123
${fw} add allow udp from any 123 to ${inneta}
#
# Если у нас на маршрутизаторе запущены
# определенные сервисы, прописываем правила
# для доступа к ним с внешнего мира
# - разрешаем tcp соединения к DNS серверу -
# данное правило добавлять не нужно, если на
# Вашем DNS сервере нет какой-либо зоны, которую
# он должен отдавать другим (вторичным) DNS.
# Другими словами, данное правило необходимо,
# для того, чтобы не было проблем с запросом dig AXFR
#${fw} add allow tcp from any to ${outip} 53 in via ${outif} setup
# - разрешаем доступ к WWW серверу (если он конечно есть)
#${fw} add allow tcp from any to ${outip} 80 in via ${outif} setup
# - разрешаем "активный" FTP доступ к серверу,
# но только для хостов, внесенных в table(1)
${fw} add allow tcp from table\(1\) to ${outip} 20,21 in via ${outif} setup
# - разрешаем "пассивный" FTP доступ
# но только для хостов, внесенных в table(1)
${fw} add allow tcp from table\(1\) to ${outip} 49152-65535 via ${outif}
# - разрешаем доступ к SMTP серверу,
# естественно, если он у нас используется
#${fw} add allow tcp from any to ${outip} 25 in via ${outif} setup
# - разрешаем SSH доступ к серверу, но
# только для хостов, внесенных в table(0)
#${fw} add allow tcp from table\(0\) to ${outip} 555 in via ${outif} setup
${fw} add allow tcp from any to ${outip} 22 in via ${outif} setup
#
##### Правила для проброшенных портов ####
# Разрешаем доступ по RDP на машину которая прописана в строке admin,
# но только для хостов, внесенных к table(2)
${fw} add allow tcp from table\(2\) 1024-65535 to ${admin} 3389 in via ${outip}
${fw} add allow tcp from table\(2\) 1024-65535 to ${admin} 3389 out via ${inif}
${fw} add allow tcp from ${admin} 3389 to table\(2\) 1024-65535 in via ${inif}
${fw} add allow tcp from ${admin} 3389 to table\(2\) 1024-65535 out via ${outif}
#
##### И наконец, пропускаем в Интернет локальную сеть #####
${fw} add allow tcp from ${innetd} to any in via ${inifd}
${fw} add allow tcp from any to ${innetd} out via ${inifd}
${fw} add allow tcp from ${inneta} to any in via ${inifa}
${fw} add allow tcp from any to ${inneta} out via ${inifa}
# Правило, для работы "активного" FTP доступа из локальной сети
${fw} add allow tcp from any 20 to ${innetd} in via ${outif}
${fw} add allow tcp from any 20 to ${inneta} in via ${outif}
#Правилa для доступа к нашему PPTP серверу
# pptp
${fw} add pass tcp from any to me 1723 in via ${outif}
${fw} add pass tcp from me 1723 to any out via ${outif}
${fw} add pass gre from me to any out via ${outif}
${fw} add pass gre from any to me in via ${outif}
${fw} add allow gre from any to any
${fw} add allow gre from any to any
#
##### Последнее правило, для занесения в журнал
##### всех остальных (обычно запрещенных) пакетов.
${fw} add 65534 deny log all from any to any
##### END #####

Сохраняем наш файл.

Далее необходимо сделать чтоб этот файл использовался файрволом.

Прописываем следующие строки в файл /etc/rc.conf

firewall_enable="YES"
firewall_script="/etc/ipfw.rules"
firewall_quiet="NO"
firewall_logging="YES"

natd_enable="YES"
natd_interface="tun0"
natd_flags="-dynamic -f /etc/natd.conf"
tcp_extensions="NO"
tcp_drop_synfin="YES"
icmp_drop_redirect="YES"

Для того, чтобы было перенаправление портов (redirect), в файл natd.conf (если его нет то создайте в директории etc) нужно добавить такую строчку:

redirect_port tcp 192.168.200.50:3389 3389

В данном случае перенаправляем порт RDP.

После всего этого перезагружаем компьютер. На этом собственно все.

Всем удачи!!!

 

09.08.2011 Posted by | linux and unix | Комментарии к записи Настройка IPFW в FreeBSD. отключены