Jak zainstalować Anchor CMS na CentOS 7 LAMP VPS
Używasz innego systemu? Anchor CMS to bardzo prosty i niezwykle lekki, darmowy i otwarty system zarządzania treścią (CMS) Blog Engine, który
ModSecurity to moduł zapory sieciowej typu open source (WAF), który doskonale nadaje się do ochrony Apache, Nginx i IIS przed różnymi cyberatakami atakującymi potencjalne luki w różnych aplikacjach internetowych
W tym artykule zainstalujemy i skonfigurujemy ModSecurity dla Nginx na CentOS 7, Debian 8 i Ubuntu 16.04.
root
.Zgodnie z tym przewodnikiem zaktualizuj jądro i pakiety serwera do najnowszej dostępnej wersji.
Aby pomyślnie skompilować Nginx i ModSecurity, musisz zainstalować kilka pakietów oprogramowania w następujący sposób.
a) W CentOS 7:
yum groupinstall -y "Development Tools"
yum install -y httpd httpd-devel pcre pcre-devel libxml2 libxml2-devel curl curl-devel openssl openssl-devel
shutdown -r now
b) W systemie Debian 8 lub Ubuntu 16.04:
apt-get install -y git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-dev libxml2-dev libcurl4-openssl-dev automake pkgconf
Ze względu na kilka niestabilności zgłoszonych w gałęzi ModSecurity dla gałęzi głównej Nginx, oficjalnie zaleca się na razie używanie najnowszej wersji nginx_refactoring
gałęzi.
Pobierz nginx_refactoring
gałąź ModSecurity dla Nginx:
cd /usr/src
git clone -b nginx_refactoring https://github.com/SpiderLabs/ModSecurity.git
Skompiluj ModSecurity:
a) W CentOS 7:
cd ModSecurity
sed -i '/AC_PROG_CC/a\AM_PROG_CC_C_O' configure.ac
sed -i '1 i\AUTOMAKE_OPTIONS = subdir-objects' Makefile.am
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make
Uwaga: dwa sed
powyższe polecenia służą do zapobiegania komunikatom ostrzegawczym podczas korzystania z nowszych wersji automake.
b) W systemie Debian 8 lub Ubuntu 16.04:
cd ModSecurity
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make
Pobierz i rozpakuj najnowszą stabilną wersję Nginx, która jest Nginx 1.10.3
w momencie pisania:
cd /usr/src
wget https://nginx.org/download/nginx-1.10.3.tar.gz
tar -zxvf nginx-1.10.3.tar.gz && rm -f nginx-1.10.3.tar.gz
a) W CentOS 7:
Najpierw musisz utworzyć dedykowanego użytkownika nginx
i dedykowaną grupę nginx
dla Nginx:
groupadd -r nginx
useradd -r -g nginx -s /sbin/nologin -M nginx
Następnie skompiluj Nginx, włączając ModSecurity i moduły SSL:
cd nginx-1.10.3/
./configure --user=nginx --group=nginx --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make
make install
Zmodyfikuj domyślnego użytkownika Nginx:
sed -i "s/#user nobody;/user nginx nginx;/" /usr/local/nginx/conf/nginx.conf
b) W systemie Debian 8 lub Ubuntu 16.04:
Po pierwsze, powinieneś użyć istniejącego użytkownika www-data
i istniejącej grupy www-data
.
Następnie skompiluj Nginx, włączając ModSecurity i moduły SSL:
cd nginx-1.10.3/
./configure --user=www-data --group=www-data --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make
make install
Zmodyfikuj domyślnego użytkownika Nginx:
sed -i "s/#user nobody;/user www-data www-data;/" /usr/local/nginx/conf/nginx.conf
Po pomyślnym zainstalowaniu Nginx powiązane pliki będą znajdować się w:
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
możesz przetestować instalację za pomocą:
/usr/local/nginx/sbin/nginx -t
Jeśli nic nie pójdzie źle, wynikiem powinno być:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Dla Twojej wygody możesz skonfigurować systemowy plik jednostki dla Nginx:
cat <<EOF>> /lib/systemd/system/nginx.service
[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
KillStop=/usr/local/nginx/sbin/nginx -s stop
KillMode=process
Restart=on-failure
RestartSec=42s
PrivateTmp=true
LimitNOFILE=200000
[Install]
WantedBy=multi-user.target
EOF
Przechodząc do przodu, możesz uruchomić / zatrzymać / ponownie uruchomić Nginx w następujący sposób:
systemctl start nginx.service
systemctl stop nginx.service
systemctl restart nginx.service
vi /usr/local/nginx/conf/nginx.conf
Znajdź następujący segment w obrębie http {}
segmentu:
location / {
root html;
index index.html index.htm;
}
Wstaw poniższe linie do location / {}
segmentu:
ModSecurityEnabled on;
ModSecurityConfig modsec_includes.conf;
#proxy_pass http://localhost:8011;
#proxy_read_timeout 180s;
Ostateczny wynik powinien wynosić:
location / {
ModSecurityEnabled on;
ModSecurityConfig modsec_includes.conf;
#proxy_pass http://localhost:8011;
#proxy_read_timeout 180s;
root html;
index index.html index.htm;
}
Zapisz i wyjdź:
:wq!
Uwaga: powyższa konfiguracja Nginx jest tylko przykładową konfiguracją do używania Nginx jako serwera WWW zamiast odwrotnego proxy. Jeśli używasz Nginx jako odwrotnego proxy, usuń #
znak w dwóch ostatnich wierszach i wprowadź odpowiednie modyfikacje.
/usr/local/nginx/conf/modsec_includes.conf
:
cat <<EOF>> /usr/local/nginx/conf/modsec_includes.conf
include modsecurity.conf
include owasp-modsecurity-crs/crs-setup.conf
include owasp-modsecurity-crs/rules/*.conf
EOF
Uwaga: powyższa konfiguracja zastosuje wszystkie OWASP ModSecurity Core Rules w owasp-modsecurity-crs/rules/
katalogu. Jeśli chcesz zastosować tylko reguły selektywne, powinieneś usunąć include owasp-modsecurity-crs/rules/*.conf
linię, a następnie określić dokładne reguły, których potrzebujesz po kroku 4.5.
cp /usr/src/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
cp /usr/src/ModSecurity/unicode.mapping /usr/local/nginx/conf/
/usr/local/nginx/conf/modsecurity.conf
plik:
sed -i "s/SecRuleEngine DetectionOnly/SecRuleEngine On/" /usr/local/nginx/conf/modsecurity.conf
cd /usr/local/nginx/conf
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd owasp-modsecurity-crs
mv crs-setup.conf.example crs-setup.conf
cd rules
mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
Uruchom Nginx:
systemctl start nginx.service
Otwórz port 80, aby umożliwić dostęp z zewnątrz:
a) W CentOS 7:
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload
b) W Debianie 8:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
touch /etc/iptables
iptables-save > /etc/iptables
c) W systemie Ubuntu 16.04:
ufw allow OpenSSH
ufw allow 80
ufw default deny
ufw enable
Skieruj swoją przeglądarkę internetową na:
http://203.0.113.1/?param="><script>alert(1);</script>
Służy grep
do pobierania komunikatów o błędach w następujący sposób:
grep error /usr/local/nginx/logs/error.log
Dane wyjściowe powinny zawierać kilka komunikatów o błędach podobnych do:
2017/02/15 14:07:54 [error] 10776#0: [client 104.20.23.240] ModSecurity: Warning. detected XSS using libinjection. [file "/usr/local/nginx/conf/owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf"] [line "56"] [id "941100"] [rev "2"] [msg "XSS Attack Detected via libinjection"] [data "Matched Data: found within ARGS:param: \x22><script>alert(1);</script>"] [severity "CRITICAL"] [ver "OWASP_CRS/3.0.0"] [maturity "1"] [accuracy "9"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-xss"] [tag "OWASP_CRS/WEB_ATTACK/XSS"] [tag "WASCTC/WASC-8"] [tag "WASCTC/WASC-22"] [tag "OWASP_TOP_10/A3"] [tag "OWASP_AppSensor/IE1"] [tag "CAPEC-242"] [hostname ""] [uri "/index.html"] [unique_id "ATAcAcAkucAchGAcPLAcAcAY"]
Otóż to. Jak widać, moduł ModSecurity pomyślnie zarejestrował ten atak zgodnie ze swoją domyślną polityką działania. Jeśli chcesz wprowadzić więcej ustawień niestandardowych, dokładnie przejrzyj i edytuj /usr/local/nginx/conf/modsecurity.conf
oraz /usr/local/nginx/conf/owasp-modsecurity-crs/crs-setup.conf
pliki.
Używasz innego systemu? Anchor CMS to bardzo prosty i niezwykle lekki, darmowy i otwarty system zarządzania treścią (CMS) Blog Engine, który
Podczas konfigurowania nowego serwera Linux zaleca się aktualizację jądra systemu i innych pakietów do najnowszej stabilnej wersji. W tym artykule
Wprowadzenie RethinkDB to baza danych NoSQL, która przechowuje dane jako dokumenty JSON. Ma bardzo intuicyjny język zapytań i funkcje powszechnie dostępne
Niezależnie od tego, czy chcesz umieścić zapasy sklepów online, czy po prostu prosty sklep z akcesoriami technicznymi, Magento jest doskonałym rozwiązaniem dla eCommerce online. Ten artykuł
OrientDB to wielomodowy model open source NoSQL DBMS nowej generacji. Dzięki obsłudze wielu modeli danych, OrientDB może zapewnić większą funkcjonalność i elastyczność
Neos to innowacyjny system zarządzania treścią typu open source, który doskonale nadaje się do tworzenia i edytowania treści online. Z myślą o autorach i redaktorach, Neo
Vtiger CRM to popularna aplikacja do zarządzania relacjami z klientami, która może pomóc przedsiębiorstwom zwiększyć sprzedaż, zapewnić obsługę klienta i zwiększyć zyski. ja
MaraDNS to lekki, ale solidny program serwera DNS typu open source. W porównaniu z innymi aplikacjami tego samego rodzaju, takimi jak ISC BIND, PowerDNS i djbdns
Używasz innego systemu? Netdata jest wschodzącą gwiazdą w dziedzinie monitorowania wskaźników systemowych w czasie rzeczywistym. W porównaniu z innymi narzędziami tego samego rodzaju, Netdata:
Używasz innego systemu? W tym samouczku wyjaśnię, jak skonfigurować serwer Starbound na CentOS 7. Wymagania wstępne Musisz mieć tę grę na sobie
RabbitMQ to broker komunikatów typu open source, który obsługuje AMQP, STOMP i inne technologie komunikacyjne. Jest szeroko stosowany w aplikacjach dla przedsiębiorstw
Witamy w innym samouczku Vultr. Tutaj dowiesz się, jak zainstalować i uruchomić serwer SAMP. Ten przewodnik został napisany dla CentOS 6. Wymagania wstępne Będziesz potrzebował
Używasz innego systemu? Elgg to silnik sieci społecznościowych typu open source, który umożliwia tworzenie środowisk społecznościowych, takich jak kampusowe sieci społecznościowe
RStudio Server to internetowa wersja RStudio, która jest serią narzędzi zaprojektowanych w celu ułatwienia kodowania przy użyciu języka programowania R. W thi
Bolt to open source CMS napisany w PHP. Kod źródłowy Bolts jest hostowany na GitHub. Ten przewodnik pokaże Ci, jak zainstalować Bolt CMS na nowym CentOS 7 Vult
Elasticsearch to popularny wyszukiwarka pełnotekstowa i silnik analityczny typu open source. Dzięki swojej wszechstronności, skalowalności i łatwości użytkowania, Elasticsearch jest szeroko rozpowszechniony
Omówienie Ten artykuł ma na celu pomóc ci w szybkim uruchomieniu klastra Kubernetes z kubeadm. W tym przewodniku zostaną wdrożone dwa serwery
Używasz innego systemu? Wprowadzenie Sails.js to framework MVC dla Node.js, podobny do Ruby on Rails. Umożliwia tworzenie nowoczesnych aplikacji wer
Wprowadzenie W tym samouczku zainstaluj PufferPanel na naszym Vultr VPS. PufferPanel to otwarty, darmowy panel kontrolny do zarządzania tobą
Wprowadzenie Systemy Linux są domyślnie dostarczane z narzędziami do monitorowania, takimi jak top, df i du, które pomagają monitorować procesy i miejsce na dysku. Często jednak są
Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.
Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.
13 komercyjnych narzędzi do ekstrakcji danych z Big Data
Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+
Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.
Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…
Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą
Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.
Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.
Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.