Основные команды 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-архив | |||
Настройка 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
Сохраняем и выполняем следующие команды чтоб пересобрать ядро:
- Перейдите в каталог /usr/src:
- Соберите ядро:
- Установите новое ядро:
# 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.
После всего этого перезагружаем компьютер. На этом собственно все.
Всем удачи!!!
Просмотр конфигов без комментариев и лишних пустых строк.
Вопрос : «Как просмотреть без комментариев и лишних пустых строк свой созданный конфиг?»
Далее решение:
Решение 1: egrep -v ‘^#|^$’ /usr/local/etc/squid/squid.conf
Решение 2: grep -v «^#» /usr/local/etc/squid/squid.conf | sed -e ‘/^$/d’
Решение 3: cat /usr/local/etc/squid/squid.conf | grep -v ^# | grep -v ^$
Всем удачной работы!!!
В этом блоге, я пишу заметки о своей жизни в сфере IT технологий. Собираю интересные ссылки, выражаю свои мысли и прочее… В основном статьи посвящены, различным продуктам от Microsoft, которые я юзаю многие годы, а так же продуктам от VMWare и nix, которые также представляют огромный интерес для меня. Здесь приведены не только мои статьи, но и статьи, которые были найдены мною на безграничных просторах интернета. Но все написаное здесь, было проделано мною на виртуальных машинах или в продакшин среде, о чем свидетельствуют комментарии в текстах. Всем удачи в работе.