При использовании RDP, временами возникает такая ошибка:
Ошибка RDP: Удаленный сеанс отключен, поскольку для данного компьютера отсутствуют клиентские лицензии удаленного рабочего стола
Для удаления лицензии RDP с клиентского компьютера, откройте ветку реестра
HKEY_LOCAL_MACHINE\Software\Microsoft\MSLicensing
и удалите все подразделы.
После этого повторите подключение к серверу RDP. При первом подключении запустите клиент «от имени Администратора».
--------------
В продолжение данной темы...
После того, как Вы удалили, может выдасться другая ошибка:
Удаленный компьютер отключил сеанс, из-за ошибки в протоколе лицензирования.
Попытайтесь подключиться к удаленному компьютеру снова или обратитесь к системному администратору.
Причина данной ошибки - отсутствие у пользователя прав на создание данных разделов реестра. Для устранения данной ошибки выполните следующие действия:
- Запустите mstc.exe с правами администратора или войдите под правами администратора.
- Подключитесь к терминальному серверу. В этот момент будут автоматически созданы разделы в реестре HardwareID и StoreID.
- Отключитесь от терминального сервера.
K2 ERP — сучасна система для автоматизації бізнес-процесів, яка допомагає компаніям ефективно керувати фінансами, складом, продажами, закупівлями, виробництвом і персоналом. Рішення об’єднує ключові напрямки роботи в єдиному цифровому середовищі, зменшує кількість ручних операцій, підвищує прозорість даних і прискорює прийняття управлінських рішень. K2 ERP підходить для бізнесу, що прагне масштабування, контролю та стабільного розвитку.
вівторок, 9 квітня 2013 р.
пʼятниця, 5 квітня 2013 р.
2-й экземпляр apache
Иногда, возникает необходимость запустить 2-ю копию apache. Понятное дело, хочется использовать один и тот же исполняемый файл apache и не заниматься установкой различных версий продукта.
Определимся, чем должны, отличаться наши экземпляры.
Это конфигурационными файлами:
/etc/apache2/apache2.conf - указаны порты и специфичные для каждого из Апачей виртуальные хосты
/etc/apache2/ports.conf - содержит прослушиваемые порты.
/etc/apache2/envvars - путь к файлу для сохранения pid запущенного демона.
Стоит разделить логи директивами в в apache2.conf:
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
Идем в папку init скриптов:
cd /etc/init.d
Создаем копию init скрипта родного Apache:
cp apache2 apache2_srv
Где apache2_srv - это название нового экземпляра Apache.
Сразу Добавляем фейловер Апача в автозапуск:
update-rc.d apache2_srv defaults
Корректируем скрипт apache2_srv:
Вместо блока:
PIDFILE=`. /etc/apache2/envvars ; echo $APACHE_PID_FILE`
if [ -z "$PIDFILE" ] ; then
echo ERROR: APACHE_PID_FILE needs to be defined in /etc/apache2/envvars >&2
exit 2
fi
Вставляем:
PIDFILE=`. /etc/apache2/envvars_apache2_srv ; echo $APACHE_PID_FILE`
if [ -z "$PIDFILE" ] ; then
echo ERROR: APACHE_PID_FILE needs to be defined in /etc/apache2/envvars_apache2_srv >&2
exit 2
fi
Чуть выше корректируем ENV:
ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin APACHE_ENVVARS=/etc/apache2/envvars_apache2_srv"
Корректируем конфиги:
cp /etc/apache2/envvars /etc/apache2/envvars_apache2_srv
Заменяем
export APACHE_PID_FILE=/var/run/apache2.pid
на
export APACHE_PID_FILE=/var/run/apache2_apache_2.pid
Создаем файл портов /etc/apache2/ports_apache_srv.conf:
В нем пишем:
Listen 81
Создаем файлы логов:
touch /var/log/apache2/error_apache2_srv.log
touch /var/log/apache2/other_vhosts_access_apache2_srv.log
chown root:root /var/log/apache2/other_vhosts_access_apache2_srv.log
chown root:adm /var/log/apache2/error_apache2_srv.log
chmod 640 /var/log/apache2/error_apache2_srv.log
Теперь давайте посмотрим, как осуществляется управление демоном Апача. Сразу скажу, что кэш мы не используем и следовательно "check_htcacheclean" всегда будет выдавать ложь.
Запуск:
start)
log_daemon_msg "Starting web server" "apache2"
if $APACHE2CTL start; then
if check_htcacheclean ; then
log_progress_msg htcacheclean
start_htcacheclean || log_end_msg 1
fi
log_end_msg 0
else
log_end_msg 1
fi
;;
То есть все вопросы к: $APACHE2CTL, его мы будем использовать не как SysV инит скрипт, а будем им проксировать все наши вопросы к apache
Для этого в верху скрипта делаем замену:
Далее изменяем все параметры вызов APACHE2CTL:
Теперь надо скорректировать функцию pidof_apache, иначе при stop мы будем убивать всех Апаче разом:
Делаем замену:
на:
Теперь попробуем запустить второго Апача:
Теперь необходимо на основе apache2.conf составить /etc/apache2/apache2_srv.conf
Скопируем оригинал
И далее корректируем пути к файлами, которые обсуждали выше.
Теперь надо поменять порты у директив NameVirtualHost xx.xx.xx.xx:80 и VirtualHost xx.xx.xx.xx:81.
Повторяем попытку запуска:
Определимся, чем должны, отличаться наши экземпляры.
Это конфигурационными файлами:
/etc/apache2/apache2.conf - указаны порты и специфичные для каждого из Апачей виртуальные хосты
/etc/apache2/ports.conf - содержит прослушиваемые порты.
/etc/apache2/envvars - путь к файлу для сохранения pid запущенного демона.
Стоит разделить логи директивами в в apache2.conf:
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
Идем в папку init скриптов:
cd /etc/init.d
Создаем копию init скрипта родного Apache:
cp apache2 apache2_srv
Где apache2_srv - это название нового экземпляра Apache.
Сразу Добавляем фейловер Апача в автозапуск:
update-rc.d apache2_srv defaults
Корректируем скрипт apache2_srv:
Вместо блока:
PIDFILE=`. /etc/apache2/envvars ; echo $APACHE_PID_FILE`
if [ -z "$PIDFILE" ] ; then
echo ERROR: APACHE_PID_FILE needs to be defined in /etc/apache2/envvars >&2
exit 2
fi
Вставляем:
PIDFILE=`. /etc/apache2/envvars_apache2_srv ; echo $APACHE_PID_FILE`
if [ -z "$PIDFILE" ] ; then
echo ERROR: APACHE_PID_FILE needs to be defined in /etc/apache2/envvars_apache2_srv >&2
exit 2
fi
Чуть выше корректируем ENV:
ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin APACHE_ENVVARS=/etc/apache2/envvars_apache2_srv"
Корректируем конфиги:
cp /etc/apache2/envvars /etc/apache2/envvars_apache2_srv
Заменяем
export APACHE_PID_FILE=/var/run/apache2.pid
на
export APACHE_PID_FILE=/var/run/apache2_apache_2.pid
Создаем файл портов /etc/apache2/ports_apache_srv.conf:
В нем пишем:
Listen 81
Создаем файлы логов:
touch /var/log/apache2/error_apache2_srv.log
touch /var/log/apache2/other_vhosts_access_apache2_srv.log
chown root:root /var/log/apache2/other_vhosts_access_apache2_srv.log
chown root:adm /var/log/apache2/error_apache2_srv.log
chmod 640 /var/log/apache2/error_apache2_srv.log
Теперь давайте посмотрим, как осуществляется управление демоном Апача. Сразу скажу, что кэш мы не используем и следовательно "check_htcacheclean" всегда будет выдавать ложь.
Запуск:
start)
log_daemon_msg "Starting web server" "apache2"
if $APACHE2CTL start; then
if check_htcacheclean ; then
log_progress_msg htcacheclean
start_htcacheclean || log_end_msg 1
fi
log_end_msg 0
else
log_end_msg 1
fi
;;
То есть все вопросы к: $APACHE2CTL, его мы будем использовать не как SysV инит скрипт, а будем им проксировать все наши вопросы к apache
Для этого в верху скрипта делаем замену:
APACHE2CTL="$ENV /usr/sbin/apache2ctl"на
APACHE2CTL="$ENV /usr/sbin/apache2ctl -f /etc/apache2/apache2_srv.conf"
Далее изменяем все параметры вызов APACHE2CTL:
$APACHE2CTL start на $APACHE2CTL -k start
$APACHE2CTL stop на $APACHE2CTL -k stop
$APACHE2CTL graceful на $APACHE2CTL -k graceful
$APACHE2CTL configtest на $APACHE2CTL -t
Теперь надо скорректировать функцию pidof_apache, иначе при stop мы будем убивать всех Апаче разом:
Делаем замену:
pidof_apache() {
# if pidof is null for some reasons the script exits automagically
# classified as good/unknown feature
PIDS=`pidof apache2` || true
на:
pidof_apache() {
# if pidof is null for some reasons the script exits automagically
# classified as good/unknown feature
PIDS=`ps aux | grep 'apache2_srv' | grep -v 'grep' | awk '{print $2}' | xargs` || true
Теперь попробуем запустить второго Апача:
/etc/init.d/apache2_srv start
Starting web server: apache2apache2: Could not open configuration file /etc/apache2/apache2_failover.conf: No such file or directory
failed!
Теперь необходимо на основе apache2.conf составить /etc/apache2/apache2_srv.conf
Скопируем оригинал
cp /etc/apache2/apache2.conf /etc/apache2/apache2_srv.conf
И далее корректируем пути к файлами, которые обсуждали выше.
CustomLog /var/log/apache2/other_vhosts_access_apache2_srv.log vhost_combined
ErrorLog /var/log/apache2/error_apache2_srv.log
Include /etc/apache2/ports_apache2_srv.conf
Теперь надо поменять порты у директив NameVirtualHost xx.xx.xx.xx:80 и VirtualHost xx.xx.xx.xx:81.
Повторяем попытку запуска:
/etc/init.d/apache2_srv start
Starting web server: apache2.
середа, 3 квітня 2013 р.
Защита от хакеров Linux Ubuntu
Чем интересней ресурс, тем выше вероятность того, что взломают сервер. Поэтому, приходится бороться со взломами, искать процессы и т.п.
1. Есть подозрение, что кто-то подключился к рабочему столу
Смотрим:
who
r tty7 2013-03-11 06:52 (:0)
r pts/2 2013-04-03 05:21 (192.168.3.62)
r pts/6 2013-04-03 08:27 (192.168.3.62)
r pts/5 2013-04-03 07:58 (192.168.3.62)
(unknown) tty8 2013-04-03 06:16 (:1)
(unknown) tty9 2013-04-03 08:28 (:2)
(unknown) tty10 2013-04-03 08:47 (:3)
Прежде всего, обращаем внимание на подозрительных пользователей. Так, например, пользователь (unknown) - это странное явление. Значит, нужно его выкинуть и закрыться от возможности его подключения.
Выполняем:
who -a -p
завантаження системи 2013-03-11 06:54
рівень виконання 2 2013-03-11 06:54
ВХІД tty4 2013-03-11 06:54 1575 id=4
ВХІД tty5 2013-03-11 06:54 1581 id=5
ВХІД tty2 2013-03-11 06:54 1588 id=2
ВХІД tty3 2013-03-11 06:54 1589 id=3
ВХІД tty6 2013-03-11 06:54 1593 id=6
r + tty7 2013-03-11 06:52 да 4824 (:0)
ВХІД tty1 2013-03-11 06:52 5937 id=1
pts/2 2013-03-11 06:57 0 id=/2 термінал=0 вихід=0
r + pts/2 2013-04-03 05:21 01:26 2104 (192.168.3.62)
r + pts/6 2013-04-03 08:27 . 409 (192.168.3.62)
pts/7 2013-03-11 11:45 0 id=/7 термінал=0 вихід=0
pts/8 2013-04-03 09:21 15957 id=ts/8 термінал=0 вихід=0
pts/10 2013-04-03 09:13 14507 id=s/10 термінал=0 вихід=0
pts/12 2013-03-11 10:18 19235 id=s/12 термінал=0 вихід=0
pts/14 2013-03-11 10:31 21030 id=s/14 термінал=0 вихід=0
r + pts/5 2013-04-03 07:58 00:05 23871 (192.168.3.62)
pts/3 2013-04-03 07:36 5537 id=ts/3 термінал=0 вихід=0
pts/7 2013-04-03 09:17 10140 id=ts/7 термінал=0 вихід=0
pts/9 2013-04-03 09:14 14013 id=ts/9 термінал=0 вихід=0
pts/11 2013-03-19 18:33 6218 id=s/11 термінал=0 вихід=0
pts/13 2013-03-11 22:14 17281 id=s/13 термінал=0 вихід=0
pts/15 2013-03-11 22:33 18853 id=s/15 термінал=0 вихід=0
pts/17 2013-03-11 21:52 19310 id=s/17 термінал=0 вихід=0
pts/6 2013-03-25 07:43 0 id=/6 термінал=0 вихід=0
pts/8 2013-03-25 07:43 0 id=/8 термінал=0 вихід=0
(unknown) + tty8 2013-04-03 06:16 да 5873 (:1)
(unknown) + tty9 2013-04-03 08:28 да 813 (:2)
tty10 2013-04-03 09:10 7691 id=:3 термінал=0 вихід=0
Убиваем злодея:
kill 5873 813
После того, как убили, анализируете, ищите, как он мог войти. Убираете возможность подключения не прошенных гостей.
2. Запрет удаленного подключения к X11 через ssh
По умолчанию, ssh разрешает запускать x11 через ssh. Т.е. можно запускать графические приложения linux на сервере, используя протокол ssh.
Как это делается, написано в статье: http://d51x.ru/page/udalennyj-dostup-x11-forwarding
Но, вопреки этому, советую все же данную возможность отключать.
Редактируем файл: /etc/ssh/sshd_config
Меняем выражение:
X11Forwarding no
Перезагружаем ssh:
3. Ограничиваем доступ по ssh
Редактируем все тот же конфигурационный файл для ssh: /etc/ssh/sshd_config
Желательно, сменить номер порта ssh (чтоб никто не знал, что там находится ssh :):
Port 22
Так же, можно изменить адрес, на котором слушает демон:
ListenAddress 0.0.0.0
Разрешаем вход по ssh только определенным пользователям:
AllowUsers user1 user2 user3
Перезагружаем ssh:
4. Настраиваем файервол
Устанавливаем расширение (настройки) для iptables:
apt-get install arno-iptables-firewall
Конфигурируем порты /etc/arno-iptables-firewall/conf.d
Например:
EXT_IF="eth0 ppp0"
EXT_IF_DHCP_IP=1
# 3343,4434 - Порты для администрирования svn
# 9000 - порт для darkstat
# 3389 - терминал Windows
# 1500 - ???
# 8080 - порт для доступа к svn
# 1500 - ISP админка
# 440 - новый номер порта для ssh
# 22 - был ssh УБРАН
OPEN_TCP="80,443,21,6543,47,3343,4434,8080,1500,440"
# 110,25,995
OPEN_UDP=""
INT_IF="eth1"
NAT=0
INTERNAL_NET="192.168.3.0/24"
NAT_INTERNAL_NET="eth1"
OPEN_ICMP=1
LAN_OPEN_TCP="80,443,21,6543,1723,47,3389,1500,9000,5900,440"
Перезагружаем:
invoke-rc.d arno-iptables-firewall restart
5. Из sudo удаляем лишних пользователей
Комментарим root, перечисляем наших пользователей-админов и комментарим доступ к sudo для груп администраторов и т.п.
Вот пример, того, что у меня получилось:
# User privilege specification
#root ALL=(ALL:ALL) ALL
r ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
#%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
#%sudo<>ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
6. Делаем сложный пароль для пользователя root
Хакеры пытаются подобрать пароль супер-пользователя root простым перебором. Поэтому, делайте пароль для данного пользователя не менее 12 символом и посложнее.
Для изменения пароля пользователя root, выполняем:
passwd root
7. Защита дыр в Apache.
Выполните команду:
Для того, чтоб убрать данную уязвимость, выполните:
sudo a2enmod headers
В Nginx пропишите:
Перезагрузите веб-сервис:
/etc/init.d/apache2 restart
1. Есть подозрение, что кто-то подключился к рабочему столу
Смотрим:
who
r tty7 2013-03-11 06:52 (:0)
r pts/2 2013-04-03 05:21 (192.168.3.62)
r pts/6 2013-04-03 08:27 (192.168.3.62)
r pts/5 2013-04-03 07:58 (192.168.3.62)
(unknown) tty8 2013-04-03 06:16 (:1)
(unknown) tty9 2013-04-03 08:28 (:2)
(unknown) tty10 2013-04-03 08:47 (:3)
Прежде всего, обращаем внимание на подозрительных пользователей. Так, например, пользователь (unknown) - это странное явление. Значит, нужно его выкинуть и закрыться от возможности его подключения.
Выполняем:
who -a -p
завантаження системи 2013-03-11 06:54
рівень виконання 2 2013-03-11 06:54
ВХІД tty4 2013-03-11 06:54 1575 id=4
ВХІД tty5 2013-03-11 06:54 1581 id=5
ВХІД tty2 2013-03-11 06:54 1588 id=2
ВХІД tty3 2013-03-11 06:54 1589 id=3
ВХІД tty6 2013-03-11 06:54 1593 id=6
r + tty7 2013-03-11 06:52 да 4824 (:0)
ВХІД tty1 2013-03-11 06:52 5937 id=1
pts/2 2013-03-11 06:57 0 id=/2 термінал=0 вихід=0
r + pts/2 2013-04-03 05:21 01:26 2104 (192.168.3.62)
r + pts/6 2013-04-03 08:27 . 409 (192.168.3.62)
pts/7 2013-03-11 11:45 0 id=/7 термінал=0 вихід=0
pts/8 2013-04-03 09:21 15957 id=ts/8 термінал=0 вихід=0
pts/10 2013-04-03 09:13 14507 id=s/10 термінал=0 вихід=0
pts/12 2013-03-11 10:18 19235 id=s/12 термінал=0 вихід=0
pts/14 2013-03-11 10:31 21030 id=s/14 термінал=0 вихід=0
r + pts/5 2013-04-03 07:58 00:05 23871 (192.168.3.62)
pts/3 2013-04-03 07:36 5537 id=ts/3 термінал=0 вихід=0
pts/7 2013-04-03 09:17 10140 id=ts/7 термінал=0 вихід=0
pts/9 2013-04-03 09:14 14013 id=ts/9 термінал=0 вихід=0
pts/11 2013-03-19 18:33 6218 id=s/11 термінал=0 вихід=0
pts/13 2013-03-11 22:14 17281 id=s/13 термінал=0 вихід=0
pts/15 2013-03-11 22:33 18853 id=s/15 термінал=0 вихід=0
pts/17 2013-03-11 21:52 19310 id=s/17 термінал=0 вихід=0
pts/6 2013-03-25 07:43 0 id=/6 термінал=0 вихід=0
pts/8 2013-03-25 07:43 0 id=/8 термінал=0 вихід=0
(unknown) + tty8 2013-04-03 06:16 да 5873 (:1)
(unknown) + tty9 2013-04-03 08:28 да 813 (:2)
tty10 2013-04-03 09:10 7691 id=:3 термінал=0 вихід=0
Убиваем злодея:
kill 5873 813
После того, как убили, анализируете, ищите, как он мог войти. Убираете возможность подключения не прошенных гостей.
2. Запрет удаленного подключения к X11 через ssh
По умолчанию, ssh разрешает запускать x11 через ssh. Т.е. можно запускать графические приложения linux на сервере, используя протокол ssh.
Как это делается, написано в статье: http://d51x.ru/page/udalennyj-dostup-x11-forwarding
Но, вопреки этому, советую все же данную возможность отключать.
Редактируем файл: /etc/ssh/sshd_config
Меняем выражение:
X11Forwarding no
Перезагружаем ssh:
/etc/init.d/ssh restart
3. Ограничиваем доступ по ssh
Редактируем все тот же конфигурационный файл для ssh: /etc/ssh/sshd_config
Желательно, сменить номер порта ssh (чтоб никто не знал, что там находится ssh :):
Port 22
Так же, можно изменить адрес, на котором слушает демон:
ListenAddress 0.0.0.0
Разрешаем вход по ssh только определенным пользователям:
AllowUsers user1 user2 user3
Перезагружаем ssh:
/etc/init.d/ssh restart
4. Настраиваем файервол
Устанавливаем расширение (настройки) для iptables:
apt-get install arno-iptables-firewall
Конфигурируем порты /etc/arno-iptables-firewall/conf.d
Например:
EXT_IF="eth0 ppp0"
EXT_IF_DHCP_IP=1
# 3343,4434 - Порты для администрирования svn
# 9000 - порт для darkstat
# 3389 - терминал Windows
# 1500 - ???
# 8080 - порт для доступа к svn
# 1500 - ISP админка
# 440 - новый номер порта для ssh
# 22 - был ssh УБРАН
OPEN_TCP="80,443,21,6543,47,3343,4434,8080,1500,440"
# 110,25,995
OPEN_UDP=""
INT_IF="eth1"
NAT=0
INTERNAL_NET="192.168.3.0/24"
NAT_INTERNAL_NET="eth1"
OPEN_ICMP=1
LAN_OPEN_TCP="80,443,21,6543,1723,47,3389,1500,9000,5900,440"
Перезагружаем:
invoke-rc.d arno-iptables-firewall restart
5. Из sudo удаляем лишних пользователей
Редактируем файл: /etc/sudoers
Комментарим root, перечисляем наших пользователей-админов и комментарим доступ к sudo для груп администраторов и т.п.
Вот пример, того, что у меня получилось:
# User privilege specification
#root ALL=(ALL:ALL) ALL
r ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
#%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
#%sudo<>ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
6. Делаем сложный пароль для пользователя root
Хакеры пытаются подобрать пароль супер-пользователя root простым перебором. Поэтому, делайте пароль для данного пользователя не менее 12 символом и посложнее.
Для изменения пароля пользователя root, выполняем:
passwd root
7. Защита дыр в Apache.
Выполните команду:
curl -I -H "Request-Range: bytes=0-1,0-2,0-3,0-4,0-5,0-6" -s Ваш домен/robots.txt | grep Partial
Если у Вас выдастся ответ 206 Partial Content, то это означает, что Ваш Apache имеет не плохую уязвимость.Для того, чтоб убрать данную уязвимость, выполните:
sudo a2enmod headers
В Nginx пропишите:
proxy_set_header Range "";
proxy_set_header Request-Range "";
В Apache пропишите:SetEnvIf Range (?:,.*?){5,5} bad-range=1
RequestHeader unset Range env=bad-range
RequestHeader unset Request-RangeПерезагрузите веб-сервис:
/etc/init.d/apache2 restart
вівторок, 2 квітня 2013 р.
Определение конфигурации компьютера в Linux
В Linux не нужно ставить специальное программное обеспечение для того, чтоб определить конфигурацию компьютера. Можно просто просмотреть некоторые из файлов в каталоге proc:
cat /proc/cpuinfo — CPU
cat /proc/meminfo — ОЗУ
cat /proc/interrupts — прерывания
cat /proc/swaps — вся информация про swap
cat /proc/version — версия ядра и другая информация
cat /proc/net/dev — сетевые интерфейсы и статистика
cat /proc/mounts — смонтированные устройства
cat /proc/partitions — доступные разделы
cat /proc/modules — загруженные модули ядра
cat /etc/issue — Посмотреть версию ОС
cat /proc/cpuinfo — CPU
cat /proc/meminfo — ОЗУ
cat /proc/interrupts — прерывания
cat /proc/swaps — вся информация про swap
cat /proc/version — версия ядра и другая информация
cat /proc/net/dev — сетевые интерфейсы и статистика
cat /proc/mounts — смонтированные устройства
cat /proc/partitions — доступные разделы
cat /proc/modules — загруженные модули ядра
cat /etc/issue — Посмотреть версию ОС
Підписатися на:
Дописи (Atom)
Мені соромно за українські ЗМІ. Але ще не пізно згадати, для чого існує журналістика
Мені соромно за українські ЗМІ, які на 12 році війни часто мовчать про українське, але легко знаходять місце для того, що оплачено. Поки вор...
-
Статья перехала в тематический блог: http://pravdak.blogspot.com На этом же блоге, обсуждаются только вопросы программирования, администри...